推薦算法CB
- 寫在前面
- 一 為什麼要做推薦系統
- 二 基于内容推薦是什麼?
-
- 1 引入Item屬性的Content Based推薦
- 2 引入User屬性的Content Based推薦
- 三 正排表與倒排表
-
- 正排
- 倒排
- 例子解釋索引表
寫在前面
推薦算法我這邊接觸到了兩種,CB和CF,這篇我隻講一下我學習CB過程中的一些了解! 為了不讓篇幅太長導緻雜亂,CF留到下一篇描述。需要的同學麻煩點贊收藏。
一 為什麼要做推薦系統
由于資訊過載,導緻對資訊反映的速度遠遠低于資訊傳播的速度;資訊量遠遠的高于使用者閱聽人所能消費、承受和需要的資訊量;且有大量無關的備援資料資訊會嚴重幹擾使用者的視線以及降低使用者的産品體驗。于是推薦系統便是為了解決此類問題而産生。當然搜尋系統也能解決此類問題
二 基于内容推薦是什麼?
基于内容的推薦CB是在推薦引擎出現之初應用最為廣泛的推薦機制,它的核心思想是根據推薦物品或内容的中繼資料,發現物品或者内容的相關性,然後基于使用者以往的喜好記錄,推薦給使用者相似的物品。比如你看了複仇者聯盟I,基于内容的推薦算法發現複仇者聯盟ll-lV,與你以前觀看的在内容上面(共有很多關鍵詞)有很大關聯性,就把後者推薦給你
1 引入Item屬性的Content Based推薦
從圖上可以看出這種推薦方式的:
- 優點:
- 推薦結果可以解釋(使用者剛浏覽過的資料,立馬就可以推薦相關item給他)
- 簡單易操作 (流程簡單)
- 實時性好
- 缺點:
- 無個性化
- 精度不好,依賴于對item的深度分析(如果item數量過多不适合)
2 引入User屬性的Content Based推薦
從圖上可以看出基于使用者行為這種推薦方式的:
- 優點:
- 使用者畫像(刻畫了使用者的興趣需求)
- 推薦形式多樣,具有個性化
- 結果可解釋
- 缺點:
- 推薦精度較低
- 使用者行為資料稀疏會導緻推薦覆寫率低
三 正排表與倒排表
正排
item -》token1:score1,token2:score2,token3:score3
無線藍牙耳機 :通過中文分詞可以得到 : (無線/藍牙/耳機)這三個token
舉例:query(無線藍牙耳機)
商家的商品清單(一億的商品)
item | 分詞(token) | Score |
---|---|---|
入耳式藍牙耳機 | 入耳式/藍牙/耳機 | 0.8 |
beats無線藍牙耳機 | beats/無線/藍牙/耳機 | 0.9 |
藍牙音箱 | 藍牙/音箱 | 0.3 |
無線便攜充電寶 | 無線/便攜/充電寶 | 0.2 |
頭戴式電競版耳機 | 頭戴式\電競版\耳機 | 0.5 |
… | … | … |
倒排
token -》item1:score1,item2:score2,item3:score3
對以上正排表可以得到
反向索引表:
token | item |
---|---|
無線 | beats無線藍牙耳機、無線便攜充電寶 |
藍牙 | 入耳式藍牙耳機、beats無線藍牙耳機、藍牙音箱 |
耳機 | 入耳式藍牙耳機、beats無線藍牙耳機、頭戴式電競版耳機 |
例子解釋索引表
例如:
正排表:分數為:TFIDF,中文分詞的分數
item1 => token1:score1, token2:score2, token3:score3
item2 => token4:score4, token5:score5, token3:score6
item3 => token2:score7, token3:score8, token4:score9
可以得到倒排表:
token1 => item1:score1
token2 => item1:score2, item3:score7
token3 => item1:score3, item2:score6, item3:score8
token4 => item2:score4, item3:score9
token5 => item2:socre5
假設現在使用者輸入一個itemX
itemX通過分詞包含token2,token3
那麼可以得到3個商品:
token2 => item1:score2, item3:score7
token3 => item1:score3, item2:score6, item3:score8
item1:score2+score3
item3:score7+score8
item2:score6
裡面物品有重複的說明商品越重要,因為重複得越多,說明被比對的token就越多
最後将重複的商品分數相加後的score進項倒序排序,輸出topN個相關的item
item1:score2+score3 = 0.89
item3:score7+score8 = 0.80
item2:score6 = 0.60
假設隻需要top2的話,那麼推薦商品最後傳回的就是item1和item3