Saltar al contenido
Lecciones de Finanzas

Machine Learning para Alpha

Modelos, ensembles e importancia de variables

Elegir y domar modelos para datos de baja señal: modelos lineales frente a ensembles de árboles, por qué la regularización y el ensembling (bagging y boosting) se ganan su sitio cuando los datos son casi todo ruido, y cómo leer la importancia de variables MDI y MDA sin dejarte engañar por ellas.

15 min Actualizado 17 jun 2026

En la mayor parte del machine learning, los datos son generosos. Enséñale a un modelo un millón de fotos de gatos etiquetadas y la relación señal-ruido (SNR, por signal-to-noise ratio) —cuánto de los datos es patrón real y repetible frente a basura aleatoria— es enorme: un gato es un gato, los píxeles no mienten, y una red neuronal lo bastante hambrienta memoriza el universo felino entero y aun así generaliza. Los rendimientos financieros son justo el tipo de datos opuesto. El rendimiento de mañana de una acción es quizá un 1% de señal y un 99% de ruido, y la señal ni siquiera es estacionaria: decae, muta y se arbitra hasta desaparecer en cuanto demasiada gente la encuentra.

Ese único hecho reescribe todos los instintos de modelado que importaste de la visión por ordenador. El modelo llamativo y ultraflexible que gana las clasificaciones de Kaggle con datos limpios, sobre rendimientos, memorizará amorosamente el ruido y se estrellará fuera de muestra. Esta lección va de elegir modelos que sobrevivan a ese entorno: cuándo preferir un humilde modelo lineal a un bosque de árboles, por qué la regularización y el ensembling dejan de ser opcionales, y cómo leer qué variables importan sin engañarte a ti mismo. Aquí, más simple no es una concesión: es la estrategia entera.

Before you read — take a guess

Estás modelando rendimientos diarios de acciones, donde aproximadamente el 1% de la variación es señal real y el 99% es ruido. Tienes dos candidatos: un árbol de decisión de profundidad 20 que ajusta el conjunto de entrenamiento casi a la perfección, y una regresión ridge que solo lo ajusta de forma laxa. ¿Cuál es la mejor apuesta fuera de muestra, y por qué?

Modelos lineales frente a árboles con datos de baja señal

Analogía. Imagina a dos estudiantes empollando para un examen con un libro de texto plagado de erratas. El primero aprende los conceptos: capta las ideas principales del libro, pero se encoge de hombros ante las erratas. El segundo memoriza el libro al pie de la letra, erratas incluidas, y borda un test sacado de esas páginas exactas. Luego llega el examen de verdad, sacado de una fuente nueva y correctamente escrita. El que aprendió conceptos lo hace bien; el memorizador, que aprendió las erratas como si fueran hechos, se hunde. Los datos financieros son el libro plagado de erratas, las erratas son el ruido, y el memorizador es tu modelo sobreajustado.

El equilibrio sesgo-varianza (repaso). El error esperado fuera de muestra de todo modelo se descompone en tres piezas:

E[(yf^(x))2]=(Sesgo[f^])2demasiado rıˊgido+Var[f^]demasiado nervioso+σε2ruido irreducible\mathbb{E}\big[(y - \hat{f}(x))^2\big] = \underbrace{\big(\text{Sesgo}[\hat{f}]\big)^2}_{\text{demasiado rígido}} + \underbrace{\text{Var}[\hat{f}]}_{\text{demasiado nervioso}} + \underbrace{\sigma^2_{\varepsilon}}_{\text{ruido irreducible}}

  • Sesgo (bias): el error de que el modelo sea demasiado simple para captar la relación verdadera (una línea recta intentando trazar una curva). Sesgo alto = infraajuste (underfitting).
  • Varianza (variance): cuánto saltaría el modelo ajustado si lo reentrenaras con una muestra distinta. Un modelo flexible persigue el ruido, así que una muestra nueva produce un ajuste radicalmente distinto. Varianza alta = sobreajuste (overfitting).
  • Ruido irreducible σε2\sigma^2_{\varepsilon}: la parte que nunca podrás predecir. Sobre rendimientos, este término es enorme.

