Está en la página 1de 14

Tarea

Nombre: Cristhian Gabriel Macias Zambrano


Objetivo
Una compañía proveedora de servicio de telecomunicaciones desea predecir la probabilidad de
deserción de sus clientes, para así poder identificar las causas de raíz de la deserción y tomar
acciones en la dirección de retener el cliente.

Variables

• Nuestro conjunto de datos tiene 7043 registros de clientes de una compañía de


servicios de telecomunicaciones correspondientes a un corte de tiempo.
• Cada cliente se presenta 20 variables (predictoras), y una variable binaria
“Churn”(respuesta), donde “Yes” si el cliente ha terminado su relación comercial y “No”
si mantiene aún relaciones comerciales con la compañía.
• Las variables predictoras son: gender, SeniorCitizen, Partner, Dependents, tenure,
PhoneService, MultipleLines, InternetService, OnlineSecurity, OnlineBackup,
DeviceProtection, TechSupport, StreamingTV, StreamingMovies, Contract,
PaperlessBilling, PaymentMethod, MonthlyCharges, TotalCharges.

Metodología
Probaremos el desempeño de cada modelo usando las métricas de acuracidad, especificidad y
sensibilidad aplicando 5 métodos diferentes las cuales son: bayes ingenuo, arboles de
clasificación, bosques aleatorios, Adaboost y regresión logística.
Dividimos la base de datos en 70% entrenamiento del modelo y 30% para el test, de cada
modelo.
Realizar la grafica de ROC conjunta de cada modelo para comparar que tan bien han predicho
cada modelo por separado.

Aplicación de cada método


Resultado de bayes ingenuo
Usamos el modelo de bayes ingenuo para predecir la deserción de los clientes, con relación a
las variables predictoras.
Tabla de confusión

La acuracidad para clasificar los clientes que abandonaron y los que continuaron en la
compañía es de 0.7306 para el modelo.
La sensibilidad es de 0.6906, que es la capacidad para predecir la tasa de cliente que van
abandonar la compañía, entre los verdaderos clientes que si abandonaron la compañía.
La especificidad es de 0.8411, que es la capacidad de detectar los clientes que permanecerán en
la compañía, entre los que verdaderamente clientes que continúan en la compañía.
Gráfico ROC
Observamos la gráfica ROC de la sensibilidad frente a la especificidad para diferentes umbrales
de discriminación, donde lo ideal es mientras mas alejado este de la recta de 45 grados es mejor
el modelo, dado que aumentamos la tasa de verdadero positivos vs la tasa de falsos negativo.
De la curva observamos que se alejada de la recta de 45 grados, por tanto, el modelo esta
clasificando correctamente.

Resultado de árbol de decisión


Usamos el modelo de árbol de decisión para predecir la deserción de los clientes, con relación
a las variables predictoras.
Tabla de confusión

La acuracidad para clasificar los clientes que abandonaron y los que continuaron en la
compañía es de 0.7965 para el modelo.
La sensibilidad es de 0.4589, que es la capacidad para predecir la tasa de cliente que van
abandonar la compañía, entre los verdaderos clientes que si abandonaron la compañía.
La especificidad es de 0.9186, que es la capacidad de detectar los clientes que permanecerán en
la compañía, entre los que verdaderamente clientes que continúan en la compañía.
Gráfico ROC

Observamos la gráfica ROC de la sensibilidad frente a la especificidad para diferentes umbrales


de discriminación, donde lo ideal es mientras mas alejado este de la recta de 45 grados es mejor
el modelo, dado que aumentamos la tasa de verdadero positivos vs la tasa de falsos negativo.
De la curva observamos que se alejada de la recta de 45 grados, por tanto, el modelo esta
clasificando correctamente.

Árbol de decisión
Resultado de bosque aleatorio
Usamos el modelo de bosque aleatorio para predecir la deserción de los clientes, con relación a
las variables predictoras.
Tabla de confusión

La acuracidad para clasificar los clientes que abandonaron y los que continuaron en la
compañía es de 0.7955 para el modelo.
La sensibilidad es de 0.4929, que es la capacidad para predecir la tasa de cliente que van
abandonar la compañía, entre los verdaderos clientes que si abandonaron la compañía.
La especificidad es de 0.9050, que es la capacidad de detectar los clientes que permanecerán en
la compañía, entre los que verdaderamente clientes que continúan en la compañía.
Gráfico ROC
Observamos la gráfica ROC de la sensibilidad frente a la especificidad para diferentes umbrales
de discriminación, donde lo ideal es mientras mas alejado este de la recta de 45 grados es mejor
el modelo, dado que aumentamos la tasa de verdadero positivos vs la tasa de falsos negativo.
De la curva observamos que se alejada de la recta de 45 grados, por tanto, el modelo esta
clasificando correctamente.

