Introducción
Los algoritmos de reglas de asociación tienen como objetivo encontrar relaciones dentro un conjunto de transacciones, en concreto, ítems o atributos que tienden a ocurrir de forma conjunta. En este contexto, el término transacción hace referencia a cada grupo de eventos que están asociados de alguna forma, por ejemplo:
- La cesta de la compra en un supermercado.
- Los libros que compra un cliente en una librería.
- Las páginas web visitadas por un usuario.
- Las características que aparecen de forma conjunta.
A cada uno de los eventos o elementos que forman parte de una transacción se conoce como ítem y a un conjunto de ellos itemset. Una transacción puede estar formada por uno o varios itemsets, en el caso de ser varios, cada posible subconjunto de ellos es un itemset distinto.
Algoritmos de Reglas de Asociación
Existen varios algoritmos diseñados para identificar itemsets frecuentes y reglas de asociación. A continuación, se describen algunos de los más utilizados.
- Apriori
- FP-Growth
- Eclat
De los cuales, daremos una breve descripción de ellos.
Apriori
Fue uno de los primeros algoritmos desarrollados para la búsqueda de reglas de asociación y sigue siendo uno de los mas empleados, consta de dos etapas:
Identificar todos los itemsets que ocurren con una frecuencia por encima de un determinado límite.
Convertir esos itemsets frecuentes en reglas de asociación.
FP-Growth
En los 2000 se propuso un nuevo algoritmo, que permite extraer reglas de asociación a partir de itemsets frecuentes pero, a diferencia del algoritmo Apriori, estos se identifican sin necesidad de generar candidatos para cada tamaño.
Este algoritmo emplea una estructura de árbol donde almacena toda la información de las transacciones. Esta estructura permite comprimir la información de una base de datos de transacciones hasta 200 veces, haciendo posible que pueda ser cargada en memoria RAM.
Eclat
Zaki, en el año 2000, propuso un nuevo algoritmo para encontrar patrones frecuentes llamado Equivalence Class Transformation (Eclat). La princioal diferencia entre este algoritmo y el Apriori es la forma en que se escanean y analizan los datos. El algoritmo Apriori emplea transacciones almacenadas de forma horizontal, es decir, todos los elementos que forman una misma transacción están en la misma línea. El algoritmo Eclat, sin embargo, analiza las transacciones en formato vertical, donde cada línea contiene un ítem y las transacciones en las que aparece ese ítem.
Implementación de los algoritmos
En el presente documento se presenta la implementación de los algoritmos antes mencionados con la base de datos "orders" que contiene 29700 observaciones con 2 variables que son id_orders (Número de identificación que se le da a un cliente) y product_name (Nombre del producto).
Empezamos con la lectura de los datos, así:
orders <- read_delim("orders.csv", ";", escape_double = FALSE,
trim_ws = TRUE)
##
## -- Column specification --------------------------------------------------------
## cols(
## order_id = col_double(),
## product_name = col_character()
## )
head(orders)
## # A tibble: 6 x 2
## order_id product_name
## <dbl> <chr>
## 1 2 Organic Egg Whites
## 2 2 Michigan Organic Kale
## 3 2 Garlic Powder
## 4 2 Coconut Butter
## 5 2 Natural Sweetener
## 6 2 Carrots
Procedemos a convertir nuestra base de datos en un objeto del tipo transacción:
orders_split <- split(x = orders$product_name, f = orders$order_id)
transacciones <- as(orders_split, Class = "transactions")
transacciones
## transactions in sparse format with
## 29432 transactions (rows) and
## 24748 items (columns)
Realicemos una inspección de los datos, mirando el tamaño de las transacciones, así:
tamanyos <- size(transacciones)
summary(tamanyos)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 5.00 8.00 10.09 14.00 71.00
quantile(tamanyos, probs = seq(0,1,0.1))
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## 1 2 4 5 7 8 10 12 15 20 71
data.frame(tamanyos) %>%
ggplot(aes(x = tamanyos)) +
geom_histogram() +
labs(title = "Distribución del tamaño de las transacciones",
x = "Tamaño") +
theme_bw()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Notemos que el 90% de los clientes compran entre 1 y 20 ítems, siendo la mayor frecuencia de 6 a 8 ítems por cliente.
Analicemos los ítems que tienen mayor soporte dentro del conjunto de transacciones.
#frecuencia (relativa) de el item respecto al conjunto de datos que
#contiene dicho item
frecuencia_items <- itemFrequency(x = transacciones, type = "relative")
frecuencia_items %>% sort(decreasing = TRUE) %>% head(5)
## Banana Bag of Organic Bananas Organic Strawberries
## 0.14885159 0.11976760 0.07977711
## Organic Baby Spinach Organic Hass Avocado
## 0.07546208 0.06689997
#frecuencia (absoluta) de el item respecto al total de items
frecuencia_items <- itemFrequency(x = transacciones, type = "absolute")
frecuencia_items %>% sort(decreasing = TRUE) %>% head(5)
## Banana Bag of Organic Bananas Organic Strawberries
## 4381 3525 2348
## Organic Baby Spinach Organic Hass Avocado
## 2221 1969
Notemos que los 5 productos mas vendidos son:
- Banana
- Bag of Organic Bananas
- Organic Strawberries
- Organic Baby Spinach
- Organic Hass Avocado
Procedemos a las extraccion de los ítems. Para eso extraeremos aquellos ítems que al menos hayan sido comprado 30 veces. Se escogio 30 ya que de este modo aparezcan un número suficiente de itemsets y las reglas de asociacion que permitan mostrar las posibilidades de análisis que permite el paquete "arules". Naturalmente se puede considerar más ítems, pero debido a las limitaciones computacionales nos limitaremos a 30.
Apriori
Usaremos primero el algoritmo Apriori, así:
soporte <- 30 / dim(transacciones)[1]
itemsets <- apriori(data = transacciones,
parameter = list(support = soporte,
minlen = 1,
maxlen = 20,
target = "frequent itemset"))
## Apriori
##
## Parameter specification:
## confidence minval smax arem aval originalSupport maxtime support minlen
## NA 0.1 1 none FALSE TRUE 5 0.001019299 1
## maxlen target ext
## 20 frequent itemsets TRUE
##
## Algorithmic control:
## filter tree heap memopt load sort verbose
## 0.1 TRUE TRUE FALSE TRUE 2 TRUE
##
## Absolute minimum support count: 29
##
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[24748 item(s), 29432 transaction(s)] done [1.09s].
## sorting and recoding items ... [1803 item(s)] done [0.02s].
## creating transaction tree ... done [0.06s].
## checking subsets of size 1 2 3 4 done [0.17s].
## sorting transactions ... done [0.03s].
## writing ... [3968 set(s)] done [0.01s].
## creating S4 object ... done [0.02s].
summary(itemsets)
## set of 3968 itemsets
##
## most frequent items:
## Banana Bag of Organic Bananas Organic Baby Spinach
## 356 305 228
## Organic Strawberries Organic Hass Avocado (Other)
## 226 187 5063
##
## element (itemset/transaction) length distribution:sizes
## 1 2 3 4
## 1803 1934 230 1
##
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 1.000 2.000 1.604 2.000 4.000
##
## summary of quality measures:
## support transIdenticalToItemsets count
## Min. :0.001019 Min. :0.000e+00 Min. : 30.0
## 1st Qu.:0.001223 1st Qu.:0.000e+00 1st Qu.: 36.0
## Median :0.001597 Median :0.000e+00 Median : 47.0
## Mean :0.002698 Mean :2.766e-05 Mean : 79.4
## 3rd Qu.:0.002514 3rd Qu.:3.398e-05 3rd Qu.: 74.0
## Max. :0.148852 Max. :2.480e-03 Max. :4381.0
##
## includes transaction ID lists: FALSE
##
## mining info:
## data ntransactions support confidence
## transacciones 29432 0.001019299 1
top_20_itemsets <- sort(itemsets, by = "support", decreasing = TRUE)[1:20]
inspect(top_20_itemsets)
## items support transIdenticalToItemsets count
## [1] {Banana} 0.14885159 0.0024802936 4381
## [2] {Bag of Organic Bananas} 0.11976760 0.0021065507 3525
## [3] {Organic Strawberries} 0.07977711 0.0007135091 2348
## [4] {Organic Baby Spinach} 0.07546208 0.0009173689 2221
## [5] {Organic Hass Avocado} 0.06689997 0.0004077195 1969
## [6] {Organic Avocado} 0.05477032 0.0004077195 1612
## [7] {Large Lemon} 0.04651400 0.0004416961 1369
## [8] {Strawberries} 0.04535879 0.0010872520 1335
## [9] {Organic Raspberries} 0.04359201 0.0004756727 1283
## [10] {Limes} 0.04277657 0.0003397662 1259
## [11] {Organic Whole Milk} 0.04134955 0.0004756727 1217
## [12] {Organic Garlic} 0.03424844 0.0001698831 1008
## [13] {Organic Yellow Onion} 0.03394265 0.0002038597 999
## [14] {Cucumber Kirby} 0.03091873 0.0001359065 910
## [15] {Organic Blueberries} 0.03047703 0.0004756727 897
## [16] {Organic Zucchini} 0.03040908 0.0001019299 895
## [17] {Organic Lemon} 0.02857434 0.0002378364 841
## [18] {Organic Fuji Apple} 0.02786083 0.0001359065 820
## [19] {Apple Honeycrisp Organic} 0.02667165 0.0001698831 785
## [20] {Honeycrisp Apple} 0.02616200 0.0001359065 770
Ahora, presentemos de manera gráfica los ítems
as(top_20_itemsets, Class = "data.frame") %>%
ggplot(aes(x = reorder(items, support), y = support)) +
geom_col() +
coord_flip() +
labs(title = "Itemsets más frecuentes", x = "itemsets") +
theme_bw()
A continuación se presentarán los 20 items más frecuentes formados por más de un item.
inspect(sort(itemsets[size(itemsets) > 1], decreasing = TRUE)[1:20])
## items support
## [1] {Bag of Organic Bananas,Organic Hass Avocado} 0.018891003
## [2] {Bag of Organic Bananas,Organic Strawberries} 0.018687143
## [3] {Banana,Organic Strawberries} 0.017633868
## [4] {Banana,Organic Baby Spinach} 0.016614569
## [5] {Banana,Organic Avocado} 0.016376733
## [6] {Bag of Organic Bananas,Organic Baby Spinach} 0.016206850
## [7] {Bag of Organic Bananas,Organic Raspberries} 0.013182930
## [8] {Banana,Strawberries} 0.012877141
## [9] {Organic Hass Avocado,Organic Strawberries} 0.012605328
## [10] {Banana,Large Lemon} 0.012231585
## [11] {Organic Baby Spinach,Organic Strawberries} 0.012027725
## [12] {Banana,Cucumber Kirby} 0.010532753
## [13] {Banana,Organic Hass Avocado} 0.010532753
## [14] {Banana,Organic Fuji Apple} 0.010362870
## [15] {Organic Baby Spinach,Organic Hass Avocado} 0.010226964
## [16] {Banana,Limes} 0.009955151
## [17] {Organic Raspberries,Organic Strawberries} 0.009683338
## [18] {Banana,Organic Whole Milk} 0.009411525
## [19] {Banana,Honeycrisp Apple} 0.009071759
## [20] {Organic Avocado,Organic Baby Spinach} 0.008698016
## transIdenticalToItemsets count
## [1] 6.795325e-05 556
## [2] 1.019299e-04 550
## [3] 3.397662e-05 519
## [4] 0.000000e+00 489
## [5] 0.000000e+00 482
## [6] 1.359065e-04 477
## [7] 0.000000e+00 388
## [8] 1.359065e-04 379
## [9] 3.397662e-05 371
## [10] 0.000000e+00 360
## [11] 3.397662e-05 354
## [12] 0.000000e+00 310
## [13] 0.000000e+00 310
## [14] 1.359065e-04 305
## [15] 6.795325e-05 301
## [16] 0.000000e+00 293
## [17] 0.000000e+00 285
## [18] 3.397662e-05 277
## [19] 3.397662e-05 267
## [20] 3.397662e-05 256
Por último presentamos las posibles reglas de asociación con una confianza del 60%,
soporte <- 30 / dim(transacciones)[1]
reglas <- apriori(data = transacciones,
parameter = list(support = soporte,
confidence = 0.60,
# Se especifica que se creen reglas
target = "rules"))
## Apriori
##
## Parameter specification:
## confidence minval smax arem aval originalSupport maxtime support minlen
## 0.6 0.1 1 none FALSE TRUE 5 0.001019299 1
## maxlen target ext
## 10 rules TRUE
##
## Algorithmic control:
## filter tree heap memopt load sort verbose
## 0.1 TRUE TRUE FALSE TRUE 2 TRUE
##
## Absolute minimum support count: 29
##
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[24748 item(s), 29432 transaction(s)] done [0.97s].
## sorting and recoding items ... [1803 item(s)] done [0.03s].
## creating transaction tree ... done [0.06s].
## checking subsets of size 1 2 3 4 done [0.16s].
## writing ... [4 rule(s)] done [0.03s].
## creating S4 object ... done [0.03s].
summary(reglas)
## set of 4 rules
##
## rule length distribution (lhs + rhs):sizes
## 2 3
## 2 2
##
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.0 2.0 2.5 2.5 3.0 3.0
##
## summary of quality measures:
## support confidence coverage lift
## Min. :0.001019 Min. :0.6066 Min. :0.001563 Min. : 4.381
## 1st Qu.:0.001172 1st Qu.:0.6253 1st Qu.:0.001843 1st Qu.: 52.518
## Median :0.001240 Median :0.6361 Median :0.002005 Median :163.645
## Mean :0.001223 Mean :0.6327 Mean :0.001937 Mean :150.268
## 3rd Qu.:0.001291 3rd Qu.:0.6435 3rd Qu.:0.002098 3rd Qu.:261.396
## Max. :0.001393 Max. :0.6522 Max. :0.002175 Max. :269.400
## count
## Min. :30.0
## 1st Qu.:34.5
## Median :36.5
## Mean :36.0
## 3rd Qu.:38.0
## Max. :41.0
##
## mining info:
## data ntransactions support confidence
## transacciones 29432 0.001019299 0.6
inspect(sort(x = reglas, decreasing = TRUE, by = "confidence"))
## lhs rhs support confidence coverage lift count
## [1] {Bartlett Pears,
## Organic Fuji Apple} => {Banana} 0.001019299 0.6521739 0.001562925 4.38137 30
## [2] {Total 2% Lowfat Greek Strained Yogurt With Blueberry,
## Total 2% Lowfat Greek Strained Yogurt with Peach} => {Total 2% with Strawberry Lowfat Greek Strained Yogurt} 0.001393042 0.6406250 0.002174504 68.56318 41
## [3] {Yotoddler Organic Pear Spinach Mango Yogurt} => {Organic Whole Milk Strawberry Beet Berry Yogurt Pouch} 0.001223158 0.6315789 0.001936668 269.40046 36
## [4] {Blueberry Whole Milk Yogurt Pouch} => {Organic Whole Milk Strawberry Beet Berry Yogurt Pouch} 0.001257135 0.6065574 0.002072574 258.72749 37
Eclat
El listado anterior muestra que los 5 productos que más se venden son: Banana, Bag of Organic Bananas, Organic Strawberries, Organic Baby Spinach y Organic Hass Avocado.
Se procede a extraer aquellos itemsets, incluidos los formados por un único item, que hayan sido comprados al menos 30 veces, esta vez haciendo uso del algoritmo Eclat:
## Eclat
##
## parameter specification:
## tidLists support minlen maxlen target ext
## FALSE 0.001019299 1 20 frequent itemsets TRUE
##
## algorithmic control:
## sparse sort verbose
## 7 -2 TRUE
##
## Absolute minimum support count: 29
##
## create itemset ...
## set transactions ...[24748 item(s), 29432 transaction(s)] done [1.00s].
## sorting and recoding items ... [1803 item(s)] done [0.02s].
## creating sparse bit matrix ... [1803 row(s), 29432 column(s)] done [0.01s].
## writing ... [3968 set(s)] done [4.12s].
## Creating S4 object ... done [0.00s].
## set of 3968 itemsets
##
## most frequent items:
## Banana Bag of Organic Bananas Organic Baby Spinach
## 356 305 228
## Organic Strawberries Organic Hass Avocado (Other)
## 226 187 5063
##
## element (itemset/transaction) length distribution:sizes
## 1 2 3 4
## 1803 1934 230 1
##
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 1.000 2.000 1.604 2.000 4.000
##
## summary of quality measures:
## support transIdenticalToItemsets count
## Min. :0.001019 Min. : 30.0 Min. : 30.0
## 1st Qu.:0.001223 1st Qu.: 36.0 1st Qu.: 36.0
## Median :0.001597 Median : 47.0 Median : 47.0
## Mean :0.002698 Mean : 79.4 Mean : 79.4
## 3rd Qu.:0.002514 3rd Qu.: 74.0 3rd Qu.: 74.0
## Max. :0.148852 Max. :4381.0 Max. :4381.0
##
## includes transaction ID lists: FALSE
##
## mining info:
## data ntransactions support
## transacciones 29432 0.001019299
Se han encontrado un total de 3968 itemsets frecuentes que superan el soporte mínimo, la mayoría de ellos (1934) formados por dos ítems. En el siguiente listado se muestran los 20 itemsets con mayor soporte que, como cabe esperar, son los formados por ítems individuales (los itemsets de menor tamaño).
Se muestran los top 20 itemsets de mayor a menor soporte.
## items support transIdenticalToItemsets count
## [1] {Banana} 0.14885159 4381 4381
## [2] {Bag of Organic Bananas} 0.11976760 3525 3525
## [3] {Organic Strawberries} 0.07977711 2348 2348
## [4] {Organic Baby Spinach} 0.07546208 2221 2221
## [5] {Organic Hass Avocado} 0.06689997 1969 1969
## [6] {Organic Avocado} 0.05477032 1612 1612
## [7] {Large Lemon} 0.04651400 1369 1369
## [8] {Strawberries} 0.04535879 1335 1335
## [9] {Organic Raspberries} 0.04359201 1283 1283
## [10] {Limes} 0.04277657 1259 1259
## [11] {Organic Whole Milk} 0.04134955 1217 1217
## [12] {Organic Garlic} 0.03424844 1008 1008
## [13] {Organic Yellow Onion} 0.03394265 999 999
## [14] {Cucumber Kirby} 0.03091873 910 910
## [15] {Organic Blueberries} 0.03047703 897 897
## [16] {Organic Zucchini} 0.03040908 895 895
## [17] {Organic Lemon} 0.02857434 841 841
## [18] {Organic Fuji Apple} 0.02786083 820 820
## [19] {Apple Honeycrisp Organic} 0.02667165 785 785
## [20] {Honeycrisp Apple} 0.02616200 770 770
Para representarlos con ggplot se convierte a dataframe
Se muestran los 20 itemsets más frecuentes formados por más de un ítem.
## items support
## [1] {Bag of Organic Bananas,Organic Hass Avocado} 0.018891003
## [2] {Bag of Organic Bananas,Organic Strawberries} 0.018687143
## [3] {Banana,Organic Strawberries} 0.017633868
## [4] {Banana,Organic Baby Spinach} 0.016614569
## [5] {Banana,Organic Avocado} 0.016376733
## [6] {Bag of Organic Bananas,Organic Baby Spinach} 0.016206850
## [7] {Bag of Organic Bananas,Organic Raspberries} 0.013182930
## [8] {Banana,Strawberries} 0.012877141
## [9] {Organic Hass Avocado,Organic Strawberries} 0.012605328
## [10] {Banana,Large Lemon} 0.012231585
## [11] {Organic Baby Spinach,Organic Strawberries} 0.012027725
## [12] {Banana,Cucumber Kirby} 0.010532753
## [13] {Banana,Organic Hass Avocado} 0.010532753
## [14] {Banana,Organic Fuji Apple} 0.010362870
## [15] {Organic Baby Spinach,Organic Hass Avocado} 0.010226964
## [16] {Banana,Limes} 0.009955151
## [17] {Organic Raspberries,Organic Strawberries} 0.009683338
## [18] {Banana,Organic Whole Milk} 0.009411525
## [19] {Banana,Honeycrisp Apple} 0.009071759
## [20] {Organic Avocado,Organic Baby Spinach} 0.008698016
## transIdenticalToItemsets count
## [1] 556 556
## [2] 550 550
## [3] 519 519
## [4] 489 489
## [5] 482 482
## [6] 477 477
## [7] 388 388
## [8] 379 379
## [9] 371 371
## [10] 360 360
## [11] 354 354
## [12] 310 310
## [13] 310 310
## [14] 305 305
## [15] 301 301
## [16] 293 293
## [17] 285 285
## [18] 277 277
## [19] 267 267
## [20] 256 256
Filtrado de itemsets
## set of 356 itemsets
## items support
## [1] {Banana,Sweet Potato Yam} 0.001019299
## [2] {1% Low Fat Milk,Banana} 0.001223158
## [3] {Banana,Large Brown Eggs} 0.001155205
## [4] {Banana,Black Plum} 0.001223158
## [5] {Banana,Vitamin D Organic Whole Milk} 0.001087252
## [6] {Banana,Green Peas} 0.001155205
## [7] {Almond Breeze Original Almond Milk,Banana} 0.001630878
## [8] {Banana,Tommy/Kent/Keitt/Haden Mango} 0.001053275
## [9] {Banana,Whole Wheat Bread} 0.001189182
## [10] {Banana,Kiwi} 0.001155205
## transIdenticalToItemsets count
## [1] 30 30
## [2] 36 36
## [3] 34 34
## [4] 36 36
## [5] 32 32
## [6] 34 34
## [7] 48 48
## [8] 31 31
## [9] 35 35
## [10] 34 34
Puede observarse que muchos itemsets están a su vez contenidos en itemsets de orden superior, es decir, existen itemsets que son subsets de otros.
Para identificar cuáles son, o cuales no lo son, se puede emplear la función is.subset(). Encontrar los itemsets que son subsets de otros itemsets implica comparar todos los pares de itemsets y determinar si uno está contenido en el otro. La función is.subset() realiza comparaciones entre dos conjuntos de itemsets y devuelve una matriz lógica que determina si el itemset de la fila está contenido en cada itemset de las columnas.
Para encontrar los subsets dentro de un conjunto de itemsets, se compara el conjunto de itemsets con sigo mismo.
Para conocer el total de itemsets que son subsets de otros itemsets se cuenta el número total de TRUE en la matriz resultante. La suma de una matriz lógica devuelve el número de TRUEs.
## [1] 9230
Para crear las reglas de asociación se sigue el mismo proceso que para obtener itemsets frecuentes pero, además de especificar un soporte mínimo, se tiene que establecer una confianza mínima para que una regla se incluya en los resultados. En este caso, se emplea una confianza mínima del 60%.
## set of 4 rules
##
## rule length distribution (lhs + rhs):sizes
## 2 3
## 2 2
##
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.0 2.0 2.5 2.5 3.0 3.0
##
## summary of quality measures:
## support confidence lift itemset
## Min. :0.001019 Min. :0.6066 Min. : 4.381 Min. : 5.0
## 1st Qu.:0.001172 1st Qu.:0.6253 1st Qu.: 52.518 1st Qu.: 6.5
## Median :0.001240 Median :0.6361 Median :163.645 Median :141.0
## Mean :0.001223 Mean :0.6327 Mean :150.268 Mean :265.5
## 3rd Qu.:0.001291 3rd Qu.:0.6435 3rd Qu.:261.396 3rd Qu.:400.0
## Max. :0.001393 Max. :0.6522 Max. :269.400 Max. :775.0
##
## mining info:
## data ntransactions support confidence
## transacciones 29432 0.001019299 0.6
Se han identificado un total de 4 reglas, la mayoría de ellas formadas por 3 ítems en el antecedente (parte izquierda de la regla).
## lhs rhs support confidence lift itemset
## [1] {Bartlett Pears,
## Organic Fuji Apple} => {Banana} 0.001019299 0.6521739 4.38137 775
## [2] {Total 2% Lowfat Greek Strained Yogurt With Blueberry,
## Total 2% Lowfat Greek Strained Yogurt with Peach} => {Total 2% with Strawberry Lowfat Greek Strained Yogurt} 0.001393042 0.6406250 68.56318 275
## [3] {Yotoddler Organic Pear Spinach Mango Yogurt} => {Organic Whole Milk Strawberry Beet Berry Yogurt Pouch} 0.001223158 0.6315789 269.40046 5
## [4] {Blueberry Whole Milk Yogurt Pouch} => {Organic Whole Milk Strawberry Beet Berry Yogurt Pouch} 0.001257135 0.6065574 258.72749 7
Conclusiones
Como podemos observar las reglas de asociación que obtuvimos tanto en el algoritmo Apriori como en el Eclat son iguales. Con una confianza del 60% obtuvimos 4 reglas de asociación, las cuales son:
## lhs rhs support confidence lift itemset
## [1] {Bartlett Pears,
## Organic Fuji Apple} => {Banana} 0.001019299 0.6521739 4.38137 775
## [2] {Total 2% Lowfat Greek Strained Yogurt With Blueberry,
## Total 2% Lowfat Greek Strained Yogurt with Peach} => {Total 2% with Strawberry Lowfat Greek Strained Yogurt} 0.001393042 0.6406250 68.56318 275
## [3] {Yotoddler Organic Pear Spinach Mango Yogurt} => {Organic Whole Milk Strawberry Beet Berry Yogurt Pouch} 0.001223158 0.6315789 269.40046 5
## [4] {Blueberry Whole Milk Yogurt Pouch} => {Organic Whole Milk Strawberry Beet Berry Yogurt Pouch} 0.001257135 0.6065574 258.72749 7
Existieron inconvenientes al momento de querer implementar el algoritmo FP-Growth, pues este al no ser tan usado como los algoritmos previamente vistos no ha tenido una actualización para poder usarlo en este software.