Más flexibilidad (árboles más profundos, redes más grandes, más variables) baja el sesgo pero sube la varianza, y hay un punto óptimo. Dónde se sitúa depende enteramente de la SNR. Con datos limpios y de alta SNR el ruido irreducible es pequeño, así que la flexibilidad compensa: lleva el sesgo a cero y la varianza que recoges merece la pena. Sobre rendimientos, donde σε2\sigma^2_{\varepsilon} empequeñece a la señal, cualquier varianza que añadas es casi puro ajuste de ruido, así que el óptimo se desliza con fuerza hacia el extremo simple, de alto sesgo y baja varianza.

Definiciones: las dos familias de modelos.

  • Modelo lineal. Predice una suma ponderada de variables: y^=β0+β1x1++βpxp\hat{y} = \beta_0 + \beta_1 x_1 + \dots + \beta_p x_p. Rígido (solo puede trazar hiperplanos, nunca se dobla), así que tiene sesgo alto pero, por naturaleza, baja varianza. Pocos parámetros que retocar significa poco margen para memorizar ruido.
  • Árbol de decisión. Parte repetidamente los datos según umbrales de las variables (“si el momentum > 0,3 y la volatilidad < 0,2, predice +0,4%”). Trocea el espacio de variables en cajas, así que capta la no linealidad (relaciones curvas) y las interacciones (la variable A solo importa cuando la variable B es alta) gratis. Pero un árbol profundo puede aislar cada punto de entrenamiento en su propia hoja: sesgo cero, varianza catastrófica. Los árboles sobreajustan a la mínima.

Ejemplo resuelto: árbol demasiado profundo frente a ridge. Tienes 500 días de datos y una única variable genuinamente útil (la reversión a la media de la semana pasada), enterrada en ruido. Ajustas dos modelos.

ModeloR² dentro de muestraR² fuera de muestraQué pasó
Árbol de decisión de profundidad 200,98−0,04Troceó los 500 días en hojas minúsculas, ajustando el ruido de cada día. Perfecto sobre el pasado, peor que adivinar la media sobre el futuro (R² negativo).
Regresión ridge0,060,02Se negó a perseguir ondulaciones; captó solo la fina señal fiable. Modesto sobre el pasado, pero el 0,02 que encontró fuera de muestra es real y operable.

El R² dentro de muestra de 0,98 del árbol es la trampa. No aprendió el mercado; aprendió esos 500 días exactos, erratas incluidas. El poco glamuroso 0,02 fuera de muestra del modelo ridge vale infinitamente más que el glamuroso −0,04 del árbol, porque en finanzas solo te pagan fuera de muestra. Los árboles pueden ganar sobre rendimientos, pero solo cuando se les frena con dureza (poco profundos, en ensembles, regularizados: el resto de esta lección).

Tip:

Más simple es una virtud, no una concesión

Con datos de mucho ruido, la complejidad del modelo es un pasivo que pagas en varianza. El reflejo del ML de datos limpios —“échale un modelo más grande”— es exactamente lo contrario de lo que toca aquí. Un modelo lineal regularizado o un ensemble poco profundo no es el premio de consolación que aceptas cuando la red profunda no converge; con frecuencia es la respuesta correcta. Empieza simple, y haz que cualquier complejidad añadida se gane su sitio mejorando el rendimiento fuera de muestra, no el de dentro de muestra.

Completa el razonamiento sesgo-varianza para datos de baja SNR.

Elige la opción correcta para cada hueco y comprueba.

Sobre rendimientos financieros el es enorme, así que el modelo óptimo se sitúa hacia el extremo de . Un árbol de profundidad 20 tiene un sesgo muy pero una varianza muy , así que memoriza el ruido y el óptimo se desplaza hacia modelos más simples.

Regularización: gravar la complejidad

Analogía. La regularización es un impuesto a la complejidad. Sin gravar, un modelo gastará sus coeficientes a manos llenas, comprándose una mansión elaborada de ondulaciones para ajustar cada punto de datos, ruido incluido. Ponle un impuesto al tamaño de los coeficientes y de repente el modelo se vuelve frugal: solo “gasta” en variables que genuinamente arriman el hombro, y encoge el resto hacia cero. Cedes un poco de ajuste (sesgo) y recuperas mucha estabilidad (varianza). Sobre datos ruidosos eso es un trato fantástico.

Definición / objetivo. Los mínimos cuadrados ordinarios minimizan solo el error cuadrático. La regularización añade una penalización sobre el tamaño de los coeficientes β\beta:

  • Ridge (L2). Penaliza la suma de coeficientes al cuadrado. Encoge suavemente cada coeficiente hacia cero, pero nunca exactamente a cero.

