R Academy · Leçon

Importance des caractéristiques et interprétation des modèles

Extrayez et visualisez l’importance des variables et les valeurs SHAP des modèles d’ensemble.

Leçon 4 sur 413 étapes

Importance des caractéristiques et interprétation des modèles est une leçon R Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage R Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours R Academy comprend 4 leçons au total.

Pourquoi l’interprétation des modèles est importante

Des modèles précis auxquels personne ne fait confiance sont inutiles en pratique. L’interprétation des modèles répond à deux questions : quelles variables sont les plus importantes globalement ? (importance globale) et pourquoi le modèle a-t-il produit cette prédiction précise ? (explication locale). XGBoost et ranger fournissent tous deux des outils intégrés pour l’importance globale, tandis que les valeurs SHAP permettent d’obtenir des explications locales.

# The interpretation toolkit we will use:
# - xgb.importance()      XGBoost global importance
# - xgb.plot.importance() Visualise XGBoost importance
# - ranger importance     Random forest importance
# - shapviz package       SHAP value computation + plots

cat('Packages needed: xgboost, ranger, shapviz')

xgb.importance() — Trois mesures

xgb.importance(model) renvoie une trame de données contenant trois mesures d’importance pour chaque variable :

  • Gain : amélioration moyenne de la perte due aux divisions fondées sur cette variable (la plus informative).
  • Cover : nombre moyen d’observations concernées par les divisions fondées sur cette variable.
  • Frequency : proportion des divisions ayant utilisé cette variable.
library(xgboost)
library(MASS)

X <- as.matrix(Boston[, -14])
y <- Boston[, 14]
dtrain <- xgb.DMatrix(data = X, label = y)

params <- list(objective = 'reg:squarederror', eta = 0.1,
               max_depth = 5, subsample = 0.8)
model  <- xgboost(data = dtrain, params = params,
                  nrounds = 100, verbose = 0)

imp <- xgb.importance(model = model, feature_names = colnames(X))
print(head(imp))

xgb.plot.importance()

xgb.plot.importance(importance_matrix) crée un graphique en barres horizontales des importances des variables. Par défaut, il utilise la mesure Gain. L’argument top_n limite la sortie aux variables les plus importantes afin d’en faciliter la lecture.

imp <- xgb.importance(model = model, feature_names = colnames(X))

# Plot top 10 features by Gain
xgb.plot.importance(
  importance_matrix = imp,
  top_n  = 10,
  measure = 'Gain',
  main   = 'XGBoost Feature Importance (Gain)'
)

Importance des variables avec ranger

ranger prend en charge deux mesures d’importance : 'impurity' (rapide, calculée pendant l’entraînement) et 'permutation' (plus lente, mais mesurant l’impact réel de chaque variable sur les prédictions). L’importance par permutation est généralement privilégiée pour obtenir des classements fiables.

library(ranger)

# Impurity importance (fast)
rf_imp <- ranger(
  medv ~ ., data = MASS::Boston,
  num.trees  = 500,
  importance = 'impurity'
)
imp_impurity <- rf_imp$variable.importance

# Permutation importance (more reliable, slower)
rf_perm <- ranger(
  medv ~ ., data = MASS::Boston,
  num.trees  = 500,
  importance = 'permutation'
)
imp_permutation <- rf_perm$variable.importance

cbind(impurity = sort(imp_impurity, dec=TRUE),
      permutation = sort(imp_permutation, dec=TRUE))

Comparaison de l’importance dans ranger et XGBoost

Des modèles différents attribuent des scores d’importance différents, car ils mesurent des éléments différents. L’importance fondée sur l’impureté (valeur par défaut de ranger) peut favoriser les variables ayant beaucoup de modalités. L’importance par permutation est plus robuste. Le Gain de XGBoost est généralement la plus informative de ses trois mesures.

# Align rankings for comparison
xgb_rank <- imp$Feature
rf_rank  <- names(sort(rf_perm$variable.importance, dec=TRUE))

# Spearman rank correlation between the two rankings
shared <- intersect(xgb_rank, rf_rank)
xgb_pos <- match(shared, xgb_rank)
rf_pos  <- match(shared, rf_rank)

cor(xgb_pos, rf_pos, method = 'spearman')

Que sont les valeurs SHAP&nbsp;?

Les valeurs SHAP (SHapley Additive exPlanations) décomposent chaque prédiction en contributions de chaque variable, sur des fondements issus de la théorie des jeux. Pour une prédiction correspondant à une observation, les valeurs SHAP totalisent la différence entre la sortie du modèle et la valeur de référence (la prédiction moyenne). Cela permet d’obtenir des explications globales et locales.

XGBoost prend nativement en charge SHAP pour les arbres via predict(model, data, predcontrib = TRUE).

# Compute SHAP values natively from XGBoost
shap_matrix <- predict(
  model,
  newdata     = dtrain,
  predcontrib = TRUE  # returns SHAP contributions
)

# Result: matrix with one column per feature + BIAS column
dim(shap_matrix)  # rows x (features + 1)
colnames(shap_matrix)

Notions de base du package shapviz

Le package shapviz fournit une riche couche de visualisation reposant sur les valeurs SHAP. Transmettez la matrice SHAP brute et la matrice des variables à shapviz(), puis utilisez des fonctions de traçage telles que sv_importance(), sv_waterfall() et sv_beeswarm().

