मशीन लर्निंग मॉडल लगातार अधिक जटिल, शक्तिशाली और सटीक भविष्यवाणियाँ करने में सक्षम हो रहे हैं। हालांकि, जैसे-जैसे ये मॉडल "ब्लैक बॉक्स" बनते जाते हैं, यह समझना और भी कठिन हो जाता है कि वे उन भविष्यवाणियों तक कैसे पहुँचे। इससे मशीन लर्निंग की व्याख्यात्मकता और स्पष्टता पर बढ़ता ध्यान केंद्रित हुआ है।
उदाहरण के लिए, आपने बैंक में लोन के लिए आवेदन किया लेकिन उसे अस्वीकार कर दिया गया। आप अस्वीकृति का कारण जानना चाहते हैं, लेकिन कस्टमर सर्विस एजेंट जवाब देता है कि किसी एल्गोरिदम ने आवेदन खारिज कर दिया और वे कारण निर्धारित नहीं कर सकते। यह निराशाजनक है, है ना? जो निर्णय आपको प्रभावित करता है, उसके लिए आप एक स्पष्टीकरण के हकदार हैं। इसलिए कंपनियाँ अपने मशीन लर्निंग मॉडलों को अधिक पारदर्शी और समझने योग्य बनाने की कोशिश करती हैं।
इस प्रक्रिया के लिए सबसे संभावनाशील टूल्स में से एक SHAP वैल्यूज़ हैं, जो मापती हैं कि प्रत्येक फीचर (जैसे आय, उम्र, क्रेडिट स्कोर आदि) मॉडल की भविष्यवाणी में कितना योगदान देता है। SHAP वैल्यूज़ आपको यह देखने में मदद करती हैं कि मॉडल के लिए कौन-से फीचर सबसे महत्वपूर्ण हैं और वे परिणाम को कैसे प्रभावित करते हैं।
इस ट्यूटोरियल में, हम SHAP वैल्यूज़ और मशीन लर्निंग मॉडल की व्याख्या में उनकी भूमिका के बारे में जानेंगे। हम मॉडलों की व्याख्या के लिए विभिन्न प्लॉट बनाने और उनका विश्लेषण करने हेतु Shap Python पैकेज का भी उपयोग करेंगे।
SHAP वैल्यूज़ क्या हैं?
SHAP (SHapley Additive exPlanations) वैल्यूज़ किसी भी मशीन लर्निंग मॉडल के आउटपुट को समझाने का एक तरीका हैं। यह गेम थ्योरी पर आधारित दृष्टिकोण अपनाता है, जो अंतिम परिणाम में प्रत्येक खिलाड़ी के योगदान को मापता है। मशीन लर्निंग में, प्रत्येक फीचर को एक महत्व मान सौंपा जाता है जो मॉडल के आउटपुट में उसके योगदान का प्रतिनिधित्व करता है।
SHAP वैल्यूज़ दिखाती हैं कि प्रत्येक फीचर प्रत्येक अंतिम भविष्यवाणी को कैसे प्रभावित करता है, अन्य के मुकाबले प्रत्येक फीचर का महत्व क्या है, और फीचर्स के बीच इंटरैक्शन पर मॉडल की निर्भरता कितनी है।
मशीन लर्निंग में SHAP वैल्यूज़
SHAP वैल्यूज़ मॉडल की भविष्यवाणी पर प्रत्येक फीचर का प्रभाव समझने का एक सुसंगत और वस्तुनिष्ठ तरीका प्रदान करती हैं।
SHAP वैल्यूज़ गेम थ्योरी पर आधारित हैं और मॉडल में प्रत्येक फीचर को एक महत्व मान देती हैं। सकारात्मक SHAP वैल्यू वाले फीचर भविष्यवाणी पर सकारात्मक प्रभाव डालते हैं, जबकि नकारात्मक वैल्यू वाले नकारात्मक प्रभाव डालते हैं। परिमाण यह दर्शाता है कि प्रभाव कितना मजबूत है।
SHAP वैल्यूज़ मॉडल-अज्ञेयवादी हैं, यानी इन्हें किसी भी मशीन लर्निंग मॉडल की व्याख्या के लिए उपयोग किया जा सकता है, जिनमें शामिल हैं:
- लिनियर रिग्रेशन
- डिसीजन ट्री
- रैंडम फॉरेस्ट
- ग्रेडिएंट बूस्टिंग मॉडल
- न्यूरल नेटवर्क
SHAP वैल्यूज़ के गुण
SHAP वैल्यूज़ में कई उपयोगी गुण होते हैं जो उन्हें मॉडलों की व्याख्या के लिए प्रभावी बनाते हैं:
एडिटिविटी
SHAP वैल्यूज़ एडिटिव होती हैं, यानी अंतिम भविष्यवाणी में प्रत्येक फीचर के योगदान की स्वतंत्र रूप से गणना की जा सकती है और फिर उन्हें जोड़ा जा सकता है। यह गुण उच्च-आयामी डेटासेट के लिए भी SHAP वैल्यूज़ की कुशल गणना की अनुमति देता है।
लोकल सटीकता
किसी दिए गए इनपुट के लिए SHAP वैल्यूज़, अपेक्षित मॉडल आउटपुट और वास्तविक आउटपुट के बीच के अंतर तक जुड़ती हैं। इसका अर्थ है कि SHAP वैल्यूज़ किसी दिए गए इनपुट के लिए मॉडल की भविष्यवाणी की सटीक और स्थानीय व्याख्या प्रदान करती हैं।
मिसिंगनेस
किसी भविष्यवाणी के लिए गुम या अप्रासंगिक फीचर्स की SHAP वैल्यू शून्य होती है। यह SHAP वैल्यूज़ को मिसिंग डेटा के प्रति मजबूत बनाता है और सुनिश्चित करता है कि अप्रासंगिक फीचर व्याख्या को विकृत न करें।
संगति
जब तक किसी फीचर का योगदान नहीं बदलता, SHAP वैल्यूज़ मॉडल बदलने पर भी नहीं बदलतीं। यानी मॉडल आर्किटेक्चर या पैरामीटर बदलने पर भी SHAP वैल्यूज़ मॉडल के व्यवहार की सुसंगत व्याख्या प्रदान करती हैं।
कुल मिलाकर, SHAP वैल्यूज़ यह समझने का एक सुसंगत और वस्तुनिष्ठ तरीका प्रदान करती हैं कि कोई मशीन लर्निंग मॉडल भविष्यवाणियाँ कैसे करता है और किन फीचर्स का सबसे अधिक प्रभाव होता है।
Python में SHAP वैल्यूज़ कैसे लागू करें
इस खंड में, हम SHAP वैल्यूज़ की गणना करेंगे और फीचर इम्पॉर्टेंस, फीचर डिपेंडेंस, फोर्स, और डिसीजन प्लॉट को विज़ुअलाइज़ करेंगे।
इस ट्यूटोरियल का कोड ऑनलाइन चलाएं और संपादित करें
कोड चलाएंसेटअप
SHAP को PyPI या conda-forge से इंस्टॉल करें:
pip install shap
या
conda install -c conda-forge shap
Telecom Customer Churn लोड करें। डेटासेट साफ दिखता है, और टार्गेट कॉलम “Churn” है।
import shap
import pandas as pd
import numpy as np
shap.initjs()
customer = pd.read_csv("data/customer_churn.csv")
customer.head()