Resultado de Adaboost
Usamos el modelo de adaboost para predecir la deserción de los clientes, con relación a las
variables predictoras.
Tabla de confusión

La acuracidad para clasificar los clientes que abandonaron y los que continuaron en la
compañía es de 0.7585 para el modelo.
La sensibilidad es de 0.4982, que es la capacidad para predecir la tasa de cliente que van
abandonar la compañía, entre los verdaderos clientes que si abandonaron la compañía.
La especificidad es de 0.8527, que es la capacidad de detectar los clientes que permanecerán en
la compañía, entre los que verdaderamente clientes que continúan en la compañía.
Gráfico ROC

Observamos la gráfica ROC de la sensibilidad frente a la especificidad para diferentes umbrales


de discriminación, donde lo ideal es mientras más alejado este de la recta de 45 grados es mejor
el modelo, dado que aumentamos la tasa de verdadero positivos vs la tasa de falsos negativo.
De la curva observamos que se alejada de la recta de 45 grados, por tanto, el modelo está
clasificando correctamente.
Resultado de regresión logístico
Usamos el modelo de logístico para predecir la deserción de los clientes, con relación a las
variables predictoras.
Tabla de confusión

La acuracidad para clasificar los clientes que abandonaron y los que continuaron en la
compañía es de 0.8046 para el modelo.
La sensibilidad es de 0.5518, que es la capacidad para predecir la tasa de cliente que van
abandonar la compañía, entre los verdaderos clientes que si abandonaron la compañía.
La especificidad es de 0.8960, que es la capacidad de detectar los clientes que permanecerán en
la compañía, entre los que verdaderamente clientes que continúan en la compañía.
Gráfico ROC
Observamos la gráfica ROC de la sensibilidad frente a la especificidad para diferentes umbrales
de discriminación, donde lo ideal es mientras más alejado este de la recta de 45 grados es mejor
el modelo, dado que aumentamos la tasa de verdadero positivos vs la tasa de falsos negativo.
De la curva observamos que se alejada de la recta de 45 grados, por tanto, el modelo está
clasificando correctamente.
Coeficiente betas del modelo
Seleccionando el mejor modelo
Seleccionaremos el mejor modelo escogiendo el la cuva de ROC que mas alejada este de la recta
de 45 grados. Es decir, entre mas cerca de la esquina este la curva de ROC mejor desempeño
tiene el modelo.
Gráfico ROC conjunta

Del grafico observamos que logístico, bosque aleatorio y Bayes son los mejores modelo para
predecir.
Los modelos de árbol de decisión y Adaboost, no son buenos modelos para predecir dado que
están mas cerca de la recta de 45 grados.
Conclusión
Los modelos que creamos de regresión logística, bosque aleatorio y bayes ingenuo, tienen un
buen desempeño de predicción para describir cuales clientes van a desertar y cuales no.
Las variables que son significativas para poder mejorar que el cliente no desee desertar de la
relación con la compañía de telecomunicaciones es:
Servicio de internet, streaming TV, streaming Movies, Multiples líneas, Contrato del plan, y
método de pago
Debemos mejorar estos servicios para poder retener mas tiempo al cliente, se podría añadir
una mejora en los servicios mencionados con:

• Promociones de canales adicionales


• Métodos eficientes de pagos
• Promociones de Internet con mejores planes y aumento de megas.
• Brindarles el Streaming en diferentes plataformas.
• Contratos exclusivos
Anexo Codigo utilizado
library(readr)
library(plotROC)
library(caret)
library(tidyverse)
datos <- read_csv("telecom_churn.csv")
head(datos,n=9)

names(datos)
datos<-datos[,!(names(datos) %in% "customerID")]

#eliminar valores aberrantes


datos<-na.omit(datos)

#convertir a factor
names(datos)
datos[,c(1:4,6:17,20)]<-lapply(datos[,c(1:4,6:17,20)], as.factor)
str(datos)

############################

# particionamos el conjunto de datos en TRAIN y TEST


set.seed(25)
tr <- createDataPartition(datos$Churn, p=0.7, list=FALSE, times=1)
TRAIN <- datos[tr, ]
TEST <- datos[-tr, ]

############################
#bayes ingenuo
# ajustamos un modelo de bayes ingenuo
modelo.nb <- train(x = subset(TRAIN, select=-Churn),
y = TRAIN$Churn,
method = 'nb',
trControl = trainControl(method='cv',
number=10,
classProbs = TRUE,
summaryFunction = twoClassSummary,
savePredictions = TRUE))

# analizamos el modelo resultante


