Distância cosseno como função de distância vetorial para médias k

Eu tenho um gráfico de N vértices onde cada vértice representa um lugar. Também tenho vetores, um por usuário, cada um dos N coeficientes em que o valor do coeficiente é a duração em segundos gasta no local correspondente ou 0 se esse local não foi visitado.

Por exemplo. para o gráfico:

o vetor:

v1 = {100, 50, 0 30, 0}

significaria que gastamos:

100secs at vertex 1
50secs at vertex 2 and 
30secs at vertex 4 

(vértices 3 e 5 onde não foram visitados, portanto os 0s).

Eu quero executar um cluster de k-means e escolhicosine_distance = 1 - cosine_similarity como a métrica para as distâncias, onde a fórmula paracosine_similarity é:

como descritoaqui.

Mas eu notei o seguinte. Presumirk=2 e um dos vetores é:

v1 = {90,0,0,0,0}

No processo de solucionar o problema de otimização de minimizar a distância total dos centróides candidatos, suponha que em algum momento, 2 centróides candidatos sejam:

c1 = {90,90,90,90,90}
c2 = {1000, 1000, 1000, 1000, 1000}

Executando ocosine_distance fórmula para (v1, c1) e (v1, c2) obtemos exatamente a mesma distância de0.5527864045 para ambos.

Eu diria que v1 é mais semelhante (mais próximo) a c1 do que c2. Aparentemente, este não é o caso.

Q1 Por que essa suposição está errada?

Q2 A distância do cosseno é uma função de distância correta para este caso?

Q3 Qual seria o melhor, dada a natureza do problema?

questionAnswers(3)

yourAnswerToTheQuestion