Feature-Wichtigkeit und Modellinterpretation
Extrahieren und visualisieren Sie Variablenwichtigkeiten und SHAP-Werte aus Ensemble-Modellen
Feature-Wichtigkeit und Modellinterpretation ist eine kostenlose R Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des R Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der R Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum die Modellinterpretation wichtig ist
Genaue Modelle, denen niemand vertraut, sind in der Praxis nutzlos. Die Modellinterpretation beantwortet zwei Fragen: Welche Merkmale sind global am wichtigsten? (globale Wichtigkeit) und Warum hat das Modell diese konkrete Vorhersage getroffen? (lokale Erklärung). Sowohl XGBoost als auch ranger bieten integrierte Werkzeuge für die globale Wichtigkeit, während SHAP-Werte lokale Erklärungen ermöglichen.
# 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() — Drei Metriken
xgb.importance(model) gibt für jedes Merkmal einen Data Frame mit drei Wichtigkeitsmetriken zurück:
- Gain: durchschnittliche Verbesserung des Verlusts durch Splits nach diesem Merkmal (am aussagekräftigsten).
- Cover: durchschnittliche Anzahl der Beobachtungen, die von Splits nach diesem Merkmal betroffen sind.
- Frequency: Anteil der Splits, bei denen dieses Merkmal verwendet wurde.
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) erstellt ein horizontales Balkendiagramm der Merkmalswichtigkeiten. Standardmäßig wird die Metrik Gain verwendet. Das Argument top_n begrenzt die Ausgabe zur besseren Übersicht auf die wichtigsten Merkmale.
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)'
)Variablenwichtigkeit in ranger
ranger unterstützt zwei Wichtigkeitsmaße: 'impurity' (schnell, während des Trainings berechnet) und 'permutation' (langsamer, misst aber den tatsächlichen Einfluss jedes Merkmals auf die Vorhersagen). Für zuverlässige Rangfolgen wird im Allgemeinen die Permutationswichtigkeit bevorzugt.
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))Vergleich der Wichtigkeit in ranger und XGBoost
Verschiedene Modelle weisen unterschiedliche Wichtigkeitswerte zu, weil sie unterschiedliche Aspekte messen. Die auf Impurity basierende Wichtigkeit (Standard in ranger) kann zugunsten von Merkmalen mit vielen Ausprägungen verzerrt sein. Die Permutationswichtigkeit ist robuster. Der Gain von XGBoost ist meist die aussagekräftigste der drei Metriken.
# 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')Was sind SHAP-Werte?
SHAP (SHapley Additive exPlanations)-Werte zerlegen jede Vorhersage anhand der Spieltheorie in Beiträge der einzelnen Merkmale. Bei der Vorhersage für eine Beobachtung ergibt die Summe der SHAP-Werte die Differenz zwischen der Modellausgabe und der Baseline (durchschnittliche Vorhersage). Dadurch werden sowohl globale als auch lokale Erklärungen ermöglicht.
XGBoost unterstützt Tree SHAP nativ über 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)Grundlagen des Pakets shapviz
Das Paket shapviz bietet eine umfangreiche Visualisierungsschicht auf Basis von SHAP-Werten. Übergeben Sie die rohe SHAP-Matrix und die Merkmalsmatrix an shapviz() und verwenden Sie anschließend Plot-Funktionen wie sv_importance(), sv_waterfall() und 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')Wasserfalldiagramm — Lokale Erklärung
Ein Wasserfalldiagramm erklärt eine einzelne Vorhersage: Es zeigt, wie jedes Merkmal die Vorhersage über oder unter die Baseline verschoben hat. Positive SHAP-Werte (rote Balken) erhöhen die Vorhersage, negative Werte (blaue Balken) verringern sie. Die Baseline ist die durchschnittliche Modellausgabe.
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'
)Partielle Abhängigkeitsdiagramme
Ein partielles Abhängigkeitsdiagramm (PDP) zeigt den marginalen Einfluss eines Merkmals auf die Modellausgabe, gemittelt über alle anderen Merkmale. Es macht sichtbar, ob die Beziehung linear oder monoton ist oder nichtlineare Muster aufweist. Verwenden Sie das Paket pdp oder 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')SHAP-Abhängigkeitsdiagramm
Ein SHAP-Abhängigkeitsdiagramm stellt den SHAP-Wert eines Merkmals seinem tatsächlichen Wert gegenüber. Es ähnelt einem PDP, verwendet jedoch exakte SHAP-Zuordnungen und kann Punkte anhand eines zweiten interagierenden Merkmals einfärben, wodurch Interaktionseffekte sichtbar werden.
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
)Paket vip — Einheitliche Wichtigkeit
Das Paket vip bietet eine modellunabhängige Schnittstelle für Wichtigkeitsmaße, die mit ranger, XGBoost und jedem parsnip-Modell funktioniert. vip(model) erstellt ein Balkendiagramm, während vi(model) die Wichtigkeitswerte als Tibble zurückgibt.
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)Kurze Überprüfung
Welche Metrik gilt bei der Merkmalswichtigkeit in XGBoost allgemein als am aussagekräftigsten, um die Qualität von Merkmalen zu verstehen?
Zusammenfassung der Interpretation
Die wichtigsten Erkenntnisse zu Merkmalswichtigkeit und Modellinterpretation:
xgb.importance(model)gibt Gain, Cover und Frequency zurück; Gain ist am aussagekräftigsten.xgb.plot.importance(imp)erstellt ein Balkendiagramm der XGBoost-Wichtigkeit.- ranger unterstützt die Wichtigkeitsmaße
'impurity'(schnell) und'permutation'(zuverlässig). - SHAP-Werte zerlegen jede Vorhersage in Beiträge der einzelnen Merkmale.
shapvizbietet Wasserfall-, Beeswarm- und Abhängigkeitsdiagramme für SHAP.- Partielle Abhängigkeitsdiagramme zeigen den durchschnittlichen marginalen Einfluss jedes Merkmals.
- Das Paket
vipbietet eine modellunabhängige, einheitliche Schnittstelle für Wichtigkeitsmaße.
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')Lerne R mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 43
- Lektionen
- 159
Häufig gestellte Fragen
Ist die Lektion „Feature-Wichtigkeit und Modellinterpretation“ kostenlos?
Ja — der vollständige Text von „Feature-Wichtigkeit und Modellinterpretation“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des R Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der R Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Feature-Wichtigkeit und Modellinterpretation“?
Extrahieren und visualisieren Sie Variablenwichtigkeiten und SHAP-Werte aus Ensemble-Modellen Du übst R Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um R Academy zu starten?
Keine Vorkenntnisse erforderlich. R Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Feature-Wichtigkeit und Modellinterpretation“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser R Academy-Lektion Code schreiben und ausführen?
Ja. Jede R Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Entscheidungsbäume: Grundlage von Ensembles
- Random Forests mit ranger
- Gradient Boosting mit xgboost
- Feature-Wichtigkeit und Modellinterpretation