歐幾里德相似度(Euclidean Distance)最初用于計算歐幾里德空間中兩個點的距離,以兩個用戶x和y為例子,看成是n維空間的兩個向量x和y, xi表示用戶x對itemi的喜好值,yi表示用戶y對itemi的喜好值,他們之前的歐幾里德距離是
對應的歐幾里德相似度,一般采用以下公式進行轉換:距離越小 ,相似度越大
在taste里,計算user之間和item之前歐幾里德相似度的類是EuclideanDistanceSimilarity。
皮爾遜相似度(Pearson Correlation Coefficient)皮爾遜相關系數(shù)一般用于計算兩個定距變量間線性相關的緊密程度,它的取值在[-1,+1]之間。當取值大于0時表示兩個變量是正相關的,即一個變量的值越大,另一個變量的值也會越大;當取值小于0時表示兩個變量是負相關的,即一個變量的值越大,另一個變量的值反而會越小。其計算公式如下 其中sx和sy是樣品的標準偏差
在taste里, PearsonCorrelationSimilarity的實現(xiàn)方式不是采用上述公式,而是采用3的實現(xiàn)。
Cosine相似度(Cosine Similarity)就是兩個向量的夾角余弦,被廣泛應用于計算文檔數(shù)據(jù)的相似度
在taste里, 實現(xiàn)Cosine相似度的類是PearsonCorrelationSimilarity, 另外一個類UncenteredCosineSimilarity的實現(xiàn)了形式化以后的cosine向量夾角,如下公式
用這種公式計算的原因如下:余弦相似度更多的是從方向上區(qū)分差異,而對絕對的數(shù)值不敏感。因此沒法衡量每個維數(shù)值的差異,會導致這樣一個情況:比如用戶對內容評分,5分制,X和Y兩個用戶對兩個內容的評分分別為(1,2)和(4,5),使用余弦相似度得出的結果是0.98,兩者極為相似,但從評分上看X似乎不喜歡這2個內容,而Y比較喜歡,余弦相似度對數(shù)值的不敏感導致了結果的誤差,需要修正這種不合理性,就出現(xiàn)了調整余弦相似度,即所有維度上的數(shù)值都減去一個均值,比如X和Y的評分均值都是3,那么調整后為(-2,-1)和(1,2),再用余弦相似度計算,得到-0.8,相似度為負值并且差異不小,但顯然更加符合現(xiàn)實。
Tanimoto 相似度Tanimoto系數(shù)也稱Jaccard系數(shù),是Cosine相似度的擴展,也多用于計算文檔相似度。計算公式如下:
其中x表示用戶x所喜好的所有item的集合, y表示用戶y所喜好的所有item的集合。 在taste里,實現(xiàn)Tanimoto 相似度的類是TanimotoCoefficientSimilarity,可以看出這種計算方法適用于用戶對item的喜好是0和1那種情況。
City Block(或者曼哈頓)相似度出租車幾何或曼哈頓距離(Manhattan Distance)是由十九世紀的赫爾曼·閔可夫斯基所創(chuàng)詞匯 ,是種使用在幾何度量空間的幾何學用語,用以標明兩個點上在標準坐標系上的絕對軸距總和。圖中紅線代表曼哈頓距離,綠色代表歐氏距離,也就是直線距離,而藍色和黃色代表等價的曼哈頓距離。 計算公式是: 轉換后的相似度為:
在tasete里的實現(xiàn)類CityBlockSimilarity采用了簡化的計算方式,比較適用于用戶的喜歡數(shù)據(jù)時0或者1的情況
LogLikelihood(對數(shù)似然相似度)相似度公式比較復雜,實現(xiàn)類為LogLikelihoodSimilarity,比較適用于用戶的喜歡數(shù)據(jù)時0或者1的情況
Spearman(斯皮爾曼)相似度斯皮爾曼相關性可以理解為是排列后(Rank)用戶喜好值之間的Pearson相關度?!禡ahout in Action》中有這樣的解釋:假設對于每個用戶,我們找到他最不喜歡的物品,重寫他的評分值為“1”;然后找到下一個最不喜歡的物品,重寫評分值為“2”,依此類推。然后我們對這些轉換后的值求Pearson相關系數(shù),這就是Spearman相關系數(shù)。 斯皮爾曼相關度的計算舍棄了一些重要信息,即真實的評分值。但它保留了用戶喜好值的本質特性——排序(ordering),它是建立在排序(或等級,Rank)的基礎上計算的。 因為斯皮爾曼相關性的計算需要花時間計算并存儲喜好值的一個排序(Ranks),具體時間取決于數(shù)據(jù)的數(shù)量級大小。正因為這樣,斯皮爾曼相關系數(shù)一般用于學術研究或者是小規(guī)模的計算。 在taste里的實現(xiàn)類為SpearmanCorrelationSimilarity |
|