2010-04-24 13 views
6

Şu anda her biri çok sayıda Hedef nesnesine sahip Kullanıcı nesneleriyle çalışıyorum. Hedef nesneleri Kullanıcıya özel değildir, yani Kullanıcılar aynı Hedefi paylaşabilir. İki Kullanıcı arasındaki bir "benzerlik yüzdesini" hesaplamaya çalışıyorum ... (yani kaç Gol'ün paylaştıkları kaç Gol'ü hesaba kattığını göz önünde bulundurarak). durum? Bu yararlı ise Grays ile Mysql kullanıyorum.Veri kümeleri arasındaki benzerlik yüzdesini hesaplamanın etkili yolu

Teşekkür

cevap

13

bu Jaccard benzerlik yapmanın standart bir yol. Bir ilk kullanıcının hedeflerinin kümesidir ve B ikinci kullanıcı amaçlarından kümesi ise, Jaccard benzerliğidir:

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

Bu da toplam oy sayısına bölünmesiyle paylaştıkları hedefleri sayısıdır İkisi birlikte var (yalnızca bir kez paylaştıkları hedefleri saymak). Bu nedenle ilk kullanım amaçları A = {1,2,3} ve ikinci Eğer kullanıcı amaçları B = {2,4} o zaman bu:

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

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

Jaccard benzerlik 0 arasında olduğu (onlar Eğer mükemmel çalıştı 100.

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

+0

ile çarpılarak yüzde alacağım böylece çok teşekkür ederim, (bunlar aynı hedeflere sahip) hiçbir amaçları paylaşan) ve 1 – RyanLynch

İlgili konular