Usando python para implementar el algoritmo de regla de asociación Apriori

reglas de asociación

        Es posible que haya oído hablar de un caso utilizado para promover la minería de datos: cerveza y pañales; se dice que cuando Wal-Mart Supermarket analizó los registros de compra de los clientes, descubrió que muchos clientes compraban cerveza y pañales para bebés al mismo tiempo, por lo que el supermercado se ajustó la cerveza y los pañales juntan estas dos categorías, como resultado, las ventas de estas dos categorías han aumentado significativamente, la razón es que muchos hombres que acaban de dar a luz traen consigo algunos productos para bebés cuando compran cerveza.

Independientemente de si este caso es cierto o no, la forma de analizar los registros de compra de los clientes en el caso son las Reglas de asociación.

El análisis de reglas de asociación, también conocido como análisis de cesta de la compra, se utiliza para analizar la relación entre elementos en un conjunto de datos.

Conceptos básicos de las reglas de asociación

Conjunto de artículos: una colección de artículos, como la colección {leche, cereal, azúcar} es un conjunto de 3 artículos, que puede considerarse como una colección de artículos en el registro de compra.

Conjunto de elementos frecuentes: como su nombre lo indica, es una colección de elementos que ocurren con frecuencia. ¿Cómo definir frecuente? Determinado por la proporción, los dos conceptos de apoyo y confianza se utilizan en reglas de asociación para calcular el valor de la proporción.

Soporte: la proporción de elementos concurrentes en el elemento general. Tome el registro de compra como ejemplo, hay 100 registros de compra, si hay 50 registros de compra del producto A y B al mismo tiempo (es decir, hay 50 registros de compra de A y B al mismo tiempo), el el apoyo del conjunto de 2 elementos de A y B allí es del 50%

Confianza: la probabilidad condicional de comprar B después de comprar A, según la fórmula bayesiana, se puede expresar de la siguiente manera:

 Grado de elevación: para juzgar el valor real de las reglas de generación, es decir, si el número de ocurrencias del producto después de usar las reglas es mayor que la tasa de evaluación del producto solo, el grado de elevación y medir el efecto de promoción de comprar X sobre la probabilidad de comprar Y. La siguiente fórmula muestra que si X e Y son independientes entre sí, la sustentación es 1, y cuanto mayor sea la sustentación, más fuerte será la correlación entre X->Y

Reglas de asociación Algoritmo a priori

1. La idea básica del algoritmo Apriori
es escanear el conjunto de datos varias veces. El primer escaneo obtiene el conjunto L1 de conjuntos de elementos frecuentes 1. El k-ésimo escaneo primero usa el resultado Lk-1 del escaneo k-1 para generar candidato k-Itemset Ck, el grado de soporte de Ck se calcula durante el proceso de escaneo, y el k-itemset Lk frecuente se calcula después del escaneo.El algoritmo finaliza cuando el conjunto Ck de k-itemsets candidatos está vacío.
2. El proceso del algoritmo Apriori que genera conjuntos de elementos frecuentes
(1) paso de conexión
(2) paso de poda

3. Los pasos principales del algoritmo Apriori
(1) Escanear todos los datos para generar el conjunto C1 de conjuntos de elementos candidatos 1
(2) De acuerdo con el soporte mínimo, generar el conjunto L1 de conjuntos de elementos 1 frecuentes a partir del conjunto C1 de elementos candidatos 1-itemsets
( 3) Para k>1, repita los pasos (4) (5) (6)
(4) Realice operaciones de conexión y poda por Lk para generar candidato (k+1)-itemset Ck+1
(5) Según el soporte mínimo, del conjunto de elementos candidato (k+1) Ck+1 para generar el conjunto de elementos frecuente (k+1) Lk+1 (6)
Si L no es un conjunto vacío, entonces k = k+1, saltar al paso (4), de lo contrario, salte al paso (7)
(7) De acuerdo con la confianza mínima, genere reglas de asociación sólidas a partir de conjuntos de elementos frecuentes

El algoritmo a priori es un algoritmo de regla de asociación clásico. El objetivo del algoritmo Apriori es encontrar el mayor conjunto frecuente de elementos K. El algoritmo Apriori comienza buscando 1 conjunto de elementos, pasa por el umbral de soporte mínimo y luego busca 2 conjuntos de elementos, 3 conjuntos de elementos hasta que no haya más conjuntos de elementos.

