Какова подходящая метрика расстояния при кластеризации векторов параграфа / doc2vec? - PullRequest
0 голосов
/ 09 октября 2018

Я собираюсь кластеризовать векторы документов из doc2vec, используя HDBSCAN.Я хочу найти крошечные кластеры, в которых есть семантические и текстовые дубликаты.

Для этого я использую gensim для генерации векторов документов.Все элементы полученных docvecs находятся в диапазоне [-1,1].

Чтобы сравнить два документа, я хочу сравнить угловое сходство.Я делаю это, вычисляя косинусное сходство векторов, которое отлично работает.

Но для кластеризации документов в HDBSCAN требуется матрица расстояний, а не матрица сходства.Нативное преобразование из косинусного сходства в косинусное расстояние в sklearn равно 1-similarity.Однако, насколько я понимаю, использование этой формулы может нарушить неравенство треугольника, не позволяя ему стать истинной метрикой расстояния.При поиске и просмотре кода других людей для похожих задач кажется, что большинство людей, похоже, используют sklearn.metrics.pairwise.pairwise_distances(data, metric='cosine'), который в любом случае определяет косинусное расстояние как 1-similarity.Похоже, что это дает соответствующие результаты.

Мне интересно, если это правильно, или я должен вместо этого использовать угловое расстояние, рассчитанное как np.arccos(cosine similarity)/pi.Я также видел, как люди использовали евклидово расстояние на l2-нормализованных векторах документов;это похоже на косинусное сходство.

Пожалуйста, дайте мне знать, какой метод расчета расстояния между векторами документов для кластеризации является наиболее подходящим:)

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Надлежащей метрикой подобия является скалярное произведение, а не косинус.

Word2vec и т. Д. Обучаются с использованием скалярного произведения, не нормированного по длине вектора.И вы должны точно использовать то, что было обучено.

Люди используют косинус все время, потому что он хорошо работает для мешка слов.Насколько мне известно, выбор не основан на надлежащем теоретическом анализе.

HDBSCAN не требует метрики.Преобразование 1-sim предполагает, что x ограничен 1, так что это не будет надежно работать.

Я предлагаю попробовать следующие подходы:

  • использовать отрицательные расстояния.Это может просто сработать.То есть, d (x, y) = - (x точка y)
  • использовать преобразование max-sim.Если у вас есть матрица точечных произведений, легко получить максимальное значение.
  • реализовать HDBSCAN * со сходством, а не с метрикой
0 голосов
/ 09 октября 2018

Я полагаю, что на практике используется косинусное расстояние, несмотря на то, что есть угловые случаи, когда это неправильная метрика.

Вы упоминаете, что "все элементы получающихся документов находятся в диапазоне [-1,1]".Обычно это не гарантируется, хотя это было бы, если бы вы уже нормализовали единицу для всех необработанных векторов документов.

Если вы выполнили эту единичную нормализацию или хотите это сделать, то после такой нормализации евклидово расстояние всегда будет давать тот же порядок ранжирования ближайших соседей, что и косинусное расстояние.Абсолютные значения и относительные пропорции между ними будут немного отличаться, но все тесты «X ближе к Y, чем Z» будут идентичны тестам, основанным на косинусном расстоянии.Таким образом, качество кластеризации должно быть практически идентичным прямому использованию косинусного расстояния.

...