β^ridge=argminβ i=1n(yixiβ)2+λj=1pβj2\hat{\beta}^{\text{ridge}} = \arg\min_{\beta}\ \sum_{i=1}^{n}\big(y_i - x_i^\top\beta\big)^2 + \lambda \sum_{j=1}^{p}\beta_j^2

  • Lasso (L1). Penaliza la suma de coeficientes en valor absoluto. Encoge y selecciona: lleva los coeficientes débiles exactamente a cero, realizando una selección automática de variables.

β^lasso=argminβ i=1n(yixiβ)2+λj=1pβj\hat{\beta}^{\text{lasso}} = \arg\min_{\beta}\ \sum_{i=1}^{n}\big(y_i - x_i^\top\beta\big)^2 + \lambda \sum_{j=1}^{p}|\beta_j|

  • Elastic net. Una mezcla de ambas penalizaciones (λ1βj+λ2βj2\lambda_1\sum|\beta_j| + \lambda_2\sum\beta_j^2): obtiene la selección del lasso más la estabilidad del ridge cuando las variables están correlacionadas (el lasso solo elige arbitrariamente una de un grupo correlacionado; el término L2 reparte la carga).

El mando λ\lambda (lambda) fija el tipo impositivo. λ=0\lambda = 0 es OLS pelado (sin impuesto, riesgo de sobreajuste total); λ\lambda \to \infty aplasta todos los coeficientes a cero (puro sesgo, ignora los datos). Ajustas λ\lambda por validación cruzada, y sobre rendimientos el óptimo validado suele ser agresivo.

El análogo en árboles. Los árboles no tienen coeficientes, así que los regularizas de forma estructural: limita cuán complejo puede llegar a ser un árbol individual:

  • max_depth: limita cuántas particiones de profundidad puede alcanzar un árbol (los árboles poco profundos no pueden aislar puntos individuales).
  • min_samples_leaf: exige que cada hoja contenga al menos, pongamos, 50 muestras, para que ninguna hoja se ajuste a un solo día afortunado.
  • max_features: deja que cada partición solo considere un subconjunto aleatorio de variables (también la clave de los random forests, más abajo).
  • Parada temprana (early stopping): en boosting, detén el entrenamiento en cuanto el error de validación deja de mejorar, antes de que empiece a ajustar ruido.

Ejemplo resuelto: ridge encogiendo un coeficiente ruidoso. Supón que la variable x3x_3 es puro ruido, pero en tu muestra de 500 días resultó correlacionar con los rendimientos, así que OLS le entrega un coeficiente de β3=0,40\beta_3 = 0,40. Fuera de muestra, ese 0,40 es un pasivo: x3x_3 no tiene poder predictivo real, así que cada vez que x3x_3 se mueve el modelo hace un ajuste confiado y equivocado. Ridge con un λ\lambda moderado lo encoge hacia cero:

CoeficienteOLS (sin penalización)Ridge (λ moderado)Efecto fuera de muestra
β3\beta_3 (variable de ruido)0,400,05Casi cero, así que los movimientos espurios de x3x_3 apenas sacuden la predicción
β1\beta_1 (señal real)0,300,26Ligeramente encogido pero aún haciendo su trabajo

Al gravar β3\beta_3 de 0,40 a 0,05, ridge impide que el modelo apueste por una casualidad. La señal real β1\beta_1 también se lleva un pequeño recorte (0,30 → 0,26) —ese es el sesgo que pagas—, pero la varianza que ahorras en el coeficiente de ruido más que compensa, y el error fuera de muestra baja.

La regularización encoge las estimaciones ruidosas hacia un anclaw = 40%
Coeficiente OLS (ruidoso)Coeficiente ridge (encogido)Objetivo de encogimiento (0)
0.0%-5.0%0.0%20.0%x₁ señalx₂ débilx₃ ruidox₄ ruidox₅ ruido
Fuerza de regularización (≈ λ)
40%
Dispersión OLS
22.0%
Dispersión ridge
13.2%

Cada punto es un coeficiente estimado. Sin regularización (izquierda), las variables de ruido (x₃–x₅) heredan coeficientes grandes y confiados a partir de casualidades de la muestra. Sube la fuerza y todos los coeficientes son arrastrados hacia cero (el ancla): los espurios colapsan más rápido porque no tenían señal real que los sostuviera. Esa compresión es exactamente la reducción de varianza que gana fuera de muestra.

