library(pacman)
p_load("DT", "xfun", "data.table", "dplyr", "tidyr", "ggplot2", "ROCR", "DataExplorer", "randomForest")

RANDOM FOREST (BOSQUES ALEATORIOS)

Esquema de random forest

Los árboles de decisión son modelos predictivos formados por reglas binarias (si/no) con las que se consigue repartir las observaciones en función de sus atributos y predecir así el valor de la variable respuesta.

Muchos métodos predictivos generan modelos globales en los que una única ecuación se aplica a todo el espacio muestral. Cuando el caso de uso implica múltiples predictores, que interaccionan entre ellos de forma compleja y no lineal, es muy difícil encontrar un único modelo global que sea capaz de reflejar la relación entre las variables. Los métodos estadísticos y de machine learning basados en árboles engloban a un conjunto de técnicas supervisadas no paramétricas que consiguen segmentar el espacio de los predictores en regiones simples, dentro de las cuales es más sencillo manejar las interacciones. Es esta característica la que les proporciona gran parte de su potencial.

Los modelos Random Forest están formados por un conjunto de árboles de decisión individuales, cada uno entrenado con una muestra ligeramente distinta de los datos de entrenamiento generada mediante bootstrapping. La predicción de una nueva observación se obtiene agregando las predicciones de todos los árboles individuales que forman el modelo.

Ventajas

Los árboles son fáciles de interpretar aun cuando las relaciones entre predictores son complejas.

Los modelos basados en un solo árbol (no es el caso de Random Forest y Boosting) se pueden representar gráficamente aun cuando el número de predictores es mayor de 3.

Los árboles pueden, en teoría, manejar tanto predictores numéricos como categóricos sin tener que crear variables dummy o one-hot-encoding. En la práctica, esto depende de la implementación del algoritmo que tenga cada librería.

Al tratarse de métodos no paramétricos, no es necesario que se cumpla ningún tipo de distribución específica.

Por lo general, requieren mucha menos limpieza y preprocesado de los datos en comparación con otros métodos de aprendizaje estadístico (por ejemplo, no requieren estandarización).

No se ven muy influenciados por outliers.

Si para alguna observación, el valor de un predictor no está disponible, a pesar de no poder llegar a ningún nodo terminal, se puede conseguir una predicción empleando todas las observaciones que pertenecen al último nodo alcanzado. La precisión de la predicción se verá reducida pero al menos podrá obtenerse.

Son muy útiles en la exploración de datos, permiten identificar de forma rápida y eficiente las variables (predictores) más importantes.

Son capaces de seleccionar predictores de forma automática.

Pueden aplicarse a problemas de regresión y clasificación.

Idea intuitiva

Los árboles de regresión son el subtipo de árboles de predicción que se aplica cuando la variable respuesta es continua. En términos generales, en el entrenamiento de un árbol de regresión, las observaciones se van distribuyendo por bifurcaciones (nodos) generando la estructura del árbol hasta alcanzar un nodo terminal. Cuando se quiere predecir una nueva observación, se recorre el árbol acorde al valor de sus predictores hasta alcanzar uno de los nodos terminales. La predicción del árbol es la media de la variable respuesta de las observaciones de entrenamiento que están en ese mismo nodo terminal

Introducción al algoritmo de random forest

Random forest es uno de los denóminados en Machine Learning como métodos de ensamble (ensemble method), esto es, son técnicas que convinan múltiples algoritmos, permitiendo alcanzar una mayor precisión y estabilidad del modelo resultante. Los tres métodos más comunes son: Bagging, Boosting and Stacking. RF es del primero de ellos.

Por tanto, RF es un método de ensamble que permite construir una multitud de árboles decisión en la fase de entrenamiento, posibilitando corregir aspectos como el sobre ajuste (sesgo-varianza), y mejorando el resultado final. Permite tareas de clasificación, regresión y otras (como determinar la importancia relativa de las variables en un mdelo de aprendizaje).

RF trabaja de la siguiente manera: construye árboles de decisión individuales,los cuales crecen hasta su máxima extensión posible sin ue medie un proceso de poda. Para ello, se emplean con los datos de entrenamiento, pero incluyendo datos ligeramente distintos en cada árbol (bootstrapping). La predicción final, mediante un algoritmo de RF, es la media de las predicciones de todos los árboles que lo forman.

En RF es importante considerar toda una serie de hipeparámetros:

ntree: número de árboles a incluir en el modelo de RF.

mtry: número de variables predictoras como candidatas en cada ramifiación. Por defecto, apra problemas de casificación será la raiz cuadrada del número de variables, y para regresión número de variables dividido entre 3.

sampsize: el número de muestras sobre las cuales entrenar.

nodesize: mínimo número de muestras dentro de los nodos terminales. Para casos de clasificación, por defecto será 2, y para regresión será 5.

maxnodes: máximo número de nodos terminales. Por defecto, no se planifica un proceso de poda, dejando crecer los árboles hasta su límite máximo.

Lectura recomendada:

https://bookdown.org/content/2031/

Caso de “churn” (abandono) en telecomunicaciones

Para este ejercicio obtendremos los datos de:

https://www.kaggle.com/datasets/blastchar/telco-customer-churn

Los archivo con los datos lo descargaremos de:

https://github.com/AdSan-R/MachineLearning_R/tree/main/dataset

De este github tenemos el siguiente archivo .CSV:

https://raw.githubusercontent.com/AdSan-R/MachineLearning_R/main/dataset/TelcoChurn.csv

Importando los datos a R

#Variable con URL de los datos crudos 
url_churn <- "https://raw.githubusercontent.com/AdSan-R/MachineLearning_R/main/dataset/TelcoChurn.csv"

# Leyendo el archivo .csv contenido en la url 

datos_churn <- read.csv(url_churn)

## Mostrar los datos en tabla interactiva 

datatable(datos_churn)

Características del caso de uso

  • El objetivo del caso es predecir la probabilidad de que un determinado cliente puede abandonar (churn) la empresa. La explicación de esta conducta estará basada en toda una serie de variables predictoras que se pueden clasificar en cuatro grupos:
  1. Churn: la variable TARGET, con puntuaciones de 0 (no abandonó la empresa) y 1 (sí abandonó la empresa)

  2. Servicios contratados: phone, multiple lines, internet, online security, online backup, device protection, tech support, and streaming TV and movies.

  3. Información sobre cuentas del cliente: how long they’ve been a customer, contract, payment method, paperless billing, monthly charges, and total charges.

  4. Variables demográficas: gender, age range, and if they have partners and dependents

Proceso

Entorno El primer punto tratará sobre la preparación del entorno, donde se mostrará la descarga de las librerías empleadas y la importación de datos.

Análisis descriptivo Se mostrarán y explicarán las funciones empleadas en este paso, dividiéndolas en tres grupos: Análisis inicial, Tipología de datos y Análisis descriptivo (gráficos).

Modelización Se preparará lo necesario para modelizar, mediante dos pasos:

Preparar funciones: Matriz de confusión

Métricas

Umbrales

Curva ROC y AUC

Particiones del dataset en dos grupos: training (70%) y test (30%) Modelización con Random Forest Por motivos didácticos, se dividirá en seis pasos:

Paso 1. Primer modelo

Paso 2. Segundo modelo

Paso 3. Predict

Paso 4. Umbrales

Paso 5. Matriz de confusión

Paso 6. Métricas definitivas

Descarga este código

xfun::embed_file("A11u1.Rmd")

Download A11u1.Rmd