1. 程式人生 > >推薦演算法:基於特徵的推薦演算法

推薦演算法:基於特徵的推薦演算法

【轉】https://www.52ml.net/12583.html


目錄 


推薦演算法準確度度量公式:

其中,R(u)表示對使用者推薦的N個物品,T(u)表示使用者u在測試集上喜歡的物品集合。

集合相似度度量公式(N維向量的距離度量公式):

Jaccard公式:

其中,N(u)表示使用者u有過正反饋的物品集合。

餘弦相似度公式:

UserCF公式:

其中,S(u,k)表示和使用者u興趣最接近的K個使用者集合;N(i)表示對物品i有過正反饋的使用者集合;w(u,v)表示使用者u和使用者v的興趣相似度;r(v,i)表示使用者v對物品i的興趣。預設取r(v,i)=1或0。

 

視角:使用者即是特徵。完全的個性化,每個使用者都是唯一的,每個使用者表示一維的特徵。使用者數量即是特徵空間的維度,使用者特徵表示成TU(u)={0,0,0, … , 1, …, },t(u, u)=1, 其餘為0。 對於物品的特徵向量TI(j)={0, 1, 1, 1, 0, … , …}, 凡購買物品i的使用者維度特徵均為1。 進一步,物品的特徵空間可用使用者購買的次數表示。相似度w(u,v)看成相應維度特徵的加權值。

ItemCF公式:

其中,S(i,k)表示和物品i最相似的K個物品集合;N(u)表示使用者喜歡的物品集合;w(i,j)表示物品i和物品j的相似度;r(u,i)表示使用者u對i物品的興趣。預設取r(u,i)=1或0。

 

視角:物品即是特徵。每個物品都是唯一的,每個物品表示一維的特徵。物品數量即是特徵空間的維度,物品特徵表示成TU(u)={0,0,0, … , 1, …, },t(u, u)=1, 其餘為0。 對於使用者的特徵空間TI(j)={0, 1, 1, 1, 0, … , …}, 凡購買物品i的維度特徵均為1。 進一步,物品的特徵空間可用使用者購買的次數表示。相似度w(i,j)看成相應維度特徵的加權值。

LFM公式:

其中,F表示隱類數量;p(u,k)表示使用者u對第k個隱類的興趣度;q(i,k)表示第k個隱類和物品i的相似度。Alpha表示學習速率;lamda表示正則化引數。

 

視角:LFM的公式就是典型的特徵向量空間和特徵加權矩陣的泛化表示形式。

TagCF公式:

n(u,b)表示使用者u打過標籤b的次數;n(b,j)表示物品i被打過標籤的次數。

 

視角:標籤即是特徵。

關係鏈推薦公式:

其中,F(u)表示使用者u的好友集合;w(u,v)可表示使用者u和v的熟悉程度(共同好友數),也可表示使用者u和v興趣的相似度(UserCF定義),也可是二者的綜合度量;r(v,i)表示使用者v對物品i的興趣。預設取r(v,i)=1或0。

 

視角:好友是特徵,或者好友興趣是特徵。

資訊流推薦公式:

其中,資訊流i的邊e表示其他使用者對資訊流i產生行為;E(e)表示和資訊流i邊的集合;v(e)表示使用者v和當前使用者u的相似度(熟悉度);w(e)表示邊型別的權重;d(e)表示邊e的時間衰減引數。

推薦演算法小結

所有的推薦演算法都可看成是基於特徵向量空間和特徵加權矩陣的推薦演算法。

 

當特徵向量的維度很大時,基於特徵向量空間和特徵加權矩陣的推薦演算法計算複雜度將很大。常見的做法是採用降維技術,比如使用minhash(simhash)。另一種做法是先聚類,將N維的特徵空間,轉變成M維的特徵空間(M<N)。比如在ItemCF演算法中,可對物品聚類,然後採用M類的物品作為特徵。當然降維後需要計算權值矩陣。

 

另一種極致做法:拋棄權值矩陣,在分類的基礎上,直接根據類別推薦。即基於特徵向量的匹配。

基於特徵匹配的演算法框架(使用者或物品均可):

1) 特徵選取

a) 已知使用者特徵:直接根據特徵分類

b) 未知使用者特徵:聚類,如LFM

2) 利用購買使用者特徵,計算物品的特徵。比如簡單選取TopN個使用者特徵作為物品的特徵;

3) 根據使用者特徵和物品特徵實現推薦,如果特徵空間有限(類別不多),可採用類別推薦;如果特徵空間巨大,可通過計算特徵距離實現推薦。

3種關聯使用者和物品的推薦系統

基於特徵的推薦演算法

說明:當用戶喜歡多個特徵,物品具有多個特徵時,即是典型的特徵向量空間和特徵加權矩陣的推薦演算法;當用戶只喜歡1個特徵,物品只具有單個特徵時,即基於特徵分類的推薦演算法。

在實際應用中,常常採用多個推薦演算法,分別實現不同的推薦引擎,最後根據不同的推薦引擎的結果做融合,即演算法融合,常見的就是加權融合。

推薦系統架構

 

實際推薦系統通常採用多種推薦演算法,並根據使用者的實時行為反饋調整使用者的特徵向量(特徵的加權係數),進而融合各個推薦演算法的推薦結果,在此基礎上過濾不要的推薦項,最後結合使用者使用場景調整推薦結果排名,給出最終推薦結果。

基於不同特徵的推薦演算法經常採用定期計算、定期更新特徵物品推薦表,比如基於Item的相似度特徵,可儲存每個item最相關的K個Item;基於使用者,保留每個使用者最近的N個item;基於基於tag特徵,儲存每個tag最多次數的M個item;基於使用者年齡特徵,儲存每個年齡段最熱門的N個Item;基於使用者like,儲存各個使用者最近喜歡的N個item,或最喜歡的M個類別……

使用者的實時行為反饋和使用者當前場景都將實時影響最終的推薦結果,使用者的實時反饋可直接影響推薦結果融合,而使用者的場景將決定推薦結果的排序和展示。同時使用者的反饋也將影響離線計算的物品推薦資料。

參考文獻:

推薦系統實踐  — 項亮 2012

Hulu’s Recommendation System

作者:zhenjing.chen
出處:http://www.cnblogs.com/zhenjing/