天天看點

常見推薦算法學習

常見的推薦算法包括以下:

  1. 基于流行度的推薦算法(按熱門推薦)
  2. 協同過濾算法
    基于使用者的協同過濾算法(推薦和你類似的人喜歡的商品)
    
      基于商品的協同過濾算法(推薦喜歡這個商品的人也喜歡的商品)
               
  3. 基于内容的過濾算法(詞權、word2vec、聚類)
  4. 基于模型的推薦算法(多種機器學習算法)
  5. 基于矩陣分解的推薦算法(LFM隐語義模型)
  6. 混合算法(結合多種推薦算法)

各類推薦系統:https://blog.csdn.net/u014765410/article/details/83691763

目前考慮推薦算法的主要是基于公司的資料,公司的資料:遊戲簡介、玩家的資訊、玩家操作資訊等,其實基于此,可将本次推薦算法歸類為基于内容(商品)的推薦算法

1.item-based CF算法

item-based CF算法是目前騰訊公司使用者推薦的算法,item-based CF算法使用餘弦相似性度量來計算一對商品之間的相似度,然後通過使用簡單的權重平均值來預測目标使用者對目标商品的評分。

與item-based CF比較相似的算法還有一個是user-based cf,這兩者的差別在于前者是計算商品的相似度,後者是計算使用者的相似度;

item-based CF是基于所有使用者曆史對商品的評分計算商品的相似度,把使用者喜歡商品相類似的使用者推薦給使用者,如:商品a與商品b十分相似,因為喜歡a的使用者也喜歡c,而使用者user1喜歡a,則可以把c推薦給使用者user1.

user-based CF是對所有使用者計算相似度,如果使用者A喜歡物品a,使用者B喜歡物品a、b、c,使用者C喜歡a和c,那麼認為使用者A與使用者B和C相似,因為他們都喜歡a,而喜歡a的使用者同時也喜歡c,是以把c推薦給使用者A。

至于為什麼不采用user-based CF呢?在本項目中是針對使用者的召回,而采用使用者的相似性可能存在的問題是:與使用者最相似的使用者可能沒有相關的遊戲記錄,即:存在使用者隻玩1款遊戲,而與最相似的使用者數量可能很大,但是基于遊戲使用者的特性,每個玩家一般不會同時玩超過5款遊戲,且由于玩家的流失比例的問題,可能采用這種方式對使用者的召回可能存在問題。

item-based CF則是遊戲相關的。而item-based CF在進行商品相似度計算時,是基于所有使用者對商品的評分(偏好),而我們在這裡采用遊戲本身的屬性計算遊戲之間的相似度,而且因為我們的資料量比較少,采用使用者評分的方式,可能會導緻最終計算結果發現所有遊戲都具有一定的相似度,差異化并不明顯,使用者量少資料少,就可能存在每個遊戲都有使用者喜歡,遊戲之間都有一定數量的共同使用者,

注意事項:

在選擇相似性度量時,可根據以下幾點進行選擇:

• 當您的資料受使用者偏好/使用者的不同評分尺度影響時,請使用皮爾遜相似度

• 如果資料稀疏,則使用餘弦(許多額定值未定義)

• 如果您的資料不稀疏并且屬性值的大小很重要,請使用歐幾裡得(Euclidean)。

• 建議使用調整後的餘弦(Adjusted Cosine Similarity)進行基于商品的方法來調整使用者偏好。

相關好文:

詳細介紹了協同過濾算法,利于了解不同協同過濾算法:https://blog.csdn.net/huagong_adu/article/details/7362908

騰訊實施精準推薦ppt:http://lamda.nju.edu.cn/conf/icml14w/Tencent.pdf

協同過濾算法的詳解,描述了協同過濾算法的各種相似度計算方程和應用場景:http://blog.jobbole.com/102819/

基于協同過濾的電影推薦算法,采用了不同的相似度計算方法(knn、svd矩陣分解、皮爾僧關聯度):https://blog.csdn.net/tonydz0523/article/details/84872476

詳細介紹基于使用者的推薦算法的實作步驟:https://blog.csdn.net/tonydz0523/article/details/84872476

詳細介紹基于内容的協同過濾的步驟,每一個步驟十分詳細,有利于了解和實作協同過濾:https://blog.csdn.net/HeyShHeyou/article/details/83660945

learning to rank,應用與排序場景下,可應用與協同過濾中的排序中,後續需認真研讀:https://blog.csdn.net/huagong_adu/article/details/40710305

learning to rank,應用與排序場景下,可應用與協同過濾中的排序中,後續需認真研讀:https://www.cda.cn/uploadfile/image/20151220/20151220115436_46293.pdf

課程相關:https://blog.csdn.net/weixin_41362649/article/details/89055808(注意研讀文末的連結,經典算法文章)

騰訊實時推薦的論文(item-based CF):http://net.pku.edu.cn/~cuibin/Papers/2015SIGMOD-tencentRec.pdf

采用tensorflow實作協同過濾:https://blog.csdn.net/sinat_38682860/article/details/80486992

item協同過濾,有相關實作方法:https://cloud.tencent.com/developer/article/1095876

兩種協同過濾實作對比:https://blog.csdn.net/gamer_gyt/article/details/51346159

加入使用者活躍度的item—cf的實作https://blog.csdn.net/ls317842927/article/details/79072662

2.隐語義模型:

2.1LFM模型

LFM隐語義模型的核心思想是通過隐含特征(latent factor)聯系使用者興趣和物品,采取基于使用者行為統計的自動聚類。

隐含語義分析技術的分類來自對使用者行為的統計,代表了使用者對物品分類的看法。隐含語義分析技術和ItemCF在物品分類方面的思想類似,如果兩個物品被很多使用者同時喜歡,那麼這兩個物品就很有可能屬于同一個類。

隐含語義分析技術給出的每個分類都不是同一個次元的,它是基于使用者的共同興趣計算出來的,如果使用者的共同興趣是某一個次元,那麼LFM給出的類也是相同的次元。

LFM通過如下公式計算使用者u對物品i的興趣:

重點參考文章,包含詳細的實作方式:https://blog.csdn.net/wxn704414736/article/details/80414815

簡介:https://blog.csdn.net/tao_wei162/article/details/84828909

實作模型:https://blog.csdn.net/fjssharpsword/article/details/78015956

2.2knn模型

要評價一個未知的東西U,隻需找k個與U相似的已知的東西,并通過k個已知的,對U進行評價。假如要預測使用者1對一部電影M的評分,根據kNN的思想,我們可以先找出k個與使用者1相似的,并且對M進行過評分的使用者,然後再用這k個使用者的評分預測使用者1對M的評分。又或者先找出k個與M相似的,并且使用者1評價過的電影,然後再用這k部電影的評分預測使用者1對M的評分。在這個例子中,找相似使用者的方法叫做user-based kNN,找相似物品的方法叫做item-based kNN。這兩種方法的思想和實作都大同小異,是以下文隻讨論item-based kNN,并且将其簡稱為kNN。

實作步驟:https://blog.csdn.net/shenbo2030/article/details/18007397

3.word2vec

其基本思想是 通過訓練将每個詞映射成 K 維實數向量(K 一般為模型中的超參數),通過詞之間的距離(比如 cosine 相似度、歐氏距離等)來判斷它們之間的語義相似度.其采用一個 三層的神經網絡 ,輸入層-隐層-輸出層。有個核心的技術是 根據詞頻用Huffman編碼 ,使得所有詞頻相似的詞隐藏層激活的内容基本一緻,出現頻率越高的詞語,他們激活的隐藏層數目越少,這樣有效的降低了計算的複雜度

繼續閱讀