Warning:

Trampa — estandariza antes de penalizar

Ridge y lasso penalizan el tamaño de los coeficientes, pero el tamaño del coeficiente depende de las unidades de la variable. Una variable medida en puntos básicos recibe un coeficiente minúsculo; la misma variable en decimales recibe uno enorme, y la penalización los machacaría de forma desigual sin ninguna buena razón. Estandariza siempre las variables (media cero, varianza unitaria) antes de ajustar un modelo penalizado, o tu regularización castigará en secreto a las variables por su escala de medida en lugar de por su irrelevancia.

Ajustas lasso y ridge al mismo modelo de rendimientos con 40 variables. El lasso devuelve 8 coeficientes no nulos; ridge devuelve 40 pequeños. Un colega dice 'son lo mismo con una penalización distinta'. ¿Cuál es la diferencia práctica clave?

Ensembling — bagging (matar la varianza)

Analogía. Pídele a un único experto algo achispado que adivine cuántas gominolas hay en un tarro y obtendrás una respuesta disparatada. Pídeselo a quinientos adivinos independientes y promedia, y la media de la multitud es asombrosamente precisa: los errores individuales, al ser aleatorios e incorrelacionados, se cancelan. Bagging (de bootstrap aggregating) es justo esto: construye muchos modelos de alta varianza, cada uno un poco equivocado en su propia dirección aleatoria, y promédialos. La señal compartida se refuerza; el ruido independiente se cancela.

Definición / fórmula. Entrena BB modelos, cada uno sobre una muestra bootstrap distinta (un remuestreo aleatorio con reemplazo de tus datos), y luego promedia sus predicciones. Si cada modelo tiene varianza σ2\sigma^2 y los modelos están mutuamente incorrelacionados, la varianza de la media es:

Var(1Bb=1Bf^b)=σ2B\text{Var}\Big(\tfrac{1}{B}\sum_{b=1}^{B}\hat{f}_b\Big) = \frac{\sigma^2}{B}

Así que la desviación típica del ensemble cae como σ/B\sigma/\sqrt{B}: exactamente la misma ley de diversificación 1/N1/\sqrt{N} que impulsa un libro de stat-arb basado en la amplitud. Más aprendices descorrelacionados → menos varianza, sin sesgo extra. Estás diversificando entre modelos en lugar de entre operaciones, pero son las mismas matemáticas.

El truco, y el arreglo del random forest. Ese limpio σ2/B\sigma^2/B solo se cumple si los modelos están incorrelacionados. Las muestras bootstrap se solapan mucho, así que los árboles entrenados con ellas salen parecidos —fuertemente correlacionados—, y los aprendices correlacionados apenas diversifican (igual que las apuestas correlacionadas en una cartera). Con una correlación media por pares ρ\rho entre los BB árboles, la varianza del ensemble es en realidad:

Var(ensemble)=ρσ2+1ρBσ2\text{Var}(\text{ensemble}) = \rho\,\sigma^2 + \frac{1-\rho}{B}\,\sigma^2

A medida que BB \to \infty el segundo término se desvanece, pero el primero, ρσ2\rho\sigma^2, no: la correlación pone un suelo duro a cuánta varianza puedes cancelar. Los random forests atacan ese suelo directamente: en cada partición, cada árbol solo puede considerar un subconjunto aleatorio de variables (max_features). Esto obliga a árboles distintos a apoyarse en señales distintas, descorrelacionándolos de forma mecánica: empuja ρ\rho a la baja para que el término 1ρBσ2\frac{1-\rho}{B}\sigma^2 realmente se encoja. La descorrelación, no el bootstrap, es la magia de verdad.

Ejemplo resuelto: varianza de una media. Cada árbol tiene varianza σ2=1,0\sigma^2 = 1,0. Promedia B=100B = 100 de ellos.

EscenarioCorr. por pares ρVarianza del ensemble =ρσ2+1ρBσ2= \rho\sigma^2 + \frac{1-\rho}{B}\sigma^2Recorte de varianza
Perfectamente independientes0,000+1100=0,0100 + \tfrac{1}{100} = 0,010100× — 1/B1/B completo
Levemente correlacionados (bagging simple)0,300,30+0,70100=0,3070,30 + \tfrac{0,70}{100} = 0,307~3,3× — suelo en 0,30
Descorrelacionados (random forest)0,050,05+0,95100=0,0600,05 + \tfrac{0,95}{100} = 0,060~17× — la mayor parte del beneficio recuperada

