Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Variables
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.
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.
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
Á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
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:
names(datos)
datos<-datos[,!(names(datos) %in% "customerID")]
#convertir a factor
names(datos)
datos[,c(1:4,6:17,20)]<-lapply(datos[,c(1:4,6:17,20)], as.factor)
str(datos)
############################
############################
#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))
# 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))
#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)
#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)
#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))
#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()