fbpx

Hola mundo en esta entrada hablaremos del modelo de clasificación y cómo utilizar árboles de decisión para catalogar los
datos del Titanic. Vamos allá!

El problema de clasificación

si recuerdas en otra entrada estuvimos hablando de modelos estadístico o problemáticas de machine learning.

Clasificación era uno de ellos. En este caso, queríamos asignar una clase o categoría a las observaciones basado en variables independientes que también habíamos llamado predictores o la entrada.

Datos del Titanic

Para este caso, vamos a hablar de los pasajeros del Titanic. En particular, vamos a utilizar como entrada la edad y el género de los pasajeros. Nos va a interesar estudiar la supervivencia de los pasajeros.

Los datos del Titanic son unos datos muy populares en el mundo de machine learning sobre todo por competiciones como kaggle, que te recomiendo mirar también.

Interés para el analista o científico de datos

Lo más interesante de este problema, es detectar, a través de la información del pasajero, si éste llega a sobrevivir o no. Por lo tanto, tú como analista o científico de datos estas interesado en saber cuáles son esas variables que influyen o determinan esa supervivencia. Para luego establecer un modelo.

Una pregunta de interés pudiera ser si un pasajero de cuatro años de edad que tuviera género masculino sobrevivirá. Una solución, como vamos a ver en esta entrada, es utilizar árboles de decisión.

Carga de datos en R

Ahora, antes de seguir con el modelo vamos a ver cómo sería la carga de datos en r para eso vamos a utilizar este paquete que se llama titanic y vamos a instalarlo:

# paquete de datos
# install.packages('titanic')

# cargar librarias de analisis
library(tidyverse)

# cargar librerias de datos
library(titanic)
data("titanic_train")
head(titanic_train)

Podemos ver los datos haciendo click en la variable «titanic» en el menú superior derecho. Vemos, por ejemplo, el ID del pasajero este número sería si sobrevivió o no (0 significa que no y 1que si) y lo vamos a utilizar el género y la edad.

Modelo de árboles de decisión

Bien, para entender este modelo de árboles de decisión conviene pensar un poco en un juego de las preguntas. En este juego tú me das un pasajero y me pides que te diga si sobrevive o no.

Si hacemos un dibujo de esto, digamos que tú me das un pasajero y yo te pregunto si es mujer o no.

  • Si tú me dices que sí, entonces se clasificaría como alguien que vive.
  • Si me dices que no, entonces lo que yo haría sería hacerte una nueva pregunta:
    • Entonces te preguntaría si es niño si o no.
      • En el caso que me digas que sí, pues clasificaría como que vive
      • En caso contrario, se clasificaría como que no vive.

Así que, en este caso, yo pues básicamente no sobreviviría!

También hay que entender que estos modelos no son perfectos y siempre habrá que tolerar algo de error. Para esto conviene hacer una validación del modelo para saber por cuánto nos estamos equivocando.

Así que, ya teniendo esta idea en mente vamos a ver cómo se programa un árbol de decisión.

Práctica en R

Bien, nos habíamos quedado en los datos. Para hacer el modelo necesitamos instalar estos tres paquetes que están
acá:

# cargar librerias para clasificacion
# install.packages('rpart')
library(rpart)
# install.packages('rattle')
library(rattle)
# install.packages('rpart.plot')
library(rpart.plot)

El primero es el que hace todos los cálculos. El segundo y tercero son para hacer la gráfica de árbol que veremos al final.

Una vez cargados los tres paquetes, vamos a hacer el modelo. Para esto creamos una variable que se llame arbol. La función para hacer este tipo de modelo se llama rpart.

Esta función va a tener tres partes primero la fórmula que es el modelo en sí. En nuestro caso la supervivencia dependerá de la edad y el género. Otra parte serían los datos, de donde se entrena el modelo. Por último, vamos a agregarle method = class para que calcule la clase (sobrevive o no) y no la probabilidad de supervivencia. El código:

# modelando con arboles de decision
arbol <- rpart(
  formula = Survived ~ Sex + Age,
  data = titanic_train,
  method = 'class'
)

Graficando el árbol de decisión

Ya que hemos hecho el modelo, vamos a graficar ese árbol. Esto es quizá lo más interesante. Para eso vamos a utilizar la función fancyRpartPlot(). Le pasamos la variable arbol y ejecutamos:

# graficando el arbol
fancyRpartPlot(arbol)

Interpretación del árbol

El código anterior resulta en la siguiente imagen.

Ahora vamos a interpretarlo. Bien, esto se lee por lo general de arriba a abajo. Lo primero sería de arriba es el 100% de los datos. El 0 recuerda que significa que no sobrevive, y 1 que sí. El valor de arriba de cada cuadro sería la predicción del grupo.

La primera separación que hace es sobre el género. Es decir, a la izquierda iría el género masculino y del otro lado el femenino. Lo que nos estaría diciendo es que las mujeres sobreviven y representan el 35% e los datos.

Por otro lado, si el género es masculino la predicción sería de 0 y sería el 65% de los datos. Fíjate que esto junto con el
35 sumaría el 100%.

Si bajamos un nivel, se muestra que un 81 que sería que el 81% de los hombres no sobrevive y el 19 sí.

Nuestro modelo se ha abierto en otras dos ramas considerando ahora la edad. Entonces ahora lo que separaría sería si la edad es mayor o igual a 6.5. A la izquierda sería que sí a la derecha no. Es decir, que hombres mayores de 6.5 años no sobreviven.

Conclusión

Espero que este articulo te haya ayudado a entender un poco más sobre árboles de decisión y sobre el problema de clasificación!

Te mando un saludo donde quiera que estés :D!