5. Aprendizaje no supervisado y semi-supervisado
Nivel 10: Machine Learning Aplicado al Trading
Los algoritmos de aprendizaje no supervisado se usan cuando solo tenemos datos de entrada y ningún valor de salida correspondiente. No hay respuestas correctas, y por tanto no hay profesor. Lo que estos algoritmos sí saben hacer es encontrar estructura oculta o relaciones entre las distintas entradas. Uno de los mejores casos de uso del aprendizaje no supervisado son los problemas de agrupamiento.
Ejemplos de tareas no supervisadas:
- Clustering o agrupamiento, como K-means.
- Reducción de dimensionalidad, como el análisis de componentes principales (PCA).
Hay un matiz que se confunde a menudo: no supervisado no quiere decir que no haya datos, ni que el algoritmo trabaje sin objetivo. Quiere decir que no hay etiquetas. El algoritmo sí optimiza algo, por ejemplo la distancia de cada punto al centro de su grupo, pero nadie le ha dicho de antemano cuál era la respuesta buena.
En mercados, el ejemplo natural es agrupar activos por comportamiento sin imponer previamente el sector al que pertenecen. Nadie etiqueta las acciones como "defensiva" o "cíclica" en los datos de precios: si emergen esos grupos, emergen de la propia estructura de los retornos.
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
# precios: DataFrame con una columna de cierre por ticker
retornos = np.log(precios / precios.shift(1)).dropna()
# Describimos cada acción con un puñado de rasgos de comportamiento
rasgos = pd.DataFrame({
"vol_anual": retornos.std() * np.sqrt(252),
"retorno_medio": retornos.mean() * 252,
"asimetria": retornos.skew(),
"beta_mercado": retornos.apply(
lambda c: np.cov(c, retornos.mean(axis=1))[0, 1] / retornos.mean(axis=1).var()
),
})
X = StandardScaler().fit_transform(rasgos)
grupos = KMeans(n_clusters=4, n_init=50, random_state=42).fit_predict(X)
rasgos["grupo"] = grupos
print(rasgos.sort_values("grupo"))Fíjate en que en ningún momento hemos pasado una y. No hay verdad que acertar: hay una partición del espacio que el algoritmo considera compacta. Interpretar qué significa cada grupo es trabajo humano, y ahí es donde el analista aporta.
El aprendizaje semi-supervisado se usa cuando hay una cantidad enorme de datos de entrada pero solo una pequeña cantidad de datos de salida etiquetados. Estos problemas se sitúan justo en medio del aprendizaje supervisado y el no supervisado, y por eso se combinan técnicas de ambos mundos. Uno de los mejores ejemplos es identificar objetos en fotografías: algunas están etiquetadas como manzanas o como leones, pero la inmensa mayoría no lo está.
En finanzas el caso es idéntico y muy frecuente: tienes millones de noticias, informes de resultados y publicaciones, de los cuales un analista solo ha etiquetado a mano unos cientos como positivos o negativos para la cotización. Con los cientos etiquetados entrenas de forma supervisada; con los millones no etiquetados aprendes la estructura del lenguaje o del espacio de documentos, y usas esa estructura para propagar etiquetas. Etiquetar es caro; observar es barato. Esa asimetría es exactamente la que justifica el enfoque semi-supervisado.