Caso de estudio: Retención de Clientes en Telecomunicaciones: Una empresa de telecomunicaciones utiliza árboles de decisiones para predecir la probabilidad de que un cliente se vaya. Los criterios pueden incluir duración de la suscripción, quejas previas y uso de servicios. El objetivo es anticipar si un cliente cancelará su suscripción.
Duración de la suscripción: Categorizada en días del último mes transcurridos de la última suscripción.
Uso de servicios: Categorizada en meses del último año
Quejas: Factores de satisfacción del 1 al 2. Dónde 1 es mala y 2 es Buena
set.seed(123)
datos <- data.frame(
Duración_de_la_suscripción = sample(1:30, 100, replace = TRUE),
Uso_de_servicios = sample(1:12, 100, replace = TRUE),
Quejas = factor(sample(c("1", "2"), 100, replace = TRUE))
)
datos
## Duración_de_la_suscripción Uso_de_servicios Quejas
## 1 15 8 1
## 2 19 12 1
## 3 14 9 1
## 4 3 3 1
## 5 10 7 1
## 6 18 3 2
## 7 22 7 1
## 8 11 6 2
## 9 5 10 2
## 10 20 5 2
## 11 14 5 1
## 12 22 8 2
## 13 25 3 1
## 14 26 10 2
## 15 27 2 1
## 16 5 10 1
## 17 19 12 1
## 18 27 2 1
## 19 25 10 1
## 20 28 6 1
## 21 25 12 2
## 22 9 4 1
## 23 29 1 2
## 24 3 6 1
## 25 8 3 1
## 26 26 8 1
## 27 7 3 1
## 28 10 8 2
## 29 9 1 2
## 30 30 7 1
## 31 19 11 1
## 32 4 7 1
## 33 14 7 2
## 34 17 10 2
## 35 11 6 2
## 36 7 7 1
## 37 21 11 2
## 38 12 10 1
## 39 15 5 1
## 40 10 6 1
## 41 13 8 1
## 42 7 5 1
## 43 9 7 2
## 44 9 11 2
## 45 10 4 2
## 46 23 12 1
## 47 27 12 1
## 48 28 3 2
## 49 21 9 2
## 50 7 7 1
## 51 21 6 2
## 52 27 10 1
## 53 6 9 1
## 54 25 7 2
## 55 2 2 1
## 56 29 3 1
## 57 5 8 1
## 58 8 4 2
## 59 12 7 1
## 60 13 4 2
## 61 18 1 1
## 62 1 8 2
## 63 25 4 2
## 64 27 9 2
## 65 25 8 2
## 66 6 6 1
## 67 21 11 1
## 68 15 4 1
## 69 9 8 2
## 70 15 3 1
## 71 26 4 1
## 72 28 4 2
## 73 16 12 1
## 74 20 6 1
## 75 30 1 2
## 76 6 10 1
## 77 11 11 2
## 78 8 4 2
## 79 22 11 2
## 80 22 9 1
## 81 7 7 1
## 82 16 8 1
## 83 17 5 1
## 84 22 2 2
## 85 18 11 1
## 86 17 6 1
## 87 2 9 1
## 88 4 8 1
## 89 13 12 2
## 90 5 10 2
## 91 22 4 1
## 92 19 5 2
## 93 25 7 1
## 94 20 1 1
## 95 22 8 1
## 96 25 8 2
## 97 14 10 1
## 98 25 9 1
## 99 23 8 1
## 100 3 2 2
library(rpart)
## Warning: package 'rpart' was built under R version 4.2.3
arbol_decision <- rpart(Quejas ~ Duración_de_la_suscripción + Uso_de_servicios, data = datos, method = "class")
arbol_decision
## n= 100
##
## node), split, n, loss, yval, (yprob)
## * denotes terminal node
##
## 1) root 100 39 1 (0.6100000 0.3900000)
## 2) Duración_de_la_suscripción< 7.5 20 4 1 (0.8000000 0.2000000) *
## 3) Duración_de_la_suscripción>=7.5 80 35 1 (0.5625000 0.4375000)
## 6) Duración_de_la_suscripción>=11.5 65 24 1 (0.6307692 0.3692308)
## 12) Duración_de_la_suscripción< 20.5 28 7 1 (0.7500000 0.2500000) *
## 13) Duración_de_la_suscripción>=20.5 37 17 1 (0.5405405 0.4594595)
## 26) Duración_de_la_suscripción>=22.5 26 11 1 (0.5769231 0.4230769)
## 52) Duración_de_la_suscripción< 27.5 19 7 1 (0.6315789 0.3684211) *
## 53) Duración_de_la_suscripción>=27.5 7 3 2 (0.4285714 0.5714286) *
## 27) Duración_de_la_suscripción< 22.5 11 5 2 (0.4545455 0.5454545) *
## 7) Duración_de_la_suscripción< 11.5 15 4 2 (0.2666667 0.7333333) *
plot(arbol_decision)
Prediccion de las variables
nuevo_df <- data.frame(datos$Duración_de_la_suscripción, datos$Uso_de_servicios)
predict(arbol_decision, newdata=, type='vector')
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
## 1 1 1 1 2 1 2 2 1 1 1 2 1 1 1 1 1 1 1 2
## 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
## 1 2 2 1 2 1 1 2 2 2 1 1 1 1 2 1 2 1 1 2
## 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
## 1 1 2 2 2 1 1 2 2 1 2 1 1 1 1 2 1 2 1 1
## 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
## 1 1 1 1 1 1 2 1 2 1 1 2 1 1 2 1 2 2 2 2
## 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
## 1 1 1 2 1 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1