Pular para o conteúdo principal

O que é cosine distance?

Explore cosine distance e cosine similarity. Descubra como calcular, onde aplicar e como comparar com outras métricas. Aprenda a implementar em R e Python usando numpy.
Atualizado 17 de set. de 2026  · 8 min lido

Explorar com IA

ChatGPTClaudePerplexity

Cosine distance representation by Dall-E

"Cosine distance." Imagem por Dall-E.

Medir a similaridade ou a dissimilaridade entre pontos de dados é útil em várias aplicações, de análise de texto a sistemas de recomendação. Cosine distance é uma métrica de distância especialmente eficaz para dados de alta dimensionalidade ou conjuntos esparsos, pois foca na orientação dos vetores, não na magnitude. 

Se quiser relembrar conceitos comuns e importantes de machine learning, comece pelo nosso tutorial completo, Demystifying Mathematical Concepts for Deep Learning. Vale também ler outro artigo sobre aprendizagem baseada em distância, What is Manhattan Distance? para ampliar seu entendimento sobre métricas de distância e ver as diferenças entre cosine distance e Manhattan distance.

Definindo cosine distance

Agora vamos definir cosine distance de acordo com a fórmula de cosine distance. Para isso, também consideramos sua relação com cosine similarity.

Fórmula de cosine distance

Cosine distance mede a dissimilaridade entre dois vetores calculando o cosseno do ângulo entre eles. Ela pode ser definida como um menos a cosine similarity, como vemos na fórmula abaixo:

Cosine distance formula using cosine similarity

De forma mais detalhada, com uma expressão matemática mais formal, a cosine distance é calculada usando a fórmula abaixo. 

Cosine distance formula with full mathematical expression

Aqui, A⋅B representa o produto escalar dos vetores A e B, e ||A|| ||B|| são as magnitudes, ou normas euclidianas, dos vetores.

Com essa fórmula, quantificamos a cosine distance em um intervalo de 0 a 2. Uma distância de 0 significa que os vetores estão perfeitamente alinhados (sem ângulo entre eles), indicando máxima similaridade, enquanto um valor próximo de 2 sugere que são diametralmente opostos, indicando máxima dissimilaridade. 

Cosine similarity vs. cosine distance

Como vimos, enquanto a cosine distance mede a dissimilaridade entre vetores calculando o cosseno do ângulo entre eles, a cosine similarity quantifica o quão similares dois vetores são com base no cosseno do mesmo ângulo. 

A cosine similarity varia de -1 a 1. Um valor de 1 significa que os vetores estão perfeitamente alinhados (sem ângulo entre eles), indicando máxima similaridade, enquanto um valor de -1 implica que são diametralmente opostos, refletindo máxima dissimilaridade. Valores próximos de zero indicam ortogonalidade.

Calculando e visualizando cosine distance

Vamos a um exemplo com dois vetores: vetor A (2,4) e vetor B (4,2), e calcular sua cosine distance seguindo estes passos:

  1. Calcule o produto escalar de A e B:

    A · B = (2 × 4) + (4 × 2) = 8 + 8 = 16

  2. Calcule as magnitudes de A e B:

    ||A|| = √(2² + 4²) = √20

    ||B|| = √(4² + 2²) = √20
  1. Divida o produto escalar pelo produto das magnitudes:

    (A · B) / (||A|| × ||B||) = 16 / (√20 × √20) = 16 / 20 = 0,8
  1. Calcule a cosine distance:

    Cosine Distance = 1 - 0,8 = 0,2

Com uma cosine distance de 0,2, o resultado fica bem baixo na escala de 0 a 2. Isso sugere que os vetores A e B são bastante similares em termos da direção para a qual apontam. 

Cosine distance vs. cosine similarity visualizedCosine distance e cosine similarity. Imagem do autor.

Nesta representação:

  • Vetor A é (2, 4)
  • Vetor B é (4, 2)
  • θ é o ângulo entre A e B

A cosine similarity (0,8) representa o cosseno do ângulo θ. Como os vetores têm direções próximas, o ângulo é pequeno, resultando em alta cosine similarity e baixa cosine distance (0,2).

Como a cosine distance também pode ser definida como 1 - cos(θ), em que cos(θ) é a cosine similarity, isso implica: 

  • Quando os vetores são idênticos na direção (θ = 0°), cos(θ) = 1, portanto cosine distance = 0
  • Quando os vetores são perpendiculares (θ = 90°), cos(θ) = 0, portanto cosine distance = 1
  • Quando os vetores são opostos (θ = 180°), cos(θ) = -1, portanto cosine distance = 2

Aplicações de cosine distance

Veja algumas aplicações importantes.

Processamento de linguagem natural (NLP)

