11.1 Medidas de similaridade e dissimilaridade

Distâncias e divergências são métricas utilizadas em problemas de classificação, agrupamento e reconhecimento de padrões. São utilizadas para medir a similaridade ou dissimilaridade entre pontos, vetores e distribuições. É comum realizar a padronização, i.e., subtrair cada valor da média e dividir pelo desvio padrão da coluna à qual o valor pertence. Este procedimento pode ser realizado através da função base::scale.

Medida de similaridade avalia o quão similares são dois entes, ficando entre 0 (sem similariadade) e 1 (completamente similares).

Medida de dissimilaridade indica o quão distintos são dois entes, ficando entre 0 (iguais) e infinito (diferentes).

As seguir são apresentadas algumas das principais distâncias da literatura – enquadradas na definição de medidas de dissimilaridade – e calculadas entre dois vetores \(\boldsymbol{x}\) e \(\boldsymbol{y}\), usualmente linhas de uma matriz numérica. Apresenta-se ainda um pequeno banco de dados para a aplicação dos exemplos.

# criando data frame 'df' para os exemplos a seguir
df <- data.frame(V1=c(3,1), V2=c(2,4))  # vetores V1 e V2
rownames(df) <- c('x','y')  # rótulo das linhas
df
##   V1 V2
## x  3  2
## y  1  4
# padronizando os dados
df.s <- scale(df)
df.s
##           V1         V2
## x  0.7071068 -0.7071068
## y -0.7071068  0.7071068
## attr(,"scaled:center")
## V1 V2 
##  2  3 
## attr(,"scaled:scale")
##       V1       V2 
## 1.414214 1.414214

11.1.1 Distância de Manhattan

A distância de Manhattan, norma 1 ou \(L_1\) é uma medida de dissimilaridade que avalia a distância absoluta entre dois vetores, dada pela Equação (11.1).

\[\begin{equation} L_1 = \sum_{i=1}^{n} |x_i - y_i| \tag{11.1} \end{equation}\]

sum(abs(df[1,]-df[2,]))  # distância manhattan aplicando Eq. (18)
## [1] 4
stats::dist(df, method = 'manhattan')  # distância manhattan via 'dist'
##   x
## y 4
stats::dist(df.s, method = 'manhattan')  # distância manhattan via 'dist' dos valores padronizados
##          x
## y 2.828427

11.1.2 Distância euclidiana

Uma das mais utilizadas medidas de dissimilaridade da literatura, a distância euclidiana, norma 2 ou \(L_2\) é dada pela Equação (11.2).

\[\begin{equation} L_2 = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2} \tag{11.2} \end{equation}\]

sqrt(sum((df[1,]-df[2,])^2))  # distância euclidiana aplicando Eq. (19)
## [1] 2.828427
stats::dist(df, method = 'euclidean')  # distância euclidiana via 'dist'
##          x
## y 2.828427
stats::dist(df.s, method = 'euclidean')  # distância euclidiana via 'dist' dos valores padronizados
##   x
## y 2

11.1.3 Distância de Minkowski

A distância de Minkowski, norma p ou \(L_p\) é uma medida de dissimilaridade que generaliza as distâncias de Manhattan e euclidiana. É dada pela Equação (11.3).

\[\begin{equation} L_p = \sqrt[\leftroot{-2}\uproot{3}p]{\sum_{i=1}^{n} (|x_i - y_i|)^p} \tag{11.3} \end{equation}\]

sum((abs(df[1,]-df[2,]))^5)^(1/5)     # distância de Minkowski com p=5 aplicando Eq. (20)
## [1] 2.297397
stats::dist(df, method = 'minkowski', p = 5) # distância de Minkowski com p=5 via 'dist'
##          x
## y 2.297397
stats::dist(df.s, method = 'minkowski', p = 5) # dist. de Minkowski com p=5 via 'dist' dos valores padronizados
##          x
## y 1.624505

Exercício 11.1 Considere a função stats::dist.
(a) Verifique sua documentação, fazendo ?dist.
(b) Compare as distâncias euclidiana e de Minkowski com \(p=2\). O que você observa?
(c) Compare as distâncias de Manhattan e de Minkowski com \(p=1\). O que você observa?
\(\\\)

Exercício 11.2 Considere as distâncias da Seção 11.1 aplicada às colunas numéricas do banco de dados pib, obtido pelo código abaixo.
(a) Padronize os dados e atribua a uma variável chamada pib.s.
(b) Realize os cálculos ‘a mão’ como nos exemplos, tanto para pib quanto para pib.s.
(c) Realize novamente os cálculos do item (b) utilizando a função dist.

pib <- read.table('https://filipezabala.com/data/pib.txt', head = T, sep = '\t')