library(shapviz)

# Build shapviz object from XGBoost model
shp <- shapviz(model, X_pred = X)

# Global importance: mean |SHAP| per feature
sv_importance(shp, kind = 'bar')

# Beeswarm plot (SHAP summary plot)
sv_importance(shp, kind = 'beeswarm')

Graphique en cascade — Explication locale

Un graphique en cascade explique une seule prédiction : il montre comment chaque variable a fait augmenter ou diminuer la prédiction par rapport à la valeur de référence. Les valeurs SHAP positives (barres rouges) augmentent la prédiction ; les valeurs négatives (barres bleues) la diminuent. La valeur de référence correspond à la sortie moyenne du modèle.

library(shapviz)

shp <- shapviz(model, X_pred = X)

# Explain the prediction for observation 1
sv_waterfall(shp, row_id = 1) +
  ggplot2::labs(
    title = 'SHAP Waterfall — Observation 1',
    subtitle = 'How each feature contributed to this prediction'
  )

Graphiques de dépendance partielle

Un graphique de dépendance partielle (PDP) montre l’effet marginal d’une variable sur la sortie du modèle, moyenné sur toutes les autres variables. Il révèle si la relation est linéaire, monotone ou présente des motifs non linéaires. Utilisez le package pdp ou SHAPforxgboost::pdp_shap().

library(pdp)

# Partial dependence for 'lstat' in the Boston housing model
# We need a predict function wrapper for ranger
rf <- ranger(medv ~ ., data = MASS::Boston, num.trees = 300)

pd <- partial(
  rf,
  pred.var = 'lstat',
  train    = MASS::Boston,
  type     = 'regression'
)

plot(pd, type = 'l', lwd = 2,
     xlab = 'lstat', ylab = 'Partial Dependence',
     main = 'PDP: lstat vs medv')

Graphique de dépendance SHAP

Un graphique de dépendance SHAP représente la valeur SHAP d’une variable en fonction de sa valeur réelle. Il ressemble à un PDP, mais utilise les attributions SHAP exactes et peut colorer les points selon une seconde variable en interaction, ce qui révèle les effets d’interaction.

library(shapviz)

shp <- shapviz(model, X_pred = X)

# SHAP dependence plot for 'lstat', coloured by 'rm'
sv_dependence(
  shp,
  v       = 'lstat',   # main feature on x-axis
  color_var = 'rm'     # interaction feature for colour
)

Package vip — Importance unifiée

Le package vip fournit une interface d’importance indépendante du modèle, compatible avec ranger, XGBoost et tout modèle parsnip. vip(model) crée un graphique en barres ; vi(model) renvoie les valeurs d’importance sous forme de tibble.

library(vip)

# Works with parsnip fitted models
lm_fit <- fit(
  linear_reg() |> set_engine('lm'),
  medv ~ ., data = MASS::Boston
)

vip(lm_fit, num_features = 10)

# Also works with ranger directly
vip(rf_imp, num_features = 10)

# Return importance as a data frame
vi(rf_imp)

Vérification rapide

Dans l’importance des variables avec XGBoost, quelle mesure est généralement considérée comme la plus informative pour comprendre la qualité des variables ?

Récapitulatif de l’interprétation

Points essentiels à retenir sur l’importance des variables et l’interprétation des modèles :

  • xgb.importance(model) renvoie Gain, Cover et Frequency ; Gain est la mesure la plus informative.
  • xgb.plot.importance(imp) crée un graphique en barres de l’importance dans XGBoost.
  • ranger prend en charge l’importance 'impurity' (rapide) et 'permutation' (fiable).
  • Les valeurs SHAP décomposent chaque prédiction en contributions propres à chaque variable.
  • shapviz fournit des graphiques en cascade, en essaim d’abeilles et de dépendance pour SHAP.
  • Les graphiques de dépendance partielle montrent l’effet marginal moyen de chaque variable.
  • Le package vip fournit une interface d’importance unifiée et indépendante du modèle.
library(shapviz)

# Complete interpretation workflow
shp <- shapviz(xgb_model, X_pred = X_matrix)

# 1. Global importance
sv_importance(shp, kind = 'beeswarm')

# 2. Local explanation for one observation
sv_waterfall(shp, row_id = 42)

# 3. Feature relationship
sv_dependence(shp, v = 'most_important_feature')
Gratuit pour commencer

Apprends R avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
43
Leçons
159

Questions Fréquemment Posées

La leçon « Importance des caractéristiques et interprétation des modèles » est-elle gratuite ?

Oui — le texte complet de « Importance des caractéristiques et interprétation des modèles » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours R Academy, passe à CoddyKit PRO. Le cours R Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Importance des caractéristiques et interprétation des modèles » ?

Extrayez et visualisez l’importance des variables et les valeurs SHAP des modèles d’ensemble. Tu pratiques R Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer R Academy ?

Aucune expérience préalable n'est requise. R Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Importance des caractéristiques et interprétation des modèles » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon R Academy ?

Oui. Chaque leçon R Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Arbres de décision : fondement des ensembles
  2. Forêts aléatoires avec ranger
  3. Boosting de gradient avec xgboost
  4. Importance des caractéristiques et interprétation des modèles
← Retour à R Academy