Cosine distance tem um papel essencial em várias tarefas de processamento de linguagem natural, medindo de forma eficaz relações semânticas entre representações de texto como word2vec. Para uma visão geral rápida desses conceitos, nosso tutorial Understanding Text Classification in Python pode ser útil. 

Classificação e similaridade de documentos

Na classificação de documentos, a cosine distance mede a similaridade de conteúdo comparando os ângulos entre vetores de documentos. Cada documento é convertido em um vetor, com dimensões refletindo os escores TF-IDF das palavras. Documentos similares apontam para direções parecidas, resultando em distâncias cosseno menores. 

Clustering e agrupamento semântico

Cosine distance se destaca em tarefas de clustering como K-means, agrupando documentos semanticamente relacionados mesmo que não usem as mesmas palavras. É ideal para dados de alta dimensionalidade e esparsos, comuns no processamento de texto. Ao capturar a orientação dos vetores, permite agrupamentos temáticos mais precisos. Essa técnica é frequentemente usada em aprendizado não supervisionado para descobrir agrupamentos naturais em coleções de documentos, como agrupar notícias por tema.

Recuperação da informação e mecanismos de busca

Em recuperação da informação, cosine distance relaciona consultas de busca a documentos por comparação de vetores. Os buscadores encontram os documentos mais próximos do vetor da consulta em termos de cosine distance, ranqueando mais alto aqueles com menores distâncias por relevância. 

Word embeddings e similaridade entre palavras 

Além da análise em nível de documento, cosine distance é fundamental em embeddings de palavras como Word2Vec ou GloVe, em que palavras são representadas como vetores de alta dimensionalidade. Esses embeddings capturam significado semântico de modo que palavras com sentidos semelhantes fiquem próximas no espaço vetorial. Cosine distance pode ser usada para encontrar as palavras mais similares a uma palavra dada, apoiar a detecção de sinônimos ou até alimentar recursos em modelos mais complexos, como os usados para análise de sentimento ou tradução automática.

Reconhecimento de imagens 

No reconhecimento de imagens, cosine distance entra em cena para comparar vetores de características extraídos das imagens. Seja para identificar rostos em uma multidão ou classificar fotos da natureza, ela observa o quão similares são os vetores na orientação, não apenas no tamanho. Esse foco ajuda a acertar as categorias corretas para as imagens, aumentando a precisão e a eficácia de sistemas baseados em imagem.

Sistemas de recomendação 

Pense na cosine distance como uma casamenteira do mundo digital, conectando usuários a filmes ou produtos alinhados com seus gostos anteriores. Ao observar o quão próximos os perfis de usuários e itens ficam em seus espaços vetoriais, os sistemas de recomendação conseguem prever com ótima precisão o que você provavelmente vai curtir em seguida.

Propriedades matemáticas de cosine distance

Cosine distance tem propriedades matemáticas únicas que a diferenciam de outras medidas de distância. Entender essas propriedades é importante para interpretar e aplicar corretamente a cosine distance em diferentes contextos.

Propriedades de espaço métrico

Em matemática, uma métrica ou função de distância é uma função que define a distância entre cada par de elementos de um conjunto. Para ser considerada uma métrica verdadeira, uma função deve satisfazer quatro condições:

  1. Não negatividade: d(x, y) ≥ 0

  2. Identidade dos indiscerníveis: d(x, y) = 0 se, e somente se, x = y

  3. Simetria: d(x, y) = d(y, x)

  4. Desigualdade triangular: d(x, z) ≤ d(x, y) + d(y, z)

Cosine distance satisfaz as três primeiras condições, mas nem sempre satisfaz a desigualdade triangular. Isso significa que, em alguns casos, a soma das distâncias cosseno entre os pontos A e B e entre B e C pode ser menor do que a distância cosseno entre A e C.

Invariância a escala

Uma propriedade notável de cosine distance é sua invariância a escala. Isso significa que a distância cosseno entre dois vetores permanece a mesma mesmo que você multiplique um ou ambos os vetores por um escalar (constante diferente de zero). Matematicamente, para quaisquer escalares não nulos a e b, e vetores x e y:

Cosine Distance(ax, by) = Cosine Distance(x, y)

Essa propriedade de invariância a escala diferencia a cosine distance de muitas outras medidas de distância.

Cosine distance em Python e R

Aqui, vamos ver como calcular cosine distance usando Python e R. 

Exemplo em Python

Em Python, podemos usar NumPy para calcular cosine distance e cosine similarity. Fazemos isso encontrando o produto escalar e a norma dos vetores.

import numpy as np

# Define the vectors
A = np.array([2, 4])
B = np.array([4, 2])

