مدل یادگیری ماشین خود را با SHAP Value توضیح دهید


به مرور که الگوریتم‌های یادگیری ماشین پیچیده‌تر می‌شوند، تفسیرپذیری یادگیری ماشین اهمیت فزاینده‌ای پیدا می‌کند. اگر الگوریتم‌های یادگیری ماشین شما قابل توضیح نباشند، احتمال پذیرش آنها توسط دیگران هم کمتر است. مدل‌های با عملکرد پایین‌تر اما قابل توضیح (مانند رگرسیون خطی) گاهی بر مدل‌های جعبه سیاه کارآمدتر (مانند شبکه‌های عصبی) ترجیح داده می‌شوند. به همین دلیل است که تحقیقات پیرامون هوش مصنوعی قابل توضیح (Explainable AI) اخیراً با پروژه‌های شگفت انگیزی مانند SHAP در حال ظهور است.

اگر نتوانید توضیح دهید که یک مدل یادگیری ماشین چه کاری انجام می‌دهد، آیا به آن اطمینان می‌کنید؟اینجاست که SHAP value می‌تواند بسیار کمک کننده باشد: SHAP می‌تواند هر مدل یادگیری ماشین را توضیح دهد و علاوه بر آن اثرگذاری هر یک از ویژگی‌ها روی هدف را مشخص کند. اما این تمام کاری نیست که SHAP می‌تواند انجام دهد. یک مدل ساده (sklearn/xgboost/keras) بسازید و از SHAP استفاده کنید: حال با بررسی ویژگی‌هایی که بیشترین تأثیر را در پیش بینی دارند، می‌توانید انتخاب ویژگی انجام دهید.

تفسیرپذیری بهتر مدل به پذیرش بهتر آن منجر خواهد شد

اما در پشت صحنه SHAP چطور این کار را انجام می‌دهد و چطور می‌توان از آن استفاده کرد؟

در این مقاله نشان خواهیم داد که چطور می‌توانید از SHAP Value برای توضیح و انتخاب ویژگی‌ها در مدل خود استفاده کنید.

چطور می‌توانید از SHAP value استفاده کنید؟

در اینجا یک مثال ساده با SHAP Value با استفاده از رقابت Kaggle «House Prices – Advanced Regression Techniques» را بررسی می‎‌کنیم تا قابلیت‌های SHAP را نشان دهیم.

لینک دیتاست : https://www.kaggle.com/c/house-prices-advanced-regression-techniques

فرآیند استفاده از SHAP کاملاً ساده است: باید یک مدل بسازیم و سپس از کتابخانه‌ی SHAP برای توضیح آن استفاده کنیم.

using SHAP Value to understand machine learning model

در اینجا، مدل یادگیری ماشین ما سعی می‌کند قیمت خانه را از روی داده‌های مشخص (مترمربع، کیفیت، تعداد طبقات و غیره) پیش بینی کند.

حال سراغ کد می‌رویم:

1-ابتدا یک estimator ایجاد کنید: برای مثال GradientBoostingRegressor از sklearn.ensemble:

2-estimator خود را آموزش دهید:

3-از کتابخانه‌ی shap استفاده کنید تا SHAP Valueها را محاسبه کنید. برای مثال از کد زیر استفاده کنید:

4-حال با استفاده از دستور shap.summary_plot ببینید اثر هر ویژگی بر خروجی چقدر بوده است:

summary_plot_SHAP_value

برای مثال با توجه به نمودار فوق می‌توانید ببینید که OverallQual ویژگی است که بیشترین اثر را بر خروجی مدل دارد. مقادیر بالا (که با رنگ قرمز در نمودار نشان داده شده اند) می‌توانند قیمت خانه را تا 60000تا افزایش دهند و مقادیر پایین می‌توانند قیمت را تا 20000تا کاهش دهند.

اما این تمام کاری نیست که SHAP می‌تواند انجام دهد! SHAP همچنین می‌تواند یک پیش بینی را توضیح دهد. برای مثال با استفاده از shap.plots.waterfall برای تک عنصر در دیتاست، می‌توانید داشته باشید:

Waterfall plot of SHAP value

برای این مثال خاص، قیمت پیش بینی شده 166 هزار بود (در برابر 174هزار در حالت میانگین). همچنین می‌توانیم بفهمیم که چرا الگوریتم چنین پیش بینی کرده است: برای مثال OverallQual که بالاست (7) مقدار پیش بینی را بالا می‌برد اما YearBuilt (1925) مقدار پیش بینی را پایین می‌آورد.

با استفاده از SHAP Value می‌توانید پویایی مدل خود به طور کل و هم در نقاط خاص درک کنید. با SHAP راحت‌تر می‌توانید ببینید که آیا چیزی اشتباه است تا بتوانید آن را اصلاح کنید.

در دوره‌ی جامع و پروژه محور کاربرد یادگیری عمیق در بینایی ماشین مفهوم SHAP Value به طور کامل توضیح داده شده و پروژه‌های مرتبط با آن انجام شده است.

 


دیدگاه ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

code