-
Análisis de Afinidad y
Canasta de Mercado
- Análisis de afinidad es el estudio de atributos o características que tienden a 'ir juntos'.
- Busca descubrir y cuantificar las relaciones entre uno o más atributos.
- Las reglas de asociación son de la forma
Si ANTECEDENTE entonces CONSECUENTE
-
Existen dos criterios asociados a cada reglas
- El soporte es la probabilidad de que el antecedente y el consecuente sucedan juntos.
- La confianza es la covertura o precisión que tiene el consecuente sobre el antecedente.
-
Ej: De 1000 clientes de una tienda, 200 compraron pañales y de esos 200, 50 también compraron cerveza.
La regla de asociación sería...
- Si compra pañales entonces compra cerveza.
- con soporte 50 / 1000 = 5%.
- y confianza 50 / 200 = 25%.
-
Algunos ejemplos de aplicación...
- Investigar la proporción de subscriptores a una compañia de teléfonos que aceptarán una actualización del servicio.
- Predecir la degradación en redes de telecomunicaciones.
- Encontrar que productos son y no son comprados juntos en los supermercados.
- Determinar la proporción de casos en que un nuevo medicamento pueda presentar efectos secundarios nocivos.
- Identificar los patrones de comportamientos de los usuarios de una página web.
- Proveer alternativas a los saltos dentro de cadenas de ADN.
-
El problema de la dimensionalidad.
- El gran desafio que afrontan los algoritmos de reglas de asociación es la maldición de la dimensionalidad.
- El número de posibles reglas de asociación crece exponencialmente según el número de atributos.
- Dado k atributos el número de posibles reglas viene dado por ...
- Si una tienda tiene un stock de productos de 100 artículos el número de reglas viene dado por ...
-
Representación de los datos
-
DataSet Veggies 4 Sale
-
1
- Broccoli, green peppers, corn
-
2
- Asparagus, squash, corn
-
3
- Corn, tomatoes, beans, squash
-
4
- Green peppers, corn, tomatoes, beans
-
5
- Beans, asparagus, broccoli
-
6
- Squash, asparagus, beans, tomatoes
-
7
- Tomatoes, corn
-
8
- Broccoli, tomatoes, green peppers
-
9
- Squash, asparagus, beans
-
10
- Beans, corn
-
11
- Green peppers, broccoli, beans, squash
-
12
- Asparagus, beans, squash
-
13
- Squash, corn, asparagus, beans
-
14
- Corn, green peppers, tomatoes, beans, broccoli
-
Transaccional
- Generalmente utilizados en SGBD relacionales.
- Topic
-
Tabular
- Facilitan los cálculos pero no son recomendadas para varios atributos.
- Topic
-
El algoritmo Apriori
- Introducido en 1994 por Agrawal y otros en el IBM Almaden Research Center.
-
Itemsets
-
Sea
Si A entonces B,
A y B son dos subconjutos de I mutuamene excluyentes.
- A = {beans, squash}
- B = {asparagus}
-
A y B son conocidos como itemsets según el número de items que poseen.
- {asparagus} es un itemset tipo 1
- {beans, squash} es un itemset tipo 2
- {broccoli, green peppers,corn} es un itemset tipo 3
-
El número de apariciones de cada itemset en el conjunto se conoce como el conteo (o soporte) del itemset.
- {beans}.count = 10
- {beans, squash}.count = 6
- Cuando el conteo del itemset supera el soporte establecido, a este itemset se lo denomina un itemset frecuente.
-
Soporte y Confianza
- El soporte de una regla viene dado por...
- La confianza de la regla viene dado por ..
-
Minar reglas de asociación tiene dos pasos ...
- Apartir de todos los itemset frecuentes (large itemset) es posible formular las reglas de asociación.
- Aquellas reglas que superan el criterio de confianza son conocidas como reglas fuertes (strong rules) y son desplegadas al usuario final.
- Encontrar todos los itemsets frecuentes.
- Generar las reglas a partir de los itemsets frecuentes encontrados.
-
La propiedad Downward Closure.
- Todos los subconjuntos de un itemset frecuente tipo k deben ser tambien itemsets frecuetnes tipo k-1
- Esto restringe considerablemente el campo de busqueda y reduce el problema de dimensionalidad.
- Pseudocodigo
-
¿Como funciona Apriori?
1ra Parte: generación de itemsets frecuentes.
- Soporte = 4
-
Empezamos con los itemsets candidatos tipo 1 contando su frecuencia en el conjunto.
- asparagus 6
- beans 10
- broccoli 5
- corn 8
- green peppers 5
- squash 7
- tomatoes 6
-
A partir de los itemsets frecuentes tipo 1 generamos los itemsets candidatos tipo 2 y contamos su frecuencia.
- Asparagus, beans 5
- Asparagus, broccoli 1
- Asparagus, corn 2
- Asparagus, green peppers 0
- Asparagus, squash 5
- Asparagus, tomatoes 1
- Beans, broccoli 3
- Beans, corn 5
- Beans, green peppers 3
- Beans, squash 6
- Beans, tomatoes 4
- Broccoli, corn 2
- Broccoli, green peppers 4
- Broccoli, squash 1
- Broccoli, tomatoes 2
- Corn, green peppers 3
- Corn, squash 3
- Corn, tomatoes 4
- Green peppers, squash 1
- Green peppers, tomatoes 3
- Squash, tomatoes 2
-
Para generar candidatos tipo 3 (k) a partir de los frecuentes tipo 2 (k -1),
emparejamos los itemsets cuyos k-1 items sean iguales ...
-
{asparagus, beans, squash}
se genera a partir de ...
- {asparagus, beans}
- {asparagus, squash}
-
{asparagus, beans, squash, tomatoes}
a partir de ...
- {asparagus, beans, squash}
- {asparagus, beans, tomatoes}
- En este paso verificamos si los itemsets candidatos cumplen con la propiedad Downward closure. Aquellos que no pasen la propiedad son podados y nos ahorramos el conteo de su frecuencia.
-
En este caso, este seria el conjunto de itemsets candidatos tipo 3 ...
- asparagus, beans, squash 4
-
beans, corn, squash NA
- No es frecuente porque {corn, squash} no es frecuente
- beans, corn, tomatoes 3
-
beans, squash, tomatoes NA
- No es frecuente porque {squash, tomatoes} no es frecuente
-
Lista completa de itemsets frecuentes.
- {Asparagus} 6
- {Beans} 10
- {Broccoli} 5
- {Corn} 8
- {Green Peppers} 5
- {Squash} 7
- {Tomatoes} 6
- {Asparagus, Beans} 5
- {Asparagus, Squash} 5
- {Beans, Corn} 5
- {Beans, Squash} 6
- {Beans, Tomatoes} 4
- {Broccoli, Green Peppers} 4
- {Corn, Tomatoes} 4
- {Asparagus, Beans, Squash} 4
-
¿Como funciona Apriori?
2da Parte: generación de reglas.
-
Algoritmo
- Primero generamos todos los subconjuntos no vacios ss de un itemset frecente s
- Para cada ss generamos una reglas de la forma
Si ss entonces (s - ss)
- Solo las reglas que superan la confianza establecia serán desplegadas.
-
Ejemplo
-
Dado s = {asparagus, beans, squash} tenemos los siguiente subconjuntos ...
- {asparagus}
- {beans}
- {squash}
- {asparagus, beans}
- {asparagus, squash}
- {beans, squash}
- Si ss = {asparagus, beans}, entonce (s – ss) = {squash}
-
obtenemos la regla...
Si compra asparagus y beans entonce compra squash
donde ...
- Soporte = {asparagus,beans,squash}.count / Total número de transacciones = 4 / 14 = 28.6%
- Confianza = {asparagus,beans,squash}.count / {asparagus,beans}.count = 4 / 5 = 80%
- Las reglas con un solo consecuente para s serían
- Encontrar el soporte y la confianza para la regla
Si compra beans entonces compra asparagus y squash
-
Reglas desplegadas
- Lista de reglas de asociación con un solo antecedente y consecuente.
- Lista final de reglas de asociación con confianza minima del 80%
-
Usando Weka para encontrar reglas de asociación.
-
Conjunto Veggies 4 Sale
- Cargar el archivo veggies.csv en Weka.
- Eliminar el atributo Transaction.
- Aplicar el filtro NumericToBinary y guardar el nuevo conjunto como
veggiesNumericToBinary.arff
- Usando un editor de texto explorar las características del formato ARFF.
- Aplicar el algoritmo Apriori en la pestaña Associate con los parametros por defecto. ¿Qué interpretación se pueda dar a estas reglas?
- En la sección @data del archivo .arff cambiar los valores de '0' por el de '?'.
-
Aplicar de nuevo el algoritmo Apriori con los siguientes parametros.
- lowerBoundMinSupport=0.28
- metricType=Confidence
- minMetric=0.8
- outputItemSets=True
-
Conjunto Churn
- Aunque no es común las reglas de asociación también son aplicables a conjuntos multivariables.
- Cargar el archivo churn.csv
- Eliminar las columnas State, Account Length, Area Code, Phone, Day Charge, Eve Charge, Night Charge, Intl Charge.
-
Usando el filtro Discretize discretizar los atributos numéricos usandos ...
- 3 bins para el atributo VMail Message(3).
- 5 bins para los atributos de Day Mins (4) a Intl Calls (11).
- Aplicar el filtro NumericToNominal al Atributo CustServ Calls (12).
-
Aplicar el algoritmo Apriori con los siguientes parametros...
- car=True
- delta=0.01
- lowerBoundMinSupport=0.01
- upperBoundMinSupport=0.15
- metricType=Confidence
- minMetric=0.70
- numRules=100
- outputItemSets=False