Código 

Para la implementación de este algoritmo, usamos el paquete de terceros de mlxtend, simplemente instálelo con pip install mlxtend

Herramienta de compilación: cuaderno jupyter

Primero importe los paquetes de terceros utilizados en este proyecto:

import pandas as pd
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
import warnings
warnings.filterwarnings('ignore')

A continuación, usaré dos casos pequeños para demostrar cómo usar el algoritmo de la regla de asociación.

Caso número uno

preparar datos

order = {'001': '面包,黄油,尿布,啤酒', 
        '002': '咖啡,糖,小甜饼,鲑鱼,啤酒',
        '003': '面包,黄油,咖啡,尿布,啤酒,鸡蛋', 
        '004': '面包,黄油,鲑鱼,鸡',
        '005': '鸡蛋,面包,黄油', 
        '006': '鲑鱼,尿布,啤酒',
        '007': '面包,茶,糖鸡蛋', 
        '008': '咖啡,糖,鸡,鸡蛋',
        '009': '面包,尿布,啤酒,盐', 
        '010': '茶,鸡蛋,小甜饼,尿布,啤酒'}
data_set = []
id_set= []
shopping_basket = {}
for key in order:
    item = order[key].split(',')
    id_set.append(key)
    data_set.append(item)
shopping_basket['ID'] = id_set
shopping_basket['Basket'] = data_set
shopping_basket

Convertir datos a tipo DataFrame

data = pd.DataFrame(shopping_basket)
data

 

Luego, necesitamos convertir los datos de Basket en una codificación one-hot (0, 1)

Este paso es principalmente para dividir y procesar la identificación y la cesta de los datos, y finalmente fusionarlos

data_id = data.drop('Basket',1)
data_basket = data['Basket'].str.join(',')
data_basket = data_basket.str.get_dummies(',')
new_data = data_id.join(data_basket)
new_data

 Llame al algoritmo a priori

A priori() min_support, es decir, el grado mínimo de soporte, por defecto es 0.5, por lo que si queremos modificarlo modificamos directamente este valor

frequent_itemsets = apriori(new_data.drop('ID',1),min_support=0.5,use_colnames=True)
frequent_itemsets

 A partir de los resultados, encontramos que en el conjunto binomial aparecieron pañales y cerveza, lo que indica que los pañales y la cerveza están altamente correlacionados.

Luego nos fijamos en sus reglas de asociación específicas.

association_rules(frequent_itemsets,metric='lift')

Podemos ver que el valor de promoción de los pañales y la cerveza también es muy grande (mayor que 1), lo que demuestra además que los pañales y la cerveza están altamente correlacionados, por lo que al vender, se deben vender juntos o se debe aumentar la promoción de manera adecuada. .

caso dos

Los pasos son similares al Caso 1

preparar datos

shopping_backet = {'ID':[1,2,3,4,5,6],
                    'Basket':[['Beer','Diaper','Pretzels','Chips','Aspirin'],
                              ['Diaper','Beer','Chips','Lotion','Juice','BabyFood','Milk'],
                              ['Soda','Chips','Milk'],
                              ['Soup','Beer','Diaper','Milk','IceCream'],
                              ['Soda','Coffee','Milk','Bread'],
                              ['Beer','Chips']
                              ]
                    }
data = pd.DataFrame(shopping_backet)
data

Convierta los datos al tipo de datos requerido por el algoritmo a priori

data_id = data.drop('Basket',1)
data_basket = data['Basket'].str.join(',')
data_basket = data_basket.str.get_dummies(',')
new_data = data_id.join(data_basket)
new_data

Llame al algoritmo a priori

frequent_itemsets = apriori(new_data.drop('ID',1),min_support=0.5,use_colnames=True)
frequent_itemsets

 

 Si solo considera el soporte de soporte, entonces [Beer, Chips] y [Pañal, Beer] son ​​muy frecuentes, entonces, ¿qué combinación es más relevante?

association_rules(frequent_itemsets,metric='lift')

 Obviamente, el valor de elevación de [Pañal, Cerveza] es mayor, lo que indica que esta combinación es más relevante

Supongo que te gusta

Origin blog.csdn.net/m0_64336780/article/details/125355963
Recomendado
Clasificación