Big Data
Big Data
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:
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.
---------------------------------------------------------------------------------------------------------------
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.
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
Warning message:
"package 'dplyr' was built under R version 3.5.3"
Attaching package: 'dplyr'
filter, lag
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
Vemos que el conjunto de datos está compuesto por 31 observaciones y 3 variables, todas númericas
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
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
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
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
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
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
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
**Análisis:
---------------------------------------------------------------------------------------------------------------
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.
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.
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'
logit
recode
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.
---------------------------------------------------------------------------------------------------------------
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:
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.
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).
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_
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
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 [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 |
'Tiene plan internacional' 'Minutos/dia' 'Llamadas/dia' 'Minutos internacionales' 'Reclamaciones' 'Llamadas internacionales' 'Cancelacion'
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,]
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
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
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
no yes
85.65 14.35
no yes
86.37 13.63
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
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."
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:
----------------------------------------------------------------------------------------------------------
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