Una introducción a la técnica de Random Forest:
https://www.iartificial.net/random-forest-bosque-aleatorio/
Esta imagen lo explica todo
Y los resultados parecen prometedores...
Pero quizás con un ejemplo se entienda mejor...
Imagina que tienes que tomar una decisión médica importante. En lugar de confiar en un solo doctor (que podría tener sesgos o equivocarse), decides consultar a un comité de 100 doctores. Cada doctor hace preguntas diferentes basadas en su experiencia y, al final, se vota. La decisión de la mayoría es la que se toma.
Eso es un Random Forest: un conjunto ("ensemble") de muchos Árboles de Decisión trabajando juntos.
Los dos pilares de la "Aleatoriedad" (Random)
Para que el comité sea bueno, los doctores no pueden ser clones; deben pensar de forma diferente. Random Forest logra esto mediante dos técnicas:
Bagging (Bootstrap Aggregating): Cada árbol se entrena con una muestra aleatoria del dataset original (algunos datos se repiten, otros se quedan fuera).
Selección aleatoria de características (Features): Cuando un árbol va a cortar una rama, no mira todas las variables disponibles. Elige un subgrupo al azar (por ejemplo, si hay 20 variables, solo mira 5 para ese corte).
Resultado: Árboles muy diferentes entre sí que, al combinarse, reducen drásticamente el sobreajuste (overfitting) y entregan predicciones muy robustas.
¿Cómo lo implementa Keras?
Históricamente, Keras era solo para Redes Neuronales Profundas (Deep Learning) y usábamos Scikit-Learn para Random Forest. Sin embargo, Google lanzó Keras Decision Forests (KDF), lo que permite entrenar modelos basados en árboles directamente en Keras, disfrutando de sus ventajas (como una integración perfecta en pipelines de producción con TensorFlow).
Para usarlo, necesitas tener instalada la librería específica:
pip install tensorflow_decision_forests
Ejemplo Práctico de Implementación
Aquí tienes cómo estructurar un Random Forest usando la API de Keras:
import tensorflow as tf
import tensorflow_decision_forests as tfdf
import pandas as pd
# 1. Cargar tus datos (usaremos un ejemplo clásico de clasificación)
# Supongamos que tienes un archivo train.csv y test.csv
train_df = pd.read_csv("train.csv")
test_df = pd.read_csv("test.csv")
# 2. Convertir los DataFrames de Pandas a Datasets de TensorFlow
# Nota: Keras DF detecta automáticamente columnas numéricas y categóricas.
train_ds = tfdf.keras.pd_dataframe_to_tf_dataset(train_df, label="columna_objetivo")
test_ds = tfdf.keras.pd_dataframe_to_tf_dataset(test_df, label="columna_objetivo")
# 3. Crear el modelo de Random Forest con Keras
# Aquí no necesitas compilar con optimizadores o funciones de pérdida, se configuran solos.
model = tfdf.keras.RandomForestModel()
# 4. Entrenar el modelo
# Los árboles de decisión se entrenan muy rápido en comparación con las redes neuronales
model.fit(train_ds)
# 5. Evaluar y predecir
self_evaluation = model.evaluate(test_ds, return_dict=True)
print(f"Precisión en Test: {self_evaluation['accuracy']:.4f}")
# 6. Guardar el modelo en el formato estándar de Keras
model.save("mi_bosque_aleatorio_keras")
Ventajas de usar Keras Decision Forests
Cero Preprocesamiento: No necesitas normalizar los datos numéricos ni hacer One-Hot Encoding a las variables de texto (categóricas). Keras DF lo gestiona de forma nativa.
Valores Faltantes: Tolera perfectamente los
NaNo datos nulos en el dataset.Modelos Híbridos: Puedes combinar este Random Forest con una Red Neuronal de Keras (por ejemplo, usar una red para extraer características de imágenes y pasar el resultado a un Random Forest).
En Keras está implementado:
https://www.tensorflow.org/decision_forests/api_docs/python/tfdf/keras/RandomForestModel