rec sys - 技術

索引
推薦系統(tǒng)為什么需要索引這一概念?

索引即指 物料的ID
我們可以根據(jù)這一ID去取到物料的各種屬性字段。(正排索引)
以特征為出發(fā)點去找具備這些特征的物料姐浮。(倒排索引)基本上都使用倒排索引。

索引的意義在于 通過構建索引生成召回的候選集
主要有三步:
step1:對物料的特征構建索引 獲取對應items的結果列表 (對 嚴格來說 只有第一步是涉及 索引 后面兩步算是索引的應用)
step2:對結果列表數(shù)據(jù)進行微運算 如 計算物料質量分 物料相關性等
step3:基于上訴的運算得分對物料進行綜合排序 最后返回結果給用戶

在真實的生產(chǎn)環(huán)境中 索引的設計模式 復雜且繁多 其中涉及了大量的 數(shù)據(jù)儲存技術蛛淋,查找算法,排序算法笋熬,文本處理技術十偶,甚至I/O技術菩鲜。
粗排的結果很大依賴于各路召回結果的排序 而各路召回中需要涉及到 索引 的構建 : 如果一條物料不在索引中 那么這條物料基本沒有召回的可能。


倒排索引
倒排索引 即 “關鍵詞——文檔” 形式的一種映射結構 有種基于 內容 去 表達 主體 的感覺惦积。

倒排索引創(chuàng)建索引的流程:
1) 首先把所有的原始數(shù)據(jù)進行編號接校,形成文檔列表
2) 把文檔數(shù)據(jù)進行分詞,得到很多的詞條狮崩,以詞條為索引蛛勉。保存包含這些詞條的文檔的編號信息。

搜索的過程:
當用戶輸入任意的詞條時睦柴,首先對用戶輸入的數(shù)據(jù)進行分詞诽凌,得到用戶要搜索的所有詞條,然后拿著這些詞條去倒排索引列表中進行匹配坦敌。找到這些詞條就能找到包含這些詞條的所有文檔的編號侣诵。
然后根據(jù)這些編號去文檔列表中找到文檔

有一篇文章講的不錯 : https://zhuanlan.zhihu.com/p/62892586
目前業(yè)界很少有 自己去構建 倒排索引的 有不少的開源的工具 比如 elasticsearch ,faiss狱窘。
faiss需重點學習杜顺。


召回

協(xié)同過濾(Collaborative Filtering Recommendation):基于用戶行為,考慮用戶的共同行為蘸炸。
基于內容的推薦(Content_based Recommendation):基于文本相關性躬络,考慮詞的共現(xiàn)狀況。
協(xié)同過濾必須要有用戶行為搭儒,基于內容的推薦可以不用考慮用戶行為
協(xié)同過濾包括UserCF , ItemCF等穷当。
UserCF: 找到跟TA喜好最相似的其他用戶,然后把這些用戶喜歡的商品推給TA淹禾。
ItemCF: 找到跟TA喜好最相似的商品膘滨,然后推給TA。
Content_Based: 根據(jù)內容元數(shù)據(jù)進行分析(沒有考慮用戶)稀拐,找到相似的內容進行推薦火邓。
具體參考這篇:協(xié)同過濾和基于內容推薦有什么區(qū)別?https://www.zhihu.com/question/19971859

以下本質上都是協(xié)同過濾的思想:
i2i:計算item-item相似度德撬,用于相似推薦铲咨、相關推薦、關聯(lián)推薦
u2i:基于矩陣分解蜓洪、協(xié)同過濾的結果纤勒,直接給u推薦i
u2u2i:基于用戶的協(xié)同過濾,先找相似用戶隆檀,再推薦相似用戶喜歡的item
u2i2i:基于物品的協(xié)同過濾摇天,先統(tǒng)計用戶喜愛的物品粹湃,再推薦他喜歡的物品
u2tag2i:基于標簽的泛化推薦,先統(tǒng)計用戶偏好的tag向量泉坐,然后匹配所有的Item为鳄,這個tag一般是item的標簽、分類腕让、關鍵詞等tag

除了傳統(tǒng)的召回方式外孤钦,也用深度學習模型進行召回。

