У меня есть граф из N вершин, где каждая вершина представляет собой место. Также у меня есть векторы, по одному на каждого пользователя, каждый из N коэффициентов, где значение коэффициента - это продолжительность в секундах, потраченных в соответствующем месте, или 0, если это место не было посещено.
например. для графика:
вектор:
v1 = {100, 50, 0 30, 0}
означает, что мы потратили:
100secs at vertex 1
50secs at vertex 2 and
30secs at vertex 4
(вершины 3 и 5, где не были посещены, таким образом, 0s).
Я хочу запустить k-мерную кластеризацию, и я выбрал cosine_distance = 1 - cosine_similarity
как метрику для расстояний, где формула для cosine_similarity
:
как описано здесь.
Но я заметил следующее. Предположим, что k=2
и один из векторов:
v1 = {90,0,0,0,0}
В процессе решения задачи оптимизации минимизации общего расстояния от кандидатов-центроидов предположим, что в какой-то момент 2 кандидата-центроиды:
c1 = {90,90,90,90,90}
c2 = {1000, 1000, 1000, 1000, 1000}
Запуск формулы cosine_distance
для (v1, c1) и (v1, c2) мы получаем точно такое же расстояние 0.5527864045
для обоих.
Я бы предположил, что v1 больше похож (ближе) на c1, чем на c2. По-видимому, это не так.
Q1. Почему это предположение неверно?
Q2. Является ли расстояние косинуса правильной функцией расстояния для этого случая?
Q3. Что было бы лучше, учитывая характер проблемы?