Buscar este blog

lunes, 17 de marzo de 2014

Distancias entre datos

La determinación de que tan parecido es un conjunto de datos con otro es de mucha importancia en la minería de datos. Varios algoritmos de clasificación como K-means se basan en el hecho de saber que tanto parecido tiene un dato con otro. Parte del interés de determinar que tan parecido es un atributo con otro son las conclusiones que se puedan obtener a través de esto, por ejemplo, supongamos que tenemos una base de datos de seguros y tenemos reconocido unos 1000 clientes que han sido muy buenos desde el punto de vista del negocio, entonces cuando llega un nuevo cliente queremos saber que tan cerca esta este cliente de ser como uno de nuestros mejores consumistas.

Existen muchas formas de calcular la similitud de un atributo, y esto en gran medida depende del conocimiento que poseamos de la información, por ejemplo, si tenemos un atributo estatura y tenemos dos medidas, x1= 1.70 metros y x2 = 1.78 metros, entonces la distancia entre ambos es de 8 centímetros y su cálculo es muy sencillo, a decir, Distancia = x1 – x2.

Pero no todo es tan fácil, en la mayoría de las ocasiones tendremos mas de un atributo a considerar, por ejemplo, supongamos que tenemos los atributos de estatura, peso, edad, género, presión arterial y temperatura.

Estatura Peso Edad Género Presión Arterial Temperatura
1.71 70 27 Masculino 120/80 36.5
1.75 80 29 Femenino 130/90 37
1.79 60 30 Masculino 110/80 36.4

Como se puede observar, saber la distancia que existe entre la fila 1 y la fila 3 ya no es tan trivial y se requiere de cierto análisis para determinarla. Por suerte existen ciertas fórmulas que se encargan de determinar distancias para facilitarnos la vida. A continuación expongo algunas de ellas :


Distancia para datos no numéricos
Cuando no tenemos datos numéricos, bueno, podríamos decir que no tenemos mucho de donde buscarle, en este tipo de datos debemos de conocer un poco (o mas bien bastante) acerca de la información que queremos medir. Usualmente lo que se realiza es una diferencia de conjuntos  :


o bien una suma de ellas y se toma la distancia como la cantidad de los componentes faltantes, por ejemplo, tengamos al conjunto A ={casa,coche,mesa,foco,estufa} y al conjunto B = {casa,coche,mesa, televisión}, entonces, la distancia se mediría de la siguiente manera:
D = size(A – B) + size (B – A)
D = 2 + 1


entonces tenemos que la diferencia entre ambos conjuntos es 3.


Distancia Euclideana

En matemáticas, la distancia euclidiana o euclídea es la distancia "ordinaria" (que se mediría con una regla) entre dos puntos de un espacio euclídeo, la cual se deduce a partir del teorema de Pitágoras[1].

Su representación Gráfica, para la diferencia de dos puntos A(x1,y1) y B(x2,y2) es la siguiente:
  



Y su fórmula[2]:


en donde Xk y Yk son cada uno de los atributos de d(X,Y), La sumatoria recorrerá cada uno de dichos atributos, pero veamos un ejemplo, supongamos que tenemos los siguientes datos:

A{1.71,70,27} y B{1.75,80,29} , entonces tenemos


y nos da una distancia de 10.198.





Distancia de Mahalanobis

Esta distancia es parecida a la Euclideana, pero contempla brindar pesos a los atributos, es decir, por ejemplo, si tenemos dos atributos, estatura y nivel de ingresos, y queremos definir su distancia, claramente al final de cuentas será el ingreso el que será de importancia, dejando casi exiliado a la estatura, veamos un ejemplo, tenemos A{1.71,9000} y B{1.75,8900}, claramente se ve que el número de estatura será poco representativo al momento de calcular la distancia Euclideana.


Para estos casos contamos con la distancia de Mahalanobis, la cual utiliza la inversa de la matriz de covarianza para determinar los pesos de cada atributo, su fórmula es la siguiente:


Supongamos que tenemos peso, estatura y edad, entonces:
Calculemos la matriz de covarianzas para peso, estatura y edad
Obtengamos la inversa de cada matriz
realizar el calculo (x1 – x2) ' * inversa de matriz de covarianzas * (x1-x2) y se obtiene su raiz cuadrada


Para el cálculo de la matriz de covarianzas puedes seguir este enlace, allí lo explican paso a paso sin entrar en formulaciones complicadas http://www.ehowenespanol.com/calcular-matriz-varianzacovarianza-como_484793/.




Correlación


No existe mucha teoría que decir en este punto, la correlación mide el grado en que dos variables están relacionadas entre si, por ejemplo, peso y estatura, su fórmula es la siguiente:

Correlacion(X,Y) = Covarizanza(X,Y) / (DesviaciónEstandar(X) * DesviaciónEstandar(Y))

Su resultado va de -1 a 1 donde -1 indica que tienen una perfecta negativa relación y 1 una perfecta positiva relación



A continuación muestro una imagen que muestra las relaciones entre dos variables desde -1 a 1. Tomado de [2]:


Distancia Binaria

Las medidas para datos binarios son llamados coeficientes de similaridad y su fórmula es la siguiente:

d(x,y) = (F11 + F00) / (F01 + F10 + F11 + F00)

en donde:

F00 : El número de atributos donde X es 0 y Y es 0.
F01 : El número de atributos donde X es 0 y Y es 1.
F10 : El número de atributos en donde X es 1 y Y es 0 .
F11 : El número de atributos en donde X es 1 y Y es 1



Coeficiente de Jaccard

Esta medida se utiliza para datos binarios que provienen de bases de datos transaccionales, por ejemplo, donde 1 representa una venta y 0 representa que no se compró el artículo. La fórmula es:

d(X,Y) = F11 / (F01 + F10 + F11)

Datos generales

Finalmente, existen muchos mas métodos, aquí solo he comentado los mas comunes. Solo queda aclarar una cosa, por si se requiere diseñar un nuevo método que evalúe distancia para datos específicos, se deben de tener las siguientes consideraciones:

Positivismo
  1. d(X,X) >= 0 para todos los X y Y.
  2. d(X,Y) = 0 solo si X = Y

Simetria
  1. d(X,Y) = d(Y,X) para todo X y Y

Desigualdad Triangular
  1. d(X,Z) <= d(X,Y) + d(Y,Z) para todos los puntos X,Y y Z




[2]Introduction to data mining, Pang-Ning Tang, Adisson Wesley



1 comentario:

Unknown dijo...

Una pregunta, cuando tengo un atributo que puede tener 5 elementos, o 2, que no tienen orden, pero hay otros que si.
¿Como hacer para calcular la distancia?