reglas de asociación y secuencias

Anuncio
Tareas de la minería de datos:
reglas de asociación y secuencias
CI-2352 Intr. a la minería de datos
Prof. Braulio José Solano Rojas
ECCI, UCR
La parábola de la cerveza y las
mantillas
●
La parábola de la cerveza y las mantillas.
●
«Hace algún tiempo, Wal-Mart decidió combinar los
datos de su sistema de tarjetas de fidelización con
el de su sistema de punto de ventas. El primero
proveyó datos demográficos acerca de los clientes,
el último brindó la información de dónde, cuándo y
qué compraron. Una vez combinados, los datos
fueron minados extensivamente y muchas
relaciones aparecieron. Algunas de estas fueron
obvias: las personas que compran gin
posiblemente también compran tonic. También
compran a menudo limones. Sin embargo, una
relación fue totalmente inesperada.»
2 de 67
La parábola de la cerveza y las
mantillas
●
«Los viernes en la tarde, los jóvenes varones
estadounidenses que compran mantillas tienen
también una predisposición a comprar cerveza.
Nadie nunca predijo dicho resultado, de tal manera
que nadie se hubiera hecho la pregunta sobre el
caso en primer lugar. Esto es un excelente ejemplo
de la diferencia entre minería de datos y consulta
de datos.»
3 de 67
Reglas de asociación
Tareas de la minería de datos:
reglas de asociación
●
●
Las reglas de asociación se utilizan para
descubrir hechos que ocurren en común dentro
de un determinado conjunto de datos.
Basándose en el concepto de “reglas fuertes”,
Agrawal et al. presentaron las reglas de
asociación para descubrir regularidades en
transacciones registradas en grandes
repositorios de datos de sistemas de punto de
ventas en supermercados.
5 de 67
Tareas de la minería de datos:
reglas de asociación
●
Ejemplo:
{ pan, jamón } ⇒ { queso }
6 de 67
Reglas de asociación: algoritmos
●
Existen algunos algoritmos bien conocidos
como Apriori, Eclat y FP-Growth, sin embargo,
proveen únicamente la mitad del trabajo dado
que son algoritmos para minar conjuntos de
elementos frecuentes. Otro paso necesita luego
generar reglas a partir de los conjuntos de
elementos frecuentes encontrados en la base
de datos.
7 de 67
Sobre las reglas de asociación
●
●
●
El espacio de todas las reglas de asociación es
exponencial, O(2m), donde m es el número de
elementos en I.
La minería explota la escasez de los datos y
valores de apoyo mínimo y confianza mínima
altos.
Aún así, puede producir un gran número de
reglas, miles, decenas de miles, millones, ...
8 de 67
Reglas de asociación: algoritmo
apriori
●
●
●
Conjuntos de elementos (itemset) frecuentes:
los itemset que tienen un apoyo mínimo de los
datos (denotado por Li para el iésimo-itemset).
Prioridad Apriori: Cualquier subconjunto de
conjuntos de elementos frecuentes debe ser
frecuente.
Operación de unión: Para encontrar Lk, un
itemset candidato de tamaño k, se genera
uniendo a Lk-1 consigo mismo.
9 de 67
Algoritmo Apriori: resumido
●
Encontrar los itemset frecuentes: los conjuntos
de elementos que tienen apoyo mínimo
●
Un subconjunto de un itemset frecuente también
debe ser un itemset frecuente
–
●
●
i.e., si {AB} es un itemset frecuente, ambos {A} y {B}
deben ser itemset frecuentes
Iterativamente encontrar itemset frecuentes con
cardinalidad 1 a k (k-itemset)
Utilizar los itemset frecuentes para generar
reglas de asociación.
10 de 67
Algoritmo Apriori: pseudo-código
●
Unión: Ck es generado uniendo Lk-1 consigo mismo
Poda: Cualquier (k-1)-itemset que no es frecuente no puede ser un
subconjunto de un k-itemset frecuente
●
Pseudo-code:
●
Ck: Itemset candidato de tamaño k
Lk: Itemset frecuente de tamaño k
L1= {elementos frecuentes};
para (k= 1; Lk!=∅; k++) haga
Ck+1= candidates generated from Lk;
para cada transacción t en database haga
incremente la cuenta de candidatos en Ck+1 que están en t
Lk+1= candidatos en Ck+1 con min_support
end
return ∪kLk;
11 de 67
Algoritmo Apriori: un ejemplo
TID
Lista de elementos
100
I1, I2, I5
101
I2, I4
102
I2, I3
103
I1, I2, I4
104
I1, I3
105
I2, I3
106
I1, I3
108
I1, I2, I3, I5
109
I1, I2, I3
●
●
●
●
●
12 de 67
Considérese una base de
datos D que consiste de 9
transacciones.
Suponga que el apoyo
mínimo es de 2 (i.e. min_sup
= 2/9 = 22 % )
Sea la confianza mínima
requerida de 70%.
Debemos primero encontrar
los conjuntos de elementos
frecuentes utilizando Apriori.
Luego se generan las reglas
de asociación utilizando el
apoyo mínimo y la confianza
mínima.
Apriori: paso 1
●
●
El conjunto de 1-itemset frecuentes, L1, consiste de
los 1-itemset candidatos que satisfacen el apoyo
mínimo.
En la primera iteración del algoritmo cada elemento es
un miembro del conjunto candidato.
13 de 67
Apriori: paso 2
14 de 67
Apriori: paso 2
●
●
●
●
Para descubrir el conjunto de 2-itemset frecuentes, L2, el
algoritmo usa L1 Unión L1 para generar un conjunto
candidato de 2-itemsets, C2.
Luego, las transacciones en D son rastreadas y se cuenta
el apoyo de cada itemset en C2 (tal como se muestra en la
tabla intermedia).
El conjunto de 2-itemset frecuentes, L2, es determinado,
consistiendo de aquellos candidatos 2-itemset en C2 que
tienen un apoyo mínimo.
Nota: Aún no se ha utilizado la propiedad Apriori.
15 de 67
Apriori: paso 3
●
●
●
●
La generación del conjunto de 3-itemset candidatos, C3, implica
el uso de la propiedad Apriori.
Para encontrar C3, computamos L2 Unión L2.
C3 = L2 Unión L2 = {{I1, I2, I3}, {I1, I2, I5}, {I1, I3, I5}, {I2, I3, I4},
{I2, I3, I5}, {I2, I4, I5}}.
Una vez que la unión está completa se usa la poda para reducir
el tamaño de C3. La poda ayuda a evitar computación pesada
debido a un Ck grande.
16 de 67
Apriori: paso 3
●
●
●
●
●
●
Basándose en la propiedad Apriori se puede determinar que 4
candidatos no pueden ser frecuentes. ¿Cómo?
Por ejemplo, tomése {I1, I2, I3}. Los subconjuntos suyos de tamaño 2
son {I1, I2}, {I1, I3} y {I2, I3}. Dado que todos los subconjuntos de
tamaño 2 son miembros de L2 se mantiene {I1, I2, I3} en C3.
Tómese el ejemplo de {I2, I3, I5} que muestra cómo se efectúa la
poda. Los subconjuntos de elementos tamaño 2 son {I2, I3}, {I2, I5} y
{I3,I5}.
{I3, I5} no es un miembro de L2 y por lo tanto no es frecuente
violando la propiedad Apriori. Así se elimina {I2, I3, I5} de C3.
Finalmente, C3= {{I1, I2, I3}, {I1, I2, I5}} después de revisar todos los
miembros resultado de la unión durante la poda.
Ahora las transacciones en D son rastreadas para determinar L3, que
consiste de aquellos 3-itemset candidatos en C3 que tienen apoyo
mínimo.
17 de 67
Apriori: paso 4
●
●
●
El algoritmo usa L3 Unión L3 para generar un conjunto
candidato de 4-itemset, C4. El resultado es {{I1, I2, I3,
I5}}, este itemset es podado dado que su subconjunto
{{I2, I3, I5}} no es frecuente.
Así C4 = ∅ y el algoritmo termina habiendo encontrado
todos los elementos frecuentes.
¿Qué sigue?
●
Estos itemset frecuentes serán usado para generar
reglas de asociación fuertes (donde dichas reglas
satisfacen ambos apoyo y confianza mínimos).
18 de 67
Generación de reglas: paso 5
●
Procedimiento:
●
●
●
Para cada itemset l frecuente se generan todos los
subconjuntos vacíos.
Para cada subconjunto s no vacío de I se imprime la
regla “s → (l-s)” si support_count(l) /
support_count(s) >= min_conf donde min_conf es el
umbral de confianza mínima.
Volviendo al ejemplo:
●
●
●
Se tenía L = {{I1}, {I2}, {I3}, {I4}, {I5}, {I1,I2}, {I1,I3},
{I1,I5}, {I2,I3}, {I2,I4}, {I2,I5}, {I1,I2,I3}, {I1,I2,I5}}.
Tómese l = {I1,I2,I5}.
Sus subconjuntos no vacíos son {I1,I2}, {I1,I5}, {I2,I5},
{I1}, {I2}, {I5}.
19 de 67
Generación de reglas: paso 5
●
●
Sea el umbral de confianza mínima 70%.
Las reglas de asociación resultantes se
muestran acá con su confianza.
●
R1: I1 ^ I2 →I5
–
–
●
R2: I1 ^ I5 →I2
–
–
●
confianza = sc{I1,I2,I5}/sc{I1,I2} = 2/4 = 50%
R1 es rechazada.
confianza = sc{I1,I2,I5}/sc{I1,I5} = 2/2 = 100%
R2 es seleccionada.
R3: I2 ^ I5 →I1
–
–
confianza = sc{I1,I2,I5}/sc{I2,I5} = 2/2 = 100%
R3 es seleccionada.
20 de 67
Generación de reglas: paso 5
●
R4: I1 →I2 ^ I5
–
–
●
R5: I2 →I1 ^ I5
–
–
●
confianza = sc{I1,I2,I5}/{I2} = 2/7 = 29%
R5 es rechazada.
R6: I5 →I1 ^ I2
–
–
●
confianza = sc{I1,I2,I5}/sc{I1} = 2/6 = 33%
R4 es rechazada.
confianza = sc{I1,I2,I5}/ {I5} = 2/2 = 100%
R6 es seleccionada.
De esta manera se han encontrado 3 reglas
fuertes de asociación.
21 de 67
Sobre el algoritmo
●
Parece ser muy caro
●
●
●
●
●
●
Búsqueda por nivel.
K = el tamaño del itemset más grande.
Hace al menos K pasadas sobre los datos.
En la práctica, K es acotada (10).
El algoritmo es muy rápido. Bajo algunas
condiciones, todas las reglas pueden ser
encontradas en tiempo lineal.
Escala en grandes conjuntos de datos.
22 de 67
Posibles métodos para mejorar la
eficiencia de Apriori
●
●
●
Conteo de elementos basado en tablas de
dispersión (Hash): Un k-itemset cuya cuenta en su
cubeta está por debajo de un umbral no puede ser
frecuente.
Reducción de transacciones: Una transacción que
no contiene ningún k-itemset frecuente es inútil en
rastreos subsiguientes.
Particionamiento: Cualquier itemset que es
potencialmente frecuente en una base de datos debe
ser frecuente en al menos una partición de la base de
datos.
23 de 67
Posibles métodos para mejorar la
eficiencia de Apriori
●
●
Muestreo: minar un subconjunto de los datos, menor
umbral de apoyo y un método para determinar
completitud.
Conteo de itemset dinámico: agregar nuevos
itemset candidatos solamente cuando todos sus
subconjuntos son estimados frecuentes.
24 de 67
Implementación eficiente de Apriori
●
Recursion Pruning for the Apriori Algorithm
●
●
●
Efficient Implementations of Apriori and Eclat
●
●
●
Christian Borgelt.
2nd Workshop of Frequent Item Set Mining
Implementations (FIMI 2004, Brighton, UK).
Christian Borgelt.
Workshop of Frequent Item Set Mining Implementations
(FIMI 2003, Melbourne, FL, USA).
Induction of Association Rules: Apriori Implementation
●
●
●
Christian Borgelt and Rudolf Kruse
15th Conference on Computational Statistics (Compstat
2002, Berlin, Germany), 395-400
Physica Verlag, Heidelberg, Germany 2002
25 de 67
Implementación eficiente de Apriori
●
Árbol de prefijos:
●
●
●
●
●
Organiza los conteos de itemset.
Utiliza poca memoria.
Permite procesar las transacciones.
Permite generar las reglas.
Cada nodo nS denota un contador para un itemset
S.
26 de 67
Implementación eficiente de Apriori
27 de 67
Implementación eficiente Apriori
●
Organización de los nodos:
●
Posibilidades:
–
Vector de enteros:
●
●
●
–
Eficiente en espacio (elementos implícitos en el índice).
Eficiente para encontrar el contador de un elemento.
Desventaja en que requiere tener espacio para elementos que
tal vez sea infrecuentes pues el vector no puede tener vacíos o
espacios. Esto se puede mitigar parcialmente guardando el
índice del elemento inicial y un desplazamiento (con lo cual se
eliminan elementos infrecuentes en el margen).
Vector de estructuras:
●
●
●
Identificador del elemento y contador.
Es ventajoso porque sólo se representan los elementos que se
requieren.
Es desventajoso porque requiere de memoria extra y requiere
de búsqueda binaria.
28 de 67
Implementación eficiente Apriori
●
Organización de los nodos:
●
Posibilidades:
–
Tabla de dispersión por nodo:
●
●
●
●
●
Reduce el tiempo de acceso.
Sin embargo, aumenta la memoria requerida (una tabla para que
sea óptima no puede estar demasiado llena).
No permite explotar el orden de los elementos.
Obviamente, para optimizar velocidad se debe
utilizar vectores simples a pesar de los
“huecos”.
Para optimizar espacio se puede escoger otra.
29 de 67
Implementación eficiente de Apriori
●
Organización de los nodos:
●
Se necesita un conjunto de punteros a nodos hijos.
–
●
●
No se deben crear antes de que se necesiten.
Para estos punteros se tienen las mismas opciones
que para organizar los contadores.
Si los contadores tienen identificadores asociados
es posible utilizar el mismo orden de los elementos
y dejar los punteros en nulo si no se necesitan.
Puede ahorrar memoria pero pueden haber
muchos nulos.
30 de 67
Implementación eficiente de Apriori
●
Codificación de los elementos:
●
●
Es claro que la manera en que se codifican los
elementos (enteros) puede tener un impacto en el
problema de los “huecos” o espacios.
Una heurística interesante puede ser ordenar los
elementos por frecuencia. Así, si se utiliza la
representación desplazamiento/tamaño, los
“huecos” podrían encontrarse en los márgenes del
vector.
31 de 67
Implementación eficiente de Apriori
●
Conteo recursivo:
●
Si se ordenan los elementos en la transacción con
respecto a sus identificadores, entonces procesar
una transacción es un procedimiento doblemente
recursivo:
1. Se va al hijo correspondiente al primer elemento en la
transacción y se procesa el restante de la transacción
para ese hijo.
2. Se descarta el primer elemento en la transacción y se
procesa recursivamente para ese nodo.
●
En un nodo del nivel que se está construyendo no
se va a un nodo hijo, sino que se incrementan los
contadores.
32 de 67
Implementación eficiente de Apriori
●
Representación de las transacciones:
●
●
●
También es posible representar las transacciones
por medio de un árbol de prefijos y hacer
operaciones en bloques (prefijos).
Hay una ganancia de rendimiento en el hecho de
que sólo se hace una vez la operación el prefijo.
Por supuesto, la ganancia debe ser mayor al costo
de construir un árbol de prefijos para las
transacciones.
33 de 67
Representación de las
transacciones
34 de 67
Patrones secuenciales
Patrones secuenciales
●
La minería de patrones secuenciales es la
minería de patrones que ocurren
frecuentemente relacionados al tiempo u a
otras secuencias. Un ejemplo de patrón
secuencial es “Un cliente que compra una
computadora personal Pentium nueve meses
antes probablemente comprará un chip de
CPU nuevo en un mes”.
36 de 67
Patrones secuenciales: aplicaciones
●
Aplicaciones de la minería de patrones
secuenciales
●
Secuencias de compra del cliente:
–
●
●
●
Primero compra computador, luego CD-ROM y por
último una cámara digital, en 3 meses.
Tratamientos médicos, desastres naturales (e.g.,
terremotos), procesos de la ingeniería y las
ciencias, mercados y valores, etc.
Patrones de llamadas telefónicas, flujos de
navegación en el Web
Estructuras de ADN y genes
37 de 67
Patrones secuenciales
●
Es similar a la minería de itemset
frecuentes, pero con una consideración
de orden.
38 de 67
Algoritmos para minería de patrones
secuenciales
●
Enfoques basados en Apriori
●
●
●
GSP (Generalized Sequential Patterns)
SPADE
Enfoques basados en crecimiento de
patrones
●
●
FreeSpan
PrefixSpan
39
39 de 67
El algoritmo GSP
●
●
●
Tomar las secuencias de la forma <x> como
candidatos tamaño-1
Rastrear la base de datos una vez, encontrar F1, el
conjunto de patrones secuenciales tamaño-1
Sea k=1; mientras Fk no esté vacío haga
●
●
●
Forme Ck+1, el conjunto de candidatos tamaño-(k+1) de Fk;
Si Ck+1 no está vacío, rastree la base de datos una vez,
encuentre Fk+1, el conjunto de patrones secuenciales
tamaño-(k+1);
Sea k=k+1;
40
40 de 67
GSP
41 de 67
GSP
42 de 67
GSP
43 de 67
GSP
44 de 67
GSP
45 de 67
GSP: Ejemplo
46 de 67
GSP: Ejemplo
47 de 67
GSP: Ejemplo
48 de 67
GSP: Ejemplo
49 de 67
GSP: Ejemplo
50 de 67
Patrones secuenciales en lógica
temporal
Patrones secuenciales en lógica
temporal
●
Transacciones de compra:
●
●
●
●
Los artículos en si son comprados en el tiempo ti,
donde t1 < t2 < … < tn.
pjk (k = 1, …, n) son las variables proposicionales
que representan los artículos en el conjunto sj.
Un patrón será una fórmula:
s1 ˄ <F> (s2 ˄ <F> (s3 ˄ <F> (… ˄ <F> sn)...)),
donde sj es la fórmula (pj1 ˄ pj2 ˄ … pjnj )
Otros dominios:
●
Cambiar artículos por síntomas, eventos u otros.
52 de 67
Programación lógica temporal
53 de 67
Programación lógica temporal
54 de 67
Programación lógica temporal
55 de 67
Algoritmo de detección de patrones
usando lógica temporal
56 de 67
Algoritmo de detección de patrones
usando lógica temporal
57 de 67
Algoritmo de detección de patrones
usando lógica temporal
58 de 67
Ejemplo: datos
59 de 67
Ejemplo: paso 1
Ejemplo: paso 2
Ejemplo: paso 3
Ejemplo: paso 3
Ejemplo: paso 3
Ejemplo: paso 4
Implementación
66 de 67
¡Gracias por su atención!
¿Preguntas?
Descargar