modelo.nb
modelo.nb$finalModel
modelo.nb$finalModel$apriori
modelo.nb$finalModel$tables$Family
summary(modelo.nb)
# evaluando el modelo utilizando los datos de TEST
prediccion <- predict(modelo.nb, TEST)
confusionMatrix(prediccion, TEST$Churn)

# predicciones en probabilidades
#predict(modelo.nb, TEST, type='prob')
#Curva ROC
ggplot(modelo.nb$pred, aes(d=obs, m=Yes)) +
geom_roc(hjust=-0.4, vjust=1.5) + coord_equal()+style_roc()

###################################
# ajustamos un modelo de regresion logistica
modelo.rl <- train(x = subset(TRAIN, select=-Churn),
y = TRAIN$Churn,
method = 'glm',
family='binomial',
trControl = trainControl(method='cv',
number=10,
classProbs = TRUE,
summaryFunction = twoClassSummary,
savePredictions = TRUE))

# analizamos el modelo resultante


modelo.rl
modelo.rl$finalModel
modelo.rl$finalModel$coefficients

# evaluando el modelo utilizando los datos de TEST


prediccion <- predict(modelo.rl, TEST)
confusionMatrix(prediccion, TEST$Churn)

#curva ROC
ggplot(modelo.rl$pred, aes(d=obs, m=Yes)) +
geom_roc(hjust=-0.4, vjust=1.5) + coord_equal()+style_roc()

##################################
#arbol de decision
library(rpart)
modelo.ar <- train(x = subset(TRAIN, select=-Churn),
y = TRAIN$Churn,
method = 'rpart',
trControl = trainControl(method='cv',
number=10,
classProbs = TRUE,
summaryFunction = twoClassSummary,
savePredictions = TRUE))
# analizamos el modelo resultante
modelo.ar
modelo.ar$finalModel

# metodo 2
library(rpart.plot)
rpart.plot(modelo.ar$finalModel, box.palette = 'RdBu',
shadow.col = 'gray', nn=TRUE,cex=0.6,type=2)

# evaluando el modelo utilizando los datos de TEST


prediccion <- predict(modelo.ar, TEST)
confusionMatrix(prediccion, TEST$Churn)

#curva ROC
ggplot(modelo.ar$pred, aes(d=obs, m=Yes)) +
geom_roc(hjust=-0.4, vjust=1.5) + coord_equal()+style_roc()

############################################
#bosque aleatorio
modelo.rf <- train(x = subset(TRAIN, select=-Churn),
y = TRAIN$Churn,
method = 'rf',
trControl = trainControl(method='cv',
number=10,
classProbs = TRUE,
summaryFunction = twoClassSummary,
savePredictions = TRUE))
modelo.rf
modelo.rf$finalModel
plot(modelo.rf)

# evaluando el modelo utilizando los datos de TEST


prediccion <- predict(modelo.rf, TEST)
confusionMatrix(prediccion, TEST$Churn)

#curva ROC
ggplot(modelo.rf$pred, aes(d=obs, m=Yes)) +
geom_roc(hjust=-0.4, vjust=1.5) + coord_equal()+style_roc()

############################################
#ADA.boost
library(fastAdaboost)
modelo.ad <- train(x = subset(TRAIN, select=-Churn),
y = TRAIN$Churn,
method = 'adaboost',
trControl = trainControl(method='cv',
number=4,
classProbs = TRUE,
summaryFunction = twoClassSummary,
savePredictions = TRUE))

# analizamos el modelo resultante


modelo.ad
plot(modelo.ad)

# evaluando el modelo utilizando los datos de TEST


prediccion <- predict(modelo.ad, TEST)
confusionMatrix(prediccion, TEST$Churn)

#curva ROC
ggplot(modelo.ad$pred, aes(d=obs, m=Yes)) +
geom_roc(hjust=-0.4, vjust=1.5) + coord_equal()+style_roc()

#############################################
ggplot() +
geom_roc(aes( d = obs, m = Yes, color = "Bosque"),modelo.rf$pred) +
geom_roc(aes( d = obs, m = Yes, color = "logistica"),modelo.rl$pred) +
geom_roc(aes( d = obs, m = Yes, color = "Arbol"),modelo.ar$pred) +
geom_roc(aes( d = obs, m = Yes, color = "Bayes"),modelo.nb$pred) +
geom_roc(aes( d = obs, m = Yes, color = "Adaboost"),modelo.ad$pred) +
scale_color_manual(values = c("Bosque" = "#99ffaa",
"logistica" = "#00ddbb",
"Arbol"="#99bbcc",
"Bayes"="#0099dd",
"Adaboost"="#9977ee"),
name = "Modelos", guide = "legend")+style_roc()

También podría gustarte