0% encontró este documento útil (1 voto)
120 vistas25 páginas

Big Data

Este documento presenta un taller sobre analítica predictiva. Incluye una introducción general al taller y sus objetivos de enseñar conceptos clave de analítica predictiva a través de ejercicios prácticos de regresión lineal y clasificación. Luego describe tres ejercicios que los estudiantes deben completar sobre regresión lineal y clasificación, analizando y comparando los resultados de los modelos. El primer ejercicio es básico, los otros dos son más complejos e involucran análisis de datos reales.

Cargado por

nicole
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (1 voto)
120 vistas25 páginas

Big Data

Este documento presenta un taller sobre analítica predictiva. Incluye una introducción general al taller y sus objetivos de enseñar conceptos clave de analítica predictiva a través de ejercicios prácticos de regresión lineal y clasificación. Luego describe tres ejercicios que los estudiantes deben completar sobre regresión lineal y clasificación, analizando y comparando los resultados de los modelos. El primer ejercicio es básico, los otros dos son más complejos e involucran análisis de datos reales.

Cargado por

nicole
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

2/8/2019 Taller de Analítica Predictiva

Presentación general del taller


Este taller busca afianzar algunos conceptos que son muy importantes en la analítica predictiva y con esto poder identificar técnicas de analítica de datos y reconocer su utilidad o aplicación para analizar datos que nos ayuden a
tomar decisiones informadas, es por esto que el reto del taller es que los estudiantes puedan implementar algunos algoritmos básicos, interpretar los resultados de los modelos y concluir cuál sería la recomendación o curso de
acción en una situación particular.

Para esto es importante que el estudiante haya revisado el material de autoformación, lecturas y recursos recomendados, de tal manera que tenga claro las diferencias y características del aprendizaje supervisado y no
supervisado, al igual que los conceptos y principales usos de los algoritmos de analítica predictiva, también es muy importante que el estudiante tenga nociones básicas de R para que se le facilite realizar su trabajo.

A continuación, encontrará la lista de los ejercicios que deben realizar en el taller de manera individual o en grupos de máximo tres personas, y el peso de cada ejercicio:

1. Ejercicio básico de regresión lineal múltiple:


El objetivo es que el estudiante pueda replicar el código del algoritmo que se le entrega, analice la salida del modelo e identifique las variables más significativas y si el modelo es adecuado para predecir y de ser así, predecir
nuevos casos.
Peso: 10 puntos

2. Ejercicio de regresión lineal múltiple:


El objetivo es que el estudiante utilice el set de datos que se le entrega para:

a. Realizar un análisis gráfico que permita ver la distribución de las variables y ver la correlaciones
b. Implementar el modelo de regresión lineal múltiple
c. Analizar las salidas del modelo y concluir cuáles son las variables más significativas y si el modelo es adecuado para predecir
Nota: recuerde que puede ajustar el modelo con las variables que quiere usar, además, tenga presente que está trabajando con regresión lineal y que este tipo de modelos sólo trabaja con variables numéricas.
Peso: 20 puntos

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 1/25
2/8/2019 Taller de Analítica Predictiva

3. Ejercicio de clasificación
El objetivo es que el estudiante implemente varios modelos de aprendizaje supervisado, en este caso debe utilizar algoritmos de clasificación para identificar los clientes propensos a cancelar los productos, es decir, un
modelo churn
Realizar la predicción y la matriz de confusión
Identificar cuál es la métrica más adecuada para el problema particular de churn
Comparar los resultados de los modelos y concluir cuál es el mejor para este tipo de problemas
Peso 20 puntos

Regresión

La regresión lineal se usa para predecir el valor de una variable de resultado [Y] sobre la base de una o más variables predictoras de entrada [X] . El objetivo es establecer una relación lineal a través de una fórmula matemática
entre la (s) variable (s) del predictor y la variable de respuesta, de modo que podamos usar esta fórmula para estimar el valor de la respuesta Y , cuando solo los predictores ( X s ) Los valores son conocidos.

El objetivo de la regresión lineal es modelar una variable continua [Y] como una función matemática de una o más variables [X] , de modo que se pueda usar este modelo de regresión para predecir la [Y] cuando solo se conoce la
[X]. Esta ecuación matemática se puede generalizar de la siguiente manera:

𝑌 = 𝛽0 + 𝛽1 + 𝛽2 𝜀
donde, βo es la intersección y β1 es la pendiente. En conjunto, se denominan coeficientes de regresión. ϵ es el término de error, la parte de Y que el modelo de regresión no puede explicar.

---------------------------------------------------------------------------------------------------------------

1. Ejercicio básico de regresión lineal múltiple:


El objetivo es que el estudiante pueda replicar el código del algoritmo que se le entrega, analice la salida del modelo e identifique las variables más significativas y si el modelo es adecuado para predecir. Uva vez realizada la
validación, si el modelo es adecuado para predecir, se pide realizar la predicción de 3 nuevos casos.
Peso: 1 punto

En este ejerccio se utilizará el set de datos trees, el cual está disponible en la librería dplyr y que contiene datos sobre la circunferencia (en pulgadas), la altura (en pies) y el volumen (en pies cúbicos) del tronco de árboles de la
especia de cerezos. El objetivo de este ejercicio es construir un modelo de regresión lineal para predecir el volumen en función de las variables dadas.

1.1. Cargamos y exploramos la data

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 2/25
2/8/2019 Taller de Analítica Predictiva

In [1]: 1 # Cargamos la librería y los datos


2 library(dplyr)
3 head(trees)

Warning message:
"package 'dplyr' was built under R version 3.5.3"
Attaching package: 'dplyr'

The following objects are masked from 'package:stats':

filter, lag

The following objects are masked from 'package:base':

intersect, setdiff, setequal, union

Girth Height Volume

8.3 70 10.3

8.6 65 10.3

8.8 63 10.2

10.5 72 16.4

10.7 81 18.8

10.8 83 19.7

In [2]: 1 # vemos la información general del dataset


2 str(trees)

'[Link]': 31 obs. of 3 variables:


$ Girth : num 8.3 8.6 8.8 10.5 10.7 10.8 11 11 11.1 11.2 ...
$ Height: num 70 65 63 72 81 83 66 75 80 75 ...
$ Volume: num 10.3 10.3 10.2 16.4 18.8 19.7 15.6 18.2 22.6 19.9 ...

Vemos que el conjunto de datos está compuesto por 31 observaciones y 3 variables, todas númericas

In [3]: 1 # Vemos los estadísticos principales


2 summary(trees)

Girth Height Volume


Min. : 8.30 Min. :63 Min. :10.20
1st Qu.:11.05 1st Qu.:72 1st Qu.:19.40
Median :12.90 Median :76 Median :24.20
Mean :13.25 Mean :76 Mean :30.17
3rd Qu.:15.25 3rd Qu.:80 3rd Qu.:37.30
Max. :20.60 Max. :87 Max. :77.00

1.2. Análisis gráfico

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 3/25
2/8/2019 Taller de Analítica Predictiva

In [4]: 1 # Diagrama de dispersión y valores de correlación


2 library(psych)
3 [Link](trees,gap=0)

Warning message:
"package 'psych' was built under R version 3.5.3"

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 4/25
2/8/2019 Taller de Analítica Predictiva

In [5]: 1 #revisión con histogramas de la distribución de los datos


2 par(mfrow=c(1,2))
3 hist(trees$Girth, col="green", breaks=15)
4 hist(trees$Height, col="blue", breaks=15)
5 hist(trees$Volume, col="blue", breaks=15)

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 5/25
2/8/2019 Taller de Analítica Predictiva

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 6/25
2/8/2019 Taller de Analítica Predictiva

In [6]: 1 #revisión con histogramas de la distribución de los datos


2 par(mfrow=c(1,2))
3 boxplot(trees$Girth, col="green", main = "Circunferencia")
4 boxplot(trees$Height, col="blue", main = "Altura")
5 boxplot(trees$Volume, col="orange", main = "Volumen")

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 7/25
2/8/2019 Taller de Analítica Predictiva

Del análisis gráfico anterior, se puede ver que las variables tienen una distribución normal, la varible volumen tiene datos atípicos.

1.4. Corrrelación

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 8/25
2/8/2019 Taller de Analítica Predictiva

In [7]: 1 #matriz de correlación


2 round(cor(x = trees[c(1,2,3)], method = "pearson"),2)

Girth Height Volume

Girth 1.00 0.52 0.97

Height 0.52 1.00 0.60

Volume 0.97 0.60 1.00

Análisis:

Con base en los resultados que hemos obtenido hasta el momento, se puede concluir que:

I. En los gráficos de dispersión se puede observar que la variable Girth (diámetro) está más linealmente asociada con la variable respuesta Volumen.
Hay una correlación alta entre la variable diámetro y volumen (0.97) y entre la variable volumen y altura la correlación es del 0.60

3.3. Construcción del modelo de regresión

In [8]: 1 # Modelo de regresión lineal


2 Mod_3 = lm (Volume ~ Girth+Height, data = trees)
3 print(Mod_3)

Call:
lm(formula = Volume ~ Girth + Height, data = trees)

Coefficients:
(Intercept) Girth Height
-57.9877 4.7082 0.3393

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 9/25
2/8/2019 Taller de Analítica Predictiva

In [9]: 1 # Veamos los estadísticos del modelo


2 summary(Mod_3)

Call:
lm(formula = Volume ~ Girth + Height, data = trees)

Residuals:
Min 1Q Median 3Q Max
-6.4065 -2.6493 -0.2876 2.2003 8.4847

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -57.9877 8.6382 -6.713 2.75e-07 ***
Girth 4.7082 0.2643 17.816 < 2e-16 ***
Height 0.3393 0.1302 2.607 0.0145 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.882 on 28 degrees of freedom


Multiple R-squared: 0.948, Adjusted R-squared: 0.9442
F-statistic: 255 on 2 and 28 DF, p-value: < 2.2e-16

**Análisis:

Podemos ver que las dos variables son estadísticamente significativas


Una vez construido el modelo de regresión lineal múltiple, también hemos establecido la relación entre el predictor [X**] y la respuesta [Y] en forma de una fórmula matemática para el volumen en función de la altura y
del diámetro. En la salida anterior, se puede observar que la parte de **'Coeficientes' tiene componentes: Intercept : -57.9877, altura: 0.3393 y diámetro 4.7082:

𝑉𝑜𝑙𝑢𝑚𝑒  =  β𝑜   +(β1   ∗  𝐻𝑒𝑖𝑔𝑡ℎ) + (β2   ∗  𝐺𝑖𝑟𝑡ℎ)


1.5. Predicir un nuevo caso
De acuerdo con los resultados obtenidos del modelo, se pide que realice la predicción para los siguientes casos:

Caso 1: altura 73.4 pies y diámetro 20 pulgadas


Caso 2: altura 65.9 pies y diámetro 18.1 pulgadas
Caso 3: altura 53.7 pies y diámetro 15.4 pulgadas

---------------------------------------------------------------------------------------------------------------

2. Ejercicio de regresión lineal múltiple:


El objetivo es que el estudiante utilice el set de datos de "Prestige" , el cual presenta los resultados de un estudio realizado en Canadá sobre el prestigio de las profesiones.

Peso: 2 puntos

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 10/25
2/8/2019 Taller de Analítica Predictiva

a. Realizar un análisis gráfico que permita ver la distribución de las variables y ver la correlaciones (0.4 puntos)
b. Implementar el modelo de regresión lineal múltiple (0.4 puntos)
c. Implemente otros modelos y valide cuál es el mejor para predecir; debe explicar el criterio de selección y realizar el correspondiente análisis. (0.5 puntos)
d. Analizar las salidas del modelo y concluir cuáles son las variables más significativas y si el modelo es adecuado para predecir (0.4 puntos)
d. Con base en el modelo que mejor prediga, realice la predicción de 2 nuevos casos, Ud define los valores de las variables. (0.3 puntos)
Nota: recuerde que puede ajustar el modelo con las variables que quiere usar, además, tenga presente que está trabajando con regresión lineal y que este tipo de modelos sólo trabaja con variables numéricas.

Prestigio de las ocupaciones canadienses

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 11/25
2/8/2019 Taller de Analítica Predictiva

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 12/25
2/8/2019 Taller de Analítica Predictiva

En este caso práctico trabajaremos con el set de datos de "Prestige" disponible en la librería car del paquete carData.

Descripción
El dataset Prestige está compuesto por 102 observaciones y 6 columnas. Las observaciones son ocupaciones. Este dataset contiene las siguientes columnas:
education: Educación media de los titulares ocupacionales.
income: Ingreso promedio en dólares.
women: Porcentaje de mujeres por ocupación.
Prestige: Prestigio de la ocupación, resultado de una encuesta social realizada a mediados de la década de 1960.
census: Código ocupacional del censo canadiense.
type: Tipo de ocupación. Un factor con niveles: bc, Blue Collar; prof, Professional, Managerial, and Technical; wc, White Collar.

