Em sistemas de recomendação, mineração de dados e recuperação de informação, medir o quão semelhantes ou diferentes são dois objetos é uma tarefa fundamental. Essa medição pode ser feita por meio de métricas de dissimilaridade (ou distância) ou similaridade. Quanto menor a dissimilaridade entre dois objetos, maior sua similaridade.
Essas métricas frequentemente assumem valores normalizados no intervalo [0, 1], onde 1 indica máxima similaridade (ou mínima dissimilaridade) e 0 indica ausência total de similaridade.
Métricas de Dissimilaridade para Objetos Numéricos
Considere dois vetores X = (x₁, x₂, ..., xₙ) e Y = (y₁, y₂, ..., yₙ). Abaixo estão as principais métricas utilizadas para calcular a dissimilaridade entre eles.
Distância Euclidiana
A distância euclidiana representa a "reta" entre dois pontos em um espaço multidimensional:
dist_euclid(X, Y) = √(Σ(xᵢ - yᵢ)²)
Embora intuitiva, essa métrica assume que todas as dimensões têm a mesma escala e importância, o que nem sempre é válido na prática.
Distância Euclidiana Padronizada
Para contornar o problema da escala, padroniza-se cada dimensão usando a média e o desvio padrão da variável:
zᵢ = (xᵢ - μᵢ) / σᵢ
A distância euclidiana é então calculada sobre os valores padronizados. Isso equivale a uma distância euclidiana ponderada, onde os pesos são inevrsamente proporcionais às variâncias.
Distância de Mahalanobis
Essa métrica leva em conta a covariância entre variáveis, sendo invariatne à escala e capaz de lidar com correlações:
dist_mahal(X, Y) = √((X - Y)ᵀ Σ⁻¹ (X - Y))
Onde Σ é a matriz de covariância do conjunto de dados. Quando Σ é a matriz identidade, a distância de Mahalanobis se reduz à distância euclidiana. Se Σ é diagonal, equivale à distância euclidiana padronizada.
Limitações: requer que o número de amostras seja maior que a dimensionalidade e que Σ seja inversível.
Distância de Manhattan
Também chamada de distância L1, soma as diferenças absolutas em cada dimensão:
dist_manhattan(X, Y) = Σ|xᵢ - yᵢ|
Distância de Chebyshev
Corresponde à maior diferença absoluta entre quaisquer duas coordenadas:
dist_chebyshev(X, Y) = max(|xᵢ - yᵢ|)
Distância de Minkowski
Generalização das métricas anteriores:
dist_minkowski(X, Y) = (Σ|xᵢ - yᵢ|ᵖ)^(1/p)
p = 1→ Manhattanp = 2→ Euclidianap → ∞→ Chebyshev
Como as demais, ignora diferenças de escala e distribuição entre atributos.
Métricas de Similaridade
Similaridade Cosseno
Mede o cosseno do ângulo entre dois vetores, focando na orientação, não na magnitude:
cos_sim(X, Y) = (X · Y) / (||X|| ||Y||)
O resultado varia entre -1 e 1. Valores próximos de 1 indicam alta similaridade direcional.
Coeficiente de Correlação de Pearson
Útil quando se deseja comparar perfis de preferência (ex: avaliações de usuários). Calcula a correlação linear entre dois vetores após centralizá-los pela média:
r = Σ((xᵢ - x̄)(yᵢ - ȳ)) / (√Σ(xᵢ - x̄)² √Σ(yᵢ - ȳ)²)
Ignora diferenças absolutas de escala (ex: um usuário que dá notas mais altas que outro, mas com o mesmo padrão relativo).
Coeficiente de Jaccard
Aplicável a dados binários ou conjuntos. Mede a proporção de elementos compartilhados em relação ao total de elementos únicos:
J(A, B) = |A ∩ B| / |A ∪ B|
A distância de Jaccard é simplesmente 1 - J(A, B).
Importante: elementos onde ambos os vetores são 0 (acordos negativos) são ignorados, pois em muitos contextos (como diagnóstico médico) a ausência de um sintoma não fornece evidência positiva de similaridade.
Exemplo: Paciente A = [1,1,0,0,1], Paciente B = [1,0,0,1,0] → Interseção = {febre}, União = {febre, tosse, vômito, coriza} → J = 1/4, Distância = 3/4
Em cenários esparsos com dados binários (como cliques em publicidade), o Jaccard frequentemente supera o cosseno em precisão de recomendação.