# Calculate cosine similarity
cos_similarity = np.dot(A, B) / (np.linalg.norm(A) * np.linalg.norm(B))

# Calculate cosine distance
cos_distance = 1 - cos_similarity

print("Cosine Similarity: {:.2f}".format(cos_similarity))
print("Cosine Distance: {:.2f}".format(cos_distance))

Saída: 

Cosine Similarity: 0.80
Cosine Distance: 0.20

Como alternativa, podemos calcular cosine distance usando o pacote SciPy e a função cosine()

import numpy as np
from scipy.spatial.distance import cosine

# Define the vectors
A = np.array([2, 4])
B = np.array([4, 2])

# Calculate cosine distance
cos_distance = cosine(A, B)  # Uses scipy's cosine for cosine distance

print("Cosine Distance: {:.2f}".format(cos_distance))

Saída: 

Cosine Distance: 0.20

Exemplo em R

Em R, você pode calcular cosine similarity e cosine distance usando operações vetoriais básicas. Veja como:

# Define the vectors
A <- c(2, 4)
B <- c(4, 2)

# Calculate cosine similarity
cos_similarity <- sum(A * B) / (sqrt(sum(A^2)) * sqrt(sum(B^2)))
# Note: We can also use %*% operator for matrix multiplication. 
# %*%, when applied to two vectors, calculates the dot product. 
# For example: cos_similarity <- A %*% B / (sqrt(sum(A^2)) * sqrt(sum(B^2)))

# Calculate cosine distance
cos_distance <- 1 - cos_similarity

# Print the result
print(paste("Cosine Similarity:", cos_similarity))
print(paste("Cosine Distance:", cos_distance))

Saída:

“Cosine Similarity: 0.80”
“Cosine Distance: 0.20”

No exemplo em R, a cosine similarity é calculada usando operações manuais para produto escalar e normas, semelhante ao exemplo em Python, mas totalmente com funcionalidades básicas do R. Note como a cosine distance é obtida subtraindo a cosine similarity de 1.

Cosine similarity vs. distância euclidiana e outras métricas

A imagem abaixo amplia nosso exemplo original, mas agora usa cores diferentes para representar três tipos de medidas de distância usando os mesmos vetores:

  • Manhattan distance mede a soma das diferenças absolutas de suas coordenadas. 
  • Distância euclidiana calcula a distância em linha reta entre dois pontos. 
  • Cosine distance é derivada do cosseno do ângulo entre dois vetores. 

Cosine distance vs. Euclidean distance vs. Manhattan distance

Cosine distance vs. distância euclidiana vs. Manhattan distance. Imagem do autor.

Cada uma dessas distâncias oferece insights únicos sobre os dados. As distâncias euclidiana e Manhattan são geométricas e levam em conta a magnitude dos componentes do vetor, o que as torna adequadas para medições físicas no espaço. Já a cosine distance foca no ângulo entre vetores, sendo ideal para entender orientação e direcionalidade, especialmente em espaços de alta dimensionalidade, como os usados em análise de texto e outras áreas de data science.

Conclusão

Cosine distance e sua complementar, a cosine similarity, são ferramentas poderosas em data science e machine learning. Essas métricas oferecem insights únicos sobre os relacionamentos entre vetores, principalmente em espaços de alta dimensionalidade onde medidas tradicionais podem falhar.

À medida que os dados continuam a crescer em complexidade e dimensionalidade, métricas como cosine distance tendem a ganhar ainda mais importância para revelar padrões e relações ocultas. Seja trabalhando com processamento de linguagem natural, sistemas de recomendação ou qualquer área que lide com espaços vetoriais de alta dimensão, entender e aplicar cosine distance pode gerar insights valiosos e melhorar a performance dos seus modelos. Como próximo passo, faça nosso curso interativo completo, Designing Machine Learning Workflows in Python, que tem um capítulo inteiro sobre aprendizagem baseada em distância e fluxos não supervisionados. 


Vinod Chugani's photo
Author
Vinod Chugani
LinkedIn

Vinod Chugani começou a carreira em Tóquio como o mais jovem Head do Hedge Fund Sales Desk do JPMorgan e, depois, bateu um recorde individual de vendas no Lehman Brothers, em seguida construiu um negócio de distribuição de eletrônicos em 30 países que superou SG$ 100 milhões em receita antes de migrar para dados. Formado em economia por Duke e ex-aluno da NYC Data Science Academy, foi um dos três bolsistas selecionados entre mais de 100 candidatos para o curso Building AI Applications, do Hugo Bowne-Anderson, na Maven. Hoje, escreve para a DataCamp, KDnuggets, Machine Learning Mastery e Statology sobre temas que vão de estatística a IA agente e mentora profissionais de dados na NYC Data Science Academy, com mais de 1.000 sessões individuais no currículo.

 