मॉडल प्रशिक्षण और मूल्यांकन
- टार्गेट कॉलम का उपयोग करके X और y बनाएँ और डेटासेट को ट्रेन और टेस्ट में बाँटें।
- ट्रेनिंग सेट पर Random Forest Classifier को प्रशिक्षित करें।
- टेस्टिंग सेट का उपयोग करके भविष्यवाणियाँ करें।
- क्लासिफिकेशन रिपोर्ट प्रदर्शित करें।
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
X = customer.drop("Churn", axis=1) # Independent variables
y = customer.Churn # Dependent variable
# Split into train and test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)
# Train a machine learning model
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier()
clf.fit(X_train, y_train)
# Make prediction on the testing data
y_pred = clf.predict(X_test)
# Classification Report
print(classification_report(y_pred, y_test))
मॉडल ने असंतुलित डेटासेट के कारण “0” लेबल के लिए “1” की तुलना में बेहतर प्रदर्शन दिखाया है। कुल मिलाकर, 94% सटीकता के साथ यह स्वीकार्य परिणाम है।
precision recall f1-score support
0 0.97 0.96 0.97 815
1 0.79 0.82 0.80 130
accuracy 0.94 945
macro avg 0.88 0.89 0.88 945
weighted avg 0.94 0.94 0.94 945
क्लासिफिकेशन पर Python उदाहरणों के साथ सीखने के लिए हमारा Classification in Machine Learning गाइड देखें।
SHAP एक्सप्लेनर सेटअप
अब मॉडल एक्सप्लेनर वाले भाग पर आते हैं।
हम पहले एक एक्सप्लेनर ऑब्जेक्ट बनाएँगे जिसमें रैंडम फॉरेस्ट क्लासिफिकेशन मॉडल देंगे, फिर टेस्टिंग सेट का उपयोग करके SHAP वैल्यू की गणना करेंगे।
explainer = shap.Explainer(clf)
shap_values = explainer.shap_values(X_test)
समरी प्लॉट
SHAP वैल्यूज़ और टेस्टिंग सेट का उपयोग करके summary_plot प्रदर्शित करें।
shap.summary_plot(shap_values, X_test)
समरी प्लॉट मॉडल में प्रत्येक फीचर की फीचर इम्पॉर्टेंस दिखाता है। परिणाम बताते हैं कि “Status,” “Complaints,” और “Frequency of use” परिणाम निर्धारित करने में प्रमुख भूमिका निभाते हैं।

