SHAP मान: वैश्विक और स्थानीय फीचर महत्त्व
आप ग्रेडिएंट-बूस्टिंग मॉडल के लिए SHAP मानों की गणना करेंगे, बीस्वॉर्म और बार सारांशों के आलेख बनाएँगे और किसी एक पूर्वानुमान को गैर-तकनीकी हितधारक को समझाएँगे।
SHAP मान: वैश्विक और स्थानीय फीचर महत्त्व, CoddyKit पर Machine Learning Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Machine Learning Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Machine Learning Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
मॉडल की व्याख्येयता क्यों महत्त्वपूर्ण है
व्याख्येयता यह समझने की क्षमता है कि मॉडल ने कोई विशिष्ट पूर्वानुमान क्यों दिया। ऋण, स्वास्थ्य सेवा और भर्ती जैसे उच्च जोखिम वाले क्षेत्रों में नियामक और उपयोगकर्ता केवल सटीक पूर्वानुमान नहीं, बल्कि उनके स्पष्टीकरण भी चाहते हैं। SHAP (SHapley Additive exPlanations) सहकारी खेल सिद्धांत पर आधारित गणितीय रूप से सुसंगत ढाँचा उपलब्ध कराता है, जो किसी भी मॉडल के लिए ये स्पष्टीकरण देता है।
शेप्ली मान: खेल सिद्धांत की उत्पत्ति
SHAP मान सहकारी गेम थ्योरी के Shapley मानों से प्रेरणा लेते हैं, जहाँ खिलाड़ी (फीचर) मिलकर एक परिणाम (पूर्वानुमान) उत्पन्न करते हैं। प्रत्येक फीचर को सभी संभावित फीचर क्रमों में उसके सीमांत योगदान का औसत लेकर उसके उचित हिस्से का श्रेय दिया जाता है। इसी कारण SHAP एकमात्र ऐसी योगात्मक एट्रिब्यूशन विधि है जो दक्षता, सममिति, निष्क्रिय खिलाड़ी और योगात्मकता के स्वयंसिद्धों को संतुष्ट करती है।
SHAP को इंस्टॉल करना और आयात करना
shap लाइब्रेरी ट्री मॉडल, न्यूरल नेटवर्क और किसी भी ब्लैक-बॉक्स मॉडल का समर्थन करती है। इसे pip install shap से इंस्टॉल करें और अपने प्रशिक्षित मॉडल के साथ आयात करें। SHAP के व्याख्याकार मॉडल के प्रकार को समझते हैं: ग्रेडिएंट बूस्टिंग और रैंडम फ़ॉरेस्ट के लिए TreeExplainer O(T·D²) समय में सटीक मान देता है, जो सरल घातीय-समय वाले Shapley परिकलन से बहुत तेज़ है।
import shap
import xgboost as xgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
data = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(
data.data, data.target, test_size=0.2, random_state=42
)
model = xgb.XGBClassifier(n_estimators=100, use_label_encoder=False, eval_metric='logloss')
model.fit(X_train, y_train)
explainer = shap.TreeExplainer(model)टेस्ट सेट के लिए SHAP मानों की गणना
explainer.shap_values(X_test) को कॉल करने पर एक ऐसी मैट्रिक्स बनती है जिसमें प्रत्येक पंक्ति एक नमूना और प्रत्येक कॉलम एक फीचर होता है। नमूना i में फीचर j का SHAP मान यह दर्शाता है कि फीचर j अपेक्षित आधार मान से दूर पूर्वानुमान को धकेलने में कितना योगदान देता है। धनात्मक मान धनात्मक वर्ग की ओर धकेलते हैं; ऋणात्मक मान ऋणात्मक वर्ग की ओर।
shap_values = explainer.shap_values(X_test)
print('SHAP values shape:', shap_values.shape) # (n_samples, n_features)
print('Base value (expected prediction):', explainer.expected_value)
print('First sample SHAP values:', shap_values[0])वैश्विक महत्त्व: बार प्लॉट
वैश्विक फीचर महत्त्व सभी पूर्वानुमानों में यह सारांशित करता है कि कौन-से फीचर सबसे अधिक महत्त्वपूर्ण हैं। बार मोड में SHAP का summary_plot प्रत्येक फीचर के लिए SHAP मान का औसत निरपेक्ष मान दिखाता है और उन्हें सबसे अधिक से सबसे कम महत्त्वपूर्ण क्रम में रखता है। यह सरल अंतर्निहित फीचर महत्त्व की जगह लेता है, जो केवल विभाजन की संख्या गिनता है और उच्च-विविधता वाले फीचरों के पक्ष में पक्षपाती होता है।
import matplotlib.pyplot as plt
# Bar plot: mean |SHAP| per feature
shap.summary_plot(shap_values, X_test,
feature_names=data.feature_names,
plot_type='bar')
plt.tight_layout()
plt.savefig('shap_bar.png', dpi=150)वैश्विक महत्त्व: बीस्वॉर्म प्लॉट
बीस्वॉर्म प्लॉट (डिफ़ॉल्ट summary_plot) बार चार्ट से अधिक जानकारी देता है: प्रत्येक बिंदु एक नमूने को दर्शाता है और फीचर मान के आधार पर रंगीन होता है (लाल = अधिक, नीला = कम)। x-अक्ष SHAP मान दिखाती है, इसलिए आप न केवल यह देख सकते हैं कि कौन-से फीचर महत्त्वपूर्ण हैं, बल्कि यह भी कि फीचर का अधिक या कम मान पूर्वानुमानों को किस दिशा में प्रभावित करता है। इससे गैर-रैखिक और पारस्परिक प्रभाव तुरंत दिखाई देते हैं।
shap.summary_plot(shap_values, X_test,
feature_names=data.feature_names)
# Dots to the right = positive contribution to predicted class
# Red dots far right = high feature value strongly increases predictionस्थानीय व्याख्या: फ़ोर्स प्लॉट
फ़ोर्स प्लॉट किसी एक पूर्वानुमान की व्याख्या करता है। इसमें बाईं ओर आधार मान और दाईं ओर अंतिम पूर्वानुमान दिखता है; फीचर ऐसे तीरों के रूप में होते हैं जो आउटपुट को अधिक (लाल) या कम (नीला) करते हैं। प्रत्येक तीर की चौड़ाई फीचर के SHAP मान के अनुपात में होती है। यही वह व्याख्या है जिसे आप किसी ऋण अधिकारी को यह पूछने पर दिखा सकते हैं कि 'यह आवेदन अस्वीकार क्यों किया गया?'
# Explain the first test sample
i = 0
shap.force_plot(
explainer.expected_value,
shap_values[i],
X_test[i],
feature_names=data.feature_names,
matplotlib=True
)स्थानीय व्याख्या: वॉटरफ़ॉल प्लॉट
वॉटरफ़ॉल प्लॉट किसी एक नमूने के लिए फ़ोर्स प्लॉट का अधिक साफ़ विकल्प है। यह आधार मान से शुरू होकर SHAP योगदानों को लंबवत रूप से जोड़ता है और प्रत्येक फीचर के योगदान को बार के एक खंड के रूप में दिखाता है। धनात्मक योगदान लाल होते हैं और ऊपर की ओर धकेलते हैं; ऋणात्मक योगदान नीले होते हैं और नीचे की ओर खींचते हैं। अंतिम जोड़ उस नमूने के लिए मॉडल के कच्चे आउटपुट के बराबर होता है।
import shap
explanation = shap.Explanation(
values=shap_values[0],
base_values=explainer.expected_value,
data=X_test[0],
feature_names=list(data.feature_names)
)
shap.waterfall_plot(explanation)निर्भरता प्लॉट: फीचर पारस्परिक प्रभाव
SHAP निर्भरता प्लॉट दिखाता है कि किसी एक फीचर का SHAP मान उसके कच्चे मान के बदलने पर कैसे बदलता है। पारस्परिक प्रभावों को उजागर करने के लिए इसे दूसरे फीचर के आधार पर रंगीन किया जाता है। उदाहरण के लिए, 'सबसे खराब त्रिज्या' को 'औसत बनावट' के आधार पर रंगीन करके प्लॉट करने से पता चलता है कि त्रिज्या का प्रभाव बनावट पर निर्भर करता है या नहीं। यह सभी फीचर पारस्परिक प्रभावों को स्वाभाविक रूप से ध्यान में रखकर सामान्य आंशिक-निर्भरता प्लॉट से आगे जाता है।
shap.dependence_plot(
'worst radius', # feature to plot on x-axis
shap_values,
X_test,
feature_names=list(data.feature_names),
interaction_index='mean texture' # colour by this feature
)किसी भी मॉडल के साथ SHAP: KernelExplainer
जब मॉडल एक ब्लैक बॉक्स हो (SVM, न्यूरल नेटवर्क या कोई भी sklearn एस्टिमेटर), तब shap.KernelExplainer का उपयोग करें। यह कोएलिशनों का नमूना लेकर और स्थानीय रूप से भारित रैखिक मॉडल फिट करके Shapley मानों का अनुमान लगाता है। यह मॉडल-निरपेक्ष है, लेकिन TreeExplainer से धीमा है। बड़े डेटासेट पर परिकलन तेज़ करने के लिए पृष्ठभूमि डेटासेट का सारांश (जैसे K-Means केंद्रक) दें।
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
import shap
import numpy as np
pipeline = Pipeline([('scaler', StandardScaler()), ('svm', SVC(probability=True))])
pipeline.fit(X_train, y_train)
# Use 50 background samples for speed
background = shap.kmeans(X_train, 50)
explainer_k = shap.KernelExplainer(pipeline.predict_proba, background)
shap_vals_k = explainer_k.shap_values(X_test[:10]) # Explain 10 samplesसत्यापन: SHAP मानों का योग पूर्वानुमान के बराबर होना
SHAP का एक महत्त्वपूर्ण गुण दक्षता है: किसी नमूने के सभी SHAP मानों का योग और आधार मान मिलकर मॉडल के कच्चे आउटपुट के बराबर होने चाहिए। इस जाँच का सत्यापन यह पुष्टि करता है कि व्याख्याकार सही ढंग से काम कर रहा है। कोई भी अंतर व्याख्याकार के प्रकार और मॉडल के बीच असंगति या गलत पृष्ठभूमि डेटा का संकेत देता है।
import numpy as np
# For tree models, verify SHAP values sum to log-odds output
base = explainer.expected_value
for i in range(5):
shap_sum = shap_values[i].sum() + base
raw_pred = model.predict(X_test[i:i+1], output_margin=True)[0]
print(f'Sample {i}: SHAP sum={shap_sum:.4f}, model output={raw_pred:.4f}, match={abs(shap_sum-raw_pred)<1e-4}')त्वरित जाँच
इस पाठ में दिए गए Python के साथ मशीन लर्निंग संबंधी सिद्धांतों की अपनी समझ जाँचें।
पाठ का पुनरावलोकन
इस पाठ में आपने सीखा: SHAP मान Shapley मानों का उपयोग करके प्रत्येक फीचर के पूर्वानुमान में योगदान को मापते हैं, वैश्विक सारांश (बार और बीस्वॉर्म प्लॉट) समग्र फीचर महत्त्व और दिशा दिखाते हैं, और स्थानीय व्याख्याएँ (फ़ोर्स और वॉटरफ़ॉल प्लॉट) अलग-अलग पूर्वानुमानों का औचित्य बताती हैं। अब हम मॉडल-निरपेक्ष व्याख्या की एक वैकल्पिक विधि LIME का अध्ययन करेंगे।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “SHAP मान: वैश्विक और स्थानीय फीचर महत्त्व” पाठ निःशुल्क है?
हाँ—“SHAP मान: वैश्विक और स्थानीय फीचर महत्त्व” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Machine Learning Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Machine Learning Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“SHAP मान: वैश्विक और स्थानीय फीचर महत्त्व” में मैं क्या सीखूँगा?
आप ग्रेडिएंट-बूस्टिंग मॉडल के लिए SHAP मानों की गणना करेंगे, बीस्वॉर्म और बार सारांशों के आलेख बनाएँगे और किसी एक पूर्वानुमान को गैर-तकनीकी हितधारक को समझाएँगे। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Machine Learning Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Machine Learning Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Machine Learning Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“SHAP मान: वैश्विक और स्थानीय फीचर महत्त्व” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Machine Learning Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Machine Learning Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- SHAP मान: वैश्विक और स्थानीय फीचर महत्त्व
- LIME: स्थानीय व्याख्यायोग्य मॉडल-अज्ञेय स्पष्टीकरण
- निष्पक्षता मेट्रिक्स: जनसांख्यिकीय समानता और समान अवसर
- पूर्वाग्रह कम करने की रणनीतियाँ: प्री-प्रोसेसिंग, इन-प्रोसेसिंग और पोस्ट-प्रोसेसिंग