| فایل اولیهی سؤال را میتوانید از [این لینک](/contest/assignments/103147/download_problem_initial_project/355598/) دانلود کنید. |
|:------------------------------------------------------------------------:|
مجتمع پایش صنعتی «نبضسنج» قلب تپندهٔ دهها کارخانه است. هزاران سنسور، شبانهروز از موتورها، توربینها و خطوط انتقال، سیگنال میفرستند. هر سیگنال مثل یک ضربان است؛ منظم، موزون و قابل پیشبینی. تا وقتی که همهچیز سرِ جای خودش باشد.
اما گاهی چیزی در این ضربانها میلغزد.
یک توربین که تا دیروز آرام میچرخید، ناگهان لرزشی ناآشنا از خود نشان میدهد. یک خط انتقال که همیشه سیگنالی صاف داشت، برای چند لحظه صاف و بیجان میشود. این نوسانهای کوچک، همان زمزمههای اولیهٔ یک خرابی بزرگاند؛ نشانههایی که اگر بهموقع دیده نشوند، به توقف تولید و خسارتهای سنگین ختم میشوند.
مشکل اینجاست که هیچکس نمیداند دقیقاً کدام سیگنال ناسالم است.
تیم فنی «نبضسنج» انبوهی از سیگنالها را جمع کرده، اما هیچ برچسبی در کار نیست. هیچکس دستی اینها را «سالم» یا «ناهنجار» علامت نزده است. بدتر آنکه حتی همین دادهٔ خام هم دستنخورده نیست: جایجایش مقادیر گمشده دارد و نویز سنسور روی آن نشسته است.
اینجا جایی است که شما وارد میشوید.
شما بهعنوان متخصص یادگیری ماشین به پروژهٔ «نبضسنج» دعوت شدهاید. مأموریت شما ساختن سامانهای است که بدون هیچ برچسبی، خودش یاد بگیرد ضربان طبیعی چه شکلی است و به هر سیگنال، عددی نسبت دهد که نشان دهد چقدر از این هنجار فاصله گرفته است.
## مأموریت شما
برای هر سیگنال موجود در دادهٔ تست باید:
+ سیگنالهای خام را دریافت و پیشپردازش کنید.
+ الگوی «رفتار طبیعی» را بهصورت کاملاً بدوننظارت (unsupervised) یاد بگیرید.
+ برای هر سیگنال یک **امتیاز ناهنجاری پیوسته** در بازهٔ $[0, 1]$ تولید کنید؛ هرچه این عدد بزرگتر باشد، یعنی مدل شما آن سیگنال را ناهنجارتر میداند.
+ خروجی را در فایل `submission.csv` ذخیره کنید.
## فایلهای داده
دادههایی که برای دانلود در اختیار شما قرار گرفته، شامل دو فایل است:
| فایل | توضیح |
| ----------- | ------------------------------------------------------------------ |
| `train.csv` | سیگنالهای آموزشی (بدون برچسب) |
| `test.csv` | سیگنالهای تست (بدون برچسب) که باید برای آنها امتیاز ناهنجاری پیشبینی کنید |
هر سطر داده، یک سیگنال زمانی با طول ثابت است.
| ویژگی | توضیح |
| ------------- | ------------------------------------------------------------ |
| طول هر سیگنال | ۱۲۸ مقدار عددی پیوسته (ستونهای `0` تا `127`) |
| مقادیر گمشده | برخی نقاط سیگنال ممکن است `NaN` باشند |
| نویز و اسپایک | سیگنالها ممکن است شامل نویز پسزمینه و اسپایکهای تکی باشند |
| برچسب | در هیچیک از فایلها ارائه نمیشود |
**دربارهٔ ترکیب دادهها:** دادهٔ آموزش عمدتاً از سیگنالهای سالم تشکیل شده، اما کاملاً پاک نیست؛ درصد اندکی از آن (حدودا کمتر از ۵٪ - توجه داشته باشید که این عدد دقیق مشخص نیست و حدودی است ) آلوده به نمونههای ناهنجار است. در دادهٔ تست، سیگنالهای ناهنجار در اقلیتاند اما سهمشان قابلچشمپوشی نیست (کمتر از حدودا یک پنجم نمونهها - توجه داشته باشید که این عدد دقیق مشخص نیست و حدودی است ).
## قوانین
+ رویکرد باید **کاملاً بدون نظارت** باشد. استفاده از هرگونه برچسب دستی مجاز نیست.
+ کد باید تکرارپذیر باشد. مقدار `random_state` را تنظیم کنید.
+ پیشپردازش داده (مدیریت مقادیر گمشده و نویز) بخشی از مسئله است.
## ساختار خروجی
فایل خروجی باید دقیقاً با نام زیر ساخته شود:
```
submission.csv
```
این فایل باید دارای ستونی به نام `score` باشد که برای هر سیگنال در فایل تست، یک عدد اعشاری در بازهٔ $[0, 1]$ ذخیره کند.
## نوتبوک
راهحل شما باید در یک نوتبوک با نام `notebook.ipynb` ارائه شود. هنگامی که نوتبوک با گزینهٔ Run All اجرا شود، باید بدون خطا اجرا شده و فایل `submission.csv` را تولید کند.
## معیار ارزیابی
عملکرد راهحل شما بر اساس توانایی تشخیص درست سیگنالهای ناهنجار با استفاده از معیار **Precision-Recall AUC** (یا بهینهسازی بهترین F1-Score ممکن) ارزیابی میشود.
امتیاز نهایی شما برابر است با:
$$Score = 100 \times \text{max}(F_1)$$
در طول مسابقه، امتیاز موقت شما بر اساس مدل نمایش داده میشود. برای دریافت امتیاز، مدل شما باید امتیاز F1 خود را به حداقل ۶۰ برساند.
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.