【推荐系统】协同过滤 零基础到入门
文章目錄:
1 基于用戶user-based
1.1 尋找偏好相似的用戶
1.2 皮爾遜相關(guān)度
1.3 為相似的用戶提供商品
1.4 小結(jié)
2 基于物品item-based
3 協(xié)同算法的更多描述
4 不同相似度計算的方法
4.1 歐幾里得距離
4.2 Pearson-r系數(shù)
4.3 向量余弦
4.4 調(diào)整余弦
4.5 總結(jié)與個人感悟
5 預(yù)測用戶打分
5.1 加權(quán)求和平均
協(xié)同過濾推薦算法是誕生最早,最為基礎(chǔ)的推薦算法。 算法通過對用戶歷史行為數(shù)據(jù)的挖掘發(fā)現(xiàn)用戶的偏好,基于不同的偏好對用戶進行群組劃分并推薦品味相似的商品。
協(xié)同過濾算法分為兩類:
基于用戶的協(xié)同過濾算法(user-based collaborative filtering)
基于物品的協(xié)同過濾算法(item-based collaborative filtering)
其實我一開始對這個協(xié)同過濾 的概念不太了解,直到看了collaborative這個單詞的釋義,就是兩個物體同時出現(xiàn)的頻率。
1 基于用戶user-based
基于用戶的協(xié)同過濾算法是通過用戶的歷史行為數(shù)據(jù) 發(fā)現(xiàn)用戶對商品或內(nèi)容的喜歡,例如(商品的購買,收藏,內(nèi)容評價或者分享內(nèi)容等)。根據(jù)不同用戶對相同商品或者內(nèi)容的態(tài)度和偏好程度計算用戶之間的關(guān)系。在有相同喜好的用戶之間進行商品推薦。
換句話說 , 假如A和B用戶都購買了同樣的三本書,并且都給出了5星好評,那么就認為A和B是同一類用戶。然后把A購買的另外一本書推薦給B。
1.1 尋找偏好相似的用戶
現(xiàn)在考慮一種最簡單的情況,5個用戶都購買了兩種商品,然后并對商品進行打分,如下圖:
最簡單的方法就是畫圖,加入用商品1的評分作為Y軸,商品2的評分作為X軸,那么就可以得到下面的散點圖:
常見的想法可以用歐幾里得距離來衡量用戶之間的相似度。
1.2 皮爾遜相關(guān)度
Pearson correlation coefficient
除了用歐氏距離來衡量,皮爾遜相關(guān)度是另一種計算用戶間關(guān)系的方法。現(xiàn)在考慮下面這一種更加復(fù)雜、也更加接近真實場景的數(shù)據(jù):
其實呢?皮爾遜相關(guān)系數(shù)其實就是兩個變量之間的協(xié)方差和標準差的比值:
再換一個寫法,就是下面這個公式:
對于這個,并不陌生。皮爾遜相關(guān)系數(shù)在-1到1之間。0表示不相關(guān),1表示極強正相關(guān),-1表示極強負相關(guān)。
現(xiàn)在來簡單計算一下上面例子中,用戶A與用戶B之間的皮爾遜相關(guān)系數(shù)。
剩下的Pearson相關(guān)系數(shù)如下:
1.3 為相似的用戶提供商品
假設(shè)我們?yōu)橛脩鬋推薦商品,先檢查相似度列表,發(fā)現(xiàn)用戶C和D、E的pearson系數(shù)較高。所以認為這三個用戶有相同的偏好,所以對C推薦D和E買過的商品。但是不能推薦商品1~5,因為這些用戶C已經(jīng)買過了。
現(xiàn)在我們找到了用戶D和E買過的其他的商品A,B,C,D,E,F。然后讓用戶D和E與用戶C的相似度作為權(quán)重 ,計算他們給這些商品打分的加權(quán)分數(shù)。然后給C按照加權(quán)分數(shù)從高到低進行推薦。
1.4 小結(jié)
已經(jīng)講完了基于用戶的協(xié)同過濾算法。這個算法依靠用戶的歷史行為數(shù)據(jù)來計算相似度,所以是需要一定的數(shù)據(jù)積累 ,這其中涉及到冷啟動問題。對于新網(wǎng)站或者數(shù)據(jù)量較少的網(wǎng)站,一般會采用基于物品的協(xié)同過濾方法。
2 基于物品item-based
其實這個和基于用戶的方法很想,就是把商品和用戶互換。通過計算不同用戶對不同物品的評分獲得物品間的關(guān)系。然后根據(jù)物品間的關(guān)系對用戶進行相似物品的推薦。
所以這里我們一開始的數(shù)據(jù)可以寫成這個樣子:
然后計算出物品之間的相關(guān)系數(shù):
假設(shè)我們要給用戶C推薦商品。
在基于用戶的算法中,我們的流程是:推薦給用戶C->尋找與用戶C相同愛好的用戶->尋找這些用戶購買的其他商品的加權(quán)打分。
現(xiàn)在基于物品的算法中,我們的流程是。發(fā)現(xiàn)用戶C購買了商品4和5,找到同樣購買了4和5商品的其他用戶123.然后找到其他用戶123購買的新商品A、B、C
計算得到商品4和5與新商品ABC之間的相關(guān)度。
然后進行加權(quán)打分排序。
3 協(xié)同算法的更多描述
協(xié)同算法CF:Collaborative Filtering
如上圖,協(xié)同算法中,左邊的的矩陣中,m表示樣本的數(shù)量,n表示商品的數(shù)量。矩陣的數(shù)值表示用戶對某一個商品的喜好程度,分數(shù)越高表示越喜歡這個物品。0表示沒有買過該商品。
【整個協(xié)同過濾包括兩個過程】
預(yù)測過程 :預(yù)測用戶對沒有購買過的商品的可能打分值;
推薦過程 :根據(jù)預(yù)測階段的姐u共推薦用戶最可能喜歡的TopN個商品。
【User-based & Item-based】
User-based的基本思想就是用戶A喜歡物品a,用戶B喜歡物品abc,用戶C喜歡物品ac,那么使用以相關(guān)系數(shù)為衡量的最近鄰算法,可以把用戶C當(dāng)成用戶A的最近的鄰居,而從推薦給A商品c。
Item-based的基本思想是現(xiàn)根據(jù)歷史數(shù)據(jù)計算物品之間的相似性,然后把用戶喜歡的相類似的物品推薦給用戶。因為我們知道喜歡a的用戶也喜歡c,所以推斷出物品a和c非常相似,這樣可以給購買過商品a的用戶推薦商品c。
【User-based缺陷】
數(shù)據(jù)稀疏性。一個商場中一般有非常多的物品,而一個用戶可能只夠買過其中的1個商品,這樣的話不同用戶之間的物品重疊性非常低,從而導(dǎo)致無法找到一個用戶的鄰居(因為這個用戶與其他所有用戶的距離都相等,想象一下one-hot編碼)。
算法擴展性。最近鄰算法的計算量會隨著用戶和物品數(shù)量的增加而增加,大數(shù)據(jù)的話浪費算力。
冷啟動。一開始沒有歷史數(shù)據(jù)的話,無法使用這種方法進行推薦。
而Item-based的話,可以預(yù)先在線下先計算沖不同商品之間的相似度,然后把結(jié)果存在表中,推薦的時候直接查表。
4 不同相似度計算的方法
4.1 歐幾里得距離
這個就是差值平方的和的開方。
4.2 Pearson-r系數(shù)
這個就是之前詳細講解的相關(guān)系數(shù)。
4.3 向量余弦
通過計算兩個向量之間的夾角來計算物品的相似度。因為不同的用戶可能有不同的性格,可能有一個人給什么東西打分都很高,另外一個人給什么東西打分都低,這樣的話使用Pearson系數(shù)會判定這兩個人偏好不同,而向量余弦會更加關(guān)注用戶給不同商品打分的相對情況。(PS:其中分子為兩個向量的內(nèi)積,即兩個向量相同位置的數(shù)字相乘。)
4.4 調(diào)整余弦
余弦的優(yōu)勢在于關(guān)注相對打分,但是這也是他的缺點。女生相對于籃球,更喜歡足球一些。男生也是如此。難道我們能說男生女生的喜好一致嗎?我們是不能推薦運動用品給這樣的女生的。然而余弦相似度看不到這些,因為它只關(guān)注相對打分。
假設(shè)女生給籃球足球打分(1,2),男生打分(8,9)
【cosine】
而Adjective Cosine是讓數(shù)值減去物品打分的均值,讓低于平均水平的打分變成負數(shù)。這下子向量的方向一下有一個巨大的改變。籃球的均分4.5,足球的均分5.5
【Adjecitve Cosine】
一下子就把差距體現(xiàn)出來了。
4.5 總結(jié)與個人感悟
可以看的出來,余弦相似度存在一定的問題,所以建議使用調(diào)整余弦相似度與Pearson。
【Adjective Cosine VS Pearson】
Adjective Cosine中均值是所有用戶對同一商品打分的均值;
Pearson中的均值是同一用戶對所有商品打分的均值。
5 預(yù)測用戶打分
之前提到了預(yù)測過程(預(yù)測用戶給為打分的商品的打分情況。)
5.1 加權(quán)求和平均
對用戶已經(jīng)打分的物品的分數(shù)進行加權(quán)求和,而權(quán)值自然是各個物品與預(yù)測物品之間的相似度,然后再除以總權(quán)重值得和即可。
- END -往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯獲取一折本站知識星球優(yōu)惠券,復(fù)制鏈接直接打開:https://t.zsxq.com/662nyZF本站qq群1003271085。加入微信群請掃碼進群(如果是博士或者準備讀博士請說明):總結(jié)
以上是生活随笔為你收集整理的【推荐系统】协同过滤 零基础到入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习基础】机器学习模型什么时候需要
- 下一篇: 【机器学习基础】不会时间序列预测?不要紧