lunes, 2 de mayo de 2011

Análisis de vínculos I

El análisis de vínculos es una aproximación descriptiva para la exploración de datos que puede ayudar a identificar relaciones entre los valores en una base de datos. Las dos técnicas más comunes para el análisis de vínculos son el descubrimiento asociativo y el descubrimiento secuencial. El descubrimiento asociativo encuentra reglas en los ítems que aparecen juntos en un evento como una transacción de compra, el análisis de una cesta de mercado es un ejemplo conocido del descubrimiento asociativo. Por otra parte, el descubrimiento secuencial es muy parecido, de hecho una secuencia es una asociación relacionada a través del tiempo.

Las asociaciones se escriben como A => B, donde A es llamado el antecedente ó lado izquierdo (LHS, por sus palabras en ingles Left-Hand-Side), y B es llamado consecuencia ó lado derecho (RHS, por sus palabras en ingles Right-Hand-Side). Por ejemplo, en la regla de asociación “Si la gente compra palomitas de maíz entonces compra gaseosa”, el antecedente es “compra palomitas de maíz” y la consecuencia es “compra gaseosa”.

Es fácil determinar que proporción de transacciones contienen un ítem o un conjunto de ítems en particular. La frecuencia con la que una asociación en particular (Ej., el conjunto de ítems “palomitas de maíz y gaseosa”) aparece en la base de datos es llamada soporte ó prevalencia. A modo de ejemplo, si 4 transacciones de cada 1000 son de “palomitas de maíz y gaseosa”, el soporte de esta asociación seria de 0.4%. Un bajo nivel de soporte (una transacción por cada millón) puede indicar que la asociación en particular no es muy importante o que se cuentan con malos datos (Ej., “hombre y embarazado”).

Para descubrir reglas que dominen los datos y que tengan significado para el analista, también se debe observar la frecuencia relativa de los ítems y sus combinaciones. Dada una ocurrencia de un ítem A (El antecedente), cada cuanto el ítem B (la consecuencia) ocurre?. Es decir cual es la previsibilidad condicional de B, dado A?. Usando el ejemplo anterior es como formuláramos la pregunta “Cuando la gente compra palomitas de maíz, cada cuanto también compran gaseosa?”. Otro indicador para la previsibilidad condicional es la confianza (confidence), la confianza es calculada como un radio: (frecuencia de A y B)/(frecuencia de A).

Ejemplo:

Total de transacciones supermercado: 1,000
Número que incluyen “palomitas de maíz”: 60
Número que incluyen “gaseosa”: 120
Número que incluyen “papas”: 70
Número que incluyen “palomitas de maíz y gaseosa”: 30
Número que incluyen “palomitas de maíz y papas”: 15
Número que incluyen “papas y gaseosa”: 35
Número que incluyen “papas, gaseosa y palomitas de maíz”: 10

Indicadores:

Soporte para “palomitas de maíz y gaseosa” = 3.0% (30/1,000)
Soporte para “papas, gaseosa y palomitas de maíz” = 1.0% (10/1,000)

Confianza de “palomitas de maíz => gaseosa” = 50% (30/60)
Confianza de “gaseosa => palomitas de maíz” = 25% (30/120)
Confianza de “palomitas de maíz y gaseosa => papas” = 33% (10/30)
Confianza de “papas => palomitas de maíz y gaseosa” = 14.3% (10/70)

Así podemos ver que un cliente que compre palomitas de maíz tiene más posibilidad de comprar una gaseosa (50%) que una persona que compra gaseosa comprar palomitas de maíz (25%). El soporte para la asociación “palomitas de maíz y gaseosa” (3.0%) es suficiente para sugerir una regla significativa.

martes, 29 de marzo de 2011

Qué es clusterizar (clustering)?

La clusterización (clustering) divide una base de datos en grupos diferentes, la meta principal de realizar el proceso de clusterización es encontrar grupos que son diferentes de los otros, y que sus miembros sean similares entre si. En la siguiente figura se puede observar un ejemplo de clusterización.

Fuente: Autor

No se debe confundir el concepto de clusterización con el concepto de segmentación. La segmentación hace referencia al problema de identificar grupos que tienen características comunes, en cambio, la clusterización es una forma de segmentar datos en grupos que no han sido predefinidos, por otra parte la clasificación es un modo de segmentar datos asignándolos a grupos que ya han sido definidos.

lunes, 28 de marzo de 2011

Mineria de datos y data warehousing

Una pregunta que surge comúnmente respecto a la minería de datos es la relación que existe entre el data warehousing y la minería de datos. Mas aun si es necesario contar con un data Warehouse para poder hacer minería de datos. Este post pretende realizar la aclaración en estos aspectos.


Frecuentemente, los datos en los cuales se realiza la minería son extraídos inicialmente en un data warehouse empresarial para posteriormente ingresarlos en una base de datos de minería o un data mart (Figura 1). Esto es debido a que los problemas de la limpieza de los datos para data warehouse y para minería de datos son muy similares y existen beneficios si los datos que se van a analizar ya son parte de un data Warehouse. Así, si los datos ya han sido limpiados para un data warehouse, es mas probable que no se necesite hacer una limpieza para hacer minería.

Figura1. Data mart extraído de data warehouse (1).

Sin embargo un data warehouse no es un requerimiento para la minería de datos. Preparar un data warehouse que consolide datos de diferentes fuentes, resuelve problemas de integridad de los datos. Pero, es posible extraer datos de minería de una o varias bases de datos mediante una base de datos de solo lectura, esta nueva base de datos se puede comportar como un data mart (Figura 2).


Figura2. Data mart extraído de las fuentes de datos (1).
1. Tomado de: Introduction to Data Mining and Knowledge Discovery, Two Crows Corporation, Third Edition.

martes, 4 de mayo de 2010

Introducción a la computación evolutiva(1)

En la naturaleza todos los seres vivos se enfrentan a problemas que deben resolver con éxito, como conseguir más luz del sol, o cazar una mosca. La Computación Evolutiva interpreta la naturaleza como una inmensa máquina de resolver problemas y trata de encontrar el origen de dicha potencialidad para utilizarla en nuestros programas.

Los Algoritmos Genéticos son una de las más conocidas y originales técnicas de resolución de problemas dentro de lo que se ha definido como "Computación Evolutiva" (o "Algoritmos Evolutivos"), término que agrupa a los Algoritmos Genéticos, las Estrategias Evolutivas y la Programación Evolutiva. En realidad todas estas técnicas son muy parecidas y comparten muchos aspectos.

Un Algoritmo Evolutivo es una técnica de resolución de problemas inspirada en la evolución de los seres vivos.

En un Algoritmo Evolutivo se define una estructura de datos que admita todas las posibles soluciones a un problema.

Cada uno de los posibles conjuntos de datos admitidos por esa estructura será una solución al problema. Unas soluciones serán mejores, otras peores.

Solucionar el problema consistirá en encontrar la solución óptima, y por tanto, los Algoritmos Evolutivos son en realidad un método de búsqueda.

Pero un método de búsqueda muy especial, en el que las soluciones al problema son capaces de reproducirse entre sí, combinando sus características y generando nuevas soluciones.

En cada ciclo se seleccionan las soluciones que más se acercan al objetivo buscado, eliminando el resto de soluciones. Las soluciones seleccionadas se reproducirán entre sí, permitiendo de vez en cuando alguna mutación o modificación al azar durante la reproducción.

(1) http://www.redcientifica.com/gaia/ce/ce_c.htm