लेबल “0” का summary_plot प्रदर्शित करें।
shap.summary_plot(shap_values[0], X_test)
- Y-अक्ष फीचर नामों को ऊपर से नीचे महत्व के क्रम में दर्शाता है।
- X-अक्ष SHAP वैल्यू का प्रतिनिधित्व करता है, जो लॉग ऑड्स में परिवर्तन की मात्रा दर्शाता है।
- ग्राफ़ पर प्रत्येक बिंदु का रंग संबंधित फीचर के मान का प्रतिनिधित्व करता है, जहाँ लाल उच्च मान और नीला निम्न मान इंगित करता है।
- प्रत्येक बिंदु मूल डेटासेट की एक डेटा पंक्ति का प्रतिनिधित्व करता है।
यदि आप फीचर “Complaints” देखें, तो पाएँगे कि यह अधिकांशतः उच्च है और इसकी SHAP वैल्यू नकारात्मक है। इसका मतलब है कि शिकायतों की अधिक संख्या आउटपुट को नकारात्मक रूप से प्रभावित करती है।
नोट: लेबल “1” के लिए विज़ुअलाइज़ेशन उल्टा होगा।

डिपेंडेंस प्लॉट
फीचर “Subscription Length” और “Age” के बीच dependence_plot को विज़ुअलाइज़ करें।
shap.dependence_plot("Subscription Length", shap_values[0], X_test,interaction_index="Age")
डिपेंडेंस प्लॉट एक प्रकार का स्कैटर प्लॉट है जो दिखाता है कि किसी विशेष फीचर (Subscription Length) से मॉडल की भविष्यवाणियाँ कैसे प्रभावित होती हैं। औसतन, सब्सक्रिप्शन की अवधि का मॉडल पर ज्यादातर सकारात्मक प्रभाव पड़ता है।

फोर्स प्लॉट
हम टेस्टिंग सेट के पहले सैंपल की जाँच करेंगे ताकि यह तय किया जा सके कि किन फीचर्स ने "0" परिणाम में योगदान दिया। ऐसा करने के लिए, हम फोर्स प्लॉट का उपयोग करेंगे और अपेक्षित मान, SHAP वैल्यू, और टेस्टिंग सैंपल प्रदान करेंगे।
shap.plots.force(explainer.expected_value[0], shap_values[0][0,:], X_test.iloc[0, :], matplotlib = True)
हम स्पष्ट रूप से देख सकते हैं कि शून्य शिकायतें और शून्य कॉल विफलताएँ ग्राहकों के नुकसान में नकारात्मक योगदान दे रही हैं।

आइए लेबल “1” वाले कस्टमर चर्न सैंपल देखें।
shap.plots.force(explainer.expected_value[1], shap_values[1][6, :], X_test.iloc[6, :],matplotlib = True)
आप उन सभी फीचर्स को उनके मान और परिमाण सहित देख सकते हैं, जिन्होंने ग्राहकों के नुकसान में योगदान दिया। ऐसा लगता है कि एक भी अनसुलझी शिकायत दूरसंचार कंपनी के लिए नुकसानदेह हो सकती है।

डिसीजन प्लॉट
अब हम decision_plot प्रदर्शित करेंगे। यह प्रत्येक भविष्यवाणी के लिए संचयी SHAP वैल्यूज़ को मैप करके मॉडल के निर्णयों को दृश्य रूप में दिखाता है।
shap.decision_plot(explainer.expected_value[1], shap_values[1], X_test.columns)
डिसीजन प्लॉट पर प्रत्येक प्लॉट की गई रेखा दिखाती है कि किसी एकल मॉडल भविष्यवाणी में व्यक्तिगत फीचर्स ने कितना मजबूत योगदान दिया, जिससे यह स्पष्ट होता है कि किन फीचर मानों ने भविष्यवाणी को आगे बढ़ाया।
नोट: टार्गेट लेबल “1” का डिसीजन प्लॉट “1” की ओर झुका हुआ है।

टार्गेट लेबल “0” के लिए डिसीजन प्लॉट प्रदर्शित करें
shap.decision_plot(explainer.expected_value[0], shap_values[0], X_test.columns)
डिसीजन प्लॉट “0” की ओर झुका हुआ है।

