Ominaisuuksien tärkeys ja mallin tulkinta
Poimikaa ja visualisoikaa ensemble-mallien muuttujien tärkeys ja SHAP-arvot.
Ominaisuuksien tärkeys ja mallin tulkinta on ilmainen R Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu R Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. R Academy-kurssilla on yhteensä 4 oppituntia.
Miksi mallin tulkittavuus on tärkeää
Tarkat mallit, joihin kukaan ei luota, ovat käytännössä hyödyttömiä. Mallin tulkittavuus vastaa kahteen kysymykseen: Mitkä piirteet ovat maailmanlaajuisesti tärkeimpiä? (globaali tärkeys) ja Miksi malli teki tämän tietyn ennusteen? (paikallinen selitys). Sekä XGBoost että ranger tarjoavat sisäänrakennetut työkalut globaalin tärkeyden arviointiin, kun taas SHAP-arvot mahdollistavat paikalliset selitykset.
# 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() — kolme mittaria
xgb.importance(model) palauttaa data framen, jossa on kullekin piirteelle kolme tärkeysmittaria:
- Gain: tämän piirteen perusteella tehtyjen jaottelujen aiheuttama häviön keskimääräinen paraneminen (informatiivisin).
- Cover: tämän piirteen perusteella tehtyjen jaottelujen vaikutuksen piiriin kuuluvien havaintojen keskimääräinen määrä.
- Frequency: niiden jaottelujen osuus, joissa tätä piirrettä käytettiin.
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) luo vaakasuuntaisen pylväskaavion piirteiden tärkeyksistä. Oletusarvoisesti se käyttää Gain-mittaria. top_n-argumentti rajoittaa tulosteen tärkeimpiin piirteisiin, mikä parantaa selkeyttä.
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-muuttujien tärkeys
ranger tukee kahta tärkeysmit earia: 'impurity' (nopea, lasketaan koulutuksen aikana) ja 'permutation' (hitaampi, mutta mittaa kunkin piirteen todellista vaikutusta ennusteisiin). Permutaatioon perustuvaa tärkeyttä suositellaan yleensä luotettaviin järjestyksiin.
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))rangerin ja XGBoostin tärkeyksien vertailu
Eri mallit määrittävät erilaisia tärkeyspisteitä, koska ne mittaavat eri asioita. Epäpuhtauteen perustuva tärkeys (rangerin oletus) voi suosia piirteitä, joilla on paljon erilaisia arvoja. Permutaatioon perustuva tärkeys on vankempi. XGBoostin Gain on yleensä informatiivisin sen kolmesta mittarista.
# 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')Mitä SHAP-arvot ovat?
SHAP (SHapley Additive exPlanations) -arvot jakavat kunkin ennusteen eri piirteiden tuottamiin osuuksiin peliteoriaan perustuen. Yhden havainnon ennusteessa SHAP-arvojen summa vastaa mallin tuloksen ja lähtötason (keskimääräisen ennusteen) välistä eroa. Tämä mahdollistaa sekä globaalit että paikalliset selitykset.
XGBoost tukee puu-SHAPia suoraan komennolla 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)shapviz-paketin perusteet
shapviz-paketti tarjoaa monipuolisen visualisointikerroksen SHAP-arvojen päälle. Välittäkää raaka SHAP-matriisi ja piirre matriisi funktiolle shapviz() ja käyttäkää sitten piirtämiseen esimerkiksi funktioita sv_importance(), sv_waterfall() ja 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')Porraskaavio — paikallinen selitys
Porraskaavio selittää yhden ennusteen: se näyttää, miten kukin piirre siirsi ennustetta lähtötason ylä- tai alapuolelle. Positiiviset SHAP-arvot (punaiset palkit) kasvattavat ennustetta ja negatiiviset arvot (siniset palkit) pienentävät sitä. Lähtötaso on mallin tuloksen keskiarvo.
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'
)Osittaisriippuvuuskaaviot
Osittaisriippuvuuskaavio (PDP) näyttää yhden piirteen marginaalisen vaikutuksen mallin tulokseen kaikkien muiden piirteiden yli keskiarvoistettuna. Se paljastaa, onko suhde lineaarinen, monotoninen vai epälineaarinen. Käyttäkää pdp-pakettia tai SHAPforxgboost::pdp_shap()-funktiota.
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-riippuvuuskaavio
SHAP-riippuvuuskaavio näyttää yhden piirteen SHAP-arvon piirrettä itseään vasten. Se muistuttaa PDP-kaaviota, mutta käyttää tarkkoja SHAP-määrityksiä ja voi värittää pisteet toisen, vuorovaikutuksessa olevan piirteen mukaan, jolloin vuorovaikutusvaikutukset tulevat esiin.
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-paketti — yhtenäinen tärkeys
vip-paketti tarjoaa mallista riippumattoman tärkeysrajapinnan, joka toimii rangerin, XGBoostin ja minkä tahansa parsnip-mallin kanssa. vip(model) luo pylväskaavion ja vi(model) palauttaa tärkeysarvot tibblena.
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)Pikatarkistus
Mitä mittaria pidetään XGBoostin piirteiden tärkeydessä yleensä informatiivisimpana piirteiden laadun ymmärtämiseksi?
Tulkinnan yhteenveto
Feature Importance and Model Interpretation -osion keskeiset opit:
xgb.importance(model)palauttaa Gain-, Cover- ja Frequency-mittarit; Gain on informatiivisin.xgb.plot.importance(imp)luo pylväskaavion XGBoostin tärkeyksistä.- ranger tukee
'impurity'- (nopea) ja'permutation'- (luotettava) tärkeyttä. - SHAP-arvot jakavat kunkin ennusteen piirrekohtaisiin osuuksiin.
shapviztarjoaa SHAP-arvoille porras-, mehiläisparvi- ja riippuvuuskaaviot.- Osittaisriippuvuuskaaviot näyttävät kunkin piirteen keskimääräisen marginaalisen vaikutuksen.
vip-paketti tarjoaa mallista riippumattoman yhtenäisen tärkeysrajapinnan.
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')Opi R tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 43
- Oppitunnit
- 159
Usein kysytyt kysymykset
Onko oppitunti ”Ominaisuuksien tärkeys ja mallin tulkinta” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa R Academy-oppimispolun 3 oppituntia, myös oppitunnin “Ominaisuuksien tärkeys ja mallin tulkinta”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. R Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Ominaisuuksien tärkeys ja mallin tulkinta”?
Poimikaa ja visualisoikaa ensemble-mallien muuttujien tärkeys ja SHAP-arvot. Harjoittelet R Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni R Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin R Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Ominaisuuksien tärkeys ja mallin tulkinta”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä R Academy-oppitunnilla?
Kyllä. Jokainen R Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Päätöspuut: ensemble-menetelmien perusta
- Satunnaismetsät ranger-paketilla
- Gradienttivahvistus xgboost-paketilla
- Ominaisuuksien tärkeys ja mallin tulkinta