Lee las filas: los árboles correlacionados del bagging simple (ρ=0,30\rho = 0,30) chocan contra un muro: incluso con infinitos árboles, la varianza no puede bajar de 0,30. La aleatorización de variables del random forest recorta ρ\rho a 0,05, bajando el suelo a casi 0,06 y recuperando la mayor parte de la diversificación. Los árboles correlacionados no diversifican: por eso un bosque aleatoriza variables, no solo filas.

Bagging: la varianza del ensemble cae como 1/√B — hasta que la correlación la frena40.0%
0%10%20%30%40%Suelo de correlación (√ρ · σ) 9%1Número de árboles (B)30Error del ensemble (desv. típica)
Varianza del modelo diversificableSuelo de correlación (√ρ · σ)
Número de árboles (B)
1
Error del ensemble (desv. típica)
40.0%
Varianza del modelo diversificable
31.0%

Añade árboles descorrelacionados de uno en uno y el error del ensemble se desploma rápido: la ley del 1/√B, idéntica a diversificar entre operaciones independientes. Pero fíjate en el suelo sobre el que se aplana: ese es √ρ·σ, la correlación residual entre árboles que ninguna cantidad de árboles extra puede cancelar. La aleatorización de variables de un random forest baja ese suelo (ρ más pequeño); el bagging simple lo deja alto. Amplitud entre MODELOS, igual que amplitud entre apuestas.

Empareja cada idea de bagging / random forest con lo que hace.

Pick a term, then click its definition.

Ensembling — boosting (matar el sesgo)

Analogía. Si el bagging son quinientos adivinos independientes votando a la vez, el boosting es un relevo de especialistas, cada uno estudiando los errores del corredor anterior. El modelo 1 hace una predicción tosca. El modelo 2 no vuelve a predecir desde cero: predice los errores (residuos) del modelo 1, parcheándolos. El modelo 3 parchea lo que queda, y así sucesivamente. Cada aprendiz es débil y poco profundo, pero el equipo va limando secuencialmente el sesgo que el aprendiz base simple no podía captar solo.

Definición / fórmula. El boosting ajusta un modelo aditivo de forma secuencial. Empieza con una constante, luego en cada ronda mm ajusta un árbol pequeño hmh_m a los residuos actuales (en gradient boosting, al gradiente negativo de la pérdida) y añade una porción encogida de él:

Fm(x)=Fm1(x)+νhm(x)F_m(x) = F_{m-1}(x) + \nu\, h_m(x)

donde ν\nu (nu) es el ritmo de aprendizaje (learning rate): un factor de encogimiento, típicamente de 0,01 a 0,1, que dice “da solo un pequeño paso hacia arreglar los residuos en cada ronda”. XGBoost, LightGBM y compañía son implementaciones de gradient boosting muy optimizadas que añaden su propia regularización. Como el boosting ataca los residuos, reduce principalmente el sesgo: puede modelar relaciones que un único árbol poco profundo nunca podría.

El peligro. La reducción de sesgo es un arma de doble filo con datos ruidosos. Sigue ajustando residuos lo suficiente y el boosting empezará a “arreglar” el ruido: los residuos que nunca fueron señal. El boosting es también célebremente sensible a datos mal etiquetados o ruidosos: una etiqueta mala parece un residuo grande, así que el siguiente aprendiz se obsesiona con ella. Las defensas van todas de la contención:

  • Ritmo de aprendizaje ν\nu: pasos pequeños (0,01–0,05) para que ninguna ronda se sobrecomprometa con el ruido; combínalo con más rondas.
  • Submuestreo (subsampling): ajusta cada ronda sobre una fracción aleatoria de filas y/o columnas (stochastic gradient boosting), lo que a la vez descorrelaciona y regulariza.
  • Parada temprana (early stopping): vigila el error de validación y detente en el momento en que deje de mejorar, antes de que empiece el ajuste de ruido.
  • Aprendices base poco profundos: árboles de profundidad 2 a 4 (algo así como “tocones”), para que cada ronda añada solo un poco de flexibilidad.

Bagging frente a boosting: el contraste.

