Está en la página 1de 37

Algoritmos no supervisados

(Parte II)

Enmanuel Santana: enmanuel.s@gmail.com


Willians Rujano.: wf.rujano@gmail.com

1
Reglas de Asociación

2
Reglas de asociación - Definición

DEFINICIÓN
Las Reglas de asociación (Association Rule Learning o Market Basket Analysis)
son técnicas utilizadas para encontrar patrones o “reglas” que permitan estimar la
ocurrencia de un hecho basado en la ocurrencia de otros hechos (o ítems).

OTROS USOS O DEFINICIONES


● Encontrar asociaciones o correlaciones entre los elementos u objetos de
bases de datos transaccionales.

● Dado un conjunto de transacciones, encontrar reglas que describen


tendencias en los datos.

3
Reglas de asociación - Definición

Transacciones Reglas de Asociación


Trx ID Artículos Regla Asociación 1:
1 Pan, leche, huevos {pañales} → {cerveza}
2 Pan, pañales, cerveza
Regla Asociación 2:
3 Leche, pañales, cerveza {leche, pan} → {huevos}
4 Pan, leche, pañales, cerveza Regla Asociación 3:
5 Pan, leche, huevos, cerveza {cerveza, pan} → {leche, huevos}

Dada una base de datos Transaccional, los algoritmos buscan las Reglas que
describen la Asociación entre distintos elementos (e.g. cuando se compran
pañales también se compra cerveza).

4
Reglas de asociación - Aplicaciones

Casos de uso
● Identificar cuando la compra de un artículo está asociada a la
compra de otro artículo, para así crear ofertas, combos,
promociones, etc.
● Distribución de mercancías en tiendas
● Segmentación de clientes considerando patrones de compra
(similar a cluster de clientes)
● Recomendar un item a un cliente, dada una historia de
transacciones (recomendar siguiente compra).

5
Reglas de asociación - Aplicaciones
Caso - Deafness after birth

(PDF en Clase 4)

6
Reglas de asociación - Medidas

● ¿Cuál es la mejor Regla?


● ¿Cuál es la regla con mayor frecuencia?
● ¿Qué tan probable es la ocurrencia de una regla?

7
Reglas de asociación - Medidas

Regla Asociación 1: Regla


{pañales} → {cerveza}

Itemset Regla Asociación 2:


{leche, pan} → {huevos} Itemset

Regla Asociación 3:
{cerveza, pan} → {leche, huevos}
Item Item

Regla Asociación (Otra definición):


Implicancia representada como X → Y donde X e Y son Itemset.

Ej.: {leche, pan} → {huevos}

X Y 8
Reglas de asociación - Medidas
Itemset: Una colección de uno o más ítems. Ej: {pan, leche}

Cuenta de Soporte (σ): Frecuencia de ocurrencia de un itemset.


Ej. σ({pan, leche}) = 3

Soporte: Fracción de transacciones que contienen un itemset.


Ej. s({pan, leche}) = 3/5

Minsup: Umbral establecido por el usuario de “mínimo soporte


con significancia”.

Itemset Frecuente:
Es un itemset cuyo soporte es mayor o igual que el minsup
establecido.

9
Reglas de asociación - Medidas
Métricas de evaluación de la regla
Soporte Confianza
Proporción de transacciones que Proporción de transacciones que contienen tanto
contienen tanto a X como a Y a X como a Y respecto al proporción de
respecto al total de transacciones transacciones que contienen X.
(N).

Ejemplo Ejemplo

s({cerveza}→{pañales}) conf({cerveza} → {pañales})

= s({cerveza, pañales}) = s({cerveza, pañales}) / s({cerveza})

= 3/5 = 0.6 = (3/5) / (4/5) = 3/4 = 0.75


10
Reglas de asociación - Medidas
Calcular el soporte para los ítems {a}, {b, d}, y {a,b,d}

10
transacciones
en total (N)

Soporte
s({a}) = ?
s({b, d}) = ?
s({a, b, d}) = ?
11
Reglas de asociación - Medidas
Usando los resultados del ejercicio anterior, calcular la confianza de las reglas:
{b, d} → {a} y {a} → {b, d}.

Soporte Confianza {b, d} → {a} Confianza {a} → {b, d}


