Machine Learning
Machine Learning — اسنیپتهای منتخب
دفترچهی یه آدم اهل عمل تو ML که یاد گرفته به اعداد خودش هم شک کنه. سه تا خط قرمز: شکار نشت داده و امتیازهای الکی بالا، سختگیری آماری تو مقایسهی مدلها (بوتاسترپ زوجی، 5x2cv، McNemar)، و گذر از امتیاز آکادمیک به تصمیم واقعی کسبوکار (آستانه بر پایهی هزینه، کالیبراسیون بازرسیشده). هم کد اشتباه رو نشون میده هم کد درست رو، و اختلافشون رو همیشه با عدد میگه.
20 اسنیپت منتخب
- TargetEncoder بومی: کدگذاری با متغیر هدف، بدون نشت دادهTargetEncoder توی scikit-learn موقع fit_transform از cross-fitting داخلی استفاده میکنه: هر سطر با میانگینهایی کد میشه که خودِ اون سطر توی محاسبهشون نبوده، و همین نشت متغیر هدف رو خنثی میکنه.
- Cross-validation پاکسازیشده با embargo (مالی)یک مولد foldهای زمانی که مشاهدات چسبیده به fold تست رو کنار میذاره: وقتی برچسبها چند دوره رو پوشش میدن (بازده در افق H) و همپوشانی دارن، حتماً لازمه.
- Nested CV: تخمین عملکرد بعد از tuningامتیاز GridSearchCV خوشبینانهست چون hyperparameterها روی همون foldها انتخاب شدن. حلقه بیرونی nested CV یک تخمین بیسوگیری از کل رویه بهت میده.
- آستانه با کمینه کردن هزینهی موردانتظار کسبوکاروقتی یک منفی کاذب ۵۰ برابر یک مثبت کاذب هزینه داره، آستانهی درست رو روی هیچ منحنی استانداردی نمیبینی: هزینهی کلِ موردانتظار رو مستقیماً روی validation کمینه میکنی.
- PSI: کشف دریفت یه feature توی productionشاخص Population Stability Index توزیع یه متغیر رو بین آموزش و production مقایسه میکنه. آستانههای معمول: زیر 0.10 پایدار، 0.10 تا 0.25 باید پاییدش، بالای 0.25 دریفت بزرگ.
- اعتبارسنجی adversarial: آیا train و test همجنسان؟یه طبقهبند آموزش بده که train رو از production تشخیص بده: AUC نزدیک 0.5 یعنی توزیعها شبیهان؛ بالای 0.7، مهمترین featureها بهت میگن دریفت از کجا میاد.
- خروجی گرفتن از کل pipeline به ONNX و چک کردن برابریکل pipeline در scikit-learn (با پیشپردازش) رو به ONNX تبدیل کن، بعد بین خروجیهای sklearn و onnxruntime یه assert عددی بذار — همون مرحلهای که اگه ردش کنی پشیمون میشی.
- سریالسازی مدل همراه با متادیتای ردیابییه فایل .joblib لخت یه بمب ساعتیه: وقتی نسخه، تاریخ، hash دادهها، متریکها و ستونهای موردانتظار رو توی همون artefact بذاری، هر مدل قابل ممیزی میشه.
- قیدهای یکنوایی: تزریق دانش کسبوکار به مدلمدل رو وادار کن روابط شناختهشده رو رعایت کنه (بدهی بیشتر هیچوقت ریسک رو کم نمیکنه): منظمسازی مجانی، مقاومت در برابر نویز و یه مدلِ قابل دفاع جلوی کمیته.
- نشت اصلاحشده: انتخاب feature روی کل دیتاستاگه featureهای همبسته با هدف رو قبل از cross-validation انتخاب کنی، روی نویز خالص هم AUCهای خیرهکننده میسازی — اول نمایش عددی، بعد اصلاح با pipeline.
- نبرد gradient boostingها: XGBoost، LightGBM، CatBoost و HistGBمیز آزمون چهار پیادهسازی اصلی gradient boosting روی یه مجموعهی جدولی واحد: AUC، زمان آموزش، تأخیر پیشبینی و حجم مدل سریالشده، همه توی یه جدول تصمیم.
- bootstrap اختلاف AUC: این فاصله واقعیه؟bootstrap زوجی روی مجموعهی تست: هر دو مدل روی همون نمونهگیریها ارزیابی میشن و همین، تفاوت کیفیت رو از نویز سادهی نمونهگیری جدا میکنه. حکم نهایی با بازهی اطمینان.
- واریانس seed: همون مدل، ده بار آموزشدیدهده تا آموزش یکسان که فقط seedشون فرق داره، نویز ذاتی مدل رو کمی میکنن: هر بهبود tuningی که از این واریانس کوچیکتر باشه، از شانس قابل تشخیص نیست — یه حفاظ که هر پروژه یه بار باید حسابش کنی.
- SMOTE احتمالها رو تحریف میکنه: اثبات و اصلاحنمایش عددی: بعد از بازتوازن 50/50، احتمالهای پیشبینیشده ۶ برابر بیش از حد بالان. اصلاح تحلیلی prior (الکان، ۲۰۰۱) بدون بازآموزی، اونها رو به نرخ واقعی برمیگردونه.
- پیشبینی conformal از نوع split: یه بازه با تضمین ۹۰ درصدsplit conformal prediction توی ۱۲ خط: چندکِ باقیماندههای یه مجموعهی کالیبراسیون اختصاصی، یه بازه میده که پوششش از نظر ریاضی تضمینشدهست، هر مدلی که باشه فرقی نمیکنه.
- نشت از راه رکوردهای تکراری: سطرهای تستی که train قبلاً دیدهسطرها رو هش میکنیم تا تکراریهای دقیق بین train و test رو پیدا کنیم، بعد AUC رو با و بدون اونها دوباره حساب میکنیم: تفاوتش دقیقاً نشون میده امتیازی که اعلام شده چقدر باد داشته.
- برچسبهای مشکوک: کشف با اطمینان متقاطع (به سبک cleanlab)پیشبینیهای out-of-fold بهت احتمالی رو میدن که مدل برای برچسب مشاهدهشده قائله: سطرهایی که این اطمینان توشون خیلی ناچیزه، نامزد برچسبگذاری غلطن و برای بازبینی انسانی مرتب میشن.
- اهمیتهای تهی (null importances): اهمیت واقعاً معناداره؟پنجاه مدل که روی یه هدفِ بههمریخته آموزش دیدن، توزیع تهیِ اهمیتِ هر feature رو میسازن: فقط اهمیت واقعیای که از صدک 95 این توزیع تهی رد بشه، یه سیگنال واقعی رو ثابت میکنه.
- ارزیابی سیگنال معاملاتی ML: نرخ برد، profit factor و expectancyAUC که قبضها رو پرداخت نمیکنه: احتمالهای مدل رو تبدیل میکنیم به متریکهای معاملهگری — تعداد معاملات، win rate، profit factor، expectancy و حداکثر drawdown منحنی equity.
- سنجش recall در نرخ مثبت کاذب ثابت: متریک دنیای تقلبخوانش عملیاتی منحنی ROC: برای هر بودجه مثبت کاذب (0.1، 0.5، 1 و 5 درصد)، آستانهای که باید اعمال بشه، recallی که گیرت میاد و حجم هشدار روزانهای که تیم باید بکشه.