DimensiónBagging / random forestBoosting (gradient boosting / XGBoost)
Reduce principalmenteVarianzaSesgo
Cómo se combinan los aprendicesEn paralelo: todos independientes, luego promediadosSecuencial: cada uno ajusta los errores del anterior
Aprendiz baseÁrboles profundos, de alta varianza (los quieres fuertes)Árboles poco profundos, de alto sesgo (tocones)
Reacción a datos ruidosos/mal etiquetadosRobusto: el promediado diluye un árbol maloFrágil: persigue el residuo malo
Sobreajusta si…Casi nunca por añadir árboles (solo se estanca)Boosteas demasiado tiempo / ritmo de aprendizaje demasiado alto
Mando claven_trees, max_features (descorrelacionar)ritmo de aprendizaje ν\nu, rondas, parada temprana

Con datos limpios, un boosting bien ajustado suele batir al bagging. Con datos financieros ruidosos el veredicto está más reñido, y la fragilidad del boosting ante el ruido es un coste real, por lo que muchos fondos cuantitativos se apoyan en random forests o en un boosting fuertemente regularizado, con parada temprana y bajo ritmo de aprendizaje, en lugar de en un XGBoost al máximo.

Clasifica cada afirmación bajo el método de ensembling que describe.

Coloca cada elemento en su grupo.

  • Descorrelaciona los aprendices con subconjuntos aleatorios de variables en cada partición
  • Reduce principalmente la varianza promediando muchos aprendices
  • Robusto ante unos pocos puntos mal etiquetados: el promediado los diluye
  • Frágil ante datos mal etiquetados: un residuo malo se parchea obsesivamente
  • Entrena los aprendices en paralelo y luego los combina
  • Necesita un ritmo de aprendizaje ν pequeño y parada temprana para evitar ajustar el ruido
  • Reduce principalmente el sesgo ajustando residuos de forma secuencial
Info:

Por qué ambos siguen importando sobre rendimientos

Ningún método es una varita mágica sobre datos con un 99% de ruido, pero cada uno ataca a un enemigo distinto. Si tu modelo simple está infraajustando (sesgo alto: se está perdiendo una no linealidad real), echa mano del boosting, cuidadosamente frenado. Si está sobreajustando (varianza alta: inestable entre remuestreos), echa mano del bagging. Diagnostica qué problema tienes de verdad antes de elegir la herramienta; echarle boosting a un problema de varianza solo añade una nueva forma de sobreajustar.

Importancia de variables — MDI frente a MDA

Has entrenado un modelo que funciona. Ahora la pregunta inevitable: ¿qué variables lo están impulsando de verdad? La quieres para la intuición, para podar variables muertas y para el equipo de riesgos. Dos métodos dominan en los modelos de árboles, y discrepan lo bastante a menudo como para que conocer la diferencia sea una habilidad de supervivencia.

MDI — Mean Decrease in Impurity (también llamada importancia Gini).

Cada partición de un árbol reduce la “impureza” (varianza en regresión, Gini/entropía en clasificación). MDI suma, para cada variable, la reducción total de impureza que produjo en todas las particiones de todos los árboles, ponderada por cuántas muestras pasaron por ahí. Es el feature_importances_ por defecto en scikit-learn.

  • Pros: prácticamente gratis: cae del entrenamiento, sin cálculo extra.
  • Contras (serios): se calcula dentro de muestra (sobre los datos de entrenamiento), así que una variable que sobreajusta recibe crédito por ello. Peor aún, está sesgada hacia variables de alta cardinalidad y continuas: una variable con muchos valores distintos (un precio, un ratio continuo) ofrece más puntos de partición posibles, así que se llevará importancia por pura casualidad aunque sea ruido. Un indicador binario, con una única partición posible, está estructuralmente en desventaja. MDI sobrevalora sistemáticamente el ruido continuo.

MDA — Mean Decrease in Accuracy (también llamada importancia por permutación).

Toma tu modelo entrenado y un conjunto reservado (held-out). Anota la puntuación base fuera de muestra. Ahora baraja los valores de una variable (permuta la columna, rompiendo su vínculo con el objetivo) y vuelve a puntuar. La caída de rendimiento es la importancia de esa variable: si revolverla apenas hace daño, el modelo no la estaba usando de verdad.

  • Pros: se mide fuera de muestra, sobre la métrica de rendimiento real, así que una variable solo puntúa si de verdad ayuda al modelo a generalizar. Honesta. Agnóstica al modelo (funciona sobre cualquier modelo ajustado, no solo árboles).
  • Contras: más lenta (vuelve a puntuar una vez por variable, a menudo repetido para estabilidad) y —crucialmente— hereda el efecto de sustitución cuando las variables están correlacionadas.

