Mahout推薦系統中有許多相似度實現,這些元件實現了計算不能User之間或Item之間的相似度。對於資料量以及資料型別不同的資料來源,需要不同的相似度計算方法來提高推薦效能,在mahout提供了大量用於計算相似度的元件,這些元件分別實現了不同的相似度計算方。

User 相似度:

Item 相似度:

皮爾森相關度

類名:PearsonCorrelationSimilarity

原理:用來反映兩個變數線性相關程度的統計量

範圍:[-1,1],絕對值越大,說明相關性越強,負相關對於推薦的意義小。

說明:1、 不考慮重疊的數量;2、 如果只有一項重疊,無法計算相似性(計算過程被除數有n-1);3、 如果重疊的值都相等,也無法計算相似性(標準差為0,做除數)。

該相似度並不是最好的選擇,也不是最壞的選擇,只是因為其容易理解,在早期研究中經常被提起。使用Pearson線性相關係數必須假設資料是成對地從正態分佈中取得的,並且資料至少在邏輯範疇內必須是等間距的資料。Mahout中,為皮爾森相關計算提供了一個擴充套件,通過增加一個列舉型別(Weighting)的引數來使得重疊數也成為計算相似度的影響因子。

歐式距離相似度

類名:EuclideanDistanceSimilarity

原理:利用歐式距離d定義的相似度s,s=1 / (1+d)。

範圍:[0,1],值越大,說明d越小,也就是距離越近,則相似度越大。

說明:同皮爾森相似度一樣,該相似度也沒有考慮重疊數對結果的影響,同樣地,Mahout通過增加一個列舉型別(Weighting)的引數來使得重疊數也成為計算相似度的影響因子。

餘弦相似度

類名:PearsonCorrelationSimilarity和UncenteredCosineSimilarity

原理:多維空間兩點與所設定的點形成夾角的餘弦值。

範圍:[-1,1],值越大,說明夾角越大,兩點相距就越遠,相似度就越小。

說明:在數學表達中,如果對兩個項的屬性進行了資料中心化,計算出來的餘弦相似度和皮爾森相似度是一樣的,在mahout中,實現了資料中心化的過程,所以皮爾森相似度值也是資料中心化後的餘弦相似度。另外在新版本中,Mahout提供了UncenteredCosineSimilarity類作為計算非中心化資料的餘弦相似度。

Spearman秩相關係數

類名:SpearmanCorrelationSimilarity

原理:Spearman秩相關係數通常被認為是排列後的變數之間的Pearson線性相關係數。

範圍:{-1.0,1.0},當一致時為1.0,不一致時為-1.0。

說明:計算非常慢,有大量排序。針對推薦系統中的資料集來講,用Spearman秩相關係數作為相似度量是不合適的。

曼哈頓距離

類名:CityBlockSimilarity

原理:曼哈頓距離的實現,同歐式距離相似,都是用於多維資料空間距離的測度

範圍:[0,1],同歐式距離一致,值越小,說明距離值越大,相似度越大。

說明:比歐式距離計算量少,效能相對高。

Tanimoto係數

類名:TanimotoCoefficientSimilarity

原理:又名廣義Jaccard係數,是對Jaccard係數的擴充套件,等式為

範圍:[0,1],完全重疊時為1,無重疊項時為0,越接近1說明越相似。

說明:處理無打分的偏好資料。

對數似然相似度

類名:LogLikelihoodSimilarity

原理:重疊的個數,不重疊的個數,都沒有的個數

範圍:具體可去百度文庫中查詢論文《Accurate Methods for the Statistics of Surprise and Coincidence》

說明:處理無打分的偏好資料,比Tanimoto係數的計算方法更為智慧。