برای ارزیابی عملکرد الگوریتمهای طبقهبندی، دو معیار Precision و Recall کاربرد زیادی دارند. معمولاً فرمولِ این دو روش به دلیل شباهت زیاد، اشتباه گرفته میشوند. در این پست علاوه بر فرمول، به بررسی عمیقتری از مفهوم این دو معیار پرداخته میشود. برای مطالعهی ادامهی مطلب، باید با مفاهیم یادگیری ماشین، طبقهبندی، برچسبگذاری و مفهوم ارزیابیِ الگوریتمهای طبقهبندی آشنا باشید.
در الگوریتمهای طبقهبندی دو کلاسه، Precision و Recall با نگاه به یکی از کلاسها (کلاس مثبت یا برچسب 1) محاسبه میشود. این که کدام کلاس را مثبت در نظر میگیریم یا چه عددی به هر کلاس تخصیص میدهیم کاملاً قراردادی است؛ اما به طور معمول کلاسی که هدف مورد نظر ماست را مثبت و با برچسب یک در نظر میگیریم و کلاس مقابل را کلاس منفی با برچسب صفر. برای نمونه در مسئلهی تشخیص بیماری، برای طبقهبندی افراد میتوانیم برچسبها را اینطور تعریف کنیم؛ اگر فرد بیمار باشد برچسب یک و در غیر این صورت برچسب صفر دارد. در ارزیابی طبقهبندی، هدف ما این است که بررسی کنیم به ازای هر نمونه، الگوریتم موردنظر چقدر برچسبِ نمونهی ورودی را درست پیشبینی میکند.
تعریف True Positive یا TP: ورودی برچسب یک دارد و الگوریتم نیز به درستی (True) برچسب یک (Positive) را تشخیص داده است.
تعریف True Negative یا TN: ورودی برچسب صفر دارد و الگوریتم نیز به درستی (True) برچسب صفر (Negative) را تشخیص داده است.
تعریف False Positive یا FP: ورودی برچسب صفر دارد و الگوریتم به اشتباه (False) برچسب یک (Positive) را تشخیص داده است.
تعریف False Negative یا FN: ورودی برچسب یک دارد و الگوریتم به اشتباه (False) برچسب صفر (Negative) را تشخیص داده است.
هر دو حالت False Positive و False Negative خطا هستند و در نتیجه الگوریتم نباید این خطاها را داشته باشد. اما این که کاهش کدام یک از این دو خطا اهمیت بیشتری دارد کاملاً بستگی به نوع مسئله دارد. در نظر داشته باشید که معیار دقت (Accuracy) نمیتواند تفکیکی بین این دو خطا ایجاد کند.
معیار دقت با توجه به هر دو کلاس مثبت و منفی محاسبه میشود. اما Precision و Recall تنها بر یکی از کلاسها تمرکز دارند. اگر مسئله چند کلاسه باشد، با تمرکز بر کلاس مورد نظر در مقابل سایر کلاسها محاسبه میشوند.
هنگام محاسبهی Precision به دنبال این هستیم که الگوریتم، چند درصد از برچسبهایی را که ۱ تشخیص داده، درست بوده است.
فرض کنید در یک مسئلهی دو کلاسه، نمونههای زیر را برای تست داریم که لیست برچسبهای واقعی و برچسبهای پیشبینی شده به صورت زیر است:
برای محاسبهی Precision، به برچسبهای تشخیص داده شده نگاه میکنیم: در مجموع 6 نمونه هستند که برچسب آنها «یک» تشخیص داده شده است. از این بین 4 نمونه از آنها به درستی تشخیص داده شدهاند. پس Precision = 4/6 یعنی تقریباً 66%.
برای Precision، فرمول زیر بر اساس True Positive و False Positive تعریف شده است:
هنگام محاسبهی این معیار ارزیابی، هدف این است که بررسی کنیم که الگوریتمِ طبقهبندی در مورد نمونههایی که برچسب واقعی آنها یک است، چقدر درست عمل کرده است؟
بار دیگر مثال قبل را در نظر بگیرید:
در این حالت به برچسبهای واقعی نگاه میکنیم: 5 نمونه هستند که برچسب واقعی آنها یک است. 4 مورد درست تشخیص داده شده است. بنابراین Recall = 4/5 یعنی برابر با 80%.
فرمول Recall به صورت زیر است:
پیشنهاد من این است که اگر فرمول را فراموش میکنید، به مفهوم محاسبهی این دو روش توجه کنید. صورت هر دو کسر برابر است. نکتهی مهم تشخیص این است که آیا میخواهیم درصد صحیح بودن برچسبهای واقعی را محاسبه کنیم یا برچسبهای پیشبینی شده. استفاده از ماتریس کانفیوژن هم برای این محاسبات کمککننده است.