AMIRHOSEIN
AMIRHOSEIN
خواندن ۳ دقیقه·۱ سال پیش

Precision vs Recall

هر کس دستی تو حوزه آمار داشته باشه، یا دست کم یه کار آماری انجام داده باشه، احتمال خیلی زیاد دوتا عنوان Precision و Recall به گوشش خورده! امروز باهم این دو عنوان رو بررسی میکنیم و سعی میکنیم تعریفمون رو عمیق تر از چندتا عبارت و فرمول کنیم.

درواقع Precision و Recall دوتا متریک ارزیابی هستن، برای کلاس بندی (Classification) ازش استفاده میکنیم اونم واسه این که ببینیم مدلی که ترین (Train) کردیم چقدر داره درست کار میکنه. برتریش نسبت به متریکی مثل Accuracy، اینه که وقتی دیتامون Skewed باشه، همچنان میتونه بهمون بگه که چقدر داریم درست پیش میریم.

  • دیتاست Skewed: به دیتاستی میگیم که از نظر تعداد نمونه، توازن نداشته باشیم. مثلا ۹۹.۳ درصد از نمونه هامون مربوط به کلاس ۰ و ۰.۷ درصد از نمونه ها مربوط به کلاس ۱ باشن. نمونه ش دیتای مربوط به یه بیماری که شاید فقط یک درصد از جامعه آماریمون مبتلا به اون بیماری باشن. اینجوری ۱ درصد از نمونه ها کلاس ۱ هستن و ۹۹ درصد کلاس ۰.


اما اینجا اجازه بدین شمارو با Confusion Matrix آشنا کنم.

فرض کنین برای یه مساله Binary Classification، من یه ماتریس ۲×۲ شبیه شکل زیر داشته باشم. توی این ماتریس، من یکی از ستون هارو اختصاص میدم به مقادیری که کلاس واقعی شون ۱ باشه، و اون یکی رو به اونایی که کلاس واقعی شون ۰ باشه. به همین ترتیب هم یکی از سطر هارو اختصاص میدم به اونایی که کلاس پیش بینی شده ش ۱ باشه، و اون یکی سطر هم ۰. حالا میام اینارو باهم ترکیب میکنم تا بتونم هرکدوم از اون مقادیر ماتریس رو پر کنم.

Confusion Matrix
Confusion Matrix

True Positive: یعنی مقدار هایی که پیش بینی شده ۱ هستن. و از قضا پیش بینی هم درست بوده!

True Negative: مقدار هایی رو شامل میشه که پیش بینی مون ازشون ۰ بوده. و درست هم پیش بینی کردیم!

False Positive: یعنی مقدار هایی که پیش بینی شده ۱ هستن. اما متاسفانه اشتباه کردیم.

False Negative: اینم خب واضحا میشه مقدار هایی که ۰ پیش بینی شدن و اشتباهن.

  • میشه راحت فهمید که True و False درست یا نادرست بودنش رو بهمون میگن و Positive و Negative کلاس ۱ یا صفر شون رو :)
  • یه قرارداد میذاریم تا اخر این متن؛ هرجا گفتیم "تشخیص" منظورمون جاییه که که کلاس رو مثبت، Positive، یا همون ۱ پیش بینی کردیم.

حالا بریم سر صحبت اصلیمون!

اول فرمول Precision و Recall رو ببینیم:

خب؛ اجازه بدین یکم بشکافیمشون. وقتی صحبت از Precision میکنیم، داریم تعداد تشخیص های درست رو به کل تشخیص ها (تشخیص های درست + غلط) تقسیم میکنیم. یعنی میخوایم ببینیم «چه درصدی از کل تشخیص هامون درست بودن.» به زبون ساده تر؛ بررسی میکنیم که چقدر از پیش بینی های کلاس ۱ من درست بودن واقعا.

اما درمورد Recall یه فرق کوچیک داره. اینجا داریم تشخیص های درستمون رو به به کل نمونه هایی که از کلاس ۱ بودن تقسیم میکنیم. احتمالا میتونین حدس بزنین که اینجا قصدمون اینه ببینیم «از کل کلاس مثبت مون، چقدرش رو تونستیم تشخیص بدیم.»


حالا یه سوال!

فرض کنین داریم دوتا مدل رو باهم مقایسه میکنیم. مدل اول با Precision = 88.3 و Recall = 79.1 و مدل دوم با Precision = 97.0 و Recall = 7.3. چجوری میتونیم بگیم کدوم یکی بهتر کار میکنه؟ یا بذارین سوال رو اینجوری بپرسم که چجوری میتونیم از این دوتا به یه متریک واحد برسیم؟




من امیرحسینم؛ عاشق و شیفته هوش مصنوعیم و هرچیزی که بهش مربوط بشه. اینجا میخوام چیزایی که بلدم (یا حداقل فکر میکنم بلدم) رو باهاتون به اشتراک بذارم. دوست دارم نظراتتون رو بشنوم. مرسی از همراهیتون ❤

precisionRecallmachine learning
دیتا دوست، برنامه نویس، محتواساز، طراح، مهندس پزشک و از این حرفا
شاید از این پست‌ها خوشتان بیاید