Decision tree
Los árboles de decisión son útiles para entender la estructura de un conjunto de datos. Sirven para resolver problemas tanto de clasificación (predecir una variable discreta, típicamente binaria) como de regresión (predecir una variable continua). Se trata de modelos excesivamente simples pero, y ahí reside fundamentalmente su interés, fácilmente interpretables.
Ejemplo
En este ejemplo lo que veremos es como poder predecir utilizando un árbol de decisión y como clasificar los datos de los sobrevivientes del titanic.
Librerías
library(tidyverse)## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5 v purrr 0.3.4
## v tibble 3.1.4 v dplyr 1.0.7
## v tidyr 1.1.4 v stringr 1.4.0
## v readr 2.0.1 v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(titanic)## Warning: package 'titanic' was built under R version 4.1.3
library(rpart)
library(rattle)## Warning: package 'rattle' was built under R version 4.1.3
## Loading required package: bitops
## Rattle: A free graphical interface for data science with R.
## Versión 5.5.1 Copyright (c) 2006-2021 Togaware Pty Ltd.
## Escriba 'rattle()' para agitar, sacudir y rotar sus datos.
library(rpart.plot)## Warning: package 'rpart.plot' was built under R version 4.1.3
library(pacman)## Warning: package 'pacman' was built under R version 4.1.2
p_load("prettydoc", "DT", "xfun")Leer y preparar datos
data <- data("titanic_train")Creación del modelo
Se crea el modelo a partir de las variables Edad y Sexo para clasificar a los sobrevivientes
arbol <- rpart(
formula = Survived ~ Sex + Age, data = titanic_train,
method = 'clas'
)Gráficando el modelo
fancyRpartPlot(arbol)El 1 en los nodos significa que es el valor que más se repite, es decir en el primer noddo hubo menos sobrevivientes que muertos. En la primera condición se pregunta si el género es masculino, si no lo es se predice como sobreviviente, el 35% que se muestra en el nodo 3 significa que el 35% de los datos. Si el sexo es masculino se va al nodo 2 y ese se intrepreta como que el 81% de los hombres no sobreviven y a ese nodo le pertenecen el 65% de los datos. Después de decidor por el sexo, la decisión se tomará por la edad, en caso de ser mayor o igual a 6.5 años se tiene que el 83% no sobrevive, y si la edad es menor a 6.5 el 67% sobrevive.
Prediciendo con el árbol
pred_arbol <- predict(arbol,type = 'class')
titanic_pred <- cbind(titanic_train,pred_arbol)
datatable(titanic_pred)Se puede observar en la ultima columna de la tabla que basado en la edad y el sexo de los pasajeros se puede predecir si una persona sobrevive o no, en la primera fila se observa que la persona no sobrevive puesto que es masculino y de edad de 22 años, pero en la segunda columna es femenimo y resulta sobreviviente.
Prediciendo si un pasajero femenino sobrevive
predict(object = arbol,newdata = data.frame(Age = 22,Sex='female'),type = 'class')## 1
## 1
## Levels: 0 1
Conclusión
Utilizando este modelo de aprendizaje supervisado a través de la clasificación y regresión pudimos predecir y observar como fue la clasificación de sobrevivientes del accidente del titanic. Si bien el modelo no es 100% seguro, se pudo observar que el error que se tiene es bastante pequeño, por lo que, si se puede predecir utilizando este método de aprendizaje.