Hola Platzinautas, les recomiendo que investiguen XGBoost un modelo regresor muy poderoso, en este ejemplo en particular obtuvo mejor desempeño que el recomendado con un accuracy un 10% superior, les comparto el código con los dos modelos para que comparen, por otro lado los valores del XGBoost están por defecto, se le pueden configurar y setear como los estimators, y mejorar aun mas.
XGBoost, que significa "eXtreme Gradient Boosting", es una biblioteca de código abierto y eficiente para implementar algoritmos de boosting en árboles. Es especialmente popular en competiciones de ciencia de datos y aprendizaje automático debido a su rendimiento y capacidad para manejar conjuntos de datos grandes y complejos.
Aquí hay algunas características clave de XGBoost:
Gradient Boosting: XGBoost sigue el enfoque de boosting, que implica combinar múltiples modelos débiles (en este caso, árboles de decisión) para formar un modelo más fuerte.
Regularización: XGBoost incorpora técnicas de regularización para evitar sobreajuste y mejorar la generalización del modelo.
Manejo de valores perdidos: XGBoost puede manejar valores perdidos en los datos de entrada, evitando la necesidad de imputación previa.
Funciones de pérdida personalizadas: Permite a los usuarios definir y utilizar sus propias funciones de pérdida para adaptarse a problemas específicos.
Paralelización y Optimización: XGBoost está diseñado para ser eficiente y escalable, aprovechando la paralelización y la optimización de recursos.
Soporte para múltiples lenguajes de programación: Aunque XGBoost está implementado en C++, ofrece interfaces para varios lenguajes, incluidos Python, R, Java y Scala.
Para utilizar XGBoost en Python, por ejemplo, puedes instalar la biblioteca usando pip:
bash codepip install xgboost
Luego, puedes importar y usar la biblioteca en tu código de la siguiente manera:
pythonCopy codeimport xgboost as xgb
# Crear un clasificador XGBoostmodel = xgb.XGBClassifier(objective="binary:logistic", random_state=42)
# Entrenar el modelo
model.fit(X_train, y_train)
# Hacer predicciones
predictions = model.predict(X_test)
Este es solo un ejemplo básico, y XGBoost también se puede utilizar para problemas de regresión y otros escenarios. Además, puedes ajustar muchos hiperparámetros para optimizar el rendimiento del modelo en tu conjunto de datos específico.
Al ser de lista blanca, me parece muy interesante su uso en la agricultura, como un método de aprendizaje de las diferentes decisiones tomadas en las etapas de siembra y cosecha.
Gracias por tu aporte Mauricio :)
Se puede aplicar en el proceso de evaluación del cliente para determinar si es factible o no otorgar un crédito a un potencial cliente en base a datos cuantitativo y cualitativo del cliente.
Si hablamos de los arboles decisicion necesitamos saber que:
Fuente:
Ventajas
Fácil de entender y de interpretar. Los árboles se pueden visualizar.
Requiere poca preparación de datos.
El costo de usar el árbol (es decir, predecir datos) es logarítmico en la cantidad de puntos de datos usados para entrenar el árbol.
Capaz de manejar datos numéricos y categóricos. Sin embargo, la implementación de scikit-learn no admite variables categóricas por ahora.
Capaz de manejar problemas de múltiples salidas.
modelo de caja blanca.
Posibilidad de validar un modelo mediante pruebas estadísticas. Eso permite dar cuenta de la fiabilidad del modelo.
Tiene un buen desempeño incluso si sus supuestos son algo violados por el verdadero modelo a partir del cual se generaron los datos.
Desventajas
Los aprendices pueden crear árboles demasiado complejos que no generalizan bien los datos. Esto se llama sobreajuste.
Pueden ser inestables porque pequeñas variaciones en datos pueden generar un árbol completamente diferente. Este problema se mitiga mediante el uso de árboles de decisión dentro de un conjunto.
Las predicciones de los árboles de decisión no son uniformes ni continuas, sino aproximaciones constantes por partes, como se ve en la figura anterior. Por lo tanto, no son buenos para la extrapolación.
Dichos algoritmos no pueden garantizar la devolución del árbol de decisión globalmente óptimo. Esto se puede mitigar entrenando varios árboles en un alumno de conjunto, donde las características y las muestras se muestrean aleatoriamente con reemplazo.
Hay conceptos que son difíciles de aprender porque los árboles de decisión no los expresan fácilmente, como XOR, problemas de paridad o multiplexor.
Los aprendices crean árboles sesgados si dominan algunas clases. Por lo tanto, se recomienda equilibrar el conjunto de datos antes de ajustarlo al árbol de decisión.
Buen summary!!
Ventajas:
Algoritmo de caja blanca.
Resultados faciles de interpretar y entender.
Las combinaciones de los mismos pueden dar resultados muy certeros. Por ejemplo, random forest.
Desventajas:
Tienden a sobreajuste u overfitting.
Se ven influenciadas por los outliers(valores muy diferentes.
Crear arboles demasiado complejos puede conllevar que no se adapten bien a los nuevos datos.
Se pueden crear arboles sesgados si una de las clases es mas numerosa.
¿Cuando usar arboles de decision?
Sencillo y facil de entender.
Funcionan bastante bien con grandes conjuntos de datos.
Relativamente robusto.
Es un metodo muy util para analizar datos cuantitativos.
Aplica para problemas de clasificacion y regresion.
Muy bueno :)
¿que modelo seria el mas adecuado para predecir resultados electorales?
Hola Alex! hay muchos realmente. Depende de lo que busques, si es un candidato, una clasificacion! podria ir bien :)
árbol de decisión se pueden aplicar en una variedad de campos:
Finanzas:
Evaluación de Riesgos: Para predecir la probabilidad de que un cliente no pague un préstamo.
Detección de Fraude: Identificar transacciones sospechosas.
<!---->
Marketing:* Segmentación de Clientes: Clasificar a los clientes en diferentes grupos para campañas publicitarias dirigidas.
Predicción de Abandono: Determinar qué clientes tienen más probabilidades de dejar de usar un servicio.
Medicina:* Diagnóstico: Ayudar a los médicos a diagnosticar enfermedades basándose en síntomas y antecedentes del paciente.
Tratamientos Personalizados: Recomendar tratamientos basados en características individuales del paciente.
Retail:* Gestión de Inventarios: Predecir la demanda de productos y optimizar el stock.
Análisis de Carrito de Compras: Identificar patrones de compra y productos que se compran juntos.
Tecnología:* Reconocimiento de Voz y Texto: Clasificar y entender comandos de voz o texto.
Filtrado de Spam: Identificar correos electrónicos no deseados.
Recursos Humanos:* Selección de Personal: Evaluar candidatos y predecir el desempeño laboral.
Determinación de Retención: Identificar empleados con alto riesgo de abandonar la empresa.
Hace poco hice un proyecto de estilometría, es decir, distinguir diversos estilos de escritura de distintos autores. Probé varios algoritmos, entre ellos árboles de decisión.
Aunque los árboles de decisión tenían peor desempeño que otros modelos, daban resultados muy interpretables y útiles. ¡ Y muy interesantes! Por ejemplo, la relación entre comas y puntos en el texto era fundamental (frases largas o cortas). Hay autores que solo usan "fuera", otros solo usan "fuese" y otros, según su procedencia, nunca usan el pasado de subjuntivo.
Es decir, estos algoritmos son muy útiles no solo para construir modelos, también para entender internamente cómo está relacionado un conjunto de datos.
Gracias Raimundo por compartir, interesante tu aporte. Enhorabuena :)
¿Qué pasa si hay valores atípicos?
Los árboles de decisión son increíblemente robustos frente a los valores atípicos (outliers). Como el algoritmo funciona haciendo divisiones basadas en umbrales (por ejemplo, '¿la edad es mayor a 50?'), un valor extremo simplemente caerá en la misma rama que el resto de los valores que cumplen la condición. No sesgará la predicción general ni alterará la pendiente del modelo, a diferencia de lo que ocurre en algoritmos basados en distancias o regresiones.
Para los que están en el sector banca, este este tipo de algoritmo es un buen punto de partida para construir modelos de ML para la detección de fraude en compras por internet.
Los árboles de decisión son algoritmos de caja blanca, es decir, se puede hacer seguimiento a los patrones que están aprendiendo internamente (y más importante, entenderlos), los resultados son sencillos de interpretar y entender y todas sus productos derivados (como random forest) heredan estas características
En una nota negativa, estos algoritmos tienden a sufrir de overfitting fácilmente, además se ven influenciados por outliers, gracias a estos factores, árboles de mucha complejidad pueden no adaptarse correctamente a nuevos conjuntos de datos y tienden a sesgarse si hay imbalance de clases
Los árboles de decisión son especialmente útiles porque son sencillos de entender e interpretar, funcionan bien en grandes volúmenes de datos, son medianamente robustos (soportan un buen nivel de generalización). Una nota clave es que solo son usables para tareas de clasificación y regresión
Debes considerar usar árboles de decisión cuando:
✅ 1. Quieres interpretabilidad
Los árboles son fáciles de visualizar y entender. Puedes explicar decisiones con reglas simples del tipo “si... entonces...”.
Ideal cuando necesitas explicar el modelo a personas no técnicas.
✅ 2. Tus datos incluyen variables categóricas y numéricas
Los árboles manejan bien ambos tipos sin necesidad de normalización ni transformación compleja.
✅ 3. Tienes relaciones no lineales
A diferencia de la regresión lineal, los árboles capturan interacciones y no linealidades entre variables automáticamente.
✅ 4. Quieres saber qué variables son más importantes
El modelo calcula automáticamente importancia de características, lo cual es útil para selección de variables o interpretación.
✅ 5. Los datos tienen valores faltantes o están mal escalados
Los árboles son resistentes a valores faltantes (algunos algoritmos los manejan bien) y no necesitan normalización.
✅ 6. Tu problema es de clasificación o regresión
Puedes usar árboles para:
Clasificación (ej. detección de spam, predicción de enfermedad)
Regresión (ej. predicción de precios, demanda, consumo)
❌ ¿Cuándo evitar árboles de decisión?
Cuando necesitas altísima precisión: suelen tener peor desempeño que métodos como Random Forest o XGBoost.
Cuando el dataset es muy pequeño y complejo: puede sobreajustar.
Cuando necesitas predicciones muy estables: los árboles simples pueden variar bastante ante pequeños cambios en los datos.
📌 En resumen:
Usa árboles de decisión cuando necesitas un modelo rápido, interpretable y versátil, especialmente en las primeras etapas del análisis o cuando el entendimiento del modelo es prioritario.
tengo una duda con respecto a los outliers, se comenta que los arboles de decision son robustos a los outliers ya que a la hora de crear nodos estos no toman en cuenta los valores absolutos y me parece que esto es verdad cuando estamos resolviendo un problema de clasificacion (Y es categorica) y alguna X es continua, asi que los nodos se construyen basandose en una variable categorica, en este caso los outliers en X no deberian de afectar al resultado, sin embargo cuando la variable Y es continua (un problema de regresion) y esta contiene algun outlier entonces el modelo si se puede ver afectado ya que tratara de calcular la media para generar la respuesta en el nodo hoja
Por ejemplo cuando una X es continua con outliers, por ejemplo la edad: [12, 11, 14, 15, 67], 67 es un outlier, sin embargo a la hora de usar la edad para crear nodos, el arbol de decicion puede generar algo como:
si edad >14: ir al nodo izquierdo
si no: ir al nodo derecho
o
si edad >=15: ir al nodo izquierdo
si no: ir al nodo derecho
por lo que realmente el outlier no esta afectando a la creacion de nuevos nodos. Me gustaria saber si este razonamiento es correcto o me estoy olvidando de algun detalle de como funcionan los arboles de decision
Al momento de clasificar podemos colocar un limite de cuantas filas vamos a hacer split y efectivamente al hacer este split en tus datos queda el outlier, para estos casos se tienen diferentes opciones de como capturar el outlier, primero podemos aumentar cuantos splits hacemos asi capturamos de mejor manera estos datos atipicos, ademas que generalizan mejor con mas columnas y lo otro seria eliminar este dato o dejarlo clippeado al percentil 99 o 0 para capturar ese tipo de dato y el modelo aprenda que un valor por encima o por debajo de estos datos no es de mucha importancia, en ejemplos de prediccion de efermedades, una presion arterial en el percentil 99 de 180 es lo mismo que 250, ya que ambos tienen presiones muy altas, en cambio cuando manejamos detecciones de fallas o valores extremos hay modelos y ensambles mas robustos que manejan este tipo de logica.
¿Cuándo usar árboles de decisión?
✅ Si necesitas interpretabilidad y explicaciones claras.
✅ Si los datos tienen relaciones simples y no lineales.
✅ Si tienes un dataset pequeño a mediano y quieres resultados rápidos.
✅ Si es una tarea de clasificación sencilla.
✅ Si estás construyendo un prototipo inicial o como base para modelos más complejos.
❗ No son la mejor opción si…
Buscas la máxima precisión en datos complejos (considera Random Forest, XGBoost, etc.).
El dataset es muy grande (los árboles pueden crecer mucho y ser lentos).
Necesitas extrapolar a valores fuera del rango de entrenamiento (mejor usar modelos como regresión lineal o redes neuronales en esos casos).
Cuando un dataset tiene muchas variables categóricas en comparación con las numéricas, los árboles de decisión pueden manejar ambas de forma efectiva, pero la calidad del modelo puede verse afectada. Las variables categóricas pueden convertirse en múltiples ramas, aumentando la complejidad del árbol.
Los árboles de decisión también pueden ser binarios, incluso si las variables categóricas tienen más de dos valores. En este caso, se pueden aplicar técnicas como la codificación one-hot para representar estas variables y facilitar su uso en el modelo. Recuerda que la selección de variables y la optimización del modelo son cruciales para obtener buenos resultados.
Casos prácticos comunes:
Créditos y finanzas: Para determinar si un solicitante debe recibir un préstamo basado en varias características (ingreso, historial de crédito, etc.).
Medicina: En el diagnóstico de enfermedades, donde hay múltiples variables (síntomas, edad, pruebas) que influyen en la decisión.
Marketing: Para segmentación de clientes, donde se pueden hacer decisiones basadas en el comportamiento de los usuarios.
Cuando no usar árboles de decisión:
Cuando se tiene un conjunto de datos muy pequeño: Los árboles pueden sobreajustarse fácilmente si los datos son limitados.
Cuando se necesita máxima precisión en modelos de clasificación: Aunque los árboles de decisión son efectivos, otros métodos como las redes neuronales o los modelos de ensamblado (e.g. Random Forest, Gradient Boosting) suelen ofrecer mejores resultados de generalización.