基於協同過濾的推薦系統

這篇文章主要介紹一種協同過濾的推薦的算法,主要的內容包括:

1、相似度的計算

2、基於用戶的協同過濾

3、基於項目的協同過濾

4、基於內容的過濾算法

5、混合推薦系統

推薦系統在現在的生活中隨處可見,淘寶天貓的商品推薦,音樂軟件的每日歌曲推薦等,協同過濾就是一種很受歡迎的推薦算法。

協同過濾(collaborative filtering):利用某興趣相投、擁有共同經驗之群體的喜好來推薦用戶感興趣的信息。比如說,你和另外一個人都喜歡看電影,而你們所喜歡的電影類型都差不多,那個人對於某一部電影的評價很高,而這部電影你沒有看過。那麼,我是不是就能將這部電影推薦給你呢?基於協同過濾的推薦,有基於用戶和基於物品。

基於協同過濾的推薦系統

一、相似度的計算

如何來衡量兩個用戶是否有相同的興趣愛好呢?通過計算兩個用戶的相似度來衡量。相似度的計算有很多的算法,常用的相似度計算有基於歐式距離的相似度計算、基於皮爾遜相關係數的相似度計算、基於餘弦相似度的相似度計算。

下面使用一個用戶對於電影的評價數據,基於不同的相似度計算,來計算用戶的相似度。三個不同的用戶對5部電影的評分,最高分是5分。

基於協同過濾的推薦系統

1、歐式距離相似度計算

基於協同過濾的推薦系統

下標表示電影的序號,上標表示的是用戶序號,需要讓歐氏距離相似度在0到1範圍內,通過下面的公式來使得歐式距離的相似度在0到1之間

基於協同過濾的推薦系統

當歐式距離為0的時候,相似度為1,當歐氏距離趨於無窮大的時候,相似度趨於0。

基於協同過濾的推薦系統

在使用歐氏距離計算相似度的時候,當用戶都評分都為0的時候,相似度為1。為避免這個問題的發生,可以通過只有當用戶對相同的產品進行過評分的時候,才計算相似度。

2、皮爾遜相關係數相似度

基於協同過濾的推薦系統

皮爾遜相似度相對於歐式距離來說,它對於用戶的量級不敏感。比如兩個用戶,一個用戶通常都喜歡評價5星,而另一個用戶喜歡評價1星,皮爾遜相關係數會認為這兩個向量是相等的。皮爾遜相關係數的取值範圍為-1到1,可以通過numpy的corrcoef函數來獲取皮爾遜相關係數,通過0.5+0.5*corrcoef()將相似度的範圍變換到0到1之間。corrcoef獲取的是一個2*2的矩陣,包括自己和自己的相關係數和自己與另一個數組的相關係數。

基於協同過濾的推薦系統

3、餘弦相似度

餘弦相似度是計算兩個向量之間的夾角,如果夾角為90度,則相似度為0.如果夾角為0度,也就是兩個向量的方向相同,則相似度為1。餘弦相似度的取值範圍也在-1到1之間,可以通過上面的方式,將範圍變換到0到1之間。

基於協同過濾的推薦系統

下面利用sklearn來計算餘弦相似度

基於協同過濾的推薦系統

通過表格中的數據可以發現,雖然U1和U3對相同產品的評價不同,卻會有很高的相似度。因為,我們對於用戶沒有進行評分的產品使用了0進行填充,而0在餘弦相似度中表現了一致性,所以導致了這個問題的發生。下面,我們使用用戶評分減去用戶評分的平均分(平均分的計算以評分的平均分,不包括0),使得用戶評分的平均分為0,再來計算餘弦相似度。

基於協同過濾的推薦系統

通過將評分中心化之後,發現U1與U2的相似度有所增加,而U1與U3的相似度有所下降,這也正是我們所希望的。

二、基於用戶的協同過濾

假設有三個用戶X、Y、Z它們對一些產品進行過評分,如下

基於協同過濾的推薦系統

通過X與Y和Z之間的相似度,以及Y和Z對於P7的評分來計算X對於P7的評分,相似度的計算採用中心化的餘弦相似度。通過計算每位用戶與X之間的相似度,對每位用戶的評分進行加權,然後除以中的相似度。

基於協同過濾的推薦系統

三、基於項目的協同過濾

基於協同過濾的推薦系統

上面是5個用戶對於5首音樂的評價,每一行表示不同用戶對於同一首音樂的評分。通過用戶對歌曲的評分來尋找類似的歌曲,而不是尋找類似的用戶。計算U3對於M5的評分,相似度計算採用中心的餘弦相似度,先計算M5與其他音樂之間的相似度,然後設置k=2,即選擇與M5相似度最高的兩首音樂來計算U3對M5的評分

基於協同過濾的推薦系統

四、基於內容的過濾

基於內容的過濾的推薦算法並不屬於協同過濾,基於內容過濾的推薦算法也被經常使用在推薦系統中。比如說,在一個音樂軟件的推薦系統中,需要先統計每一首音樂的特徵(歌手、節奏、年代、時長、語言等),然後通過這些音樂的特徵基於用戶以前喜歡的音樂進行推薦。

基於內容過濾推薦的優點是,它不需要大量的用戶,可以用戶解決協同過濾推薦系統的冷啟動問題。協同過濾推薦算法,需要大量的用戶,當用戶數量不足的時候,可以使用基於內容的推薦。基於內容推薦的缺點就是,它不會令用戶有一種驚奇的感覺,缺乏意外的驚喜。因為,它推薦的東西基本上都與用戶喜歡的產品相類似。

五、混合推薦系統

在實際的生產開發中,通常都是幾種,甚至更多的推薦算法一起使用,這就是混合推薦系統。使用混合推薦系統的原因是,它可以消除某一種單一推薦算法的缺點。通過多種推薦算法構成的系統,推薦系統會更加強大。

協同過濾

優點:不需要手動創建特徵。

缺點:需要大量的用戶或項目,否則不能正常工作。當數據過大的時候,會產生的稀疏矩陣(矩陣中的很多項為0)。

內容的推薦

優點:不需要大量用戶。

缺點:需要創建特徵,特徵的定義是一個問題,缺乏驚喜。

下篇文章介紹,如何通過SVD來提高推薦效果。


分享到:


相關文章: