Los arboles de decisión son una estructura de datos formada por nodos, cada nodo representa una decisión.
Para construir un modelo de ML con arboles de decisión, cada feature va a representar un nodo. La forma en que se elige el orden del feature para los nodos, es que se elige la variable que mejor separa los datos.
Hay diferentes métricas para eso:
Métrica Gini: Mide la impureza de los divisiones. Mide que tan mezcladas están las clases. Queremos que este valor sea bajo.
-p: Es la proporción que tenemos de cada clase.
Métrica Entropía
Basada en la teoría de la información, busca reducir la incertidumbre de la información.
Ganancia:
Nos permite medir la capacidad para reducir la impureza o incertidumbre.
-D: el subconjunto de datos resultante de la división
El proceso para construir un árbol:
1.- Todos los features entran al nodo raíz y se calcula Gini.
2.- Con cada feature se prueban las divisiones posibles, y para cada feature se calcula el gini.
3.- Se calcula la ganancia para cada feature. El feature con mayor ganancia se selecciona para dividir el nodo, pues es el que mejor separa los datos.
4.- Para los siguientes nodo se repite el proceso recursivamente.
Este video les puede ayudar a profundizar:
Gracias Gonzalo, por la informacion :)
Muy claro!, excelente explicacion. y para quienes venimos de Desarrollo de Software las estructuras de datos en especial los Arboles tienen una relacion directa con los arboles de desiciones.
Las estructuras de datos y los árboles de decisión en machine learning (ML) tienen una relación directa y significativa, especialmente para aquellos que provienen del desarrollo de software. Aquí te explico un poco más:
Estructuras de datos: Las estructuras de datos como listas, pilas, colas, árboles, gráficos, entre otras, son fundamentales en el desarrollo de software porque permiten almacenar y organizar datos de manera eficiente.
Árboles de decisión: En ML, un árbol de decisión es una estructura de árbol que se utiliza para modelar decisiones y sus posibles consecuencias. Cada nodo del árbol representa una decisión basada en un atributo, y cada rama representa el resultado de esa decisión.
Relación directa:
Los árboles de decisión son, de hecho, una estructura de datos en sí mismos. Utilizan conceptos similares a los árboles binarios que ya conoces del desarrollo de software.
El entendimiento de cómo funcionan las estructuras de datos y cómo se pueden manipular te da una ventaja al trabajar con árboles de decisión en ML. Por ejemplo, saber cómo recorrer un árbol o manejar sus nodos puede ayudarte a entender mejor cómo se generan y se utilizan los árboles de decisión.
Además, la eficiencia en el almacenamiento y la recuperación de datos, que es crucial en el desarrollo de software, también es esencial en el ML para manejar grandes volúmenes de datos.
Gracias Alfredo, buen resumen :)
Hace falta más rigurosidad en muchas cosas. Siento que es mejor dar más clase teórica. :)
Gracias Santiago, te tomamos el feedback :) Saludos!
Te faltan fundamentos, te invito a que profundices mas en Estructuras de datos y algoritmos en desarrollo de software, es un tema que es complejo, pero que es vital y vos podes, asi que a darle
Para que sea más claro:
Nodo raíz: Es el primer nodo del árbol, que contiene todo el conjunto de datos y se divide en subconjuntos en función de una característica que maximiza la separación. Es el punto de inicio de las decisiones.
División (Split): Es el proceso mediante el cual el árbol de decisión separa los datos en base a una característica. Cada nodo se divide en dos o más ramas en función de una condición de las características.
Nodo de decisión: Es un nodo interno del árbol que representa una pregunta o una condición basada en una característica. Dependiendo del resultado de esa condición (por ejemplo, "¿La edad es mayor a 30?"), el árbol sigue una rama u otra.
Nodo de hoja o terminal: Son los nodos finales del árbol donde no hay más divisiones. Estos nodos contienen la predicción final de la clase o valor que se está estimando.
Poda (Pruning): Es una técnica utilizada para simplificar un árbol de decisión al eliminar ramas que tienen poca importancia o no mejoran significativamente el modelo. Ayuda a reducir el sobreajuste (overfitting).
Rama / Subárbol: Es una subsección del árbol de decisión. Cada rama se origina a partir de un nodo y representa una serie de decisiones que conducen a un nodo terminal.
Nodo madre/padre e hijo: El nodo padre es un nodo que se divide en dos o más nodos hijos. Cada nodo hijo es el resultado de una división del nodo padre.
¿Cuándo debo detener el crecimiento del árbol?
Debes detenerlo justo antes de que empiece a memorizar el ruido de tus datos. En la práctica, esto se logra configurando los hiperparámetros del modelo antes de entrenarlo. Por ejemplo, puedes usar max_depth en scikit-learn para decirle al árbol: "no crezcas más allá de 5 niveles de preguntas". Otra estrategia excelente es usar min_samples_split, que le indica al algoritmo que solo divida un nodo si tiene al menos cierta cantidad de datos (digamos, 20 registros). Si un nodo tiene menos de eso, se convierte automáticamente en una hoja final. Encontrar el punto exacto de detención requiere experimentación y validación cruzada, buscando siempre el equilibrio donde el modelo tenga un buen rendimiento tanto en los datos de entrenamiento como en los datos de prueba que nunca ha visto.
¿Cómo decide el árbol dónde dividirse?
Imagina que estás jugando a "Adivina quién". Tu objetivo es hacer la pregunta que elimine a la mayor cantidad de personajes de un solo golpe, como "¿Tu personaje usa sombrero?". Un árbol de decisión hace exactamente lo mismo usando matemáticas. Evalúa todas las características disponibles en tus datos y calcula cuál de ellas separa mejor las clases (por ejemplo, compradores vs. no compradores). Para lograr esto, utiliza métricas como la Impureza de Gini o la Entropía, que básicamente miden el "desorden" en los datos. El algoritmo probará diferentes puntos de corte (como "edad > 30") y elegirá aquel que resulte en los grupos más puros o limpios posibles. Este proceso de hacer preguntas y dividir los datos se repite en cada nodo hasta llegar a una conclusión final o "hoja".
Este es un ejemplo de árbol de decisión
A la pregunta ¿Debería aceptar una nueva propuesta laboral? el árbol actuará de la siguiente forma
La primer pregunta será el salario, si es menor a 50.000$ se declina, si es mayor se pasa a la siguiente pregunta qué es si el tiempo de transporte es de 1 hora o más, si es cierto, se vuelve a declinar, finalmente, si el tiempo es menor, se evalúa si se entrega café gratis y allí se toma la decisión final
Cada decisión final es un nodo hoja, cada bifurcación es un nodo de decisión y la pregunta inicial es el nodo raíz
En un contexto un poco más técnico se puede decir que cada nodo bifurca gracias a una variable, es decir, en un contexto de Machine Learning, tendríamos en nuestro eje X los valores de salario, el tiempo de desplazamiento (en horas) y el café gratis como booleano
Esta es la terminología clave en los árboles de decisión
Nodo raíz: El nodo inicial donde empieza el árbol, en este caso, la pregunta inicial del salario
División: Es el proceso mediante el cuál un nodo se divide en otros posibles nodos (de decisión u hojas)
Nodo de decisión: Es el nodo de contiene la decisión de evaluación que va a derivarse en una división (el nodo de raíz es por decisión un nodo de decisión)
Nodo hoja (o nodo terminal): Es el nodo que toma una decisión, en él no hay una decisión, por lo que no crecerá más por ese lado
Poda (Pruning): La poda es un mecanismo para evitar que los árboles crezcan infinitamente, según el depth definido en la creación del modelo, el pruning cortará todos aquellos nodos que superen la profundamente límite
Rama: Las ramas de un nodo son todas las subdivisiones a partir de un nodo de decisión, se puede decir que le pertenecen (según el nodo y la profundidad que estemos observando). En el caso del nodo raíz, se crean 2 ramas, una a la izquierda (y todos sus subniveles) y otra a la derecha (que directamente es un nodo hoja)
Nodo madre/padre y nodo hijo: Los nodos padres son aquellos que contienen nodos hijos, y los nodos hijos son aquellos contenidos por sus nodos padres
Los árboles de decisión son algoritmos de aprendizaje supervisado que se utilizan para clasificación o regresión. Funcionan dividiendo los datos en ramas basadas en preguntas simples sobre las características (features), hasta llegar a una predicción.
🌳 ¿Cómo funciona un árbol de decisión?
Inicio (nodo raíz):
El árbol comienza con todos los datos en un nodo inicial.
División (nodos internos):
Se elige la característica (feature) que mejor separa los datos según un criterio (por ejemplo, entropía, índice Gini o reducción de varianza).
Ramas:
Se crean ramas según los valores de esa característica. Cada rama lleva a un subconjunto del dataset.
Repetición:
Este proceso se repite recursivamente en cada subconjunto, formando un árbol.
Fin (hojas):
Cuando no se puede dividir más (por ejemplo, los datos están completamente separados o se llega a un límite de profundidad), se hace una predicción basada en la mayoría de clase (clasificación) o en el promedio (regresión).
🧠 Ejemplo simple (Clasificación):
¿Sobrevivió una persona en el Titanic?
Variables:
Edad
Sexo
Clase del boleto
El árbol podría hacer:
¿Sex_female == 1?
Sí → ¿Pclass <= 2?
Sí → Probabilidad alta de sobrevivir
No → Probabilidad media
No → ¿Age <= 10?
Sí → Probabilidad media
No → Probabilidad baja
⚙️ Criterios de división comunes:
Gini (por defecto en sklearn): mide impureza
Entropía: mide la cantidad de información necesaria para clasificar
MSE (para regresión): error cuadrático medio
✅ Ventajas:
Fácil de entender e interpretar
No requiere normalización de datos
Puede trabajar con variables categóricas y numéricas
❌ Desventajas:
Puede sobreajustar (overfitting) si no se poda o se limita la profundidad
Poca estabilidad: cambios pequeños en los datos pueden cambiar mucho el árbol