Big Data Analytics: reglas de asociación

Sea I = i 1 , i 2 , ..., i n un conjunto de n atributos binarios llamados elementos. Sea D = t 1 , t 2 , ..., t m un conjunto de transacciones llamado base de datos. Cada transacción en D tiene un ID de transacción único y contiene un subconjunto de los elementos en I. Una regla se define como una implicación de la forma X ⇒ Y donde X, Y ⊆ I y X ∩ Y = ∅.

Los conjuntos de elementos (para conjuntos de elementos breves) X e Y se denominan antecedentes (lado izquierdo o LHS) y consecuentes (lado derecho o RHS) de la regla.

Para ilustrar los conceptos, usamos un pequeño ejemplo del dominio de los supermercados. El conjunto de elementos es I = {leche, pan, mantequilla, cerveza} y en la siguiente tabla se muestra una pequeña base de datos que contiene los elementos.

ID de transacción Artículos
1 pan de leche
2 pan con mantequilla
3 cerveza
4 leche, pan, mantequilla
5 pan con mantequilla

Una regla de ejemplo para el supermercado podría ser {leche, pan} ⇒ {mantequilla}, lo que significa que si se compra leche y pan, los clientes también compran mantequilla. Para seleccionar reglas interesantes del conjunto de todas las reglas posibles, se pueden utilizar restricciones sobre diversas medidas de importancia e interés. Las limitaciones más conocidas son los umbrales mínimos de apoyo y confianza.

El soporte de apoyo (X) de un conjunto de artículos X se define como la proporción de transacciones en el conjunto de datos que contienen el conjunto de artículos. En la base de datos de ejemplo en la Tabla 1, el conjunto de artículos {leche, pan} tiene un soporte de 2/5 = 0.4 ya que ocurre en el 40% de todas las transacciones (2 de cada 5 transacciones). Encontrar conjuntos de elementos frecuentes puede verse como una simplificación del problema de aprendizaje no supervisado.

La confianza de una regla se define conf (X ⇒ Y) = sup (X ∪ Y) / sup (X). Por ejemplo, la regla {leche, pan} ⇒ {mantequilla} tiene una confianza de 0.2 / 0.4 = 0.5 en la base de datos en la Tabla 1, lo que significa que para el 50% de las transacciones que contienen leche y pan, la regla es correcta. La confianza se puede interpretar como una estimación de la probabilidad P (Y | X), la probabilidad de encontrar el RHS de la regla en transacciones con la condición de que estas transacciones también contengan el LHS.

En el guión ubicado en bda/part3/apriori.R el código para implementar el apriori algorithm puede ser encontrado.

# Load the library for doing association rules
# install.packages(’arules’) 
library(arules)  

# Data preprocessing 
data("AdultUCI") 
AdultUCI[1:2,]  
AdultUCI[["fnlwgt"]] <- NULL 
AdultUCI[["education-num"]] <- NULL  

AdultUCI[[ "age"]] <- ordered(cut(AdultUCI[[ "age"]], c(15,25,45,65,100)), 
   labels = c("Young", "Middle-aged", "Senior", "Old")) 
AdultUCI[[ "hours-per-week"]] <- ordered(cut(AdultUCI[[ "hours-per-week"]], 
   c(0,25,40,60,168)), labels = c("Part-time", "Full-time", "Over-time", "Workaholic")) 
AdultUCI[[ "capital-gain"]] <- ordered(cut(AdultUCI[[ "capital-gain"]], 
   c(-Inf,0,median(AdultUCI[[ "capital-gain"]][AdultUCI[[ "capitalgain"]]>0]),Inf)), 
   labels = c("None", "Low", "High")) 
AdultUCI[[ "capital-loss"]] <- ordered(cut(AdultUCI[[ "capital-loss"]], 
   c(-Inf,0, median(AdultUCI[[ "capital-loss"]][AdultUCI[[ "capitalloss"]]>0]),Inf)), 
   labels = c("none", "low", "high"))

Para generar reglas usando el algoritmo a priori, necesitamos crear una matriz de transacciones. El siguiente código muestra cómo hacer esto en R.

# Convert the data into a transactions format
Adult <- as(AdultUCI, "transactions") 
Adult 
# transactions in sparse format with 
# 48842 transactions (rows) and 
# 115 items (columns)  

summary(Adult)  
# Plot frequent item-sets 
itemFrequencyPlot(Adult, support = 0.1, cex.names = 0.8)  

# generate rules 
min_support = 0.01 
confidence = 0.6 
rules <- apriori(Adult, parameter = list(support = min_support, confidence = confidence))

rules 
inspect(rules[100:110, ]) 
# lhs                             rhs                      support     confidence  lift
# {occupation = Farming-fishing} => {sex = Male}        0.02856148  0.9362416   1.4005486
# {occupation = Farming-fishing} => {race = White}      0.02831579  0.9281879   1.0855456
# {occupation = Farming-fishing} => {native-country     0.02671881  0.8758389   0.9759474
                                       = United-States}