Определение метрики близости

Для набора данных о блогах, где значениями являются счетчики слов, коэффициент корреляции Пирсона работает неплохо. Но в данном случае у нас есть лишь единицы и нули, представляющие соответственно наличие и отсутствие, и было бы полезнее определить некую меру перекрытия между людьми, желающими иметь два предмета. Такая мера существует и называется коэффициентом Танимото; это отношение мощности пересечения множеств (элементов, принадлежащих обоим множествам) к мощности их объединения (элементов, принадлежащих хотя бы одному множеству). Коэффициент Танимото для двух векторов вычисляется следующей простой функцией: def tanamoto(v1,v2):

c1,c2,shr=0,0,0

Рис. 3.6. Кластеры предметов, которые хотели бы иметь люди


for i in range(len(v1)): if v1[i]!=0: c1+=1 # in v1 if v2[i]!=0: c2+=1 # in v2 if v1[i]!=0 and v2[i]!=0: shr+=1 # in both

return 1.0-(float(shr)/(c1+c2-shr))

Она возвращает значение от 0,0 до 1,0. Значение 1,0 означает, что ни один человек, желающий приобрести первый предмет, не хочет приобретать второй. А 0,0 говорит о том, что эти два предмета хотят иметь в точности одни и те же люди.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100