Una compañía quiere entender cómo eficientar campañas promocionales, su objetivo como analista es ayudar a la compañia a mejorar el target de una campaña usando los resultados de las últimas 5 campañas.
Analize los resultados desde el punto de vista de las características del cliente y de la relación cliente-tienda.
Explique clara y detalladamente los resultados del mejor modelo que pueda generar.
Los datos a usar son marketing_campaign.csv y la descripción de las variables es la siguiente:
Analize los resultados desde el punto de vista de las características del cliente y de la relación cliente-tienda.
Para ver las variables importantes realicé un análisis de correlaciones, donde elegí las variables que están más correlacionadas con la variable objetivo. Las cuales resultaron ser: “accepted_cmp5”, “accepted_cmp3”, “accepted_cmp1”, “recency”, “mnt_wines”, “mnt_meat_products” y “num_catalog_purchases”.
Podemos ver que si el cliente suele participar en las campañas anteriores, indica que esta interesado en este evento, y es más probable que asista al siguiente. Por eso las variables “accepted_cmp5”, “accepted_cmp3”, “accepted_cmp1” son importantes, para “accepted_cmp2” y “accepted_cmp4” también hubo correlación pero fue baja.
También podemos ver “mnt_wines” y “mnt_meat_products” resulta tener buena correlación, entonces el que una persona gaste más dinero en vinos y productos de carne indica que es más probable que asista a la última campaña.
Y por último, “recency” y “num_catalog_purchases” indican que los números de días que pasaron desde la última compra y las compras realizadas usando catálogo también influyen.
Vemos la contrucción del modelo y la matriz de confusión que obtuvimos.
set.seed(150)
# Convertimos response como factor
data$response <- factor(data$response)
# Partimos nuestro datos con un 70% para los datos de entrenamiento.
t.id <- createDataPartition(data$response, p = 0.7, list = F)
# Creo mi modelo Decision Tree.
tree_model <- rpart(response ~ accepted_cmp5 + accepted_cmp3 + accepted_cmp1 + recency + mnt_wines + mnt_meat_products + num_catalog_purchases, data = data[t.id,])
# Creo mis datos.
pred <- predict(tree_model, newdata = data[-t.id,], type = "class")
# Mis datos de prueba.
test <- cbind(data[-t.id,],pred)
# Mi matriz de confussion.
table(test$response,pred)
## pred
## 0 1
## 0 562 9
## 1 63 37
Nuestra curva ROC donde vemos el AUC que obtuvimos, realmente no es muy bueno pero esto es porque la Sensibilidad es baja. Es decir que los 1, que es la predicción de que el cliente asista a la última campaña es mala. Esto es un poco malo, pero si comparamos que solo el 14.91% asistio a la última campaña, notamos que acierta a más casos cuando la persona no asiste.
##
## 0 1
## 0.8508929 0.1491071
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
Explique clara y detalladamente los resultados del mejor modelo que pueda generar.
Las características detalladas las podemos notar en el siguiente gráfico. Donde se explica como se escogen los “0”s y “1”s basándonos en las variables que usamos para la creación del modelo.