召回代碼參考鏈接:

https://github.com/andjsmile/Match_Algorithm
Content Based
item2vec
LFM
Personal Rank
item_CF
https://github.com/Eleanoryuyuyu/RecommendRelative
DeepAutoEncoder
node2vec
FPGrowth
item2vec
基于圖的模型
基于鄰域的算法
隱語義模型
https://github.com/lpty/recommendation
基于協(xié)同過濾的模型(UserCF)
基于隱語義的模型(LFM)
基于圖的模型(Personal Rank)

前沿(深度學習)召回代碼參考鏈接:

https://github.com/shenweichen/DeepMatch
https://github.com/andjsmile/Match_Algorithm
https://github.com/Eleanoryuyuyu/RecommendRelative
https://github.com/lpty/recommendation
http://github.com/microsoft/recommenders


排序
推薦系統(tǒng)的排序模型需要自己構建正負樣本纯丸,在排序的前一步 我們得到了多個不同來源的召回隊列
系統(tǒng)將這些不同來源組合的候選物品集合組合成一個通用的候選庫 偏形,然后由單個模型對其進行打分并根據(jù)該分數(shù)進行排名

排序前期一般業(yè)務簡單 通常選取一個指標來重點優(yōu)化 ,當?shù)街衅诘臅r候 就會發(fā)現(xiàn)單一指標對整體的提升比較有限 觉鼻,這個時候往往會引入多目標排序來解決這些問題
排序有常用的三種模型框架: pointwise pairwise listwise

nlp中三者也很常見(learning to rank)俊扭,以query-document為例,pointwise是把單個文檔作為訓練樣本坠陈,而pairwise是把有偏序關系的文檔對作為訓練樣本统扳,listwise是把某個query下所有文檔的ranked list作為訓練樣本。
推薦系統(tǒng)中常用pointwise方法來做排序,更簡單直觀畅姊。

粗排代碼參考鏈接:

https://github.com/shenweichen/DeepMatch

精排代碼參考鏈接:

https://github.com/shenweichen/DeepCTR

資源匯總:

https://github.com/shenweichen/AlgoNotes


PID控制算法 (在流量控制以及廣告調價中應用廣泛)
proportion integration differentiation
比例,積分吹由,微分控制
即 當?shù)玫较到y(tǒng)的輸出后 將輸出經(jīng)過比例 積分 微分 3種運算方式
疊加到輸入中 從而控制系統(tǒng)的行為

可以這樣理解 p是控制現(xiàn)在 i是糾正曾經(jīng) d是掌控未來


用戶長短期興趣
以下只是一些摘抄若未,與該主題有關的點:
Sequential Recommendation:主要致力于捕捉和解決用戶隨時變化的,動態(tài)的偏好倾鲫。
一個明顯的例子就是:買了手機的用戶粗合,下一步極有可能購買手機殼,耳機貼膜等等

現(xiàn)在各大頂會論文整體來講乌昔,對用戶長短期偏好的建模整體還是一個encoder-decoder的結構隙疚,
在這基礎上做一個long-term short-term的捕捉,然后基于seq2item監(jiān)督的訓練磕道。
基于seq2seq的訓練還不多供屉,看到阿里的一篇文章,
《Disentangled Self-Supervision in Sequential Recommenders》比較有意思


推薦系統(tǒng) 樣本劃分

Q1:負樣本應該如何采樣更合理婚肆?
A1:可以嘗試使用一定的規(guī)則篩選負樣本:

base策略:隨機抽取一定比例
策略1:在用戶未點擊的部分藻肄,選擇流行度高的作為負樣本(更有代表性)
策略2:在用戶未點擊的部分掏秩,刪除用戶近期已發(fā)生觀看行為的電影
策略3:在用戶未點擊的部分,統(tǒng)計相應的曝光數(shù)據(jù)哗魂,取Top作為負樣本(多次曝光仍無轉化)

Q2:正負比例有個大致的主流數(shù)值嗎?1漓雅?5录别?10朽色?
A2:建議交叉驗證后選擇合適的數(shù)值