2.1. Cargamos los datos

In [10]: 1 # Usaremos los datos de Prestige


2 library(car)
3 data(Prestige)
4 head(Prestige)

Warning message:
"package 'car' was built under R version 3.5.3"Loading required package: carData
Warning message:
"package 'carData' was built under R version 3.5.2"
Attaching package: 'car'

The following object is masked from 'package:psych':

logit

The following object is masked from 'package:dplyr':

recode

education income women prestige census type

[Link] 13.11 12351 11.16 68.8 1113 prof

[Link] 12.26 25879 4.02 69.1 1130 prof

accountants 12.77 9271 15.70 63.4 1171 prof

[Link] 11.42 8865 9.11 56.8 1175 prof

chemists 14.62 8403 11.68 73.5 2111 prof

physicists 15.64 11030 5.13 77.6 2113 prof

In [11]: 1 # con este comando se puede ver el detalle del dataset


2 ?Prestige

2.2. Exploramos las principales características de los datos

2.3. Análisis gráfico


localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 13/25
2/8/2019
g Taller de Analítica Predictiva

Como siempre antes de iniciar con la construcción de los modelos de regresión, es importarte apoyarse en el análsis gráfico para enterder y conocer mucho mejor los datos disponibles, con esto ver si es necesario realizar algún
tipo de preprocesamiento de la información.

2.4. Análisis de relación de variables

2.5. Construcción de los modelos de regresión múltiple

---------------------------------------------------------------------------------------------------------------

Clasificación

Antes de iniciar sugiero que repase la teoría de la Matriz de confusión y de las principales métricas para evaluar modelos de clasificación
La Matriz de Confusión es una tabla de N×N que resume el nivel de éxito de las predicciones de un modelo de clasificación; es decir, la correlación entre la etiqueta y la clasificación del modelo.

Un eje de una matriz de confusión es la etiqueta que el modelo predijo; el otro es la etiqueta real.
N representa el número de clases.
En un problema de clasificación binaria, N=2. Por ejemplo, aquí se muestra un ejemplo de una matriz de confusión para un problema de clasificación binaria:

Otra forma de ver la matriz de confusión

La matriz de confusión anterior muestra que, de los 19 correos que realmente eran Spam, el modelo clasificó correctamente:

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 14/25
2/8/2019 Taller de Analítica Predictiva

18 como spam (18 verdaderos positivos) y clasificó 1 de manera incorrecta como no spam (1 falso negativo). De manera similar, de los 458 correos que en realidad no eran spam, 452 se clasificaron correctamente (452
verdaderos negativos) y 6 se clasificaron de manera incorrecta (6 falsos positivos).

en resumen:

La diagonal principal contiene la suma de todos los casos que son adecuadamente predichos.
Mientras que la otra diagonal tiene la suma de los casos que el modelo no predijo adecuadamente.
Un verdadero positivo es un resultado en el que el modelo predice correctamente la clase positiva.
De manera similar, un verdadero negativo es un resultado en el que el modelo predice correctamente la clase negativa.
Un falso positivo es un resultado en el que el modelo predice incorrectamente la clase positiva.
Y un falso negativo es un resultado en el que el modelo predice incorrectamente la clase negativa.

Con base en los resultados de la matriz de confusión se puede evaluar el modelo a través de algunas métricas como:

- Accuracy
Muestra el porcentaje general de casos que son clasificados correctamente

18 + 452
𝐴𝑐𝑐𝑢𝑟𝑎𝑐𝑦 = 18 + 1 + 452 + 6 = 98.53%
- Tasa de error
Error Rate o Misclassification Rate: muestra el porcentaje general de casos que son mal clasificados

1 + 6
𝐸𝑟𝑟𝑜𝑟𝑅𝑎𝑡𝑒 = 18 + 1 + 452 + 6 = 1.47%
- Sensibilidad
También se conoce como Recall, True Posittive Rate, muestra el porcentaje de casos positivos que son clasificados correctamente

452
𝑆𝑒𝑛𝑠𝑖𝑡𝑖𝑣𝑖𝑡𝑦 = 452 + 6 = 99.13%
- Especificidad
También se conoce como True Negative Rate, muestra el porcentaje de casos negativos que son clasificados correctamente

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 15/25
18
2/8/2019 Taller de Analítica Predictiva

