۱. Skewed Datasets چیست؟
هنگامی که روی یک پروژه یادگیری ماشین کار میکنید، ممکن است بارها با مجموعه دادههایی روبرو شوید که توزیع بین تعداد نمونههای کلاسهای مختلف مطابقت نداشته باشد.
به عنوان مثال
۱) ممکن است در حال ساخت یک مدل ML باشید تا دستهبندی کنید که آیا مجموعهای از تصاویر قطعات موتور دارای ناهنجاری/ترک[1] هستند یا نه، یا یک مدل رایجتر هستند.
2) ممکن است در حال ساخت یک مدل ML برای خواندن اسکنهای پزشکی باشید و بخواهید مطمئن شوید اگر بیمار بیماری نادری داشته باشد یا خیر.
در چنین مواردی، ممکن است همیشه امکان توزیع 50-50 از هر دو کلاس نمونه در مجموعه داده وجود نداشته باشد، زیرا نمونههای کافی با بیماری یا با نقص/ناهنجاری ممکن است در دسترس نباشند.
مجموعه دادهها در چنین مواردی عبارتند از: Skewed
۲. ماتریس سردرگمی[2]، دقت و یادآوری
برای مجموعه دادههای کج، معیارهای خطا مانند "دقت" کار نمیکند. فرض کنید شما 100 تصویر پزشکی دارید و از این 100، 10 بیمار یک بیماری نادر دارند. حال، هر چه که باشد، حتی اگر همه 100 مورد را به عنوان فاقد بیماری دستهبندی کنید، دقت مدل شما هنوز 90 درصد است، بدیهی است که این بدان معنا نیست که شما یک مدل خوب ساختهاید.
بنابراین در مواردی که مجموعه دادههای Skewed هستند، به معیارهای خطای متفاوتی نیاز دارید. اولین کاری که باید انجام دهید ترسیم یک ماتریس سردرگمی است. برای ساختن ماتریس سردرگمی، کلاس Actual را در محور X و کلاس Predicted را در محور Y میگیرید. این در شکل 1 نشان داده شده است. فرض کنید y = 1 نشان دهنده مثبت و y = 0 نشان دهنده منفی باشد.
بنابراین، بر اساس واقعی و پیش بینی شده، 4 ربع در ماتریس سردرگمی را میتوان مانند شکل 2 نام برد که خود توضیحی است. معیارهای خطا معمولاً به صورت یک جفت تعریف میشوند: Precision | Recall
دقت نشاندهنده «از تعداد کل مثالهای پیشبینیشده بهعنوان مثبت، چند نمونه واقعاً مثبت هستند» - یعنی از بین تمام مثالهایی که مدل بهعنوان مثبت پیشبینی میکند، واقعاً چه کسری را درست دریافت کردهاید. یعنی:
(مثبت واقعی + مثبت کاذب)/ مثبت واقعی = دقت
در مثال ما، دقت این است: از بین تمام نمونههایی که پیشبینی شده بود ترک دارند (یا از بین همه بیمارانی که ما پیشبینی کردیم مبتلا به این بیماری هستند)، چه تعداد واقعاً Crack دارند (یا بیماری).
معیار دوم (در جفت) Recall است- یادآوری از نمونههایی خارج است که واقعاً Crack دارند (یا بیماران واقعاً بیماری داشتند)، چه کسری را به درستی پیشبینی کردید. بنابراین یادآوری توسط؛
Recall = True positives / number of actual positives = True positives / True positives + False negatives
معادلات فوق تعریف ریاضی Precision و Recall هستند.
اکنون، با معیارهای جفتی Precision و Recall، تخمین واقعیتری از دقت مدل دریافت خواهید کرد. بنابراین، با مجموعه دادههای Skewed، Precision و Recall معیارهای خطای بسیار بهتری را برای مشاهده نحوه عملکرد الگوریتم یادگیری ارائه میکنند.
به طور کلی، در یک الگوریتم یادگیری، ما دوست داریم دقت بالا و یادآوری بالایی داشته باشیم.
۳. درک دقیق و یادآوری
بنابراین، تفسیر فیزیکی فرمولهای ریاضی دقت و یادآوری فوق را میتوان به شرح زیر توصیف کرد.
الف) "دقت" مثبت کاذب را پرهزینه میداند. یعنی: دقت بالا نشان میدهد که شما دارای مثبت کاذب بالا پایین هستید. این میتواند در موارد خاصی مهم باشد: به عنوان مثال، در سیستم تشخیص چهره - یعنی اگر الگوریتم تشخیص چهره به اشتباه فردی را به عنوان عضوی در سیستم دستهبندی کند (زمانی که او در واقع نیست اما ممکن است یک مزاحم باشد که وارد فضا میشود. ) پس مطمئناً کسی میخواهد احتمال این اتفاق را کاهش دهد. در چنین سیستمهایی، شما میخواهید دقت بسیار بالایی داشته باشید تا احتمال مثبت کاذب را به حداقل برسانید [توجه داشته باشید: در اینجا مثبت نشان دهنده عضوی از سیستم است]
ب) در Recall منفیهای کاذب پرهزینه در نظر گرفته میشوند. به عنوان مثال، اگر با خواندن رادیوگرافی یا تشخیص وجود یا عدم وجود Crack در قسمتی از موتور (جایی که وجود بیماری یا Crack مثبت تلقی میشود) وجود یک بیماری جدی را تشخیص دهید - در چنین مواردی بیماری (حتی اگر اینطور نیست) یا Crack در حال حاضر را پیشبینی کنید، ممکن است بهتر باشد برای جلوگیری از آسیب / خطر - بنابراین، ما میخواهیم منفی های کاذب را محدود کنیم و میخواهیم که Recall بالا باشد.
۴. مصالحه بین دقت و فراخوان:
در موارد فوق، ممکن است بخواهید آستانه پیشبینی را تغییر دهید. به عنوان مثال اگر در حال انجام یک رگرسیون لجستیک برای پیشبینی Crack یا بدون Crack در یک جزء موتور هستید، همانطور که در بالا گفته شد، میخواهید منفیهای کاذب را به شدت محدود کنید، بنابراین، ممکن است:
پیش بینی 1 اگر y > = 0.25 - یعنی پیش بینی کنید Crack وجود دارد حتی اگر احتمال 0.25 باشد و 0 را پیشبینی کنید اگر y < 0.25 باشد.
برای الگوریتم تشخیص چهره، جایی که میخواهید موارد مثبت کاذب را محدود کنید، ممکن است آستانه را به صورت زیر ارائه کنید:
Predict 1 if y > = 0.7
Predict 0 if y < 0.7
بنابراین، بسته به کاربرد، ممکن است بخواهید آستانه های متفاوتی برای متغیر وابسته از 0.5 / به همین ترتیب تعیین کنید.
5. F1-Score:
معیار دیگری نیز وجود دارد که اغلب برای ترکیب خودکار دقت و یادآوری استفاده میشود تا اینکه مقادیر آنها را بهصورت جداگانه کنترل کند. این بسیار مفید است زیرا یک چالش با دقت و یادآوری این است که شما الگوریتم خود را با استفاده از 2 معیار مختلف ارزیابی می کنید. بنابراین، اگر 3 الگوریتم مختلف را برای یک مسئله آموزش داده باشید، ممکن است خیلی واضح نباشد که از کدام الگوریتم از طریق مقدار هر دو معیار استفاده کنید. برای کمک به تصمیم گیری برای انتخاب الگوریتم، یافتن راهی برای ترکیب دقت و یادآوری در یک امتیاز واحد به نام F1-Score مفید است.
F1--Score تأکید بیشتری بر هر مقداری که از فرمول مشاهده میشود کمتر است میکند.
F1-Score توسط:
همانطور که از فرمول بالا می بینید، میانگین 1/P و 1/R را می گیریم، میانگین 1/P را می گیریم و 1/R تاکید بیشتری می کند که هر مقدار از P کوچک باشد و R آن را معکوس می کنیم.
در ریاضیات، فرمول فوق به عنوان "میانگین هارمونیک" شناخته می شود که بر مقادیر کوچکتر متغیرها تأکید می کند - در اینجا دقت و یادآوری.