El efecto de sustitución (la trampa que engaña a todos). Supón que dos variables están muy correlacionadas —pongamos momentum_10d y momentum_12d, casi gemelas—. La importancia por permutación baraja momentum_10d: el modelo apenas se inmuta, porque momentum_12d lleva la misma información y le cubre las espaldas, así que momentum_10d parece poco importante. Baraja momentum_12d en su lugar y momentum_10d cubre. Ambas gemelas puntúan cerca de cero, aunque el momentum como concepto sea el único impulsor más importante. La importancia quedó diluida/repartida por el grupo correlacionado, haciendo que una señal crítica parezca inútil.

Ejemplo resuelto: dos variables correlacionadas repartiéndose la importancia. Un modelo está genuinamente impulsado por el momentum. Le das dos variables de momentum casi idénticas (ρ ≈ 0,95) más una variable de ruido irrelevante.

VariableContribución “verdadera”Importancia MDA (permutar de una en una)Por qué
momentum_10dAlta (compartida)0,04Al barajarla, su gemela momentum_12d cubre: caída de precisión minúscula
momentum_12dAlta (compartida)0,05Al barajarla, momentum_10d cubre: caída de precisión minúscula
noise_featureNinguna0,01Genuinamente inútil: caída pequeña, ¡pero comparable a la de las gemelas!

Mira el desastre: las dos variables de momentum (el motor real del modelo) puntúan 0,04–0,05, apenas por encima de la variable de ruido inútil en 0,01. Una lectura ingenua —“el momentum no importa, vamos a quitarlo”— destriparía la estrategia. El arreglo es probar las variables correlacionadas como un grupo (permutar ambas gemelas juntas: la caída es grande, revelando la verdadera importancia del momentum) o agrupar/descorrelacionar variables antes de medir (p. ej. el MDA/MDI agrupado de López de Prado).

Dos trampas más que se aplican a ambos métodos:

  • Importancia ≠ causalidad. Una variable puede ser “importante” para el modelo puramente por estar correlacionada con el impulsor verdadero, o con la fuga de la etiqueta (label leakage) que dejaste ahí por accidente. Una importancia alta te dice que el modelo la usa, no que cause los rendimientos.
  • La importancia es condicional al modelo. MDI/MDA describen la dependencia que este modelo ajustado tiene de una variable, no el valor universal de la variable. Un modelo distinto (o el mismo modelo sobre una muestra distinta) puede ordenar las variables de forma completamente diferente. Nunca informes de la importancia como si fuera una propiedad de la variable por sí sola.
Warning:

Trampa — fiarte del MDI por defecto en variables continuas

El valor por defecto de scikit-learn (feature_importances_ = MDI) es dentro de muestra y está estructuralmente sesgado hacia variables continuas y de alta cardinalidad. Una columna de puro ruido gaussiano, al ser continua, a menudo superará en MDI a un indicador binario genuinamente útil. Contrasta siempre con el MDA fuera de muestra (importancia por permutación), y cuando las variables estén correlacionadas, mídelas en grupos, o podarás las cosas equivocadas y conservarás el ruido.

La importancia por permutación (MDA) informa de que AMBAS de tus dos variables de momentum casi idénticas tienen una importancia cercana a cero, mientras que tú estás seguro de que el momentum impulsa el modelo. ¿Cuál es la explicación más probable?

Empareja cada idea de importancia de variables con su descripción.

Pick a term, then click its definition.

Comprobación rápida: el MDI de tu random forest coloca una variable continua de “ruido” en el puesto número 1, pero su importancia MDA (permutación) es casi cero. ¿En cuál confías, y por qué?

