0

舉個例子,假設我有一個非常簡單的數據集。我給了一個csv三列,user_id,book_id,rating。評分可以是0-5的任何數字,其中0表示用戶具有而不是評價該書。正確解釋餘弦角距離相似度和歐幾里得距離相似度

比方說,我隨機挑三個用戶,我得到這些功能/評級向量。

馬丁:< 3,3,5,1,2,3,2,2,5>

雅各布:< 3,3,5,0,0,0,0,0,0>

格蘭特:< 1,1,1,2,2,2,2,2,2>

相似度計算:

+--------------+---------+---------+----------+ | | M & J | M & G | J & G | +--------------+---------+---------+----------+ | Euclidean | 6.85 | 5.91 | 6.92 | +--------------+---------+---------+----------+ | Cosine | .69 | .83 | .32 | +--------------+---------+---------+----------+

現在,我相似的期望是,馬丁和賈玉米棒將是最相似的。我期待這一點,因爲他們對這兩本書評價的書籍的評分完全相同。但我們最終發現馬丁和格蘭特是最相似的。

我從數學上理解我們如何得出這個結論,但我不明白如何依靠餘弦角距離或歐幾里德距離作爲計算相似性的方法,如果發生這種類型的事情。馬丁和格蘭特比馬丁和雅各布更類似的解釋是什麼?

我以爲有一個想法就是計算歐幾里德距離,但忽略一個用戶沒有評價過該書的所有書籍。

我然後用這個

+--------------+---------+---------+----------+ | | M & J | M & G | J & G | +--------------+---------+---------+----------+ | Euclidean | 0 | 5.91 | 6.92 | +--------------+---------+---------+----------+ | Cosine | .69 | .83 | .32 | +--------------+---------+---------+----------+

當然我現在有0歐幾里得距離,這符合我期望的推薦系統的結束。我看到很多教程和講座都使用餘弦角度距離來忽略未分級的書籍,而不是使用歐幾里德並忽略它們,所以我認爲這一般不會工作。

編輯:

只是嘗試了一下,我調整雅各布的特徵向量更加相似:

雅各布:< 3,3,5,1,2,3,2,0, 0>

當我計算與馬丁的餘弦角距離時,我仍然只得到.82!與馬丁和格蘭特相比,仍然不那麼相似,但通過檢查,我預計這兩者會非常相似。

有人可以幫助解釋我的思維錯誤,並可能提出另一種相似性措施嗎?

回答

1

正如你所注意到的那樣,歐幾里得和餘弦角是基於距離的。舉例來說,3到5之間的距離比3到0之間的距離小得多,在Jacob的評分中有多個零,你不會在Jacob和Martin之間得到很多相似之處。 你的例子的主要問題是,你認爲0表示沒有評分,其實它的兩個公式被解釋爲評分0(這是可能的最低評分)如果你會跳過零評分並且僅比較用戶他們有共同的評分比馬林和雅各布有相似的1!

0

您的想法是正確的,但是您的代碼可能會錯誤地計算餘弦相似度。

克里斯已經給了你一個正確的答案,但我想指出,當你計算餘弦相似度時,你沒有跳過那些未評分的項目。我們可以看到,第一個和第二個表的餘弦相似度完全相同。這可能是您的代碼中的一個錯誤。