##############################
# REGLAS DE ASOCIACIÓN #
# EJEMPLO RETAIL #
# Mg. Jesús Salinas Flores #
# [email protected] #
##############################
#--------------------------------------------------------------
# Para limpiar el workspace, por si hubiera algun dataset
# o informacion cargada
rm(list = ls())
#--------------------------------------------------------------
# Cambiar el directorio de trabajo
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
getwd()
o#--------------------------------------------------------------
# Otras opciones
cat("\014")
options(scipen=999)
options(digits = 4)
############
# Paquetes #
############
library(arules)
library(arulesViz)
library(RColorBrewer)
library(dplyr)
library(ggplot2)
library(foreign)
library(colorspace)
library(rpart)
library(rpart.plot)
#--------------------------------------------------------------
# Paso 1: Cargando los datos
datos.completos <- read.delim("MBA.txt")
str(datos.completos)
datos.productos <- datos.completos[,c(8:18)]
str(datos.productos)
#--------------------------------------------------------------
# Paso 2: Encontrando las reglas de asociación
library(arules)
reglas <- apriori(data = datos.productos,
parameter = list(support = 0.1,
confidence = 0.30,
minlen = 2, maxlen=10,
# Se especifica que se creen reglas
target = "rules"))
reglas
summary(reglas)
# Mostrar la primera regla
inspect(reglas[1])
# Mostrar todas las reglas
inspect(reglas)
# Ordenando las reglas por el lift
inspect(sort(reglas, by = "lift"))
# Encontrando reglas redundantes
inspect(reglas[is.redundant(reglas)])
# Encontrando reglas no redundantes
inspect(reglas[!is.redundant(reglas)])
#--------------------------------------------------------------
# Paso 3: Buscando patrones en una regla usando
# datos socio-demográficos
# lhs rhs support confidence
lift count
#[1] {vegetalesEnlatados,cervezas} => {congelados} 0.146 0.8742515
2.894873 146
datos.completos$regla<- ifelse(datos.completos$vegetalesEnlatados==T &
datos.completos$cervezas==T &
datos.completos$congelados==T,"Compra","No Compra")
datos.completos$regla <- factor(datos.completos$regla)
table(datos.completos$regla)
datos.clasificacion <- datos.completos[,c(2:7,19)]
str(datos.clasificacion)
# Aplicando un árbol para encontrar reglas
library(rpart)
set.seed(123)
arbol1 <- rpart(regla ~ . ,
data=datos.clasificacion,
method="class")
# Graficando el arbol
library(rpart.plot)
rpart.plot(arbol1, digits=-1, type=2,
extra=101, cex = .7, nn=TRUE)