Kepentingan Fitur dan Interpretasi Model
Ekstrak dan visualisasikan kepentingan variabel serta nilai SHAP dari model ensemble.
Kepentingan Fitur dan Interpretasi Model adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar R Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus R Academy mencakup 4 pelajaran total.
Mengapa Interpretasi Model Penting
Model yang akurat tetapi tidak dipercaya siapa pun tidak berguna dalam praktik. Interpretasi model menjawab dua pertanyaan: Fitur mana yang paling penting secara keseluruhan? (kepentingan global) dan Mengapa model membuat prediksi spesifik ini? (penjelasan lokal). Baik XGBoost maupun ranger menyediakan alat bawaan untuk mengukur kepentingan global, sedangkan nilai SHAP memungkinkan penjelasan lokal.
# 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() — Tiga Metrik
xgb.importance(model) mengembalikan kerangka data dengan tiga metrik kepentingan untuk setiap fitur:
- Gain: peningkatan rata-rata pada kerugian dari pemisahan berdasarkan fitur ini (paling informatif).
- Cover: jumlah rata-rata observasi yang terpengaruh oleh pemisahan berdasarkan fitur ini.
- Frequency: proporsi pemisahan yang menggunakan fitur ini.
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) membuat diagram batang horizontal yang menunjukkan tingkat kepentingan fitur. Secara bawaan, fungsi ini menggunakan metrik Gain. Argumen top_n membatasi keluaran pada fitur yang paling penting agar lebih mudah dipahami.
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)'
)Kepentingan Variabel ranger
ranger mendukung dua ukuran kepentingan: 'impurity' (cepat, dihitung selama pelatihan) dan 'permutation' (lebih lambat, tetapi mengukur dampak nyata setiap fitur terhadap prediksi). Kepentingan berdasarkan permutasi umumnya lebih disukai untuk pemeringkatan yang andal.
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))Membandingkan Kepentingan ranger dan XGBoost
Model yang berbeda memberikan skor kepentingan yang berbeda karena mengukur hal yang berbeda. Kepentingan berbasis impuritas (bawaan ranger) dapat bias terhadap fitur dengan banyak kategori. Kepentingan berdasarkan permutasi lebih tangguh. Gain dari XGBoost biasanya merupakan metrik yang paling informatif di antara ketiganya.
# 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')Apa Itu Nilai SHAP?
Nilai SHAP (SHapley Additive exPlanations) menguraikan setiap prediksi menjadi kontribusi dari setiap fitur berdasarkan teori permainan. Untuk prediksi pada satu observasi, nilai SHAP berjumlah sama dengan selisih antara keluaran model dan nilai dasar (prediksi rata-rata). Hal ini memungkinkan penjelasan global maupun lokal.
XGBoost mendukung SHAP untuk pohon secara bawaan melalui 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)Dasar-Dasar Paket shapviz
Paket shapviz menyediakan lapisan visualisasi yang kaya di atas nilai SHAP. Berikan matriks SHAP mentah dan matriks fitur kepada shapviz(), lalu gunakan fungsi pembuatan grafik seperti sv_importance(), sv_waterfall(), dan 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')Grafik Air Terjun — Penjelasan Lokal
Grafik air terjun menjelaskan satu prediksi: grafik ini menunjukkan bagaimana setiap fitur mendorong prediksi menjadi lebih tinggi atau lebih rendah daripada nilai dasar. Nilai SHAP positif (batang merah) meningkatkan prediksi; nilai negatif (batang biru) menurunkannya. Nilai dasar adalah keluaran model rata-rata.
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'
)Grafik Ketergantungan Parsial
Grafik ketergantungan parsial (PDP) menunjukkan efek marginal satu fitur terhadap keluaran model, yang dirata-ratakan terhadap semua fitur lainnya. Grafik ini mengungkapkan apakah hubungan tersebut linear, monoton, atau memiliki pola non-linear. Gunakan paket pdp atau 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')Grafik Ketergantungan SHAP
Grafik ketergantungan SHAP menunjukkan nilai SHAP untuk satu fitur yang diplot terhadap nilai sebenarnya. Grafik ini mirip dengan PDP, tetapi menggunakan atribusi SHAP yang tepat dan dapat mewarnai titik berdasarkan fitur interaksi kedua, sehingga efek interaksi dapat terlihat.
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 — Kepentingan Terpadu
Paket vip menyediakan antarmuka kepentingan yang tidak bergantung pada model dan berfungsi dengan ranger, XGBoost, serta model parsnip apa pun. vip(model) membuat diagram batang; vi(model) mengembalikan nilai kepentingan sebagai 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)Pemeriksaan Singkat
Dalam pengukuran kepentingan fitur XGBoost, metrik mana yang umumnya dianggap paling informatif untuk memahami kualitas fitur?
Ringkasan Interpretasi
Hal-hal penting dari Kepentingan Fitur dan Interpretasi Model:
xgb.importance(model)mengembalikan Gain, Cover, dan Frequency; Gain adalah yang paling informatif.xgb.plot.importance(imp)membuat diagram batang kepentingan XGBoost.- ranger mendukung kepentingan
'impurity'(cepat) dan'permutation'(andal). - Nilai SHAP menguraikan setiap prediksi menjadi kontribusi per fitur.
shapvizmenyediakan grafik air terjun, beeswarm, dan ketergantungan untuk SHAP.- Grafik ketergantungan parsial menunjukkan efek marginal rata-rata setiap fitur.
- Paket
vipmenyediakan antarmuka kepentingan terpadu yang tidak bergantung pada model.
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')Belajar R dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 43
- Pelajaran
- 159
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Kepentingan Fitur dan Interpretasi Model” gratis?
Ya — teks lengkap “Kepentingan Fitur dan Interpretasi Model” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus R Academy, upgrade ke CoddyKit PRO. Kursus R Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Kepentingan Fitur dan Interpretasi Model”?
Ekstrak dan visualisasikan kepentingan variabel serta nilai SHAP dari model ensemble. Kamu berlatih R Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai R Academy?
Tidak diperlukan pengalaman sebelumnya. R Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Kepentingan Fitur dan Interpretasi Model” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran R Academy ini?
Ya. Setiap pelajaran R Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pohon Keputusan: Dasar Ensemble
- Hutan Acak dengan ranger
- Peningkatan Gradien dengan xgboost
- Kepentingan Fitur dan Interpretasi Model