Resultados de machine learning aplicado a un dataset " in vehicule coupon" de sistemas de recomendación. Se evalúan modelos de clasificador y de regresor. Comparación de resultados.
3. Acerca del dataset
Este dataset estudia si una persona aceptará el cupón que se le
recomienda en diferentes escenarios de conducción.
Analizar la posibilidad de que a un conductor se le ofrezca un cupón
y lo acepte, dependiendo de muchos factores, tanto de las
características del individuo como del contexto del momento.
Fuente:
Wang, Tong, Cynthia Rudin, Finale Doshi-Velez, Yimin Liu, Erica
Klampfl, and Perry MacNeille. 'A bayesian framework for learning
rule sets for interpretable classification.' The Journal of Machine
Learning Research 18, no. 1 (2017): 2357-2393.
https://archive.ics.uci.edu/ml/datasets/in-vehicle+coupon+recomm
endation
3
4. Análisis exploratorio de datos
Se encuentran 26 columnas y 12684 entradas de datos. Además en algunas columnas
hay un determinado número de datos nulos.
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 12684 entries, 0 to 12683
Data columns (total 26 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 destination 12684 non-null object
1 passanger 12684 non-null object
2 weather 12684 non-null object
3 temperature 12684 non-null int64
4 time 12684 non-null object
5 coupon 12684 non-null object
6 expiration 12684 non-null object
7 gender 12684 non-null object
8 age 12684 non-null object
9 maritalStatus 12684 non-null object
10 has_children 12684 non-null int64
11 education 12684 non-null object
12 occupation 12684 non-null object
13 income 12684 non-null object
14 car 108 non-null object
15 Bar 12577 non-null object
16 CoffeeHouse 12467 non-null object
17 CarryAway 12533 non-null object
18 RestaurantLessThan20 12554 non-null object
19 Restaurant20To50 12495 non-null object
20 toCoupon_GEQ5min 12684 non-null int64
21 toCoupon_GEQ15min 12684 non-null int64
22 toCoupon_GEQ25min 12684 non-null int64
23 direction_same 12684 non-null int64
24 direction_opp 12684 non-null int64
25 Y 12684 non-null int64
dtypes: int64(8), object(18)
memory usage: 2.5+ MB
4
5. Análisis exploratorio de datos
Entender las variables Distribución de los
resultados según la
salida Y
Crear Features:
combinar o separar,
codif one hot
Valores iguales en
toda la población no
definen nada en la
salida, y otras
variables que fueron
reemplazadas
Se trata de
aprendizaje
supervisado
Explorar los
datos
Graficar para
interpretar cada
variable
Preparar los
datos
Descartar
variables que no
aportan
Entrenar al
Clasificador
Métricas
Accuracy
(clases
balanceadas).
01 02 03 04 05 06
Nos propusimos avanzar con los siguientes pasos y herramientas para simplificar los
desafíos:
5
6. Análisis exploratorio de datos
Para la preparación de datos realizamos dos transformaciones con el fin de tener data
procesable. Mapeo a valores numéricos y encoding One Hot.
6
Mapeo numérico One Hot
7. Gráficos
Para entender mejor los datos que tenemos, procedimos a realizar gráficos de barra agrupados
por las clases de salida. Un gráfico por cada feature. Algunos ejemplos:
7
8. Análisis exploratorio de datos
Con el afán de reducir columnas para ser procesadas, aplicamos dos tipos de filtros.
Solamente tomamos casos donde el >85% de los valores son iguales y donde la
correlación con la salida es mayor a 0,1.
8
10. Entrenamiento de un clasificador
Para realizar el mismo vamos a utilizar diferentes clasificadores que nos provee las biblioteca
sklearn:
● LogisticRegression
● DecisionTreeClassifier
● BernoulliNB
● LinearSVC
Definimos una función para dividir el data set en partes de entrenamiento y test con un
factor del 20% para test
La salida ‘Y’ de aceptación de cupones, es una CLASE BINOMIAL:
“clase 1” de positivo para cupón aceptado
“clase 0” de negativo para cupón no aceptado
10
15. Entrenamiento de un clasificador
Score para los distintos clasificadores
● Regresor logístico: 0.654
● BernoulliNB: 0.644
● LinearSVC: 0.654
● DecisionTree: 0.644
15
16. Entrenamiento de un regresor
Para el regresor tenemos que predecir la feature ‘age’, luego de un remapeo.
● Es multiclase
● Valores de 0 - 7
● Usaremos LogisticRegression, de la biblioteca sklearn
16
17. Entrenamiento de un regresor
Al ser multiclase el tipo de regresión a utilizar es multinomial. Esto se especifica como un
parámetro de la función:
● El resultado fue una precisión de ~21%
● Decidimos filtrar features
17
18. Entrenamiento de un regresor
El filtrado se realizó de la siguiente forma:
● Eliminamos features que no aportan información (mismo valor para todas las muestras):
‘car’
● Eliminamos features muy correlacionados (corr >0.8): Temperatura y Clima
● Eliminamos features poco correlacionados con ‘age’: muchos features de Educación y
Ocupación
● Eliminamos muestras que tenían valores NaN
Luego, volvimos a probar la correlación con distintos ‘solvers’:
18
19. Entrenamiento de un regresor
Otras opciones
● Clasificador Random Forest:
● Varios regresores binomiales:
19
20. Conclusiones
● En particular el dataset tiene relativamente pocas muestras, y todas ellas
relacionadas con la salida original "Y = cupón aceptado si/no".
● Ésta característica dificulta la separación de clases. Necesariamente hubo que
trabajar los features.
● Logramos abstraernos de éstos problemas al pre-formatear y comparar 1 a 1 contra
la salida, aplicando filtros nos quedamos sólo con nuevas columnas que realmente
aporten a la separación de clases.
● Comparando distintos clasificadores, se puede aceptar que el mejor resultado
promedio de referencia se aproxima a 65% de score.
● En el caso de tomar otra salida de varios posibles elementos, tratamos a la
MULTICLASE como varios casos de CLASE BINOMIAL. Al desvincular las posibles
salidas resulta un score entre un 80 a 95%.
20
21. ¡Gracias!
Integrantes alumnos:
Federico Tucci fedetucci@frba.utn.edu.ar
Marcos García marcoshgarcia@frba.utn.edu.ar
Nicolás Luque nluque@frba.utn.edu.ar
Docentes:
Diego P. Durante ddurante@frba.utn.edu.ar
Ramiro Verrastro ramiroverrastro@frba.utn.edu.ar
Juan Carlos Gomez juanca.gomez@frba.utn.edu.ar
21