Confía en la MDA. El MDI se calcula dentro de muestra y está estructuralmente sesgado hacia variables continuas y de alta cardinalidad: una columna de ruido con muchos valores distintos ofrece muchos puntos de partición y se lleva reducción de impureza por casualidad, inflando su rango MDI. La MDA baraja la variable y comprueba la caída de rendimiento fuera de muestra; una MDA casi nula dice que revolver la variable no daña la generalización, es decir, que el modelo no se apoyaba de verdad en ella. Cuando MDI y MDA discrepan sobre una variable continua, la discrepancia es en sí misma la pista: el rango alto del MDI es muy probablemente el sesgo de cardinalidad, no señal real. (Salvedad: si la variable estuviera correlacionada con un impulsor real, una MDA baja podría ser, en cambio, el efecto de sustitución, así que comprueba las correlaciones antes de quitarla.)

Juntándolo todo

Modelar datos de baja relación señal-ruido es una disciplina de contención. Primero, respeta el equilibrio sesgo-varianza: como los rendimientos son un 99% ruido, el término de ruido irreducible domina, el óptimo se desliza hacia lo simple, y un modelo lineal regularizado o un ensemble poco profundo bate de forma rutinaria a un árbol profundo que memorizó el pasado. Segundo, regulariza: grava la complejidad (ridge encoge, lasso encoge-y-selecciona, elastic net mezcla; los árboles usan límites de profundidad/hoja/variables y parada temprana) para cambiar un poco de sesgo por mucha menos varianza. Tercero, haz ensembling con la herramienta adecuada: baggea (promedia árboles descorrelacionados, al estilo random forest, para machacar la varianza vía 1/B1/\sqrt{B}) cuando estés sobreajustando, y boostea (ajusta residuos de forma secuencial para recortar el sesgo) —con cuidado, con un ritmo de aprendizaje pequeño y parada temprana— cuando estés infraajustando. Por último, lee la importancia de variables con profunda sospecha: prefiere la MDA fuera de muestra a la MDI dentro de muestra y sesgada por la cardinalidad, vigila el efecto de sustitución diluyendo variables correlacionadas, y nunca confundas “el modelo la usa” con “causa los rendimientos”.

Big picture

Modelos, ensembles e importancia de variables de un vistazo

  • Domar modelos para datos de baja señal
    • Sesgo-varianza sobre rendimientos
      • 99% ruido → domina el término irreducible
      • El óptimo se desliza hacia lo simple / alto sesgo
      • Árbol profundo: sesgo 0, varianza enorme → memoriza ruido
      • Lineal: alto sesgo, baja varianza → generaliza
    • Regularización (gravar la complejidad)
      • Ridge L2 — encoge todos los coeficientes
      • Lasso L1 — encoge Y selecciona (→0)
      • Elastic net — mezcla para variables correlacionadas
      • Árboles: profundidad / hoja mín. / max-features / parada temprana
    • Ensembling
      • Bagging → recorta VARIANZA, paralelo, 1/√B
      • Random forest: variables aleatorias DESCORRELACIONAN (↓ρ)
      • Boosting → recorta SESGO, secuencial, ajusta residuos
      • Boosting necesita ν, submuestreo, parada temprana (frágil al ruido)
    • Importancia de variables
      • MDI — dentro de muestra, gratis, sesgada a alta cardinalidad
      • MDA — fuera de muestra, honesta, más lenta
      • Efecto de sustitución: las gemelas correlacionadas se reparten importancia
      • Importancia ≠ causalidad; condicional al modelo
Desde el sesgo-varianza sobre datos ruidosos, pasando por la regularización y los dos sabores del ensembling, hasta leer la importancia de variables sin dejarte engañar.

Modelos, ensembles e importancia de variables: fíjalo

Pregunta 1 de 40 correctas

Sobre datos de rendimientos con un 99% de ruido, un árbol de profundidad 25 puntúa R² = 0,95 dentro de muestra y R² = −0,06 fuera de muestra. ¿Cuál es el diagnóstico correcto?

Comprueba tu respuesta para continuar.

Ya sabes elegir un modelo que sobreviva al ruido, regularizarlo y hacerle ensembling sin engañarte, y leer sus importancias de variables con la dosis justa de paranoia. Pero un modelo que predice bien todavía no es una cartera: un vector de previsiones de rendimiento no son posiciones, y el hueco entre “mi modelo dice que estas 200 acciones son atractivas” y “esto es exactamente cuánto mantener de cada una” es donde se gana o se pierde una cantidad sorprendente de alfa. Esa traducción —de señal de ML en bruto a posiciones dimensionadas, con riesgo controlado y conscientes del coste— es el tema de la siguiente lección, De señal de ML a cartera.

Marcar lección como completada