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