Integrantes:

Natalia Cardenas, Juliana Barrios, Jose Barrios, Andrea Díaz.

Un árbol de decisión es un modelo de aprendizaje automático que se utiliza para clasificar o predecir valores en función de una serie de características. El árbol se construye dividiendo los datos en subconjuntos más pequeños, a medida que se van aprendiendo las características más importantes para la clasificación o predicción.

Los árboles de decisión se pueden utilizar para una amplia gama de tareas, incluyendo:

•Clasificación: predecir la categoría de pertenencia de un objeto. Por ejemplo, podemos utilizar un árbol de decisión para predecir la especie de una flor en función de sus características físicas.

•Regresión: predecir un valor continuo. Por ejemplo, podemos utilizar un árbol de decisión para predecir el precio de una casa en función de sus características.

•Clasificación y regresión: predecir una categoría de pertenencia y un valor continuo. Por ejemplo, podemos utilizar un árbol de decisión para predecir la probabilidad de que un paciente tenga una enfermedad y el grado de gravedad de la enfermedad.

Los árboles de decisión son un tipo de modelo de aprendizaje supervisado. Esto significa que se necesitan datos previamente etiquetados para entrenar el modelo.

El proceso de construcción de un árbol de decisión se puede dividir en los siguientes pasos:

  1. Selección de la variable de partición: En primer lugar, se debe seleccionar la variable que mejor dividirá los datos en dos subconjuntos más pequeños. La variable se selecciona en función de una medida de importancia.
  2. Recursión: El proceso se repite para cada uno de los subconjuntos, hasta que se alcance un criterio de parada, como un límite de profundidad del árbol o un número mínimo de observaciones en cada subconjunto.
  3. Puesta a cero: En algunos casos, puede ser necesario podar el árbol para mejorar su rendimiento. La poda consiste en eliminar algunas de las ramas del árbol, lo que puede ayudar a evitar el sobreajuste. Los árboles de decisión tienen una serie de ventajas, entre las que se incluyen:

•Son fáciles de entender y explicar.

•Pueden ser utilizados para una amplia gama de tareas.

•Son relativamente rápidos de entrenar.

Sin embargo, los árboles de decisión también tienen algunas desventajas, entre las que se incluyen: •Pueden ser sensibles al ruido en los datos.

•Pueden sufrir de sobreajuste.

•Pueden ser difíciles de escalar a grandes conjuntos de datos.

Para realizar estos arboles se utilizan las siguientes librerías: Usaremos los siguientes paquetes.

tidyverse: para llamar a la familia de paquetes tidyverse, que nos ayudaran al procesamiento de nuestros datos. rpart: el paquete con la implementación de árboles de clasificación que utilizaremos. rpart.plot: para graficar los resultados de rpart. caret: un paquete con utilidades para clasificación y regresión. Lo usaremos por su función para crear matrices de confusión. rattle: vizualizador para los arboles de decisión.

A continuación presentamos presentamos un ejemplo de un arbol de decisión realizado con la libreria caret:

EJEMPLO 1.

library(caret)
## Warning: package 'caret' was built under R version 4.3.2
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.3.2
## Loading required package: lattice
library(rpart)
## Warning: package 'rpart' was built under R version 4.3.2
library(rpart.plot)
## Warning: package 'rpart.plot' was built under R version 4.3.2
library(rattle)
## Warning: package 'rattle' was built under R version 4.3.2
## Loading required package: tibble
## Warning: package 'tibble' was built under R version 4.3.2
## 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.
# Cargar el conjunto de datos mtcars
data(mtcars)

# Crear una variable objetivo binaria
mtcars$mpg_high <- ifelse(mtcars$mpg > median(mtcars$mpg), "High", "Low")

# Dividir el conjunto de datos en conjuntos de entrenamiento y prueba
set.seed(123)
indices <- createDataPartition(mtcars$mpg_high, p = 0.8, list = FALSE)
train_data <- mtcars[indices, ]
test_data <- mtcars[-indices, ]

# Ajustar un modelo de árbol de decisiones con caret
ctrl <- trainControl(method = "cv", number = 5, savePredictions = TRUE, classProbs = TRUE)
model <- train(mpg_high ~ ., data = train_data, method = "rpart", trControl = ctrl)

# Visualizar el árbol de decisiones con rattle
fancyRpartPlot(model$finalModel)

EJEMPLO 2.

install.packages("caret")
## Warning: package 'caret' is in use and will not be installed
install.packages("rpart")
## Warning: package 'rpart' is in use and will not be installed
library(caret)
library(rpart)

# Datos de ejemplo (usaremos el conjunto de datos iris)
data(iris)

# Definir el control para el entrenamiento del modelo
ctrl <- trainControl(method = "cv",  # Validación cruzada
                     number = 5)     # Número de folds para la validación cruzada

# Entrenar el modelo de árbol de decisión usando caret
set.seed(123)  # Para reproducibilidad
modelo <- train(Species ~ .,        # Fórmula del modelo
                data = iris,        # Conjunto de datos
                method = "rpart",   # Método de árbol de decisión
                trControl = ctrl)   # Control del entrenamiento

# Ver resumen del modelo
print(modelo)
## CART 
## 
## 150 samples
##   4 predictor
##   3 classes: 'setosa', 'versicolor', 'virginica' 
## 
## No pre-processing
## Resampling: Cross-Validated (5 fold) 
## Summary of sample sizes: 120, 120, 120, 120, 120 
## Resampling results across tuning parameters:
## 
##   cp    Accuracy   Kappa
##   0.00  0.9533333  0.93 
##   0.44  0.8266667  0.74 
##   0.50  0.3333333  0.00 
## 
## Accuracy was used to select the optimal model using the largest value.
## The final value used for the model was cp = 0.
# Visualizar el árbol generado por el modelo
fancyRpartPlot(modelo$finalModel)