Косинус мера сходства: несколько результатов - PullRequest
1 голос
/ 15 апреля 2010

Моя программа использует кластеризацию для создания подмножеств схожих элементов, а затем использует меру косинусного сходства как метод определения того, насколько похожи кластеры. Например, если пользователь 1 имеет 3 кластера, а пользователь 2 имеет 3 кластера, то каждый кластер сравнивается друг с другом, будет получено 9 результатов с использованием меры сходства косинусов, например, [0,3, 0,1, 0,4, 0,12, 0,0, 0,6, 0,8, 1,0, 0,22]

Моя проблема в том, что, основываясь на этих результатах, как я могу превратить эти значения в ощутимый результат, чтобы показать, насколько похожи эти два пользователя?

Простой метод, который я разработал, состоял в том, чтобы просто разделить все значения на количество сравнений и сложить их вместе, чтобы получить 1 значение, но это довольно простой подход.

Спасибо

AS


Основное описание того, чего я пытаюсь добиться, - это то, можно ли определить, насколько похожи два пользователя из веб-службы социальных закладок Delicious.com по их закладкам и тегам.

До сих пор я создал кластеры из тегов пользовательских закладок и совместного использования каждого тега, например, один кластер может быть:

fruit: (apple, 15), (orange, 9), (kiwi, 2)

и другой пользователь может создать похожий кластер из своих тегов:

fruit: (apple, 12), (strawberry, 7), (orange, 3)

Число представляет количество совпадений тега в сохраненной закладке с тегом "фрукты" в этом примере.

Я использовал меру косинусного сходства, чтобы сравнить эти кластеры, чтобы определить, насколько они похожи, и, исходя из моего первоначального вопроса, со многими результатами сравнения кластеров (сравнивая кластеры каждого пользователя с кластерами другого пользователя), я не уверен, как агрегировать результаты чтобы получить значимый результат.

Вполне возможно, что я неправильно использовал косинусное сходство,

Ответы [ 2 ]

2 голосов
/ 15 апреля 2010

Проблема плохо определена ... С более подробной информацией можно предложить комментарий о достоверности подхода, в целом (о том, как использовать косинусное сходство, способ его расчета и т. Д.), А также о обоснованность подхода, использованного при агрегировании конечного результата.

По существу, вы усредняете значения косинусного сходства, рассчитанные для каждой пары кластеров (Ca, Cb), где Ca - кластер, который пользователь A "имеет", а Cb - кластер который B "имеет".

Я полагаю, что это можно было бы значительно улучшить, используя взвешенное среднее , которое учитывало бы количество «наличия» кластера, которое может пользователь экспонат .
Может быть, это «имеющее» отношение чисто булево: либо у пользователя есть, либо у него нет определенного кластера, но есть вероятность, что его / ее «иметь» можно квалифицировать либо с помощью [упорядоченного] категориального атрибута, либо даже с помощью числового значения. (будь он относительным: скажем процент наличия данного кластера у данного пользователя по сравнению с другими кластерами, которые он / она имеет, или быть абсолютным).
Поскольку каждое косинусное сходство основано на кластерах, которые имеет пользователь «A», и кластере, который имеет пользователь «B», при правильной нормализации можно было бы принять произведение соответствующих «имеющих» мер как коэффициент, применяемый к соответствующему члену косинусного сходства в среднем вычислении. Таким образом, если два пользователя фактически схожи, но у одного из них есть дополнительный кластер или два с очень низким «имеющим» фактором, совокупный результат не сильно пострадает от этого.

Обычно вычисления расстояний (например, с помощью косинусного сходства), а также формулы агрегации (например, среднее или взвешенное среднее) очень чувствительны к шкале отдельных измерений (и к их относительной "важности) «). По этой причине зачастую трудно дать общий совет, такой как приведенный выше. Теория очень важна для задач классификации, но нужно помнить, что нельзя применять формулы «вслепую»: лес легко потерять для дерева; -)


Чтобы помочь улучшить вопрос, вот что я обычно понимаю, пожалуйста, дополните и исправьте вопрос, чтобы лучше понять, что именно вы пытаетесь достичь и каковы характеристики системы, чтобы вы могли получить лучшее предложение.
У нас есть предметов , которые мы считаем вектороподобными объектами и которым присвоены кластеров . Ключевое слово подмножества намекает на то, что каждый элемент, вероятно, принадлежит одному и только одному кластеру (или, возможно, не кластеру вообще), но было бы хорошо подтвердить, что это так.
Также было бы хорошо получить представление о том факте, что размеры векторов каким-то образом нормализованы (чтобы относительно незначительная характеристика элементов, но с относительно большим диапазоном значений искажает косинусное сходство или другое измерения расстояния)
У нас есть пользователей , которые могут "иметь" несколько кластеров. Было бы хорошо узнать (в основных строках), как данный пользователь «имеет» кластеры и является ли наличие кластера только булевым свойством (иметь или не иметь) или есть какая-то категориальная или даже числовая мера «имеющего» (у пользователя X есть кластер 1 с коэффициентом .3 и кластер 8 с коэффициентом .2 и т. д ...)
Способ измерения косинусного сходства между двумя кластерами также может быть лучше определен (это сходство между двумя «центрами» кластеров или что-то еще ...

1 голос
/ 29 декабря 2011

Существует много методов сравнения наборов и кластеров. F-меры подсчета пар, индекс Рэнда, ... Большинство из них решило проблему суммирования индивидуальных сходств в едином общем сходстве.

См. Несколько указателей:

http://en.wikipedia.org/wiki/Cluster_analysis#Evaluation_of_Clustering_Results

Вы должны понимать, что, хотя это человеческое желание суммировать все до единого балла, это не всегда адекватно. Вот почему существует так много показателей. У всех есть свои плюсы и минусы.

...