post list
QuantDare
categories
artificial intelligence

Classification trees in MATLAB

xristica

artificial intelligence

Applying Genetic Algorithms to define a Trading System

aparra

artificial intelligence

Graph theory: connections in the market

T. Fuertes

artificial intelligence

Data Cleansing & Data Transformation

psanchezcri

artificial intelligence

Learning with kernels: an introductory approach

ogonzalez

artificial intelligence

SVM versus a monkey. Make your bets.

P. López

artificial intelligence

Clustering: “Two’s company, three’s a crowd”

libesa

artificial intelligence

Euro Stoxx Strategy with Machine Learning

fjrodriguez2

artificial intelligence

Visualizing Fixed Income ETFs with T-SNE

j3

artificial intelligence

Hierarchical clustering, using it to invest

T. Fuertes

artificial intelligence

Markov Switching Regimes say… bear or bullish?

mplanaslasa

artificial intelligence

“K-Means never fails”, they said…

fjrodriguez2

artificial intelligence

What is the difference between Bagging and Boosting?

xristica

artificial intelligence

Outliers: Looking For A Needle In A Haystack

T. Fuertes

artificial intelligence

Machine Learning: A Brief Breakdown

libesa

artificial intelligence

Stock classification with ISOMAP

j3

artificial intelligence

Sir Bayes: all but not naïve!

mplanaslasa

artificial intelligence

Returns clustering with k-Means algorithm

psanchezcri

artificial intelligence

Confusion matrix & MCC statistic

mplanaslasa

artificial intelligence

Reproducing the S&P500 by clustering

fuzzyperson

artificial intelligence

Clasificando el mercado mediante árboles de decisión

xristica

artificial intelligence

Árboles de clasificación en Matlab

xristica

artificial intelligence

Redes Neuronales II

alarije

artificial intelligence

Análisis de Componentes Principales

j3

artificial intelligence

Vecinos cercanos en una serie temporal

xristica

artificial intelligence

Redes Neuronales

alarije

artificial intelligence

Caso Práctico: Multidimensional Scaling

rcobo

artificial intelligence

Random forest vs Simple tree

xristica

07/01/2015

No Comments
Random forest vs Simple tree

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:

nn (3)nn (8)

¿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 *:

rf_results

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.

rf_detail0

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:

rf_range

Claramente la técnica random forest es mucho menos sensible a la variación en el conjunto de aprendizaje.

rf_detail1

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.

Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someone

add a comment

wpDiscuz