3. Qué es exactamente el machine learning
Nivel 10: Machine Learning Aplicado al Trading
Hay una definición divulgativa muy repetida: el machine learning es el campo de la informática que da a los ordenadores la capacidad de aprender sin haber sido programados explícitamente para ello. Es útil como titular, pero es vaga: no dice qué significa aprender ni cómo comprobar si de verdad ha ocurrido.
El machine learning nació durante el desarrollo temprano de la inteligencia artificial y el reconocimiento de patrones, y como todas las tecnologías creció hasta convertirse en industria de la mano de los negocios. Existe una definición formal ampliamente usada, de Tom M. Mitchell:
"Se dice que un programa de ordenador aprende de la experiencia E respecto a cierta clase de tareas T y una medida de rendimiento P, si su rendimiento en las tareas de T, medido por P, mejora con la experiencia E."
La definición dice dos cosas importantes: nuestro programa tiene que aprender de los datos, y tiene que mejorar su rendimiento. Ambas partes son exigibles y comprobables.
El ejemplo clásico es predecir el precio de una vivienda: primero alimentamos el algoritmo con datos como los precios actuales según los metros cuadrados, el número de habitaciones y demás. A partir de esos datos, el algoritmo aprende y mejora sus estimaciones reduciendo los errores de predicción. Podemos medir el rendimiento ejecutando el algoritmo sobre datos de entrada nuevos cuyo resultado conocemos y observando la tasa de error. Nuestro objetivo será reducir esa tasa de error.
Traducido a un sistema de trading, las tres piezas quedan así:
- T (tarea): predecir el signo del retorno del S&P 500 al día siguiente.
- P (medida de rendimiento): el acierto direccional sobre datos que el modelo no ha visto durante el entrenamiento; o mejor, en producción, el Sharpe de la estrategia derivada.
- E (experiencia): el histórico de precios, volúmenes e indicadores con los que se entrena.
Esta descomposición es más que un ejercicio académico. Obliga a fijar la métrica antes de entrenar, que es exactamente el punto donde más autoengaños se cuelan en el trading cuantitativo. Y obliga a que P se mida sobre datos no vistos: si P mejora sobre los mismos datos con los que aprendiste, no has demostrado nada, porque memorizar también hace bajar el error dentro de muestra.
# La definición de Mitchell, escrita como código
def aprende(modelo, experiencia_creciente, tarea_test, metrica):
resultados = []
for E in experiencia_creciente: # cada vez más datos de entrenamiento
modelo.fit(E["X"], E["y"])
p = metrica(tarea_test["y"], modelo.predict(tarea_test["X"]))
resultados.append(p)
# Aprende si P mejora conforme crece E, medido SIEMPRE sobre datos no vistos
return resultados[-1] > resultados[0], resultadosSi esa función devuelve False, tienes un programa que procesa datos, pero no un programa que aprende.