2010-04-24 100 views
6

我目前正在使用User對象 - 每個對象都有許多目標對象。目標對象不是用戶特定的,也就是說,用戶可以共享相同的目標。我試圖設計一種方式來計算兩個用戶之間的「相似度百分比」(即考慮到他們共享多少個目標以及他們不共享多少個目標)有沒有人有過這種類型的情況?如果這有幫助,我在使用Grails和Mysql。計算數據集之間相似性百分比的有效方法

謝謝

回答

13

這樣做的標準方法是Jaccard相似性。如果A是一組第一用戶的目標和B是集合的所述第二用戶的目標,Jaccard相似是:

#(A intersect B)/#(A union B) 

這是他們共享由票的總數除以目標數兩人在一起(計算他們只共享一次的目標)。因此,如果第一個用戶擁有的目標A = {1,2,3}和第二用戶具有目標B = {2,4},然後它是這樣的:

A intersect B = {2} 
A union B = {1,2,3,4} 

#(A intersect B)/#(A union B) = 1/4 

的Jaccard相似總是0之間(它們不共享的目標)和1(它們具有相同的目標),這樣你就可以通過乘以100。

http://en.wikipedia.org/wiki/Jaccard_index

+0

完美工作得到的百分比,非常感謝你 – RyanLynch 2010-04-24 23:45:39