協同過濾推薦 公式梳理



1 距離定義

11、歐幾里德距離(Euclidean Distance

1.2、皮爾遜相關係數(Pearson CorrelationCoefficient

皮爾遜相關係數一般用於計算兩個定距離變臉間聯繫的緊密程度,它的取值在[-1,1]之間

1.3Cosine 相似度(Cosine Similarity

Cosine 相似度被廣泛應用於計算文檔數據的相似度:

 

1.4  Tanimoto 係數(Tanimoto Coefficient

Tanimoto 係數也稱爲 Jaccard 係數,是 Cosine 相似度的擴展,也多用於計算文檔數據的相似度:

 

 

 

 

2. 預測準確度

2.1評分預測

評分預測的預測準確度一般通過均方根誤差(RMSE)和平均絕對誤差(MAE)計算。對於

測試集中的一個用戶u和物品i,令rui是用戶u對物品i的實際評分,而ˆui r 是推薦算法給出的預測評

分,那麼RMSE的定義爲:


MAE採用絕對值計算預測誤差,它的定義爲

 

假設我們用一個列表records存放用戶評分數據,令records[i] = [u,i,rui,pui],其

rui是用戶u對物品i的實際評分,pui是算法預測出來的用戶u對物品i的評分,那麼下面的代

碼分別實現了RMSEMAE的計算過程。

def RMSE(records):
   
returnmath.sqrt(sum([(rui-pui)*(rui-pui) for u,i,rui,pui in records])/float(len(records)))
def MAE(records):
   
returnsum([abs(rui-pui) foru,i,rui,pui inrecords])/ float(len(records))

 

2.2 TopN推薦

#python 代碼

def PrecisionRecall(test, N):

    hit = 0

    n_recall = 0

    n_precision = 0

    for user, items in test.items():

    rank = Recommend(user, N) #用戶推薦API 根據傳入的用戶id 和返回的推薦結果數,進行推薦

    hit += len(rank & items) #對推薦列表和用戶真實列表取交集,並計算交集的物品數

    n_recall += len(items)

    n_precision += N

    return [hit / (1.0 * n_recall), hit / (1.0 * n_precision)]

有的時候,爲了全面評測TopN推薦的準確率和召回率,一般會選取不同的推薦列表長度N

計算出一組準確率/召回率,然後畫出準確率/召回率曲線(precision/recall curve)。

 

2.3. 覆蓋率

覆蓋率(coverage)描述一個推薦系統對物品長尾的發掘能力

推薦系統能夠推薦出來的物品佔總物品集合的比例

3. als計算公式

說明: Matrix Factorization

上述 Iterate 公式含義,是對矩陣的 的求解:

表示 i用戶對j item的真實打分;

Nbrs(i) 指的是用戶i所評分的產品列表。

:表示取產品列表中的一個產品

是爲了防止過度擬合,加上正則化參數。

f[j] 代表產品j的特徵向量

f[i] 代表用戶i的特徵向量

w 表示求解的用戶特徵向量,使得f[i] 最小

 

 

********************************************************************************************************************************************************************************************************************

但是這裏之前問題還是存在,就是用戶和產品的特徵向量都是未知的,這個式子存在兩個未知變量

解決的辦法是交替的最小二乘法
首先對於上面的公式,以下面的形式顯示:

說明: https://img-blog.csdn.net/20151217154940124

爲了防止過度擬合,加上正則化參數

說明: https://img-blog.csdn.net/20151217155017302

說明: https://img-blog.csdn.net/20151217155226825

首先用一個小於1的隨機數初始化V
根據公式(4)求U
此時就可以得到初始的UV矩陣了,計算上面說過的差平方和
根據計算得到的U和公式(5),重新計算並覆蓋V,計算差平方和
反覆進行以上兩步的計算,直到差平方和小於一個預設的數,或者迭代次數滿足要求則停止
取得最新的UV矩陣
則原本的稀疏矩陣R就可以用R=U(V)T來表示了
以上公式內容截圖來自:
基於矩陣分解的協同過濾算法

總結一下:
ALS
算法的核心就是將稀疏評分矩陣分解爲用戶特徵向量矩陣和產品特徵向量矩陣的乘積
交替使用最小二乘法逐步計算用戶/產品特徵向量,使得差平方和最小
通過用戶/產品特徵向量的矩陣來預測某個用戶對某個產品的評分

 

********************************************************************************************************************************************************************************************************************

基於鄰域的方法

5.基於用戶的領域算法

基於用戶的鄰域算法和基於物品的鄰域算法都可以應用到評分預測中。基於用戶的鄰域算法

認爲預測一個用戶對一個物品的評分,需要參考和這個用戶興趣相似的用戶對該物品的評分,即:

這裏,S(u, K)是和用戶u興趣最相似的K個用戶的集合,N(i)是對物品i評過分的用戶集合,是用戶v對物品i的評分,是用戶v對他評過分的所有物品評分的平均值。用戶之間的相似度可以通過皮爾遜係數計算:

 

4.基於物品的鄰域算法

       基於物品的鄰域算法在預測用戶U對物品i的評分時,會參考用戶u對和物品i相似的其他物品的評分 即:


這裏 S(u,K)是和i最想死的物品集合,N(u) 是用戶u評過分的物品集合,w 是物品之間的相似度, i r 是物品i的平均分。對於如何計算物品的相似度,上面已經定義了距離的幾種求解方法,

 

第一種是普通的餘弦相似度(cosine similarity):

第二種是皮爾遜係數(pearson correlation)

第三種被Sarwar稱爲修正的餘弦相似度(adjust cosine similarity):

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章