4.2. Importancia de la característica de permutación¶
La importancia de la característica de permutación es una técnica de inspección del modelo que puede ser usada para cualquier estimador ajustado cuando los datos son tabulares. Esto es especialmente útil para los estimadores no lineales u opacos. La importancia de la característica de permutación se define como la disminución de la puntuación de un modelo cuando un único valor de la característica se baraja aleatoriamente 1. Este procedimiento rompe la relación entre la característica y el objetivo, por lo tanto, la caída en la puntuación del modelo es indicativa de cuánto depende el modelo de la característica. Esta técnica se beneficia de ser independiente del modelo y se puede calcular muchas veces con diferentes permutaciones de la característica.
La función permutation_importance
calcula la importancia de las características de estimadores para un conjunto de datos determinado. El parámetro n_repeats
establece el número de veces que una característica se baraja aleatoriamente y devuelve una muestra de las importancias de las características.
Consideremos el siguiente modelo de regresión entrenado:
>>> from sklearn.datasets import load_diabetes
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.linear_model import Ridge
>>> diabetes = load_diabetes()
>>> X_train, X_val, y_train, y_val = train_test_split(
... diabetes.data, diabetes.target, random_state=0)
...
>>> model = Ridge(alpha=1e-2).fit(X_train, y_train)
>>> model.score(X_val, y_val)
0.356...
Su validación de rendimiento, medido a través de la puntuación \(R^2\), es significativamente mayor que el nivel de azar. Esto permite utilizar la función permutation_importance
para comprobar qué características son más predictivas:
>>> from sklearn.inspection import permutation_importance
>>> r = permutation_importance(model, X_val, y_val,
... n_repeats=30,
... random_state=0)
...
>>> for i in r.importances_mean.argsort()[::-1]:
... if r.importances_mean[i] - 2 * r.importances_std[i] > 0:
... print(f"{diabetes.feature_names[i]:<8}"
... f"{r.importances_mean[i]:.3f}"
... f" +/- {r.importances_std[i]:.3f}")
...
s5 0.204 +/- 0.050
bmi 0.176 +/- 0.048
bp 0.088 +/- 0.033
sex 0.056 +/- 0.023
Ten en cuenta que los valores de importancia para las características superiores representan una fracción grande de la puntuación de referencia de 0,356.
Las importancias de las permutaciones pueden ser calculadas en el conjunto de entrenamiento o en un conjunto de prueba o validación apartado (held-out). El uso de un conjunto apartado permite destacar las características que contribuyen más a la potencia de generalización del modelo inspeccionado. Las características que son importantes en el conjunto de entrenamiento pero no en el conjunto apartado pueden hacer que el modelo se ajuste en exceso.
Advertencia
Las características que se consideran de baja importancia para un mal modelo (baja puntuación de validación cruzada) podrían ser muy importantes para un buen modelo. Por lo tanto, siempre es importante evaluar la potencia predictiva de un modelo utilizando un conjunto apartado (o mejor con validación cruzada) previo al cálculo de las importancias. La importancia de la permutación no refleja el valor predictivo intrínseco de una característica por sí misma, sino cuán importante es esta característica para un modelo en particular.
4.2.1. Esquema del algoritmo de importancia de la permutación¶
Entradas: modelo predictivo ajustado \(m\), conjunto de datos tabular (entrenamiento o validación) \(D\).
Calcula la puntuación de referencia \(s\) del modelo \(m\) en los datos \(D\) (por ejemplo, la exactitud para un clasificador o el \(R^2\) para un regresor).
Para cada característica \(j\) (columna de \(D\)):
Para cada repetición \(k\) en \({1, ..., K}\):
Baraja aleatoriamente la columna \(j\) del conjunto de datos \(D\) para generar una versión corrupta de los datos denominada \(\tilde{D}_{k,j}\).
Calcula la puntuación \(s_{k,j}\) del modelo \(m\) en los datos corruptos \(\tilde{D}_{k,j}\).
Calcula la importancia \(i_j\) para la característica \(f_j\) definida como:
\[i_j = s - \frac{1}{K} \sum_{k=1}^{K} s_{k,j}\]
4.2.2. Relación con la importancia basada en la impureza en árboles¶
Los modelos basados en árboles proporcionan una medida alternativa de la importancia de las características basada en la disminución media de la impureza (MDI). La impureza es cuantificada mediante el criterio de división de los árboles de decisión (Gini, Entropía o Error Cuadrático Medio). Sin embargo, este método puede dar mucha importancia a características que pueden no ser predictivas en datos no vistos cuando el modelo está sobreajustado. En cambio, la importancia de las características basada en la permutación evita este problema, ya que puede calcularse con datos no vistos.
Además, la importancia de características basadas en la impureza para los árboles es fuertemente sesgada y favorecen las características de alta cardinalidad (características normalmente numéricas) sobre características de baja cardinalidad, tales como características binarias o variables categóricas con un pequeño número de categorías posibles.
Las importancias de las características basadas en la permutación no presentan ese sesgo. Adicionalmente, la importancia de la característica de permutación puede ser una métrica de rendimiento calculada sobre las predicciones del modelo y se puede utilizar para analizar cualquier clase de modelo (no sólo modelos basados en árboles).
El siguiente ejemplo resalta las limitaciones de la importancia de la característica basada en la impureza en contraste con la importancia de la característica basada en la permutación: Importancia de la Permutación vs la Importancia de las Características del Bosque Aleatorio (MDI).