s({a}) = 7 / 10
1 / 10 S({a, b, d})
s({b, d}) = 2 / 10 S({a, b, d})
= = 0.5
2 / 10 S({a})
s({a, b, d}) = 1 / 10 S({b, d})
¿Es igual a la confianza de {b, d} → {a} ? 12
Reglas de asociación - Medidas
Agrupando las transacciones por diferentes conceptos de observación, se
pueden obtener análisis diferentes

Análisis por transacción Análisis por Cliente

Customer ID Items

1 {a, b, c, d, e}
2 {a, b, c, d, e}
3 {b, c, d, e}
4 {a, b, c, d, e}
5 {a, b, d, e}

Agrupando por Transacción puede verse cuáles Agrupando por Customer ID puede verse qué
productos conviene ofrecerlos juntos producto conviene ofrecer a un cliente
13
Reglas de asociación - Medidas
Otras métricas a considerar
Lift
Permite medir qué tan importante es una regla.

= P(X,Y)/P(X).P(Y)

La métrica Lift puede interpretarse como la proporción del soporte de un itemset,


respecto del soporte teórico de ese conjunto, dado el supuesto de independencia.
Lift = 1 Relación esperada bajo condiciones de independencia.
Lift > 1 Relación mayor a lo esperado bajo condiciones de independencia (puede asumirse asociación).
Lift < 1 Relación negativa (productos que nunca se compran juntos)
14
Reglas de asociación - Medidas
Otras métricas a considerar
Lectura complementaria acerca de
diversas métricas que evalúan reglas de
asociación y son útiles en distintos
escenarios de investigación:

● Multiple Minimum Supports


● Interestingness Measure for
Association Patterns

(ver PDFs en Clase 4)

https://hal.archives-ouvertes.fr/hal-00113594/document 15
Association Rules en R

16
Association Rules en R
Transformar CSV en “transactions”
Para poder procesar un dataset con el package arules es necesario
convertirlo en transactions. La forma más utilizada de hacerlo es
leerlo mediante la función read.transactions del mismo package. CSV

library(arules)

trx = read.transactions("transacciones.csv",
format = "single",
sep = ",",
cols = c("Id_Factura", "Item") Transactions
)

17
ARules en R
Transformar Data Frame en “transactions”
Una manera de transformar un “Data Frame” en un objeto “transactions” de ARules es a través de una lista que
contenga los ítems pertenecientes a cada transacción, para luego convertir a esa lista en “transactions”.
df <- read.csv("transacciones.csv") # Generar u obtener el data frame
df_split <- split(df$Item, df$Id_Factura) # Crea una lista con los items de cada Id_Factura (transacción)
trx2 <- as(df_split,"transactions") # Convierte la lista en “transactions”

Conceptualmente sería así:

18
ARules en R
Flujo de análisis de reglas usando libreria ARules:

19
ARules en R
Resumen de reglas en R

Donde:
lhs: (left-hand-side) es la parte izquierda de la regla (el X) o antecedente (productos asociados a la compra de otros
productos)
rhs: (right-hand-side) es la parte derecha de la regla (el Y) o resultado (producto comprado como "resultado" de
otro producto)
Support: es la frecuencia relativa de una regla sobre el total de transacciones
Confidence: mide qué tan confiable es la suposición hecha por la regla, es decir, qué tantas veces sucede el rhs
cuando se presenta el lhs, para cada regla.
Lift: mide si la regla se debió al azar. Calcula el ratio entre la confianza de la regla y el consecuente de la regla o rhs.

20
ARules - Cargar dataset
# install.packages("arules")
# install.packages("arulesViz")

library(arulesViz);library(arules)

trx = read.transactions("transacciones.csv",
format = "single",
sep = ",",
cols = c("Id_Factura", "Item")
)

summary(trx)

Density:
Porcentaje de celdas con datos en la matriz dispersa
(factura x item)

Most frequent items:


Cantidad de transacciones por ítem en el dataset

Element (itemset/transaction) length distribution


Cantidad de transacciones de 1 item, de 2 ítem, etc.

21
ARules - Print y Análisis
# Continuación…

# CREAR REGLAS
reglas <- apriori(trx, parameter = list(support = 0.01, confidence = 0.05))
print(reglas) # Muestra la cantidad de reglas creadas
set of 312 rules

# Imprime las 3 reglas con mayor confianza


