協同過濾推薦演算法
分為基於使用者的協同過濾推薦usercf和基於物品的協同過濾推薦itemcf。介紹見《協同過濾的實現步驟》
1、指導思想
這種過濾演算法的有效性基礎在於:
1、使用者偏好具有相似性,即使用者可分類。這種分類的特徵越明顯,推薦準確率越高
2、物品之間具有相似性,即偏好某物品的人,都很可能也同時偏好另一件相似物品
2、演算法實現
總的來說,要實現協同過濾,需要一下幾個步驟:
1.收集使用者偏好
2.找到相似的使用者或物品
3.計算推薦
2.1、收集使用者偏好
使用者行為
型別特徵
作用評分
顯式整數量化值[0,n]
可以得到精確偏好
投票顯式
布林量化值0|1
可以得到精確偏好
**顯式
布林量化值0|1
可以得到精確偏好
儲存書籤
顯式布林量化值0|1
可以得到精確偏好
標記書籤tag
顯式一些單詞
需要進一步分析得到偏好
顯式一些文字
需要進一步分析得到偏好
點選流隱式
一組點選記錄
需要進一步分析得到偏好
頁面停留時間
隱式一組時間資訊
噪音偏大,不好利用
購買隱式
布林量化值0|1
可以得到精確偏好
2.2、原始偏好資料的預處理
v 使用者行為識別/組合
在一般應用中,我們提取的使用者行為一般都多於一種,關於如何組合這些不同的使用者行為,比如,可以將使用者行為分為「檢視」和「購買」等等,然後基於不同的行為,計算不同的使用者 /
物品相似度。
類似於當當網或者京東給出的「購買了該圖書的人還購買了 ...
」,「檢視了圖書的人還檢視了
...」
v 喜好程度加權
根據不同行為反映使用者喜好的程度將它們進行加權,得到使用者對於物品的總體喜好。
一般來說,顯式的使用者反饋比隱式的權值大,但比較稀疏,畢竟進行顯示反饋的使用者是少數;同時相對於「檢視」,「購買」行為反映使用者喜好的程度更大,但這也因應用而異。
v 資料減噪和歸一化。
① 減噪:使用者行為資料是使用者在使用應用過程中產生的,它可能存在大量的噪音和使用者的誤操作,我們可以通過經典的資料探勘演算法過濾掉行為資料中的噪音,這樣可以使我們的分析更加精確。
② 歸一化:如前面講到的,在計算使用者對物品的喜好程度時,可能需要對不同的行為資料進行加權。但可以想象,不同行為的資料取值可能相差很大,比如,使用者的檢視資料必然比購買資料大的多,如何將各個行為的資料統一在乙個相同的取值範圍中,從而使得加權求和得到的總體喜好更加精確,就需要我們進行歸一化處理。最簡單的歸一化處理,就是將各類資料除以此類中的最大值,以保證歸一化後的資料取值在 [0,1] 範圍中。
v 形成使用者偏好矩陣
一般是二維矩陣,一維是使用者列表,另一維是物品列表,值是使用者對物品的偏好,一般是 [0,1] 或者
[-1, 1]
的浮點數值。
2.3、找到相似物品或使用者
當已經對使用者行為進行分析得到使用者喜好後,我們可以根據使用者喜好計算相似使用者和物品,然後基於相似使用者或者物品進行推薦,這就是最典型的 cf 的兩個分支:基於使用者的
cf 和基於物品的
cf。這兩種方法都需要計算相似度,下面我們先看看最基本的幾種計算相似度的方法。
2.4、相似度的計算
相似度的計算,現有的幾種基本方法都是基於向量(vector)的,其實也就是計算兩個向量的距離,距離越近相似度越大。
在推薦的場景中,在使用者 - 物品偏好的二維矩陣中,我們可以將乙個使用者對所有物品的偏好作為乙個向量來計算使用者之間的相似度,或者將所有使用者對某個物品的偏好作為乙個向量來計算物品之間的相似度。
cf的常用方法有三種,分別是歐式距離法、皮爾遜相關係數法、余弦相似度法。
為了測試演算法,給出以下簡單的用好偏好資料矩陣:
行表示三名使用者,列表示三個品牌,對品牌的喜愛度按照1~5增加。
使用者蘋果
小公尺魅族
zhangsan
lisi
wangwu
(1)歐氏距離法
就是計算每兩個點的距離,比如nike和
sony
的相似度
。數值越小,表示相似度越高。
def osdistance(vector1, vector2):
sqdiffvector = vector1-vector2
sqdiffvector=sqdiffvector**2
sqdistances = sqdiffvector.sum()
distance = sqdistances**0.5
return distance
(2)皮爾遜相關係數
兩個變數之間的相關係數越高,從乙個變數去**另乙個變數的精確度就越高,這是因為相關係數越高,就意味著這兩個變數的共變部分越多,所以從其中乙個變數的變化就可越多地獲知另乙個變數的變化。如果兩個變數之間的相關係數為1或
-1,那麼你完全可由變數
x去獲知變數
y的值。
· 當相關係數為0時,
x和y兩變數無關係。
· 當
x的值增大,
y也增大,正相關關係,相關係數在
0.00
與1.00
之間· 當
x的值減小,
y也減小,正相關關係,相關係數在
0.00
與1.00
之間· 當
x的值增大,
y減小,負相關關係,相關係數在
-1.00
與0.00之間當
x的值減小,
y增大,負相關關係,相關係數在
-1.00
與0.00
之間相關係數的絕對值越大,相關性越強,相關係數越接近於1和
-1,相關度越強,相關係數越接近於
0,相關度越弱。
在python中用函式
corrcoef
實現(3)余弦相似度
通過測量兩個向量內積空間的夾角的余弦值來度量它們之間的相似性。0度角的余弦值是
1,而其他任何角度的余弦值都不大於
1;並且其最小值是
-1。從而兩個向量之間的角度的余弦值確定兩個向量是否大致指向相同的方向。兩個向量有相同的指向時,余弦相似度的值為
1;兩個向量夾角為
90°時,余弦相似度的值為
0;兩個向量指向完全相
反的方向時,余弦相似度的值為-1。在比較過程中,向量的規模大小不予考慮,僅僅考慮到向量的指向方向。余弦相似度通常用於兩個向量的夾角小於90°之內,因此余弦相似度的值為0到
1之間。
def cossim(ina,inb):
num = float(ina.t*inb)
denom = la.norm(ina)*la.norm(inb)
return 0.5+0.5*(num/denom)
3、計算推薦
usercf基於使用者相似度的推薦
計算推薦的過程其實就是knn演算法的計算過程
itemcf基於物品相似度的推薦
演算法思路
1. 構建物品的同現矩陣
2. 構建使用者對物品的評分矩陣
3. 通過矩陣計算得出推薦結果
推薦結果=使用者評分矩陣
*同現矩陣(推薦結果=行
*列)如:4*2.0+3*0.0+4*0.0+3*4.0+1*4.5+2*0.0+0*5.0=24.0
實質:計算各種物品組合的出現次數
協同過濾推薦演算法 協同過濾推薦演算法總結
推薦演算法具有非常多的應用場景和商業價值,因此對推薦演算法值得好好研究。推薦演算法種類很多,但是目前應用最廣泛的應該是協同過濾類別的推薦演算法,本文就對協同過濾類別的推薦演算法做乙個概括總結,後續也會對一些典型的協同過濾推薦演算法做原理總結。推薦演算法概述 1 基於內容的推薦 這一類一般依賴於自然語...
協同過濾推薦演算法 推薦演算法 基於協同過濾CF
前邊我們已經介紹了推薦演算法裡的基於內容的推薦演算法cb,今天我們來介紹一下基於協同的推薦演算法collaboration filtering cf 協同過濾是乙個利用群體智慧型的乙個演算法,舉乙個簡單的例子,如果放假了你想去北京玩幾天,但是不知道北京都有哪些好玩的,你會怎麼做?你可能會上網查一下的...
協同過濾推薦演算法
協同過濾是通過將使用者和其他使用者和的資料進行對比來實現推薦。我們不利用專家所給出的重要屬性來描述物品從而計算他們之間的相似度,而是利用使用者對他們的意見來計算相似度,這就是協同過濾中所使用的方法。它不關心物品的描述屬性,而是嚴格的按照許多使用者的觀點來計算相似度。相似度的度量一種是歐式距離,一種是...