簡體   English   中英

如何在目標中計算加權值的相似度以創建良好的聚類

[英]How to calculate similarity of weighted values in goal to create good clusters

我嘗試基於包含加權值的對象創建群集。

值是關於歌曲的,對象是用戶。 例如:

如果用戶1喜歡3首流行歌曲,1首說唱歌曲而不是嘻哈歌曲,則他將代表:

u1 = {3,1,0}

因此,如果我有3個具有隨機值的用戶,則可以有一個像這樣的矩陣:

3 1 0
0 4 5
1 2 3

u1 = {3,1,0}
u2 = {0,4,5}
u3 = {1,2,3}

我的問題是,可以在這種數據上創建集群嗎? 哪種算法是找到與Jaccard相似系數之類的數據之間相似性的最佳算法。

首先,我嘗試使用二進制數據進行計算,但是如果我這樣做,將會丟失一些信息。

第二種方式,我嘗試計算每個值之間的相似度。 我總結所有相似性,然后在每個對象值之間再次進行相似性處理。

舉個例子:

我用u1和u2得到:

u1 = {3,1,0}
u2 = {0,4,5}

|3 - 0| = 3
|4 - 1| = 3
|0 - 5| = 5

(3 + 3 + 5) / 3 = 11/3 

u1 = {3,1,0}
u3 = {1,2,3}

|3 - 1| = 2
|1 - 2| = 1
|0 - 3| = 3

(2 + 1 +3) / 3 = 6/3 = 2

11/3> 2,因此u1和u3更相似。

但是我不確定這種方法是否也不錯。

其目的是將群集與其他群集進行比較,以匹配某些搜索結果。

首先,它似乎不是聚類分析的任何特殊情況。 實際上,每種聚類方法都應該像一般情況一樣在此數據上正常工作-我的意思是這不是什么“怪異”或特定的,您只是在N維空間中有點。 唯一要說明的是,即使他們的音樂品味相同,您目前的表示方式還是喜歡10000首歌曲的人和喜歡10首歌曲的人的差異,例如:

[ 10000 0 0 ]
[ 10 0 0 ]

因此,如果您實際上正在考慮對用戶的“ gerne”首選項進行建模,則應考慮規范化,因此您在每個維度中都有(例如,因為有很多方法可以做到)百分比,而不是:

[ 10000 0 0 ] -> [ 1.0 0.0 0.0 ]
[ 10 0 0 ] -> [ 1.0 0.0 0.0 ]

特定聚類方法的選擇取決於與預期輸出有關的許多事情,而不是輸入 您可以從一些簡單的方法(基於k重心)開始,如果結果不令人滿意,請更深入地研究更高級的方法(分層聚類,dbscan,光學,em等)。

我建議您使用余弦相似度

假設用戶的偏好僅僅是矢量(每個矢量代表一個用戶)。

如您所知,不同的用戶可以收聽不同數量的音樂-但是,盡管如此,他們可能會有相似的偏好:

在此處輸入圖片說明

因此,在此模型的方法中,我們可以斷言, 兩個向量之間的角度越小-它們越相似

與直接計算兩個向量之間的角度相反,我們可以計算它們之間的余弦(這要簡單得多):

在此處輸入圖片說明

由於余弦函數的特殊性: 兩個向量之間的夾角余弦越大,它們越相似

你的例子:

u1 = {3, 1, 0}
u2 = {0, 4, 5}
u3 = {1, 2, 3}

|u1| = sqrt(3^2 + 1^2 + 0^2) = sqrt(10) ~ 3.16
|u2| = sqrt(0^2 + 4^2 + 5^2) = sqrt(41) ~ 6.4
|u3| = sqrt(1^2 + 2^2 + 3^2) = sqrt(14) ~ 3.74

similarity(u1, u2) = dot_product(u1, u2) / (|u1| * |u2|) 
                   = (3*0 + 1*4 + 0*5) / (3.16 * 6.4)
                   = 4 / 20.224 ~ 0.2

similarity(u2, u3) = dot_product(u2, u3) / (|u2| * |u3|) 
                   = (0*1 + 4*2 + 5*3) / (6.4 * 3.74)
                   = 23 / 23.936 ~ 0.96

similarity(u1, u3) = dot_product(u1, u3) / (|u1| * |u3|) 
                   = (3*1 + 1*2 + 0*3) / (3.16 * 3.74)
                   = 4 / 11.8184 ~ 0.34

所以:

相似度(u1,u2)= 0.2

相似度(u2,u3)= 0.96

相似度(u1,u3)= 0.34

如我所見-結果與輸入數據相關,因為u2和u3都喜歡說唱和嘻哈,而且幾乎不喜歡流行音樂。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM