(و این که چه زمانی باید از آنها استفاده کرد ؟)
بیشتر کسب و کار ها در پاسخ به این سوال ساده موفق نیستند .
مشکل هر کسب و کاری با دیگری فرق دارد و به همین دلیل بهینهسازی متفاوتی نیاز دارد. همهی ما مدل طبقهبندی را درست کردهایم و در کنار آن وقت زیادی را صرف افزایش دقت مدل خود کردیم .
اما آیا واقعا دقت را میتوان به عنوان یک معیار مناسب برای تعیین عملکرد مدل دانست ؟
چه میشد اگر تعداد سیارکهایی به زمین میخورند را پیشبینی کنیم . اگر مرتبا بگوییم صفر این مدل در ۹۹٪ مواقع درست خواهد بود. میتوان گفت این مدل منطقی است اما به هیچ وجهی دارای ارزش نیست .
طراحی یک پروژه علوم داده بسیار مهم تر از مدلسازی است .این مقاله دربارهی معیارهای مختلف ارزیابی مدل ، چگونگی و زمان استفاده از آنهاست .
اساسیترین معیار اندازهگیری کیفیت یک دسته بند است . درک أن بسیار ساده است و به راحتی برای مشکل طبقه بندی باینری یا دو حالته و چند حالته مناسب است .
Accuracy = ( TP + TN ) / (TP + TN + FP + FN)
صحت یعنی نسبت نتایج واقعی به کل موارد بررسی شده .
صحت یک انتخاب معتبر ارزیابی برای مشکلات طبقه بندی است که کاملا متعادل است و دارای انحراف یا عدم تعادل طبقاتی نباشد .
فرض کنید دسته یا کلاس هدف ما بسیار پراکنده است . آیا صحت را به عنوان معیار عملکرد خود استفاده میکنیم ؟ اگر پیشبینی کنیم یک سیارک به زمین برخورد خواهد کرد چطور ؟ فقط باید گفت نه . و این جواب ۹۹٪ دقیق خواهد بود . در نتیجه این مدل میتواند منطقی و دقیق باشد اما ارزشمند نیست .
معیار دقت به سوال زیر پاسخ میدهد .
چه نسبتی از مثبت پیشبینی شده واقعا مثبت است ؟
Precision = (TP) / (TP + FP)
در مساله پیشبینی برخورد سیارک، هرگز یک مثبت واقعی را پیشبینی نکردیم . و بنابراین
دقت برابر صفر است.
هرگاه بخواهیم از پیشبینی خود بسیار مطمئن باشیم، دقت یک انتخاب مناسب در بین معیارهای ارزیابی است
برای مثال :
اگر در حال ساخت سیستمی باشیم که پیشبینی کند که باید حد اعتباری یک حساب خاص را کاهش داد، میخواهیم در مورد پیش بینی خود بسیار مطمئن باشیم وگرنه این کار منجر به کاهش رضایت مشتری خواهد شد .
این که این معیار بسیار بالا باشد یعنی بسیار مطمئن باشیم ، منجر به این امر میشود که بسیاری از متخلفان اعتباری را بدون بررسی باقی خواهند ماند و از این رو منجر به ضرر خواهد شد .
یکی دیگر از معیارهای بسیار مفید بازخوانی است که به سوالی متفاوت پاسخ میدهد .
چه نسبتی از مثبت ها به درستی به عنوان مثبت دستهبندی شدهاند ؟
Recall = (TP) / (TP + FN)
در مساله پیشبینی برخورد سیارک از آنجایی که هیچ مثبتی را پیشبینی نکردیم، Recall برابر صفر است.
یادآوری : هنگامی که میخواهیم تا آنجا که ممکن است موارد مثبت را به دست آوریم ، بازخوانی یه انتخاب درست از معیارهای ارزیابی است .
برای مثال:
اگر ما در حال ساخت سیستمی باشیم که مبتلا بودن یا نبودن به سرطان را پیشبینی کند ، میخواهیم این بیماری را جدی بگیریم حتی اگر باز هم خیلی مطمئن نباشیم .
اگر همهی پیشبینی ها 1 باشند ، بازخوانی نیز 1 خواهد بود .
و به همین ترتیب بر اساس ایده ترکیب و مبادله دقت در مقابل بازخوانی ، معیار F1 بدست خواهد آمد .
نمره F1 عددی بین 0 تا 1 است و حاصل از میانگین هارمونیک دقت و بازخوانی است .
اکنون یک مسئله ی پیش بینی باینری را مورد بررسی قرار خواهیم داد.
میخواهیم پیشبینی کنیم که آیا یک سیارک به زمین برخورد خواهد کرد یا نه .
بنابراین اگر برای کل مجموعهی آموزشی خود قرار دهیم “نه” ،دقت ما برابر با صفر خواهد بود .
در نتیجه اگر معیار F1 برابر با 0 خواهد بود و بنابراین میدانیم که دستهبندی که دارای صحت 99% است ، اساسا برای مورد ما بیارزش است.
میخواهیم مدلی داشته باشیم که هر دو معیار دقت و بازخوانی آن خوب باشد .
به زبان ساده F1 تعادل بین دقت و بازخوانی را برای دسته بند شما حفظ میکند .
اگردقت کم باشد ، F1 کم است . و اگر بازخوانی کم باشد ، باز هم F1 کم است .
اگر یک بازرس پلیس باشید و بخواهید مجرمان را بگیرید ، میخواهید مطمئن باشید که شخص دستگیر شده یک مجرم است (دقت یا Precision) و همچنین میخواهید تا آنجا که ممکن است بیشتر این مجرمان را دستگیر کنید ( بازخوانی یا Recall ) .
معیار F1 این معادله را مدیریت میکند .
شما میتوانید F1 را برای پیشبینی مسائل باینری به صورت زیر محاسبه کنید .
این تابعیست که میتوان از آن برای بدست آوردن بهترین آستانه برای به حداکثر رساندن نمره F1 در پیشبینی های باینری یا دو حالته ، استفاده کرد. این تابع از طریق مقادیر آستانه احتمالی تکرار میشود تا بهترین F1 را بدست آورد .
مشکل اصلی F1 این است که هنگام محاسبه میانگین به دقت و بازخوانی وزن یکسانی را اختصاص میدهد.
برای حل این مشکل میتوانیم یک F1 وزن دار به صورت زیر درست کنیم که در آن بتا تعادل معادله بین بازخوانی و دقت را مدیریت کند .
لگاریتم تابع زیان معیاری کاملا مناسب برای ارزیابی دستهبندیهای دو حالتی است و گاهی اوقات برای بهینهسازی رگرسیون لجستیک و شبکه عصبی استفاده میشود .
یک مثال لگاریتم تابع زیان دوحالتی فرمول زیر است که در آن p ، احتمال پیشبینی ۱ است .
همانطور که مشاهده میکنید لگاریتم تابع زیان در حال کاهش است با این که به طور منصفانه در مورد پیشبینی ۱ مطمئن هستیم و برچسب واقعی هم ۱ است .
هنگامی که خروجی یک دستهبندی به صورت احتمالات پیشبینی است . لگاریتم تابع زیان عدم اطمینان پیشبینی را بر اساس تفاوت آن با برچسب واقعی در نظر میگیرد . این کار به ما دید عمیقتری نسبت به عملکرد مدل خود میدهد . به طور کلی مینیمم کردن لگاریتم تابع زیان صحت بیشتری برای دستهبندی میدهد .
این تابع در مقابل مواردی که مجموعه داده ها نامتعادل هستند ، تایید ناپذیر است . شما ممکن است مجبور شوید دستهی وزندار را معرفی کنید تا خطاهای اقلیت را بیشتر جریمه کنید یا ممکن است پس از تعادل مجموعه دادههای خود از این مورد استفاده کنید .
لگاریتم تابع زیان به مسئله دستهبندی چندکلاسه تعمیم پیدا میکند . دستهبند در تنظیم موارد چند کلاسه باید در تمامی مثالها به هر کلاس یک احتمال را اختصاص دهد . اگر N نمونه متعلق به M دسته باشد ، آنتروپی متقاطع رسته ای مجموع مقادیر ( -y log p ) میباشد :
Yij مقدار یک را اختیار میکند اگر نمونه iام به دستهی jام متعلق باشد . در غیر این صورت مقدار صفر را میگیرد .
( pij ) احتمال این است که دستهبند ما پیشبینی کند نمونه i متعلق به دستهی j است .
زمانی که خروجی یک دستهبند احتمالات پیشبینی چند کلاسه است. به طور کلی از آنتروپی متقاطع رسته ای برای موارد شبکه عصبی استفاده میکنیم. در کل با به حداقل رساندن آنتروپی متقاطع رسته ای ، به صحت بزرگتری دست پیدا خواهیم کرد .
در صورت متعادل نبودن دادهها تاییدناپذیر است .
AUCناحیه زیر منحنی ROC است .
AUC ROC نشان میدهد که احتمال دستههای مثبت از دستههای منفی تا چه حد مجزا است .
منحنی ROC چیست ؟
ما احتمالات را از دستهبندی خودمان بدست میآوریم . ما میتوانیم از مقادیر مختلف آستانه استفاده کنیم تا حساسیت (TPR) و ( نرخ مثبت غلط) ( FPR ) خود را بر روی درمان به صورت پلات ترسیم کنیم که به آن منحنی ROC می گوییم .
زمانی که نرخ مثبت واقعی ( TPR ) فقط نسبتی واقعی است که ما با استفاده از الگوریتم خودمان ثبت کردهایم .
Sensitivty = TPR(True Positive Rate)= Recall = TP/(TP+FN)
و نرخ مثبت غلط یا ( FPR ) فقط نسبتی نادرست است که ما با استفاده از الگوریتم خودمان ثبت کردهایم.
1- Specificity = FPR(False Positive Rate)= FP/(TN+FP)
منحنی ROC :
در اینجا میتوانیم از منحنی ROC برای تصمیم گرفتن در مورد مقدار آستانه استفاده کنیم .
مقدار آستانه هم به این بستگی دارد که قبلتر از دستهبند چطور استفاده شده است .
اگر یک برنامه دستهبندی سرطان داشته باشید ، نمیخواهید مقدار آستانه به بزرگی ۰.۵ باشد . اگر یک بیمار ۰.۳ احتمال سرطان دارد ، تمایل دارید او را به عنوان ۱ دستهبندی کنید .
در غیر این صورت در برنامهای برای محدودیت گذاشتن برای کارتهای اعتباری، نمیخواهید مقدار آستانه کمتر از ۰.۵ باشد . شما نگران این هستید که کم کردن حد کارت اعتباری ، تاثیر منفی بر رضایت مشتری داشته باشد .
AUC یک مقیاس ثابت است . این مقیاس رتبهبندی پیشبینی ها را به جای مقادیر مطلق آنها اندازهگیری میکند . پس به عنوان مثال ، شما به عنوان یک بازاریاب میخواهید یک لیست از کاربرانی که به یک کمپین بازاریابی پاسخ میدهند ، پیدا کنید . در اینجا AUC یک معیار مناسب است زیرا پیش بینی های رتبه بندی شده بر اساس احتمال ، ترتیبی است که در آن شما لیستی از کاربران را برای ارسال کمپین بازاریابی ایجاد خواهید کرد.
گاهی اوقات به احتمال خروجی های به خوبی کالیبره شده از مدل خود نیازمندیم و AUC پاسخگوی این نیاز نیست .
نتیجه گیری:
یک گام مهم در ایجاد خط تولید یادگیری ماشین خود ،ارزیابی مدل های مختلف در برابر یکدیگر است. انتخاب نامناسب یک معیار ارزیابی می تواند کل سیستم را خراب کند.
بنابراین ، همیشه مراقب پیش بینی خود و این که انتخاب معیار ارزیابی ممکن است پیش بینی های نهایی شما را تحت تأثیر یا تغییر قرار دهد ، باشید .
همچنین ، انتخاب معیار ارزیابی باید با هدف تجاری مطابقت داشته باشد و از این رو کمی وابسته به تفکر شخصی هر فرد است و حالا می توانید به معیار ارزیابی خود برسید.