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