網頁

2014年8月3日 星期日

Smilarity --- 到底有多相似:Euclidean Distance 及 Cos Distance

顧客A買了糖果、餅乾、衛生紙
顧客B買了餅乾、汽水、雜誌
顧客C買了汽水

要如何決定他們之間的相似程度?

Euclidean Distance:


一個滿符合直覺的做法就是用Euclidean distance,就是國中學過的平面中二點的距離

所以顧客A、B、C的座標分別是


1代表有買過,0代表沒買過


距離分別是


C跟A的距離是2.23,C跟B的距離是1.41,C跟B距離比較近,所以比較相似


Cosine Distance:

但是這裡有個問題,也就是有購買東西的意義遠大於沒購買東西的意義。

舉例來說:
說法1:因為B跟C都有買汽水,所以他們比較像
說法2:因為A跟C都沒有買雜誌,所以他們比較像
說法1看起來比較符合我們的思考方式,因為不買某商品的理由遠多於購買某商品的理由。

再舉個例子:
說法1:我跟歐巴馬比較像,因為我們都不是白人
說法2:我跟金城武比較像,因為我們都是帥哥
看起來說法2比較站得住腳,因為不同的東西太多,而相同的東西太少。

這樣的概念數值化後就是:Cosine Similarity


Cosine Distance 就是 1 - Cosine Similarity

情況一:A跟B同時買了4件東西,4件東西都一樣。A跟B的cosine similarity是 4 / sqrt(4)*sqrt(4) = 1,cosine distance = 1-1 = 0。他們之間沒有距離,代表他們一模一樣。

情況二:A買了100件東西,B買了4件東西,他們買的東西只有1件相同,A跟B的cosine similarity是 1 / sqrt(100)*sqrt(4) = 1/20,cosine distance = 1 - 1/20 = 0.95

回到最初的例子:B,C的cosine distance是多少?


cosine distance
= 1 - cosine similarity
= 1 - ( 1 / sqrt(4)*sqrt(1) )= 1 - 0.5
= 0.5

但是cosine distance只適用於有沒有購買的紀錄,有買就是1,不管買了多少,沒買就是0。如果還要把購買的數量考慮進來,就不適用於這種方式了。






沒有留言:

張貼留言