reglas <- sort(reglas, by = "confidence", decreasing = TRUE) # ordena regla
inspect(head(reglas,3))
lhs rhs support confidence lift count
[1] {other vegetables,yogurt} => {whole milk} 0.01576004 0.4441261 1.846926 155
[2] {other vegetables,root vegetables} => {whole milk} 0.01626843 0.4255319 1.769601 160
[3] {curd} => {whole milk} 0.02186070 0.4215686 1.753119 215

22
ARules - Plot
# Continuación….

# PLOT
# Gráfico de los 20 productos más frecuente
itemFrequencyPlot(trx, topN = 20, type = "absolute")

23
ARules - Plot

# Continuación….
# Gráfico de 20 reglas con mayor confianza
# (utiliza el objeto “reglas” ya creado y
# ordenado)

plot(head(reglas,20), method = "graph")

24
ARules - Plot
# Continuación….
# gráfico de dispersión de todas las reglas
plot(reglas)

25
ARules - Plot
# Continuación….
# gráfico de dispersión de todas las reglas
plot(reglas, method = "two-key plot")

26
Ejercicio
Reglas de Asociación con datos Online Retail.xlsx

27
Sistemas de Recomendación

28
Sistemas de Recomendación - Definición

Los sistemas de recomendación son un grupo de herramientas usadas para


presentar o recomendar items (articulos, noticias, peliculas, música, etc) que son
de interés para un usuario específico.
Sistemas de Recomendación - Definición

En la antigüedad (hace 20 años) los usuarios eran los que


esperaban “encontrar” los productos o contenidos buscados a
través de:

● Consumir lo que la mayoría consume (seguir a la manada)


● Preguntar a otros (expertos, críticos, amigos)
● Ir al lugar que ofrece el producto / contenido:
○ Biblioteca
○ Blockbuster (o el videoclub del barrio)
Sistemas de Recomendación - Definición

Los sistemas de recomendación no son de mucho interés para los programas


académicos de machine learning¹, pero sí para las empresas y cada día se invierte
más en mejorar estos algoritmos.

Según McKinsey², el 35% de las ventas de Amazon vienen de su sistema de


recomendación, y el 75% de las películas y series vistas en Netflix son contenidos
recomendados.

1. https://www.youtube.com/watch?v=giIXNoiqO_U
2. https://www.mckinsey.com/industries/retail/our-insights/how-retailers-can-keep-up-with-consumers
Sistemas de Recomendación - Definición
Caso Amazon
Tipos de Sistemas de
Recomendación

33
Sistemas de Recomendación
Basados en Contenido (Content-Based)

● Son sistemas que usan las características del producto o


contenido a recomendar y no consideran la valoración o
puntuación del usuario.

● Suele ser la primera opción en sistemas de recomendación


cuando no se tiene historia de usuarios, ya que aunque no se
tenga mucha información, puede inferirse que dos películas,
por ejemplo, son muy parecidas por sus características.
Sistemas de Recomendación
Basados en Contenido (Content-Based)
Estas técnicas consideran la descripción del contenido en vectores, que luego
medirán las distancia entre un contenido y otro.
Sistemas de Recomendación
Basados en Filtrado Colaborativo
Estas técnicas consideran la similitud entre clientes o usuarios, considerando su
historia (sus preferencias, puntuaciones, rating, etc.)

Suele tener un bajo performance


cuando no se tienen suficientes
datos históricos (insuficientes
observaciones).

En estos casos, estimar la


similitud entre dos usuarios
puede tener resultados muy
aleatorios.
Librerías en R para sistemas de Recomendación
Package Dev Description
page

recommenderlab github Provides a research infrastructure to test and develop recommender algorithms including UBCF, IBCF,
FunkSVD and association rule-based algorithms

rrecsys github Implementations of several popular recommendation systems like Global/Item/User-Average baselines,
Item-Based KNN, FunkSVD, BPR and weighted ALS for rapid prototyping

recosystem github R wrapper of the 'libmf' library (http://www.csie.ntu.edu.tw/~cjlin/libmf/) for recommender system using matrix
factorization. It is typically used to approximate an incomplete matrix using the product of two matrices in a
latent space. Other common names for this task include "collaborative filtering", "matrix completion", "matrix
recovery", etc. High performance multi-core parallel computing is supported in this package

rectools github Advanced Package for Recommender Systems to incorporate user and item covariate information, including
item category preferences with Parallel computation, Novel variations on statistical latent factor model,
Focus group finder, NMF, ANOVA, cosine models

https://gist.github.com/talegari/77c90db326b4848368287e53b1a18e8d

También podría gustarte