in

Aprendizaje automático con R: predicción de abandono

16JTC8VgeBr7YUnm9aWg Ow

Aprendizaje automático con R: predicción de abandono

Una guía práctica para el lenguaje de programación R

Soner Yıldırım

7 de ene·5 min de lectura

Foto de Tim Mossholder en Unsplash

R es uno de los lenguajes predominantes en el ecosistema de ciencia de datos. Está diseñado principalmente para gráficos y computación estadística. R simplifica la implementación eficiente de técnicas estadísticas y, por lo tanto, es una excelente opción para tareas de aprendizaje automático.

En este artículo, crearemos un modelo de bosque aleatorio para resolver un problema típico de aprendizaje automático: predicción de abandono.

Nota: Si desea leer este artículo en español, está publicado en Planeta Chatbot.

La pérdida de clientes es importantetproblema de hormigas para todos los negocios. Mientras busca formas de expandir la cartera de clientes, las empresas también se enfocan en mantener a los clientes existentes. Por lo tanto, es crucial conocer las razones por las que los clientes existentes se retiran (es decir, se van).

El conjunto de datos está disponible en Kaggle. Usaremos la biblioteca randomForest para R. El primer paso es instalar e importar la biblioteca.

install.package("randomForest")
library(randomForest)

Yo uso R-studio IDE pero también hay otras alternativas. El siguiente paso es leer el conjunto de datos en una tabla.

> churn <- read.table("/home/soner/Downloads/datasets/BankChurners.csv", sep = ",", header = TRUE)

Algunas de las columnas son redundantes o están muy correlacionadas con otra columna. Por lo tanto, soltaremos 7 columnas.

> churn2 <- churn[-c(1,3,10,16,19,22,23)]

El código anterior filtra la tabla en función de la lista de índices dada de las columnas. Agregamos un signo menos antes de la lista para indicar que estas columnas se eliminarán.

Escribí un artículo separado como análisis de datos exploratorios de este conjunto de datos. Sugiero que lo lea si desea saber por qué eliminamos algunas de las columnas.

Aquí hay una lista de las columnas restantes:

(imagen del autor)

La columna del indicador de deserción es nuestra variable de destino e indica si un cliente abandonó la empresa. Las columnas restantes contienen información sobre los clientes y sus actividades con el banco.

El siguiente paso es dividir el conjunto de datos en subconjuntos de entrenamiento y prueba. Primero creamos una partición y la usamos para dividir los datos. Antes de dividir el conjunto de datos, necesitamos factorizar la variable de destino (Attrition_Flag) para que el modelo sepa que esta es una tarea de clasificación.

> churn2$Attrition_Flag = as.factor(churn2$Attrition_Flag)> set.seed(42)
> train <- sample(nrow(churn2), 0.8*nrow(churn2), replace = FALSE)
> train_set <- churn2[train,]
> test_set <- churn2[-train,]

Seleccionamos al azar el 80% de las observaciones (es decir, filas) para el entrenamiento. Los restantes se almacenan en el equipo de prueba.

El siguiente paso es crear un modelo de bosque aleatorio y entrenarlo.

> model_rf <- randomForest(Attrition_Flag ~ ., data = train_set, importance = TRUE)

Creamos un modelo de bosque aleatorio e indicamos la variable objetivo. El punto después del operador de tilde (~) le dice al modelo que todas las demás columnas se usan en el entrenamiento como variables independientes.

A continuación, se muestra un resumen del modelo de bosque aleatorio:

(imagen del autor)

La cantidad de árboles que se utilizan en el bosque es 500 de forma predeterminada. Podemos cambiarlo usando el parámetro ntree.

La métrica crítica para la evaluación es la estimación OOB (Fuera de bolsa) de la tasa de error. Me gustaría explicar brevemente cómo funciona el algoritmo de bosque aleatorio antes de entrar en detalle sobre la estimación OOB del error.

El bosque aleatorio utiliza muestreo de arranque, lo que significa seleccionar muestras al azar de los datos de entrenamiento con reemplazo. Cada muestra de bootstrap contiene una muestra aleatoria de todo el conjunto de datos. Las observaciones que no están en una muestra de arranque se denominan datos fuera de bolsa. Para obtener una evaluación imparcial y más precisa del modelo, se utiliza el error fuera de bolsa.

La tasa de error OOB es del 5,33%, lo que significa que la precisión del modelo es de aproximadamente el 95%.

La matriz de confusión también es una herramienta importante para evaluar un modelo de clasificación. Muestra el número de predicciones correctas e incorrectas para cada clase.

Para evaluar el modelo en el conjunto de prueba, primero hacemos predicciones.

> predTest <- predict(model_rf, test_set, type = "class")> mean(predTest == test_set$Attrition_Flag)  

[1] 0.9343534

Comparamos las predicciones y la variable objetivo del conjunto de prueba (Attrition_Flag) y tomamos la media. La precisión de clasificación del modelo en el conjunto de prueba es del 93,4%, que es un poco más baja que la precisión en el conjunto de trenes.

También podemos generar la matriz de confusión de las predicciones en el conjunto de prueba.

1*id2L lK5QYndlEURP0Evvg

Matriz de confusión en el equipo de prueba (imagen del autor)

Parece que el modelo se comporta peor en la predicción de los clientes agitados (es decir, desgastados) que los clientes existentes. La principal razón de este problema es la distribución de clases desequilibrada. El número de clientes abandonados es mucho menor que el número de clientes existentes. Una forma de superar este problema es utilizar el muestreo ascendente para aumentar el número de observaciones en la clase de cliente desgastada.

El ajuste de hiperparámetros es una parte importante de la construcción de modelos, especialmente para modelos complejos. Por ejemplo, cambiar el número de árboles en un bosque aleatorio o la profundidad máxima de un árbol individual se considera ajuste de hiperparámetros.

El ajuste de hiperparámetros requiere tener una comprensión completa de los hiperparámetros de un algoritmo. No sería eficaz probar valores aleatorios.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

terminal de ubuntu

Cómo instalar el reproductor de discos Blu-Ray en Linux Ubuntu – ¿Muy fácil?

149093

Uso de las API de Java para Bluetooth, parte 2