یک مدل تشخیص کلاهبرداری که نمره ۰.۹۸ در ROC-AUC میگیرد، میتواند پس از استقرار در محیط واقعی، ۹۵ درصد هشدارهای نادرست صادر کند. این شکاف عمیق به این دلیل رخ میدهد که منحنی ROC، شکستهای مدل در دادههایی که کلاس مثبت در آنها بسیار نادر است را پنهان میکند؛ نتیجه این است که طبقهبندیکنندههایی که روی کاغذ کامل به نظر میرسند، در عمل شکست میخورند.
در محیطهای عملیاتی، بهویژه جایی که با رویدادهای نادر مثل کلاهبرداریهای مالی سروکار داریم، هزینه یک مثبت کاذب (False Positive) بسیار بالاست. بسیاری از توسعهدهندگان بهطور پیشفرض آستانه احتمال ۰.۵ را میپذیرند، اما استقرار واقعی نیازمند تعیین یک نقطه عملیاتی است که از هزینه کسبوکار و میزان تحمل ریسک استخراج شده باشد.
به نقل از بررسی فنی منتشرشده در ۱۲ ژوئیه ۲۰۲۶ در وبسایت dev.to، نقص بنیادی در مخرجِ نرخ مثبت کاذب (FPR) نهفته است. از آنجا که FPR از طریق تقسیم مثبتهای کاذب بر مجموع آنها و منفیهای واقعی محاسبه میشود، حجم عظیم منفیهای واقعی (True Negatives) باعث میشود هزاران هشدار نادرست تنها به شکل یک نوسان میکروسکوپی در منحنی ROC ظاهر شوند. همین اتفاق باعث میشود منحنی ROC به گوشه بالا-چپ بچسبد و تصویری فریبنده از موفقیت ارائه دهد.
همانطور که در تحلیلهای پیشین ما دربارهی معیارهای ارزیابی مدلهای یادگیری ماشین اشاره کردیم، انتخاب معیار غلط میتواند منجر به تصمیمات تجاری فاجعهبار شود. برای درک بهتر این موضوع، نویسنده ابزاری تعاملی ارائه داده است. در این دمو، وقتی عدم توازن کلاسها از ۱:۱ به ۱:۱۰۰ تغییر میکند، مقدار ROC-AUC در حدود ۰.۹۵ ثابت میماند، اما میانگین دقت (Average Precision) از ۰.۹۶ به ۰.۴۱ سقوط میکند؛ در واقع معیار اول مدل را ستایش کرد، اما معیار دوم حقیقت را گفت.
برای اصلاح این وضعیت، نویسنده پیشنهاد میکند به سراغ منحنی دقت-فراخوانی (Precision-Recall Curve) بروید. برخلاف ROC، این منحنی کاملاً منفیهای واقعی را نادیده میگیرد و هشدارهای نادرست را در مرکز توجه قرار میدهد. معیارهای کلیدی این رویکرد عبارتند از:
- دقت (Precision): نسبت مثبتهای واقعی به مجموع مثبتهای شناساییشده. این معیار میپرسد: «از تمام مواردی که پرچمگذاری کردی، چند مورد واقعاً درست بود؟» و در واقع هزینه هشدار نادرست را نشان میدهد.
- فراخوانی (Recall): نسبت مثبتهای واقعی شناساییشده به کل مثبتهای موجود. این معیار میپرسد: «از تمام موارد مثبت واقعی، چند مورد را شکار کردی؟» و هزینه از دست دادن یک مورد کلاهبرداری را میسنجد.
- میانگین دقت (Average Precision - AP): سطح زیر منحنی PR که یک مقدار وزنی برای مقایسه مدلها ارائه میدهد.
یک تله حیاتی در اینجا، خط پایه (Baseline) برای میانگین دقت است. در حالی که یک مدل تصادفی در منحنی ROC همیشه روی قطر ۰.۵ قرار میگیرد، خط پایه PR برابر با شیوع کلاس مثبت است. اگر تنها ۱ درصد دادهها مثبت باشند، مدلی با AP برابر با ۰.۱۰ در واقع ۱۰ برابر بهتر از شانس عمل میکند، در حالی که همین نمره در یک مجموعهداده متوازن (۵۰ درصد) کاملاً بیارزش است.
طبق توصیه نویسنده برای کاربرانی که از scikit-learn استفاده میکنند، باید بهجای متد استاندارد .predict()، از توابع precision_recall_curve و average_precision_score همراه با predict_proba استفاده کرد تا امتیازهای احتمالی استخراج شوند.
سازوکار ساخت این منحنی یک عملیات تک-گذر است. از آنجایی که تنها آستانههایی که ماتریس آشفتگی (Confusion Matrix) — شبیه به یک جدول تطبیق که نشان میدهد مدل کجاها اشتباه کرده و کجاها درست زده است — را تغییر میدهند، خودِ امتیازها هستند، میتوان نمونهها را بر اساس امتیاز مرتب کرد و لیست را پیمایش نمود. الگوریتم به این صورت عمل میکند:
- مقدار
tpوfpرا صفر قرار دهید. - برچسبها را بر اساس امتیاز بهصورت نزولی مرتب کنید.
- برای هر برچسب: اگر ۱ بود
tpو در غیر این صورتfpرا یک واحد زیاد کنید. - نقطه
(tp / n_pos, tp / (tp + fp))را به منحنی اضافه کنید.
این اسکن خطی اجازه میدهد فراخوانی از ۰ تا ۱ را بدون نیاز به بازسازی مدل یا اسکن مجدد طی کند.
در نهایت، انتخاب آستانه باید آگاهانه باشد. یک توسعهدهنده ممکن است امتیاز F1 (F1 Score) — که میانگین هارمونیک دقت و فراخوانی است — را برای جلوگیری از نتایج نامتوازن بهینهسازی کند. یا اینکه یک کفِ دقت تعیین کند (مثلاً هشدارها باید ۸۰ درصد درست باشند) و سپس بالاترین فراخوانی ممکن روی منحنی را که این شرط را برآورده میکند، انتخاب کند.
گام بعدی شما
- اگر در حال حاضر از ROC-AUC برای دادههای نامتوازن استفاده میکنید، فوراً منحنی Precision-Recall را رسم کنید تا نرخ خطای واقعی مدل خود را ببینید.
- آستانه تصمیمگیری (Decision Threshold) خود را بهجای مقدار پیشفرض ۰.۵، بر اساس هزینه مالی هر هشدار نادرست در بیزنس خود تنظیم کنید.
- در کتابخانه scikit-learn، متد
predict_probaرا جایگزینpredictکنید تا کنترل دقیقی روی نقطه عملیاتی مدل داشته باشید.
اما اثر این اشتباهات در مدلهای استدلالی جدید پیچیدهتر است؛ در تحلیل ما درباره معیارهای ارزیابی مدلهای Reasoning به این موضوع پرداختهایم.




گفتگو