𝑆𝑝𝑒𝑐𝑖𝑓𝑖𝑐𝑖𝑡𝑦 = 18 + 1 = 94.74%
3. Ejercicio de clasificación
Ahora vamos a cambiar de técnica; debemos trabajar en la implementación de algoritmos de aprendizaje supervisado, en este caso particular vamos a trabajar con la Clasificación

El objetivo es que el estudiante implemente varios modelos de clasificación para identificar los clientes propensos a cancelar los productos, es decir, un modelo churn
Realizar la predicción y la matriz de confusión
Identificar cuál es la métrica más adecuada para el problema particular de churn
Comparar los resultados de los modelos y concluir cuál es el mejor para este tipo de problemas
Nota se recomienda exportar a Excel los resultados del modelo que mejor prediga y analice las características de los clientes que abandonan para que plantee algunas recomendaciones para evitar que los clientes hagan
churn.

Este ejercicio tiene un valor generar de 2 puntos

En este caso vamos a utilizar el set de datos de Churn ([Link] entendido como la rotación de clientes (más comúnmente llamada "rotación") como clientes que
dejan de hacer negocios con una empresa o un servicio.

Este conjunto de datos de Machine Learning es muy utilizado para modelar la rotación de clientes, está compuesto por 19 predictores, en su mayoría numéricos:

1. state(categóricos),
2. account_length
3. area_code
4. international_plan(sí / no),
5. voice_mail_plan(sí / no)
6. number_vmail_messages
7. total_day_minutes
8. total_day_calls
9. total_day_charge
10. total_eve_minutes
11. total_eve_calls
12. total_eve_charge
13. total_night_minutes
14. total_night_calls
15. total_night_charge

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 16/25
2/8/2019 Taller de Analítica Predictiva

16. total_intl_minutes
17. total_intl_calls
18. total_intl_charge
19. number_customer_service_calls.

El resultado o variable a predecir está contenido en una columna llamada churn(también sí / no).

In [27]: 1 # Cargamos las librarias


2 library(caret)
3 library(naivebayes)

Loading required package: lattice


Warning message:
"package 'naivebayes' was built under R version 3.5.3"naivebayes 0.9.6 loaded

3.1. Cargamos y exploramos los datos

In [1]: 1 # Cargamos los datos


2 Churn = [Link]("[Link]", sep = ";", header = T)

In [29]: 1 # vemos los primeros registros


2 head(Churn)

state account_length area_code international_plan voice_mail_plan number_vmail_messages total_day_minutes total_day_calls total_day_charge total_eve_minutes total_eve_calls total_eve_charge total_night_minutes total_

HI 101 area_code_510 no no 0 70.9 123 12.05 211.9 73 18.01 236.0

MT 137 area_code_510 no no 0 223.6 86 38.01 244.8 139 20.81 94.2

OH 103 area_code_408 no yes 29 294.7 95 50.10 237.3 105 20.17 300.3

NM 99 area_code_415 no no 0 216.8 123 36.86 126.4 88 10.74 220.6

SC 108 area_code_415 no no 0 197.4 78 33.56 124.0 101 10.54 204.5

IA 117 area_code_415 no no 0 226.5 85 38.51 141.6 68 12.04 223.0

3.1. Preparación de la data


Teniendo en cuenta que originalmente los datos ya vienen separados y que no conocemos el procedimiento que usaron para hacer la partición, lo mejor es unirlo en un único dataset que nos permita analizar la información en
conjunto y luego hacer la particición en la proporción que deseemos y lo más importante de manera aleatoria

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 17/25
2/8/2019 Taller de Analítica Predictiva

In [30]: 1 # Revisión de los datos


2 plot(Churn$churn, col=c("red","green"), main ="Distribución de los clientes")

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 18/25
2/8/2019 Taller de Analítica Predictiva

In [31]: 1 # Datos generales del data set churn


2 str(Churn)

'[Link]': 5000 obs. of 20 variables:


$ state : Factor w/ 51 levels "AK","AL","AR",..: 12 27 36 33 41 13 29 19 25 44 ...
$ account_length : int 101 137 103 99 108 117 63 94 138 128 ...
$ area_code : Factor w/ 3 levels "area_code_408",..: 3 3 1 2 2 2 2 1 3 2 ...
$ international_plan : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...
$ voice_mail_plan : Factor w/ 2 levels "no","yes": 1 1 2 1 1 1 2 1 1 2 ...
$ number_vmail_messages : int 0 0 29 0 0 0 32 0 0 43 ...
$ total_day_minutes : num 70.9 223.6 294.7 216.8 197.4 ...
$ total_day_calls : int 123 86 95 123 78 85 124 97 117 100 ...
$ total_day_charge : num 12.1 38 50.1 36.9 33.6 ...
$ total_eve_minutes : num 212 245 237 126 124 ...
$ total_eve_calls : int 73 139 105 88 101 68 125 112 46 89 ...
$ total_eve_charge : num 18 20.8 20.2 10.7 10.5 ...
$ total_night_minutes : num 236 94.2 300.3 220.6 204.5 ...
$ total_night_calls : int 73 81 127 82 107 90 120 106 71 92 ...
$ total_night_charge : num 10.62 4.24 13.51 9.93 9.2 ...
$ total_intl_minutes : num 10.6 9.5 13.7 15.7 7.7 6.9 12.9 11.1 9.9 11.9 ...
$ total_intl_calls : int 3 7 6 2 4 5 3 6 4 1 ...
$ total_intl_charge : num 2.86 2.57 3.7 4.24 2.08 1.86 3.48 3 2.67 3.21 ...
$ number_customer_service_calls: int 3 0 1 1 2 1 1 0 2 0 ...
$ churn : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...

In [32]: 1 #Elegimos las columnas que vamos a utilizar para entrenar los modelos
2 churn_2 = Churn[,c(4,7,8,16,19,17,20)]
3 #Cambiamos los nombres de las columnas
4 names(churn_2) = c("Tiene plan internacional","Minutos/dia","Llamadas/dia","Minutos internacionales","Reclamaciones",
5 "Llamadas internacionales","Cancelacion")
6 knitr::kable(head(churn_2), caption = "Datos Cargados")
7

|Tiene plan internacional | Minutos/dia| Llamadas/dia| Minutos internacionales| Reclamaciones| Llamadas internacionales|Cancelacion |
|:------------------------|-----------:|------------:|-----------------------:|-------------:|------------------------:|:-----------|
|no | 70.9| 123| 10.6| 3| 3|no |
|no | 223.6| 86| 9.5| 0| 7|no |
|no | 294.7| 95| 13.7| 1| 6|no |
|no | 216.8| 123| 15.7| 1| 2|no |
|no | 197.4| 78| 7.7| 2| 4|no |
|no | 226.5| 85| 6.9| 1| 5|no |

In [33]: 1 # Nombres de las columnas


2 colnames (churn_2)

'Tiene plan internacional' 'Minutos/dia' 'Llamadas/dia' 'Minutos internacionales' 'Reclamaciones' 'Llamadas internacionales' 'Cancelacion'

3.2. Partición de la data


Para realizar la predicción vamos a utilizar todas las variables que tenemos en el data set, pero antes debemos realizar la partición. En Machine Learning es necesario un set de entrenamiento (Train) para generar y entrenar un
modelo predictivo, y un set de prueba (Test), para comprobar la eficacia del modelo para hacer predicciones correctas. Los expertos recomiendan que la partición tenga una distribución aleatoria entre el 70% y 80% del total de los
datos, también es muy recomendable que se use [Link]() para establecer una semilla, de tal manera que el ejemplo sea reproducible.
localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 19/25
2/8/2019 Taller de Analítica Predictiva

In [34]: 1 # Partición
2 [Link](1234)
3 part = sample(2,nrow(churn_2), replace = TRUE, prob = c(0.7,0.3) ) #70% entrenamiento y 30% test
4 train_ = churn_2[part==1,]
5 test_ = churn_2[part==2,]

In [35]: 1 # Vemos las dimensiones de los dos dataset


2 dim(train_)
3 dim(test_)

3525 7

1475 7

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 20/25
2/8/2019 Taller de Analítica Predictiva

In [36]: 1 # Revisión de los datos con train


2 par(mfrow=c(1,2))
3 plot(train_$Cancelacion ,col=c("red","green"), main ="Distribución clientes - Train")
4 # Revisión de los datos con test
5 plot(test_$Cancelacion ,col=c("red","green"), main ="Distribución clientes - Test")

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 21/25
2/8/2019 Taller de Analítica Predictiva

In [37]: 1 # Revisión de los datos con train


2 par(mfrow=c(1,2))
3 pie(table(train_$Cancelacion),col=c("red","green"), main ="Distribución clientes - Train")
4 # Revisión de los datos con test
5 pie(table(test_$Cancelacion),col=c("red","green"), main ="Distribución clientes - Test")

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 22/25
2/8/2019 Taller de Analítica Predictiva

In [38]: 1 # Distribución porcentual


2 round([Link](table(train_$Cancelacion)),4)*100
3 round([Link](table(test_$Cancelacion)),4)*100

no yes
85.65 14.35

no yes
86.37 13.63

In [39]: 1 # Vemos la información general de los dos dataset


2 str(train_)
3 str(test_)

'[Link]': 3525 obs. of 7 variables:


$ Tiene plan internacional: Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...
$ Minutos/dia : num 70.9 223.6 294.7 216.8 226.5 ...
$ Llamadas/dia : int 123 86 95 123 85 124 97 117 100 77 ...
$ Minutos internacionales : num 10.6 9.5 13.7 15.7 6.9 12.9 11.1 9.9 11.9 9 ...
$ Reclamaciones : int 3 0 1 1 1 1 0 2 0 1 ...
$ Llamadas internacionales: int 3 7 6 2 5 3 6 4 1 4 ...
$ Cancelacion : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...
'[Link]': 1475 obs. of 7 variables:
$ Tiene plan internacional: Factor w/ 2 levels "no","yes": 1 1 1 1 2 2 1 1 2 1 ...
$ Minutos/dia : num 197 113 208 259 101 ...
$ Llamadas/dia : int 78 86 93 94 110 125 76 125 112 102 ...
$ Minutos internacionales : num 7.7 7.2 7.4 9.2 11.1 10.1 12 13.4 8.3 10.1 ...
$ Reclamaciones : int 2 3 1 3 0 1 2 1 2 1 ...
$ Llamadas internacionales: int 4 6 2 1 6 3 3 6 1 8 ...
$ Cancelacion : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 2 2 ...

3.3. Construcción del modelo


Ahara que ya contamos con la partición adecuada de los datos, vamos a construir el modelo de clasificación, inicialmente se realiza el entrenamiento, luego la predicción y finalmente la evaluación del modelo.

In [40]: 1 # Entrnamiento del Modelo


2 Mod_NB = naive_bayes(Cancelacion ~ ., data = train_)
3

3.4. Predicción

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 23/25
2/8/2019 Taller de Analítica Predictiva

In [41]: 1 predic = predict(Mod_NB , test_)


2 tabla_ = table(test_$Cancelacion, predic, dnn = c("Actual", "Predicción"))
3 confusionMatrix(tabla_)

Warning message:
"predict.naive_bayes(): More features in the newdata are provided as there are probability tables in the object. Calculation is performed based on features to be found in the tables."

Confusion Matrix and Statistics

Predicción
Actual no yes
no 1248 26
yes 151 50

Accuracy : 0.88
95% CI : (0.8623, 0.8962)
No Information Rate : 0.9485
P-Value [Acc > NIR] : 1

Kappa : 0.3094
Mcnemar's Test P-Value : <2e-16

Sensitivity : 0.8921
Specificity : 0.6579
Pos Pred Value : 0.9796
Neg Pred Value : 0.2488
Prevalence : 0.9485
Detection Rate : 0.8461
Detection Prevalence : 0.8637
Balanced Accuracy : 0.7750

'Positive' Class : no

In [42]: 1 # Sensibilidad
2 cat("Sensibilidad",round((50)/(50+26),4)*100,"%")

Sensibilidad 65.79 %

Análisis:

El accuracy o exactitud del modelo es del 88%


La tasa de error es del 12%
La sensibilidad es del 0.65789, es decir, que el modelo clasifica correctamente el 65.79% de los clientes que abandonan.
La especificidad es del 0.8920, es decir, que el modelo clasifica correctamente el 89.20% de los clientes que permanecen.
En términos generales el modelo clasifica de manera aceptable a los clientes, especialmente a los que permanecen.

----------------------------------------------------------------------------------------------------------
4. Implementación de otros modelos
Probemos con los otros dos modelos de clasificación que ya hemos visto y comparamos los resultados.
localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 24/25
2/8/2019 Taller de Analítica Predictiva

localhost:8888/notebooks/OneDrive - Universidad de la Sabana (1)/Analytics/Big Data %26 Analytics/Virtual/Taller de Analítica [Link] 25/25

También podría gustarte