Model Explanation হল মেশিন লার্নিং মডেলের আউটপুট এবং তার সিদ্ধান্ত গ্রহণ প্রক্রিয়া ব্যাখ্যা করার একটি গুরুত্বপূর্ণ ধাপ, যা মডেলটি কীভাবে কাজ করে তা ব্যবহারকারীর জন্য পরিষ্কার করে তোলে। বিভিন্ন মডেল যেমন Decision Trees, Random Forests, এবং Deep Neural Networks বেশ জটিল হতে পারে, এবং তাদের কাজের প্রক্রিয়া ব্যাখ্যা করা কঠিন হতে পারে। SHAP (SHapley Additive exPlanations) এবং LIME (Local Interpretable Model-agnostic Explanations) এই সমস্যার সমাধান দেয়, কারণ তারা মডেলটির সিদ্ধান্ত ব্যাখ্যা করতে সহায়তা করে।
SHAP (SHapley Additive exPlanations)
SHAP হল একটি ব্যাখ্যামূলক টুল যা মডেলগুলির জন্য সঠিক এবং বিশ্বাসযোগ্য ব্যাখ্যা প্রদান করে। এটি Shapley Values থেকে উদ্ভূত, যা গেম থিওরি থেকে নেয়া একটি ধারণা। Shapley Value প্রতিটি বৈশিষ্ট্য বা ফিচারের অবদান মূল্যায়ন করে এবং ব্যাখ্যা করে যে, মডেলটি যে সিদ্ধান্ত নিয়েছে তার মধ্যে প্রত্যেকটি ফিচারের কী অবদান রয়েছে। SHAP মডেলটি additive (যে মডেলের প্রতিটি ফিচার ইন্ডিপেনডেন্টভাবে আউটপুটে যোগ করতে পারে) এবং এটি অত্যন্ত সঠিক ব্যাখ্যা প্রদান করে।
SHAP এর কাজের ধারা:
- Shapley Values: প্রতিটি ইনপুট ফিচারের অবদান বুঝতে Shapley Values গণনা করা হয়। Shapley Value প্রতিটি ফিচারের অবদান নির্ধারণ করে, যা মডেলটির সিদ্ধান্ত প্রক্রিয়ার প্রতি ফিচারের প্রভাব নির্দেশ করে।
- Global এবং Local Explanations: SHAP মডেলটি একটি গ্লোবাল (পুরো মডেল) এবং লোকাল (একক পূর্বাভাস) ব্যাখ্যা প্রদান করতে সক্ষম।
- Visualizations: SHAP গ্রাফিকাল পদ্ধতিতে মডেলের ব্যাখ্যা এবং ফিচার গুরুত্ব প্রদর্শন করতে সাহায্য করে।
SHAP ব্যবহার করা:
import shap
import xgboost as xgb
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
# Boston dataset লোড করা
boston = load_boston()
X = boston.data
y = boston.target
# ডেটাসেট ট্রেনিং এবং টেস্টে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# XGBoost মডেল তৈরি
model = xgb.XGBRegressor()
model.fit(X_train, y_train)
# SHAP Explainer তৈরি
explainer = shap.Explainer(model, X_train)
# SHAP ভ্যালু গণনা
shap_values = explainer(X_test)
# SHAP Summary Plot
shap.summary_plot(shap_values, X_test, feature_names=boston.feature_names)
এই কোডের মাধ্যমে আমরা XGBoost মডেলটি ট্রেনিং করেছি এবং SHAP এর মাধ্যমে মডেলের ফিচারের গুরুত্বপূর্ণ অবদান দেখেছি।
LIME (Local Interpretable Model-agnostic Explanations)
LIME হল একটি সহজ এবং দ্রুত পদ্ধতি যা মডেল-এগনস্টিক (model-agnostic) ব্যাখ্যা তৈরি করে। LIME প্রধানত একটি লোকাল ব্যাখ্যা প্রদান করে, অর্থাৎ এটি একটি একক সিদ্ধান্তের জন্য ব্যাখ্যা তৈরি করে। LIME মূলত একটি "মডেল-অগ্নস্টিক" পদ্ধতি, যার মানে এটি যে কোনো মডেলের জন্য কাজ করতে পারে, যেমন Decision Trees, Logistic Regression, SVM বা Neural Networks।
LIME একটি সার্বজনীন মডেল (white-box) তৈরি করে যা মডেলের আউটপুটের কাছাকাছি থাকে, তবে এটি খুবই সহজ এবং ব্যাখ্যা করার জন্য সুবিধাজনক।
LIME এর কাজের ধারা:
- Locally Approximating the Model: LIME একটি মডেলকে সহজ করে তোলার জন্য লোকাল অপ্রক্সিমেশন মডেল ব্যবহার করে। এটি মডেলের পাশের অঞ্চলে একটি সরল এবং ব্যাখ্যাযোগ্য মডেল তৈরি করে।
- Perturbation: এটি ইনপুট ডেটার কিছু পরিবর্তন বা perturbation তৈরি করে এবং প্রতিটি পরিবর্তনের জন্য আউটপুট দেখে মডেলটি কীভাবে কাজ করছে তা বোঝার চেষ্টা করে।
- Explanations: LIME সাধারণত প্রতিরূপ (Surrogate) মডেল তৈরি করে যা স্থানীয় সিদ্ধান্ত বোঝায়।
LIME ব্যবহার করা:
import lime
import lime.lime_tabular
import numpy as np
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
# Boston dataset লোড করা
boston = load_boston()
X = boston.data
y = boston.target
# ডেটাসেট ট্রেনিং এবং টেস্টে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Random Forest মডেল তৈরি
model = RandomForestRegressor()
model.fit(X_train, y_train)
# LIME Explainer তৈরি
explainer = lime.lime_tabular.LimeTabularExplainer(X_train, mode='regression', training_labels=y_train, training_data=X_train)
# টেস্ট ইনপুটের জন্য ব্যাখ্যা তৈরি
explanation = explainer.explain_instance(X_test[0], model.predict)
# ব্যাখ্যা প্রদর্শন
explanation.show_in_notebook()
এই কোডে Random Forest মডেলটি ব্যবহার করা হয়েছে এবং LIME এর মাধ্যমে টেস্ট ডেটার একটি একক পূর্বাভাস ব্যাখ্যা করা হয়েছে।
SHAP এবং LIME এর মধ্যে পার্থক্য:
- Global vs Local:
- SHAP গ্লোবাল এবং লোকাল ব্যাখ্যা উভয়ই প্রদান করতে পারে, যেখানে LIME সাধারণত লোকাল ব্যাখ্যা প্রদান করে।
- ব্যাখ্যার সঠিকতা:
- SHAP শাপলি ভ্যালু ব্যবহার করে গণনা করা হয়, যা গেম থিওরির ওপর ভিত্তি করে এবং তাই অত্যন্ত সঠিক। অপরদিকে, LIME মডেলের কাছাকাছি একটি সারোগেট মডেল তৈরি করে, যা কিছু ক্ষেত্রে কম সঠিক হতে পারে।
- মডেল অগ্রাহ্যতা:
- LIME সম্পূর্ণ মডেল-অগ্রাহ্য, এটি যে কোনো মডেলের জন্য কাজ করে, তবে SHAP শুধুমাত্র কিছু নির্দিষ্ট মডেল (যেমন গ্লোবাল নিউরাল নেটওয়ার্ক বা গ্রেডিয়েন্ট বুস্টিং মডেল) এর সাথে ভালো কাজ করে।
সারাংশ
- SHAP এবং LIME দুটি শক্তিশালী টুল যা মডেল ব্যাখ্যা এবং explainable AI (XAI) এর জন্য ব্যবহৃত হয়।
- SHAP সঠিক এবং গণনামূলক ব্যাখ্যা প্রদান করে, যা গেম থিওরি থেকে উদ্ভূত এবং মডেলটির ফিচারগুলির অবদান দেখাতে সহায়তা করে।
- LIME সহজ এবং দ্রুত, যা স্থানীয় ব্যাখ্যা তৈরি করতে সাহায্য করে, তবে এটি সারোগেট মডেল ব্যবহার করে।
এগুলি মডেলগুলির সিদ্ধান্ত বুঝতে এবং অস্বচ্ছ মডেলগুলোকে ব্যাখ্যা করতে গুরুত্বপূর্ণ।
Read more