Remato la serie sobre distancias con una entrega especulativa. Según se la mire, o bien nunca se ha hecho esa cosa o bien nunca ha dejado de hacerse.
El problema es que ninguna de las propuestas desgranadas por ahí, incluidas las de mis serie, responde eficazmente la gran pregunta:
¿Son más próximos un individuo y una individua de 33 años o una individua de 33 y otra de 45?
La respuesta es contextual, por supuesto, y en muchos de esos contextos habría que tener en cuenta las interacciones entre variables, que es a lo que apunta la pregunta anterior.
Prometí (d)escribir una solución rápida y sucia para la construcción de distancias cuando fallan las prêt à porter (euclídeas, Gower, etc.).
Está basada en la muy socorrida y casi siempre falsa hipótesis de independencia entre las distintas variables $latex x_1, \dots, x_n$ y tiene la forma
$$ d(x_a, x_b) = \sum_i \alpha_i d_i(x_{ia}, x_{ib})$$
donde los valores $latex \alpha_i$ son unos pesos que me invento (¡eh!, Euclides también se inventó que $latex \alpha_i = 1$ y nadie le frunció el ceño tanto como a mí tú ahora) tratando de que ponderen la importancia relativa que tiene la variable $latex i$ en el fenómeno que me interesa.
Dejemos atrás los puntos en el plano. Olvidemos al Sr. Gower. La gran pregunta a la que uno se enfrenta al construir una distancia es en términos de qué se espera proximidad entre sujetos. Y eso genera una cadena de subpreguntas del tipo:
¿Son más próximos un individuo y una individua de 33 años o una individua de 33 y otra de 45?
Las dos entradas restantes de la serie (una sucia, rápida y práctica; la otra más especulativa) van sobre opciones disponibles para atacar (nótese que digo atacar y no resolver) el problema.
Una distancia, Wikipedia dixit, sobre un conjunto $latex X$ es una función $latex d$ definida sobre $latex X \times X$ que toma valores en los reales $latex \ge 0$ y que cumple:
$d(a,b) = 0 \iff a = b$ $d(a,b) = d(b,a)$ $d(a,c) \le d(a, b) + d(b, c)$ En la práctica, sin embargo, he encontrado violaciones tanto de (1) como de (2). ¿A alguien se le ocurren ejemplos?
Sin embargo, (3) se mantiene.
Me han pedido (vía Twitter) que desarrolle cosas que tengo por ahí desperdigadas (p.e., en las notas de esos cursos que ya no daré y puede que en algunas entradas viejunas de este blog) sobre distancias.
¿Por qué son importantes las distancias? Por un principio que no suele ser explicitado tanto como merece en ciencia de datos: si quieres saber algo sobre un sujeto, busca unos cuantos parecidos y razona sobre ellos.
Especulando sobre la diferencia en la práctica entre distintas métricas ($latex l_1$, $latex l_2$, $latex l_\infty$, etc.), construi una serie de diagramas de Voronoi usado métricas arbitrarias.
En la Wikipedia se comparan gráficamente $latex l_1$, $latex l_2$ (o euclídea y Manhattan). Mi código,
library(data.table) library(reshape2) library(grid) n <- 20 dim.image <- 1000 puntos <- data.frame(id = 1:n, x0 = runif(n) * dim.image, y0 = runif(n) * dim.image) colores <- rainbow(n) voronoi <- function(p){ tmp <- data.