توی دنیایی که داشتن علم دیتا و یادگیری ماشین روز به روز داره بیشتر اهمیت خودشو نشون میده خیلی مهمه که بدونیم یادگیری ماشین چطور می تونه در حل مسائل پیچیده به ما کمک کنه.
من مینا هستم؛ یک تازه کار در دنیای بزرگ دیتا و می خوام در یک رشته مقاله یکی از معیارهای اندازه گیری عملکرد مدل رو در یادگیری ماشین، با شما به اشتراک بذارم.
اول بگم که سعی کردم که تا حد امکان فارسی بنویسم و بنابراین شما می تونید ROC رو "راک" صدا کنید!
دوم اینکه قراره همه بتون از این مقاله استفاده کنن پس به ساده ترین روش ممکن نوشته شده.
خب مقدمه چینی بسه و بریم سر اصل مطب!
معیارهایی که ما برای ارزیابی یک مدل در یادگیری ماشین انتخاب می کنیم خیلی مهمه چون این انتخاب بر نحوه اندازه گیری و مقایسه عملکرد الگوریتم های یادگیری ماشین تأثیر میذاره. بزارید یک مثال بزنم: فرض کنید شما میخواید طول یک میز رو اندازه بگیرید. اگر کوچکترین واحد اندازه گیری خط کش شما "سانتی متر" باشه و طول میز شما 20 سانتی متر و 4 میلی متر، عددی که در نهایت اعلام می کنید 20 سانتی متر یا 20 سانتی متر و خورده ای هست! (چرا که برای اندازه گیری میلی متر وسیله ای ندارید) اما اگر کوچکترین واحد خط کش شما "میلی متر" باشه، طول میز رو 20 سانتی متر و 4 میلی متر یا 204 میلی متر اعلام می کنید. پس اینکه ما چه نوع معیاری (خط کشی) رو برای ارزیابی مدلمون در نظر بگیریم خیلی اهمیت داره.
در مسائل طبقه بندی یکی از معیارهایی که برای درستی و دقت مدل ازش استفاده می کنیم سطح زیر نمودار راک یا همون AUC هست. اما خب اصلا نمودار راک چی هست که حالا سطح زیر نمودارش چی باشه؟!
قراره بیشتر از این گیجتون کنم چون برای توضیح تمام مسائل بالا اول باید بریم سراغ ماتریسی که اصلا اسمش ماتریس سردرگمی (من بهش می گم ماتریس گیجی) یا همون confusion matrix هست!
تا حالا شده خودت یا اطرافیانت علائم کرونا رو داشته باشید ولی جواب تستتون منفی باشه؟ یا برعکس؛ بدون هیچ علائمی برید تست بدید و تستتون مثبت باشه؟ چی کار می کنید؟ اصلا چرا انقدر تست های مختلف برای تشخیص این ویروس وجود داره؟ کدومش دقتش! بالاتره؟
حالا همه اینا چه ربطی به ماتریس ما داشت؟ باید بگم که جواب تمام این سوالا دقیقا بر می گرده به همین ماتریس!
ماتریس گیجی به ما میگه که یک تست/ مدل چقدر دقت داره. یعنی اون تستی که شما دادی چقدر تونسته به طور صحیح تشخیص بده که شما بیمار هستی یا نه و چقدر وجود این بیماری رو اشتباه تشخیص داده؟!
بزار بیشتر توضیح بدم؛ برای تستی که برای تشخیص کرونا انجام می شه می تونه 4 حالت اتفاق بیفته:
1- شما کرونا دارید و جواب تست مثبته
2- شما کرونا ندارید و جواب تست منفیه
3- شما کرونا ندارید و جواب تست مثبته
4- شما کرونا دارید و جواب تست منفیه
تو این مثال کدوم از حالت ها می تونه خطرناک تر باشه؟ خب معلومه که اگه تو کرونا داشته باشی (خدای نکرده) و به جواب تست منفی اعتماد کنی فاجعه میشه! واسه همینه که توصیه میکنن اگه علائم داری تو خونه بمون و به جواب تست اعتماد نکن!
حالا اگه بخوایم این مفهوم رو در یادگیری ماشین به کار بگیریم چی میشه؟
فرض کنید دو گروه (کلاس) 1 و 2 داریم و می خواهیم بدونیم که nامین مشاهده در کدوم گروه قرار می گیره، بعله دوباره 4 حالت پیش میاد:
1- مدل شما پیش بینی می کنه که nامین مشاهده در گروه 1 هست و در واقعیت نیز nامین مشاهده در گروه 1 هست.
2- مدل شما پیش بینی می کنه که nامین مشاهده در گروه 2 هست و در واقعیت نیز nامین مشاهده در گروه 2 هست.
3- مدل شما پیش بینی می کنه که nامین مشاهده در گروه 1 هست اما در واقعیت nامین مشاهده در گروه 2 هست.
4- مدل شما پیش بینی می کنه که nامین مشاهده در گروه 2 هست اما در واقعیت نیز nامین مشاهده در گروه 1 هست.
در مثال بالا کدوم حالت می تونه بدتر باشه؟ کدوم حالت اگه اتفاق بیفته می تونیم بگیم مدلمون درست کار کرده و بهش اعتماد کنیم؟ جوابای متفاوتی پیدا کردید نه؟ خب حق دارید چون طراحی یک الگوریتم و بعد انتخاب یک معیار برای ارزیابی اون پیچیده تر از تست تشخیص یک بیماری هست و لازمه که در مفهوم ماتریس گیجیمون عمیق تر بشیم و بریم سراغ یک مدل واقعی از یادگیری ماشین.
بیشتر از این گیجتون نمیکنم. حالا حالاها باهم هستیم تا این مفاهیم رو کامل متوجه بشیم و ماتریس گیجی رو تبدیل کنیم به یک ماتریس ساده 2 در2.
در قسمت های بعدی توضیح می دم که هر کدوم از این 4 حالت در ماتریس چه جایگاهی دارن و چه معیارهای دیگه ای رو با استفاده از این 4 معیار می تونیم به دست بیاریم و بر اساس اونا مدلمون رو ارزیابی کنیم.
روز و روزگار خوش!