Perguntas frequentes

O que é cosine similarity?

Cosine similarity é uma métrica usada para medir quão semelhantes dois vetores são em sua orientação, independentemente da magnitude.

Qual é o intervalo de cosine similarity?

O intervalo de cosine similarity é de -1 a 1

Qual é a fórmula de cosine similarity?

 

A fórmula de cosine similarity calcula o cosseno do ângulo entre dois vetores, definida como o produto escalar dos vetores dividido pelo produto de suas magnitudes.

Qual é a diferença entre produto escalar e cosine similarity?

O produto escalar é a soma dos produtos dos elementos correspondentes de dois vetores, refletindo tanto magnitude quanto orientação. Já a cosine similarity é o produto escalar normalizado pelo produto das magnitudes dos vetores, focando apenas no alinhamento direcional.

Como a cosine distance difere de cosine similarity?

Cosine distance e cosine similarity são medidas complementares. Cosine similarity mede quão semelhantes dois vetores são, variando de -1 (exatamente opostos) a 1 (exatamente iguais). Já a cosine distance mede o quão diferentes dois vetores são e é calculada como 1 menos a cosine similarity. Varia de 0 (vetores idênticos) a 2 (vetores opostos).

Qual é a fórmula de cosine distance?

A fórmula de cosine distance mede o ângulo entre dois vetores em um espaço multidimensional, calculada como 1 menos o cosseno do ângulo entre os vetores.

O que indica uma cosine distance igual a 1?

Uma cosine distance de 1 indica que os dois vetores comparados são perpendiculares (ortogonais) entre si, formando um ângulo de 90 graus. Isso significa que os vetores não têm similaridade direcional, o que, na prática, sugere temas completamente diferentes em análise de texto, itens não relacionados em sistemas de recomendação ou características distintas em vetores de atributos de machine learning.

Qual é a diferença entre cosine distance e angular distance?

Cosine distance e angular distance são muito relacionadas, mas não idênticas. Cosine distance é definida como 1 menos a cosine similarity, enquanto angular distance é o ângulo entre dois vetores em radianos, calculado como o arco-cosseno da cosine similarity. Angular distance é proporcional à cosine distance, mas oferece uma interpretação geométrica mais intuitiva.

Qual é a diferença entre cosine distance e distância euclidiana?

Embora ambas meçam dissimilaridade, cosine distance foca no ângulo entre vetores, ignorando a magnitude. Já a distância euclidiana foca na magnitude, medindo a distância em linha reta entre dois pontos no espaço.

Por que cosine distance é útil em análise de texto?

Cosine distance é especialmente útil em análise de texto porque foca na proporção das palavras (representadas como dimensões do vetor), e não em suas frequências absolutas. Isso a torna eficaz para comparar documentos de diferentes comprimentos e identificar similaridades temáticas independentemente do tamanho.

Tópicos
Python
Ciência de dados

Aprenda com a DataCamp

Curso

Introdução à Ciência de Dados em Python

4 h
502.5K
Mergulhe na ciência de dados com Python para analisar e visualizar seus dados de forma eficaz. Não precisa ter experiência ou conhecimento em programação.
Ver detalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

Tutorial

Introdução ao t-SNE

Aprenda a visualizar dados de alta dimensão em um espaço de baixa dimensão usando uma técnica de redução de dimensionalidade não linear.
Abid Ali Awan's photo

Abid Ali Awan

14 min

Clustering k-means

Tutorial

Introdução ao k-Means Clustering com o scikit-learn em Python

Neste tutorial, saiba como aplicar o k-Means Clustering com o scikit-learn em Python

Kevin Babitz

8 min

Tutorial

Tutorial do K-Means Clustering no R

Saiba o que é o k-means e descubra por que ele é um dos algoritmos de agrupamento mais usados na ciência de dados
Eugenia Anello's photo

Eugenia Anello

8 min

Tutorial

Matrizes Python

Matrizes Python com exemplos de código. Aprenda hoje mesmo a criar e imprimir matrizes usando o Python NumPy!
DataCamp Team's photo

DataCamp Team

3 min

Machine Learning Jobs Header

Tutorial

Como usar o Pytest para testes de unidade

Explore o que é o Pytest e para que ele é usado, comparando-o com outros métodos de teste de software.
Kurtis Pykes 's photo

Kurtis Pykes

13 min

Tutorial

Classificação de K-Nearest Neighbors (KNN) com o tutorial do R

Aprenda a usar os pacotes R 'class' e 'caret', ajustar hiperparâmetros e avaliar o desempenho do modelo.
Abid Ali Awan's photo

Abid Ali Awan

11 min

Ver MaisVer Mais