Özellik Önem Derecesi ve Model Yorumlama
Topluluk modellerinden değişken önemini ve SHAP değerlerini çıkarıp görselleştirin.
Özellik Önem Derecesi ve Model Yorumlama, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.
Model Yorumlaması Neden Önemlidir
Kimsenin güvenmediği doğru modeller, uygulamada işe yaramaz. Model yorumlaması iki soruya yanıt verir: Genel olarak hangi özellikler en önemlidir? (genel önem) ve Model neden bu özel tahmini yaptı? (yerel açıklama). Hem XGBoost hem de ranger, genel önem için yerleşik araçlar sunarken SHAP değerleri yerel açıklamalar sağlar.
# 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() — Üç Ölçüt
xgb.importance(model), her özellik için üç önem ölçütü içeren bir veri çerçevesi döndürür:
- Gain: bu özellik üzerinden yapılan bölmelerin kayıptaki ortalama iyileşmesi (en bilgilendirici ölçüt).
- Cover: bu özellik üzerinden yapılan bölmelerden etkilenen ortalama gözlem sayısı.
- Frequency: bu özelliğin kullanıldığı bölmelerin oranı.
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), özellik önemlerini yatay çubuk grafik olarak oluşturur. Varsayılan olarak Gain ölçütünü kullanır. top_n bağımsız değişkeni, açıklığı artırmak için çıktıyı en önemli özelliklerle sınırlar.
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)'
)ranger Değişken Önemi
ranger iki önem ölçümünü destekler: 'impurity' (hızlıdır ve eğitim sırasında hesaplanır) ve 'permutation' (daha yavaştır ancak her özelliğin tahminler üzerindeki gerçek etkisini ölçer). Güvenilir sıralamalar için genellikle permütasyon önemi tercih edilir.
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))ranger ve XGBoost Önemlerinin Karşılaştırılması
Farklı modeller, farklı şeyleri ölçtükleri için farklı önem puanları atar. Safsızlık tabanlı önem (ranger'ın varsayılanı), kategori sayısı yüksek özelliklere karşı yanlı olabilir. Permütasyon önemi daha dayanıklıdır. XGBoost'un Gain ölçütü, üç ölçütü arasında genellikle en bilgilendirici olandır.
# 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')SHAP Değerleri Nedir
SHAP (SHapley Additive exPlanations) değerleri, oyun kuramına dayalı olarak her tahmini her özelliğin katkılarına ayırır. Tek bir gözlem için yapılan tahminde SHAP değerleri, model çıktısı ile temel değer (ortalama tahmin) arasındaki farka eşittir. Bu, hem genel hem de yerel açıklamaları mümkün kılar.
XGBoost, predict(model, data, predcontrib = TRUE) aracılığıyla ağaç SHAP'ini yerel olarak destekler.
# 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)shapviz Paketi Temelleri
shapviz paketi, SHAP değerleri üzerine zengin bir görselleştirme katmanı sağlar. Ham SHAP matrisini ve özellik matrisini shapviz() işlevine aktarın; ardından sv_importance(), sv_waterfall() ve sv_beeswarm() gibi çizim işlevlerini kullanın.
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')Şelale Grafiği — Yerel Açıklama
Şelale grafiği tek bir tahmini açıklar: her özelliğin tahmini temel değerin üzerine veya altına nasıl taşıdığını gösterir. Pozitif SHAP değerleri (kırmızı çubuklar) tahmini artırır; negatif değerler (mavi çubuklar) azaltır. Temel değer, model çıktısının ortalamasıdır.
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'
)Kısmi Bağımlılık Grafikleri
Kısmi bağımlılık grafiği (PDP), diğer tüm özellikler üzerinden ortalaması alınmış bir özelliğin model çıktısı üzerindeki marjinal etkisini gösterir. İlişkinin doğrusal, monoton veya doğrusal olmayan örüntülere sahip olup olmadığını ortaya koyar. pdp paketini veya SHAPforxgboost::pdp_shap() işlevini kullanın.
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 Bağımlılık Grafiği
SHAP bağımlılık grafiği, bir özellik için SHAP değerini o özelliğin gerçek değerine karşı gösterir. PDP'ye benzer; ancak kesin SHAP katkılarını kullanır ve noktaları etkileşime giren ikinci bir özelliğe göre renklendirerek etkileşim etkilerini ortaya çıkarabilir.
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
)vip Paketi — Birleşik Önem
vip paketi; ranger, XGBoost ve tüm parsnip modelleriyle çalışan, modelden bağımsız bir önem arayüzü sağlar. vip(model) bir çubuk grafik oluşturur; vi(model) önem değerlerini tibble olarak döndürür.
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)Kısa Kontrol
XGBoost özellik öneminde, özellik kalitesini anlamak için hangi ölçüt genellikle en bilgilendirici kabul edilir?
Yorumlama Özeti
Özellik Öneminden ve Model Yorumlamasından Temel Çıkarımlar:
xgb.importance(model), Gain, Cover ve Frequency değerlerini döndürür; Gain en bilgilendirici ölçüttür.xgb.plot.importance(imp), XGBoost önemini çubuk grafik olarak oluşturur.- ranger,
'impurity'(hızlı) ve'permutation'(güvenilir) önem ölçümlerini destekler. - SHAP değerleri, her tahmini özellik başına katkılara ayırır.
shapviz, SHAP için şelale, arı sürüsü ve bağımlılık grafikleri sağlar.- Kısmi bağımlılık grafikleri, her özelliğin ortalama marjinal etkisini gösterir.
vippaketi, modelden bağımsız ve birleşik bir önem arayüzü sağlar.
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')Sıkça Sorulan Sorular
“Özellik Önem Derecesi ve Model Yorumlama” dersi ücretsiz mi?
Evet — “Özellik Önem Derecesi ve Model Yorumlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.
“Özellik Önem Derecesi ve Model Yorumlama” dersinde ne öğreneceğim?
Topluluk modellerinden değişken önemini ve SHAP değerlerini çıkarıp görselleştirin. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
R Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Özellik Önem Derecesi ve Model Yorumlama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu R Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Karar Ağaçları: Topluluk Modellerinin Temeli
- ranger ile Rastgele Ormanlar
- xgboost ile Gradyan Artırma
- Özellik Önem Derecesi ve Model Yorumlama