फीचर महत्त्व और मॉडल की व्याख्या
एन्सेम्बल मॉडलों से चर महत्त्व और SHAP मान निकालकर उनका दृश्यांकन करें।
फीचर महत्त्व और मॉडल की व्याख्या, CoddyKit पर R Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह R Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
मॉडल की व्याख्या क्यों महत्वपूर्ण है
ऐसे सटीक मॉडल, जिन पर कोई भरोसा नहीं करता, व्यवहार में बेकार होते हैं। मॉडल की व्याख्या दो प्रश्नों के उत्तर देती है: वैश्विक स्तर पर कौन-सी विशेषताएँ सबसे अधिक महत्वपूर्ण हैं? (वैश्विक महत्व) और मॉडल ने यह विशिष्ट पूर्वानुमान क्यों किया? (स्थानीय व्याख्या)। XGBoost और रेंजर, दोनों वैश्विक महत्व के लिए अंतर्निहित उपकरण देते हैं, जबकि SHAP मान स्थानीय व्याख्याएँ संभव बनाते हैं।
# 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() — तीन माप
xgb.importance(model) प्रत्येक विशेषता के लिए तीन महत्व मापों वाला एक डेटा फ़्रेम लौटाता है:
- Gain: इस विशेषता पर विभाजन से हानि में होने वाला औसत सुधार (सबसे अधिक जानकारी देने वाला)।
- Cover: इस विशेषता पर विभाजन से प्रभावित प्रेक्षणों की औसत संख्या।
- Frequency: इस विशेषता का उपयोग करने वाले विभाजनों का अनुपात।
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) विशेषताओं के महत्व का एक क्षैतिज पट्टी-आलेख बनाता है। डिफ़ॉल्ट रूप से यह Gain माप का उपयोग करता है। top_n तर्क स्पष्टता के लिए आउटपुट को सबसे महत्वपूर्ण विशेषताओं तक सीमित करता है।
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)'
)रेंजर में चर का महत्व
रेंजर दो महत्व मापों का समर्थन करता है: 'impurity' (तेज़, प्रशिक्षण के दौरान गणना किया जाता है) और 'permutation' (धीमा, लेकिन पूर्वानुमानों पर प्रत्येक विशेषता के वास्तविक प्रभाव को मापता है)। विश्वसनीय क्रम निर्धारण के लिए सामान्यतः क्रमचय महत्व को प्राथमिकता दी जाती है।
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))रेंजर और XGBoost के महत्व की तुलना
अलग-अलग मॉडल अलग-अलग महत्व अंक देते हैं, क्योंकि वे अलग-अलग चीज़ों को मापते हैं। अशुद्धता-आधारित महत्व (रेंजर का डिफ़ॉल्ट) अधिक विशिष्ट मानों वाली विशेषताओं की ओर पक्षपाती हो सकता है। क्रमचय महत्व अधिक मजबूत होता है। XGBoost का Gain सामान्यतः उसके तीनों मापों में सबसे अधिक जानकारी देने वाला होता है।
# 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 मान क्या हैं?
SHAP (SHapley Additive exPlanations) मान प्रत्येक पूर्वानुमान को खेल सिद्धांत पर आधारित, प्रत्येक विशेषता के योगदानों में विभाजित करते हैं। किसी एक प्रेक्षण के पूर्वानुमान के लिए SHAP मान, मॉडल आउटपुट और आधाररेखा (औसत पूर्वानुमान) के बीच के अंतर के बराबर होते हैं। इससे वैश्विक और स्थानीय, दोनों प्रकार की व्याख्याएँ संभव होती हैं।
XGBoost predict(model, data, predcontrib = TRUE) के माध्यम से ट्री SHAP का मूल रूप से समर्थन करता है।
# 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 पैकेज की मूल बातें
shapviz पैकेज SHAP मानों के ऊपर एक समृद्ध दृश्यांकन परत प्रदान करता है। कच्चे SHAP मैट्रिक्स और विशेषता मैट्रिक्स को shapviz() में दें, फिर sv_importance(), sv_waterfall() और 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')वॉटरफ़ॉल आलेख — स्थानीय व्याख्या
वॉटरफ़ॉल आलेख एकल पूर्वानुमान की व्याख्या करता है: यह दिखाता है कि प्रत्येक विशेषता ने पूर्वानुमान को आधाररेखा से ऊपर या नीचे कैसे प्रभावित किया। सकारात्मक SHAP मान (लाल पट्टियाँ) पूर्वानुमान बढ़ाते हैं; नकारात्मक मान (नीली पट्टियाँ) इसे घटाते हैं। आधाररेखा मॉडल आउटपुट का औसत होती है।
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'
)आंशिक निर्भरता आलेख
आंशिक निर्भरता आलेख (PDP) मॉडल आउटपुट पर एक विशेषता के सीमांत प्रभाव को दिखाता है, जिसे अन्य सभी विशेषताओं पर औसत किया जाता है। इससे पता चलता है कि संबंध रैखिक, एकदिशीय या अरैखिक प्रतिरूपों वाला है। pdp पैकेज या 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 निर्भरता आलेख
SHAP निर्भरता आलेख एक विशेषता के SHAP मान को उसके वास्तविक मान के विरुद्ध दर्शाता है। यह PDP के समान है, लेकिन सटीक SHAP आरोपणों का उपयोग करता है और बिंदुओं को दूसरी परस्पर क्रिया करने वाली विशेषता के आधार पर रंग सकता है, जिससे परस्पर क्रिया के प्रभाव सामने आते हैं।
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 पैकेज — एकीकृत महत्व
vip पैकेज मॉडल-स्वतंत्र महत्व इंटरफ़ेस प्रदान करता है, जो रेंजर, XGBoost और किसी भी पार्सनिप मॉडल के साथ काम करता है। vip(model) एक पट्टी-आलेख बनाता है; vi(model) महत्व मानों को एक टिबल के रूप में लौटाता है।
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)त्वरित जाँच
XGBoost में विशेषता के महत्व के लिए, विशेषता की गुणवत्ता समझने हेतु सामान्यतः किस माप को सबसे अधिक जानकारी देने वाला माना जाता है?
व्याख्या का पुनरावलोकन
विशेषता के महत्व और मॉडल की व्याख्या से मुख्य बातें:
xgb.importance(model)Gain, Cover और Frequency लौटाता है; Gain सबसे अधिक जानकारी देने वाला है।xgb.plot.importance(imp)XGBoost के महत्व का पट्टी-आलेख बनाता है।- रेंजर
'impurity'(तेज़) और'permutation'(विश्वसनीय) महत्व का समर्थन करता है। - SHAP मान प्रत्येक पूर्वानुमान को प्रति-विशेषता योगदानों में विभाजित करते हैं।
shapvizSHAP के लिए वॉटरफ़ॉल, बीस्वॉर्म और निर्भरता आलेख प्रदान करता है।- आंशिक निर्भरता आलेख प्रत्येक विशेषता के औसत सीमांत प्रभाव को दिखाते हैं।
vipपैकेज मॉडल-स्वतंत्र, एकीकृत महत्व इंटरफ़ेस प्रदान करता है।
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')एआई शिक्षक के साथ R सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 43
- पाठ
- 159
अक्सर पूछे जाने वाले प्रश्न
क्या “फीचर महत्त्व और मॉडल की व्याख्या” पाठ निःशुल्क है?
हाँ — R Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “फीचर महत्त्व और मॉडल की व्याख्या” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“फीचर महत्त्व और मॉडल की व्याख्या” में मैं क्या सीखूँगा?
एन्सेम्बल मॉडलों से चर महत्त्व और SHAP मान निकालकर उनका दृश्यांकन करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ R Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या R Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर R Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“फीचर महत्त्व और मॉडल की व्याख्या” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस R Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर R Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- निर्णय वृक्ष: एन्सेम्बल की नींव
- ranger से रैंडम फ़ॉरेस्ट
- xgboost से ग्रेडिएंट बूस्टिंग
- फीचर महत्त्व और मॉडल की व्याख्या