六、推荐系统原理与应用
- 一、推薦系統(tǒng)
- 1.1 推薦系統(tǒng)的應用
- 1.2 什么是推薦系統(tǒng)
- 1.3 推薦系統(tǒng)的意義
- 1.4 推薦系統(tǒng)的結構
- 1.5 推薦系統(tǒng)的評估
- 1.5.1 準確度
- 二、推薦系統(tǒng)的不同類型
- 2.1 基于內容
- 2.2 協(xié)同過濾
- 2.2.1 基于用戶的協(xié)同過濾(user based Collaborative Filtering)
- 2.2.2 基于物品的協(xié)同過濾(item-based CF)
- 2.2.3 協(xié)同過濾的對比
- 2.2.4 協(xié)同過濾的冷啟動問題
- 2.3 隱語義模型
- 2.3.1 隱語義模型的思想:
- 2.3.2 假設
- 2.3.3 數學理解
- 2.3.4 隱語義模型要解決的問題
- 2.3.5 隱語義模型的樣本問題
- 2.3.6 隱語義模型推導
- 2.3.7 隱語義方法小結
- 2.4 用戶行為序列與word2vec
- 三、 推薦系統(tǒng)的一些細節(jié)
- 一、推薦系統(tǒng)
一、推薦系統(tǒng)
1.1 推薦系統(tǒng)的應用
電子商務,電影視頻,音樂電臺,社交網絡,閱讀,基于位置(外賣,打車),個性化郵件,個性化廣告
1.2 什么是推薦系統(tǒng)
根據用戶的 歷史行為 / 點贊 / 頁面停留時間 等來推薦用戶感興趣的物品
推薦系統(tǒng)根據用戶的以下行為來判斷用戶當前的需求或感興趣的點:
- 歷史行為
- 社交行為
- 興趣點
- 所處的上下文環(huán)境(上下班時間/周末等)
- …
1.3 推薦系統(tǒng)的意義
目前我們處于互聯(lián)網數據大爆炸的時代,每天會接收到很多的信息,但是并不是每種信息都感興趣,所以推薦系統(tǒng)也是解決信息過載問題的思路。
對用戶而言:
- 可以找到更感興趣的東西
- 幫助自己來做決策
- 發(fā)現(xiàn)新鮮事物
對商家而言:
- 可以提供個性化的服務,提高信任度和粘度
- 增加營收
1.4 推薦系統(tǒng)的結構
1.5 推薦系統(tǒng)的評估
- 用戶滿意度:問卷調查
- 預測準確度:評分RMSE, MAE; TopN推薦
- 覆蓋率:發(fā)現(xiàn)長尾物品
- 多樣性:覆蓋用戶不同興趣
- 新穎性(流行度反過來)
- 驚喜度,信任度,實時性,健壯性(Robust)
- 商業(yè)目標(廣告盈利)
1.5.1 準確度
1、打分系統(tǒng)(有用戶的打分實際數值,如電影評分3分)
- ruirui:用戶uu對物品ii的實際評分
- r^uir^ui:用戶uu對物品ii的預測評分
- |T||T|:用戶數量
2、Top N推薦(推薦前N個預測的)
系統(tǒng)不會讓用戶給自己喜歡的東西打分,可以根據停留時間來判斷其喜好程度。
- R(u)R(u):根據訓練數據建立的模型在測試集上對用戶的推薦
- T(u)T(u):用戶在測試集上的真實選擇
準確率vs召回率
準確率:在推薦的商品中,哪些是真正感興趣的
召回率:在推薦的商品中,占用戶感興趣商品的比例
3、覆蓋率(對平臺而言)
馬太效應:好的越好,壞的越壞,多的越多,少的越少
覆蓋率表示了對物品長尾的發(fā)掘能力
有兩個判別準則,一個維覆蓋率Coverage,另一個是熵
Coverage:假如推薦商品類別數量為9w個,而冷門商品雖然被推薦了5000個,但是可能每種只推薦了一次,熱門的商品還是被推薦的多,所以仍然會有馬太效應。
熵:由于覆蓋率仍然會有馬太效應,所以用熵來評估推薦物品種類的多樣性,已知熵是度量樣本不確定性的準則,所以我們希望H越大越好,因為當每個商品被推薦的概率基本相同的時候,熵最大,所以用熵來評估平臺對不同商品的推薦覆蓋率。
4、多樣性(對用戶而言)
對用戶而言,用戶希望系統(tǒng)推薦的某類東西有一定的多樣性,也就是有差異,比如顏色,款式等。
5、新穎度:商品給用戶的新鮮感(推薦其不知道的商品)
6、驚喜度:與用戶的歷史興趣不相似,但是用戶確滿意的
7、信任度:提供可靠的推薦理由
8、實時性:實時更新程度
二、推薦系統(tǒng)的不同類型
2.1 基于內容
實例:
對不同的書進行推薦:
2.2 協(xié)同過濾
協(xié)同過濾是一種基于近鄰的推薦算法,是根據用戶在物品上的行為找到物品或用戶的“近鄰”。
用戶在物品上的行為 ——> 同類用戶/同一用戶可能喜歡的不同物品
相似度/距離定定義(兩者是成反比的):
2.2.1 基于用戶的協(xié)同過濾(user based Collaborative Filtering)
基于用戶有共同行為的物品,計算用戶的相似度,找到“近鄰”用戶,對其近鄰在新物品上的評價進行加權推薦。
- 假設有n個用戶:ui,i=1,2,...,nui,i=1,2,...,n
- 假設有m個物品:pj,j=1,2,...,mpj,j=1,2,...,m
- 得分矩陣vn×mvn×m,vi×jvi×j表示用戶i對物品j的打分
- 物品i和物品j的相似度S(i,j)S(i,j)
- 選取TopK推薦或加權預測得分
示例:
同樣是對電影評分進行預估,可以通過求列和列之間的相似度,也就是用戶和用戶之間的相似度,來判定某些相似的用戶,從而從和他相似的用戶中預估其對電影的打分。
假如用戶5和用戶3、10的相似度較高,則用用戶3和10對第一個電影的評分的加權平均作為用戶5對電影1的評分。
2.2.2 基于物品的協(xié)同過濾(item-based CF)
基于有相同用戶交互的物品,計算物品相似度(A和B),找到物品的近鄰(B),對其他喜歡A的用戶做推薦。
假設有兩種商品A和B,則同時喜歡兩者的人群可能是相似性較高的,所以可以判定A和B的相似性應該是接近的,故可以把B推薦給喜歡A的人群。
- 假設有n個用戶:ui,i=1,2,...,nui,i=1,2,...,n
- 假設有m個物品:pj,j=1,2,...,mpj,j=1,2,...,m
- 得分矩陣vn×mvn×m,vi×jvi×j表示用戶i對物品j的打分
- 物品i和物品j的相似度S(i,j)S(i,j)
- 選取TopK推薦或加權預測得分
示例:對空白處進行預估
空白填充的目的:為了根據用戶已打分的電影,推斷出其沒看過的電影的評分,預估出評分之后,按大小排序,推薦預估分數高的電影。
求行和行之間的相似度:
2.2.3 協(xié)同過濾的對比
工業(yè)界對基于物品的協(xié)同過濾用的更多,因為:
協(xié)同過濾的優(yōu)缺點:
2.2.4 協(xié)同過濾的冷啟動問題
2.3 隱語義模型
用戶的評分矩陣有的位置是空著的,我們希望盡量正確的填滿未打分的項。
2.3.1 隱語義模型的思想:
肯定會有一些隱藏的因素會影響用戶的打分,不一定是人可以直接理解的隱藏因子,但是總會是由些因素影響了你的打分,所以,我們找到隱藏因子,可以對用戶和商品進行關聯(lián)。**
隱語義模型:尋找可能影響用戶打分的隱藏因子
2.3.2 假設
隱藏因子個數小于用戶和商品數,因為如果每個user都對應一個獨立的隱藏因子,就沒法做預測了。
2.3.3 數學理解
- R矩陣:用戶對物品的偏好信息
- P矩陣:用戶對各個物品類別的偏好信息
- Q矩陣:各個物品所歸屬的物品類別信息
隱語義模型就是要將用戶對物品的偏好信息R矩陣,分解為P和Q的乘積,即通過物品類別class將用戶和物品聯(lián)系起來。
假如一個電影剛好不是戰(zhàn)爭片(得分-1),而用戶剛好不喜歡戰(zhàn)爭片(-1),兩者相乘剛好是1,剛好匹配。
2.3.4 隱語義模型要解決的問題
如何對物品進行分類,分成幾類?
如何確定用戶對哪些物品類別有興趣,興趣程度如何?
對于一個給定的類,選擇這個類中的哪些物品進行推薦,如何確定物品在某個類別中的權重?
2.3.5 隱語義模型的樣本問題
隱語義模型在顯性反饋數據(也就是評分數據)上能解決評分預測問題并達到了很好的精度。不過推薦系統(tǒng)主要討論的是隱性反饋數據集,這種數據集的特點 是只有正樣本(用戶喜歡什么物品),而沒有負樣本(用戶對什么物品不感興趣)。那么,在隱性反饋數據集上應用隱語義模型解決推薦的第一個關鍵問題就是如何 給每個用戶生成負樣本。我們發(fā)現(xiàn)對負樣本采樣時應該 遵循以下原則:
對每個用戶,要保證正負樣本的平衡(數目相似);
每個用戶采樣負樣本時,要選取那些很熱門,而用戶卻沒有行為的物品:一般認為,很熱門而用戶卻沒有行為更加代表用戶對這個物品不感興趣。因為對于冷門的物 品,用戶可能是壓根沒在網站中發(fā)現(xiàn)這個物品,所以談不上是否感興趣;
2.3.6 隱語義模型推導
假設:
- UU個用戶
- II個物品
- RR為打分矩陣
- KK個隱含變量(也就是將物品分為K個類型這是根據經驗和業(yè)務知識進行反復嘗試決定的)
求解:
- 矩陣PU,kPU,k:用戶U對第k個分類的喜愛程度
- 矩陣Qk,IQk,I:物品i屬于類別k的權重
(1)傳統(tǒng)奇異值分解SVD用于推薦
可以將這個用戶物品對應的m×n矩陣M進行SVD分解,并通過選擇部分較大的一些奇異值來同時進行降維,也就是說矩陣M此時分解為r如下,通過這種方法,我們可以將評分表里面所有沒有評分的位置得到一個預測評分。通過找到最高的若干個評分對應的物品推薦給用戶:
Mm×n=Um×kΣk×kVTk×nMm×n=Um×kΣk×kVk×nTSVD的限制:要補值
SVD分解要求矩陣是稠密的,也就是說矩陣的所有位置不能有空白。有空白時我們的M是沒法直接去SVD分解的。
傳統(tǒng)SVD采用的方法是對評分矩陣中的缺失值進行簡單的補全,比如用全局平均值或者用用戶物品平均值補全,得到補全后的矩陣。接著可以用SVD分解并降維。
SVD的時間復雜度為O(m^3),用戶數和物品一般都是超級大,隨便就成千上萬了。這么大一個矩陣做SVD分解是非常耗時的。
(2)FunkSVD算法用于推薦
FunkSVD如何將矩陣M分解為P和Q呢?這里采用了線性回歸的思想。我們的目標是讓用戶的評分和用矩陣乘積得到的評分殘差盡可能的小,也就是說,可以用均方差作為損失函數,來尋找最終的P和Q。
隱語義模型是根據如下公式來計算用戶U對物品I的興趣度:
如何找到矩陣P/Q的最佳參數:隨機初始化之后,利用梯度下降法優(yōu)化損失函數
損失函數:
下式為正則項:
對兩組未知數求偏導:
利用隨機梯度下降法得到遞推公式:
其中α是在梯度下降的過程中的步長(也可以稱作學習速率),這個值不宜過大也不宜過小,過大會產生震蕩而導致很難求得最小值,過小會造成計算速度下降,需 要經過試驗得到最合適的值。
迭代最終會求得每個用戶對于每個隱分類的喜愛程度矩陣P和每個物品與每個隱分類的匹配程度矩陣Q。
在用戶對物品的偏好信息矩陣R 中,通過迭代可以求得每個用戶對每個物品的喜愛程度,選取喜愛程度最高而且用戶沒有反饋過的物品進行推薦,也就是還原矩陣的未打分項。
在隱語義模型中,重要的參數有以下4個:
1)隱分類的個數F;
2)梯度下降過程中的步長(學習速率)α;
3)損失函數中的懲罰因子λ;
4)正反饋樣本數和負反饋樣本數的比例ratio;
這四項參數需要在試驗過程中獲得最合適的值.1)3)4)這三項需要根據推薦系統(tǒng)的準確率、召回率、覆蓋率及流行度作為參考, 而2)步長α要參考模型的訓練效率。
(3) BiasSVD算法用于推薦
BiasSVD假設評分系統(tǒng)包括三部分的偏置因素:
- 一些和用戶物品無關的評分因素,用戶有一些和物品無關的評分因素,稱為用戶偏置項。
- 而物品也有一些和用戶無關的評分因素,稱為物品偏置項。這其實很好理解。比如一個垃圾山寨貨評分不可能高,自帶這種爛屬性的物品由于這個因素會直接導致用戶評分低,與用戶無關。
- 總體偏置項
假設評分系統(tǒng)平均分為μ,第i個用戶的用戶偏置項為bi,而第j個物品的物品偏置項為bj,則加入了偏置項以后的優(yōu)化目標函數J(p,q)是這樣的
這個優(yōu)化目標也可以采用梯度下降法求解。和FunkSVD不同的是,此時我們多了兩個偏執(zhí)項bi,bj,,pi,qj的迭代公式和FunkSVD類似,只是每一步的梯度導數稍有不同而已,這里就不給出了。而bi,bj一般可以初始設置為0,然后參與迭代。這里給出bi,bj的迭代方法
通過迭代我們最終可以得到P和Q,進而用于推薦。BiasSVD增加了一些額外因素的考慮,因此在某些場景會比FunkSVD表現(xiàn)好。
2.3.7 隱語義方法小結
FunkSVD將矩陣分解用于推薦方法推到了新的高度,在實際應用中使用也是非常廣泛。當然矩陣分解方法也在不停的進步,目前張量分解和分解機方法是矩陣分解推薦方法今后的一個趨勢。
對于矩陣分解用于推薦方法本身來說,它容易編程實現(xiàn),實現(xiàn)復雜度低,預測效果也好,同時還能保持擴展性。這些都是它寶貴的優(yōu)點。當然,矩陣分解方法有時候解釋性還是沒有基于概率的邏輯回歸之類的推薦算法好,不過這也不影響它的流形程度。小的推薦系統(tǒng)用矩陣分解應該是一個不錯的選擇。大型的話,則矩陣分解比起現(xiàn)在的深度學習的一些方法不占優(yōu)勢。
2.4 用戶行為序列與word2vec
三、 推薦系統(tǒng)的一些細節(jié)
總結
以上是生活随笔為你收集整理的六、推荐系统原理与应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特斯拉 FSD 被迫走 Waymo 路线
- 下一篇: 用环翼机原理制作“会飞的兔子”