SHAP वैल्यूज़ के उपयोग
मशीन लर्निंग की व्याख्यात्मकता और स्पष्टता के अलावा, SHAP वैल्यू का उपयोग इन कार्यों में किया जा सकता है:
- मॉडल डीबगिंग। SHAP वैल्यूज़ की जाँच करके, हम डेटा में ऐसे पूर्वाग्रहों या आउट्लायर्स की पहचान कर सकते हैं जो मॉडल से गलतियाँ करा रहे हों।
- फीचर इम्पॉर्टेंस। कम प्रभाव वाले फीचर्स की पहचान करके उन्हें हटाना एक अधिक अनुकूलित मॉडल बना सकता है।
- एंकरिंग एक्सप्लेनेशंस। हम SHAP वैल्यूज़ का उपयोग किसी व्यक्तिगत भविष्यवाणी को समझाने के लिए कर सकते हैं, उन आवश्यक फीचर्स को उजागर करके जिन्होंने उस भविष्यवाणी का कारण बना। यह उपयोगकर्ताओं को मॉडल के निर्णयों को समझने और उस पर भरोसा करने में मदद कर सकता है।
- मॉडल समरी। यह SHAP वैल्यू समरी प्लॉट के रूप में किसी मॉडल का एक वैश्विक सारांश प्रदान कर सकता है। यह पूरे डेटासेट में सबसे महत्वपूर्ण फीचर्स का अवलोकन देता है।
- पूर्वाग्रह का पता लगाना। SHAP वैल्यू विश्लेषण यह पहचानने में मदद करता है कि क्या कुछ फीचर्स विशेष समूहों को अनुपातहीन रूप से प्रभावित कर रहे हैं। यह मॉडल में भेदभाव का पता लगाने और उसे कम करने में सक्षम बनाता है।
- फेयरनेस ऑडिटिंग। किसी मॉडल की निष्पक्षता और नैतिक प्रभावों का आकलन करने के लिए इसका उपयोग किया जा सकता है।
- नियामकीय स्वीकृति। SHAP वैल्यूज़ मॉडल के निर्णयों को समझाकर नियामकीय स्वीकृति प्राप्त करने में मदद कर सकती हैं।
निष्कर्ष
हमने SHAP वैल्यूज़ की जाँच की और देखा कि उन्हें मशीन लर्निंग मॉडलों के लिए व्याख्यात्मकता प्रदान करने में कैसे उपयोग किया जा सकता है। यद्यपि सटीक मॉडल होना आवश्यक है, कंपनियों को सटीकता से आगे बढ़कर व्याख्यात्मकता और पारदर्शिता पर ध्यान केंद्रित करना चाहिए ताकि उपयोगकर्ताओं और नियामकों का विश्वास जीता जा सके।
यह समझा पाना कि किसी मॉडल ने कोई विशेष भविष्यवाणी क्यों की, संभावित पूर्वाग्रहों को डीबग करने, डेटा संबंधी समस्याओं की पहचान करने और मॉडल के निर्णयों को सही ठहराने में मदद करता है।
यदि आप मशीन लर्निंग में नए हैं और नौकरी के लिए तैयार होना चाहते हैं, तो Machine Learning Scientist with Python करियर ट्रैक पर विचार करें। यह प्रोग्राम आपको मशीन लर्निंग साइंटिस्ट बनने और नौकरी पाने के लिए आवश्यक Python कौशल में पारंगत करेगा।
एक प्रमाणित डेटा साइंटिस्ट के रूप में, मैं अत्याधुनिक तकनीक का उपयोग करके नवाचारी मशीन लर्निंग अनुप्रयोग बनाने के लिए उत्साहित रहता/रहती हूँ। स्पीच रिकॉग्निशन, डेटा विश्लेषण और रिपोर्टिंग, MLOps, संवादात्मक AI और NLP में मजबूत पृष्ठभूमि के साथ, मैंने ऐसे बुद्धिमान सिस्टम विकसित करने में अपनी विशेषज्ञता निखारी है जो वास्तविक प्रभाव डाल सकें। तकनीकी दक्षता के अलावा, मैं जटिल अवधारणाओं को स्पष्ट और संक्षिप्त भाषा में प्रस्तुत करने में भी निपुण हूँ। परिणामस्वरूप, मैं डेटा साइंस पर एक मांग में रहने वाला/वाली ब्लॉगर बन गया/गई हूँ, और डेटा प्रोफेशनलों के बढ़ते समुदाय के साथ अपने अनुभव और विचार साझा करता/करती हूँ। वर्तमान में, मैं कंटेंट निर्माण और संपादन पर केंद्रित हूँ, बड़े भाषा मॉडलों के साथ काम करते हुए ऐसा प्रभावशाली और आकर्षक कंटेंट विकसित कर रहा/रही हूँ जो व्यवसायों और व्यक्तियों दोनों को अपने डेटा का अधिकतम लाभ उठाने में मदद कर सके।
