Cálculo de Métricas Clave de Minería
Desliza para mostrar el menú
Soporte: definición, cálculo e interpretación
Soporte mide la frecuencia con la que un artículo o conjunto de artículos aparece en un conjunto de datos de transacciones.
Matemáticamente, el soporte para un conjunto de artículos es la proporción de transacciones que contienen todos los artículos de ese conjunto. En un contexto minorista, el soporte ayuda a comprender cuán común es una combinación de productos entre todas las compras.
Support(itemset) = Number of transactions containing itemset / Total number of transactions
Un valor de soporte más alto indica que el conjunto de artículos es más frecuente en los datos, lo que lo convierte en candidato para análisis adicionales o promociones. Por ejemplo, si "bread and butter" aparecen juntos en 30 de 100 transacciones, el soporte para {"bread", "butter"} es 0.3.
Confianza: fórmula, significado y uso práctico
Confianza evalúa la probabilidad de que un cliente que compra el artículo A también compre el artículo B.
Se calcula como la proporción de transacciones que contienen tanto A como B respecto al número de transacciones que contienen solo A.
Confianza(A ⇒ B) = Número de transacciones que contienen tanto A como B / Número de transacciones que contienen A
En la práctica, la confianza indica cuán fiable es la regla "si A, entonces B". Si la confianza es alta, se puede estar más seguro de que los clientes que compran A también comprarán B, lo cual es útil para recomendaciones o marketing dirigido.
Lift: Derivación, Medición e Importancia
Lift evalúa cuánto más probable es que se compre el artículo B cuando se compra el artículo A, en comparación con si las compras de A y B fueran eventos independientes.
Se calcula dividiendo la confianza de la regla entre el soporte del consecuente (B):
Lift(A ⇒ B) = Confianza(A ⇒ B) / Soporte(B)
Un valor de lift igual a 1 implica que no hay asociación (independencia), mayor que 1 indica una asociación positiva y menor que 1 sugiere una asociación negativa. El lift es fundamental porque ajusta según la popularidad del consecuente, ayudando a distinguir relaciones realmente significativas de las coincidencias.
Ejemplo práctico: cálculo de soporte, confianza y lift
Supón que tienes los siguientes datos de transacciones:
- Transacción 1: Milk, Bread;
- Transacción 2: Milk, Diaper, Beer, Bread;
- Transacción 3: Milk, Diaper, Beer, Cola;
- Transacción 4: Bread, Butter.
Vamos a calcular las métricas para la regla: Milk ⇒ Bread.
-
Soporte(Milk, Bread): Aparece en las Transacciones 1 y 2 (2 de 4) ⇒ 0.5;
-
Soporte(Milk): Aparece en las Transacciones 1, 2 y 3 (3 de 4) ⇒ 0.75;
-
Soporte(Bread): Aparece en las Transacciones 1, 2 y 4 (3 de 4) ⇒ 0.75.
-
Confianza(Milk ⇒ Bread): Soporte(Milk, Bread) / Soporte(Milk) = 0.5 / 0.75 = 0.6667;
-
Lift(Milk ⇒ Bread): Confianza(Milk ⇒ Bread) / Soporte(Bread) = 0.6667 / 0.75 = 0.8889.
Esto significa que, aunque "Milk" y "Bread" suelen aparecer juntos, comprar "Milk" no incrementa la probabilidad de comprar "Bread" en comparación con la línea base.
123456789101112131415161718192021222324252627282930import pandas as pd from mlxtend.preprocessing import TransactionEncoder # Sample transaction data data = [ ['Milk', 'Bread'], ['Milk', 'Diaper', 'Beer', 'Bread'], ['Milk', 'Diaper', 'Beer', 'Cola'], ['Bread', 'Butter'] ] # Converting to DataFrame with one-hot encoding te = TransactionEncoder() te_ary = te.fit(data).transform(data) df = pd.DataFrame(te_ary, columns=te.columns_) # Calculating support support_milk = df['Milk'].mean() support_bread = df['Bread'].mean() support_milk_bread = (df['Milk'] & df['Bread']).mean() # Calculating confidence for rule: Milk => Bread confidence = support_milk_bread / support_milk # Calculating lift for rule: Milk => Bread lift = confidence / support_bread print(f"Support (Milk & Bread): {support_milk_bread:.2f}") print(f"Confidence (Milk ⇒ Bread): {confidence:.2f}") print(f"Lift (Milk ⇒ Bread): {lift:.2f}")
Este código muestra cómo calcular las métricas clave de reglas de asociación—soporte, confianza y lift—utilizando un pequeño conjunto de datos de transacciones. Así funciona cada parte:
-
Preparar los datos de transacciones:
- La lista
datacontiene transacciones, cada una como una lista de artículos comprados; - Cada sublista representa una sola transacción (cesta) de un cliente.
- La lista
-
Codificación one-hot de las transacciones:
- El código utiliza
TransactionEncoderde la libreríamlxtendpara convertir la lista de listas de artículos en un formato adecuado para el análisis; fitaprende todos los artículos únicos ytransformcrea un array booleano (True si el artículo está presente en la transacción, False en caso contrario);- Este array se convierte en un DataFrame de pandas, donde cada columna es un artículo y cada fila es una transacción.
- El código utiliza
-
Cálculo del soporte:
support_milk = df['Milk'].mean()calcula la proporción de transacciones que contienen "Milk";support_bread = df['Bread'].mean()calcula la proporción que contiene "Bread";support_milk_bread = (df['Milk'] & df['Bread']).mean()calcula la proporción de transacciones que contienen ambos, "Milk" y "Bread" (la intersección de ambas columnas).
-
Cálculo de la confianza:
confidence = support_milk_bread / support_milkcalcula la confianza para la regla "Milk ⇒ Bread";- Esto mide con qué frecuencia se compra "Bread" cuando se compra "Milk".
-
Cálculo del lift:
lift = confidence / support_breadcalcula el lift para la regla;- El lift compara la confianza observada con la confianza esperada si las compras de "Milk" y "Bread" fueran independientes.
-
Impresión e interpretación de resultados:
- El código imprime los valores de soporte, confianza y lift para "Milk & Bread";
- Un soporte de 0.50 significa que "Milk" y "Bread" se compran juntos en la mitad de las transacciones;
- Una confianza de 0.67 significa que cuando se compra "Milk", también se compra "Bread" dos tercios de las veces;
- Un lift de 0.89 sugiere que comprar "Milk" en realidad hace que comprar "Bread" sea ligeramente menos probable en comparación con el azar (ya que lift < 1).
1. Supón que en un conjunto de datos de 1,000 transacciones, 150 transacciones contienen tanto "apples" como "bananas". ¿Cuál es el soporte para el conjunto de artículos {"apples", "bananas"}?
2. ¿Qué afirmación distingue mejor la confianza del lift en la minería de reglas de asociación?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla