Continuando con los últimos posts, hoy os presento el random forest, una vuelta de tuerca más a los árboles de decisión.
Se trata de otra técnica de aprendizaje automático y nace como mejora sustancial de los árboles simples. Su sencillez la ha convertido en un método muy popular.
Partimos, como en todos estos métodos de aprendizaje supervisado, de un conjunto de características o atributos, las variables explicativas, y, por otro lado, asociadas a ellas, las clases o respuestas, lo que pretendemos explicar:
¿Qué es un random forest?
Random forest es un método que combina una cantidad grande de árboles de decisión independientes probados sobre conjuntos de datos aleatorios con igual distribución.
¿Cómo se construye un random forest?
La fase de aprendizaje consiste en crear muchos árboles de decisión independientes, construyéndolos a partir de datos de entrada ligeramente distintos. Se altera, por tanto, el conjunto inicial de partida, haciendo lo siguiente:
– Se selecciona aleatoriamente con reemplazamiento un porcentaje de datos de la muestra total.
Es habitual incluir un segundo nivel aleatoriedad, esta vez afectando los atributos:
– En cada nodo, al seleccionar la partición óptima, tenemos en cuenta sólo una porción de los atributos, elegidos al azar en cada ocasión.
Una vez que tenemos muchos árboles, 1000 por ejemplo, la fase de clasificación se lleva a cabo de la siguiente forma:
– Cada árbol se evalúa de forma independiente y la predicción del bosque será la media de los 1000 árboles. La proporción de árboles que toman una misma respuesta se interpreta como la probabilidad de la misma.
¿Qué aporta un random forest respecto de un árbol?
Estabilidad. La definición de la solución propuesta por los random forests se desajusta de la muestra de datos concreta que hemos elegido para generar el algoritmo, en comparación con el ajuste de un árbol individual simple.
Lo comprobamos: Diseñamos un sistema de trading basado en un árbol de clasificación y creamos el sistema análogo utilizando random forest.
- Atributos: una serie de características temporales de la serie sobre las cuales voy a tomar la decisión.
- Clases: mido para cada punto el movimiento del precio a continuación y tomo respuestas binarias para aplicar árboles de clasificación, el precio sube 1 y el precio no sube 0.
- Fase de aprendizaje: utilizo el principio del histórico para construir los árboles, en el ejemplo 3000 días.
- Fase de clasificación: utilizamos los años restantes para valorar el acierto de ambos métodos. Para cada dato de este periodo sin clasificar tenemos la respuesta estimada por el árbol y por el random forest, sube (1) o baja (0) el precio y con qué probabilidad.
El sistema apostará por la subida del precio cuando la probabilidad de la clase 1 sea mayor que la de la clase 0 y por la bajada en caso contrario, utilizando estas mismas probabilidades para apostar más o menos en cada momento.
Veamos qué resultados obtenemos sobre varias series financieras. Denotamos cada una como test *:
El resultado, positivo o negativo, es más moderado cuando utilizamos random forests. No ocurre siempre que el resultado medio del random forest sea superior al del árbol, pero en cualquier caso el riesgo asumido es menor, lo que genera un drawdown mucho más controlado.
Cada uno de los árboles que forman parte del bosque ha sido diseñado para ajustarse a un escenario diferente, aunque todos ellos parecidos al escenario real a aprender. Esto aporta coherencia al random forest y capacidad de ajustarse adecuadamente a nuevos escenarios desconocidos.
Si construyéramos nuevamente los árboles anteriores, pero esta vez teniendo en cuenta no 3000, sino por ejemplo, 3100 datos o 2900, esperaríamos que nuestra estrategia funcionara de forma similar a la original que acabamos de ver. Esta afirmación no es cierta para los árboles de decisión que son altamente ajustables, pero este problema se reduce con el uso de random forests.
Modificamos la prueba anterior: construimos cada árbol individual y random forest teniendo en cuenta un conjunto de datos un poco menor y un poco mayor (desde 2500 hasta 3500 días) y analizamos cuál es la variabilidad de los resultados obtenidos. Por un lado el rango de resultados obtenidos y por otro, la desviación estándar de los mismos:
Claramente la técnica random forest es mucho menos sensible a la variación en el conjunto de aprendizaje.
Por lo tanto, no es cierto que la técnica de random forest nos vaya a conducir a sistemas con mayor acierto de media que cualquier árbol de decisión. Sin embargo, sí podemos asegurar que los random forests garantizan un menor drawdown y una mayor estabilidad. Estas ventajas son suficientemente importantes para justificar que la complejidad adicional merezca la pena.