Q3:測試集是否需要和訓練集保持相同的正負樣本比例?
A3:這個問題是不成立的组题,首先基于一個策略生成全部的樣本葫男,再根據(jù)時間軸人為切分成訓練集和測試集,并不是先生成訓練集往踢,再生成測試集腾誉。


推薦系統(tǒng) 樣本加權

轉自:https://zhuanlan.zhihu.com/p/281434497

主要思想是:樣本生而不平等,需要對不同的樣本不一樣的學習權重峻呕。

例如 點擊率 和 時長 兩個優(yōu)化目標利职,
我們在優(yōu)化點擊率的基礎上考慮時長長的結果更能排在前面,這樣的結果肯定是更好的瘦癌。
目前可以做的有 多目標猪贪,多目標可以單獨訓練兩個模型進行融合,也可以同時學習讯私。
也可以采用 樣本加權 的方式热押。 例如使用 時長加權, 希望在點擊排序模型中斤寇,將時長長的正例排在前面桶癣。

樣本加權的具體方式 可以見 https://zhuanlan.zhihu.com/p/281434497


多臂賭博機問題 (Multi-armed bandit problem, K-armed bandit problem, MAB),簡稱 MAB 問題娘锁。

bandit機制: https://blog.csdn.net/dengxing1234/ 大概就是用來解決mab問題的一種方法牙寞。使得效率盡量達到最高。
STEP1: 用有限的類別來表示用戶的每個興趣莫秆,也就是arm
STEP2: 經(jīng)過幾次實驗之后(推薦反饋)间雀,來計算新用戶對每個類別的感興趣概率。
STEP3: 經(jīng)歷 ‘選擇-評估-更新-選擇’ 的循環(huán)測試之后镊屎,理論上最終的選擇會越來越逼近用戶真正感興趣的類別惹挟。


ground truth : 在有監(jiān)督學習中,數(shù)據(jù)是有標注的缝驳,以(x, t)的形式出現(xiàn)连锯,其中x是輸入數(shù)據(jù),t是標注.正確的t標注是ground truth用狱, 錯誤的標記則不是


shared embedding:

1 多個相關聯(lián)的field共享一個embedding矩陣萎庭,減少了待優(yōu)化變量的數(shù)目,加速計算齿拂,也降低過擬合的風險

2 同一個embedding矩陣驳规,為多個field提供embedding向量,類似于“多任務學習”署海,使每個embedding向量有更多的訓練機會吗购,同時也要滿足多個field的需要医男,也降低了過擬合的風險

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市捻勉,隨后出現(xiàn)的幾起案子镀梭,更是在濱河造成了極大的恐慌,老刑警劉巖踱启,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件报账,死亡現(xiàn)場離奇詭異,居然都是意外死亡埠偿,警方通過查閱死者的電腦和手機透罢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冠蒋,“玉大人羽圃,你說我怎么就攤上這事《督耍” “怎么了朽寞?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長斩郎。 經(jīng)常有香客問我脑融,道長,這世上最難降的妖魔是什么缩宜? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任肘迎,我火速辦了婚禮,結果婚禮上脓恕,老公的妹妹穿的比我還像新娘。我一直安慰自己窿侈,他們只是感情好炼幔,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著史简,像睡著了一般乃秀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上圆兵,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天跺讯,我揣著相機與錄音,去河邊找鬼殉农。 笑死刀脏,一個胖子當著我的面吹牛,可吹牛的內容都是我干的超凳。 我是一名探鬼主播愈污,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼耀态,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了暂雹?” 一聲冷哼從身側響起首装,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎杭跪,沒想到半個月后仙逻,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡涧尿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年系奉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片现斋。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡喜最,死狀恐怖,靈堂內的尸體忽然破棺而出庄蹋,到底是詐尸還是另有隱情瞬内,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布限书,位于F島的核電站虫蝶,受9級特大地震影響,放射性物質發(fā)生泄漏倦西。R本人自食惡果不足惜能真,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扰柠。 院中可真熱鬧粉铐,春花似錦、人聲如沸卤档。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽劝枣。三九已至汤踏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舔腾,已是汗流浹背溪胶。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留稳诚,地道東北人哗脖。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親懒熙。 傳聞我的和親對象是個殘疾皇子丘损,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容