| فایل اولیهی پروژه را میتوانید از [این لینک](/contest/assignments/84381/download_problem_initial_project/308146/) دانلود کنید.|
| :--: |
این مجموعه داده شامل فرمولاسیونهای مختلف سیمان و مقاومت فشاری متناظر با آنهاست. هدف این بخش، پیشبینی مقاومت سیمان بر اساس مواد اولیه و زمان عملآوری آن است. با تحلیل این ویژگیها، شما یک مدل برای پیشبینی دقیق مقاومت نهایی سیمان توسعه خواهید داد. این چالش فرصتی برای بهکارگیری تکنیکهای یادگیری ماشین و یادگیری عمیق در یک مسئله مهندسی واقعی است، جایی که درک رابطه بین ترکیب مواد و خواص نهایی بتن بسیار حیاتی است.

-----------------------
## معیار ارزیابی
برای ارزیابی مدل شما از معیار `R2 Score` استفاده میشود. برای نمرهگیری در این سوال مدل شما باید دارای `R2 Score` حداقل ۰.۶ باشد و در این حالت نمرهی نهایی بر اساس فرمول زیر محاسبه میگردد:
$$round(r2score, 3) \times 100$$
اگر مدل شما به حدنصاب نرسد، نمرهی دریافتی **صفر** خواهد بود.
<details class="red">
<summary>
**توجه**
</summary>
در طول مسابقه امتیازی که مشاهده میکنید، فقط نتیجهی ارزیابی مدل شما روی ۳۰ درصد از دادههای آزمون است. بعد از پایان زمان مسابقه، **امتیاز نهایی** شما روی ۷۰ درصد مابقی محاسبه میشود.
این کار به منظور جلوگیری از بیشبرازش (`overfitting`) و حفظ عمومیت مدل انجام میشود تا مطمئن شویم مدلهایی که دچار بیشبرازش شدهاند، در امتیازدهی نهایی، افت میکنند
</details>
---------------------------------
## نحوهی ارسال پاسخ
پاسخ نهایی شما باید در قالب فایلی با نام **submission.csv** ارائه شود. این فایل باید شامل یک ستون با نام **Strength** باشد. در این ستون، برای هر نمونه از دادههای آزمون مشخص میکنید که مقاومت سیمان برای آن نمونه تا چه حد بوده است.
جدول زیر نمونهای از پنج سطر اول فایل خروجی مورد انتظار را نشان میدهد:
| **Strength** |
|:---------:|
| 14.99 |
| 72.99 |
| 35.3 |
| 11.85 |
| 10.76 |
برای پاسخ به این سوال ابتدا فایل نوتبوک قرار گرفته در فایل اولیه را باز کنید و سپس مراحل را مطابق آنچه که از شما خواسته شده انجام دهید. در نهایت، پس از اجرای سلول جوابساز (آخرین سلول فایل نوتبوک) فایل `result.zip` ساخته شده را ارسال نمایید.
<details class="red">
<summary>
**هشدار مهم**
</summary>
توجه داشته باشید که پیش از اجرای سلول جوابساز، تغییرات اعمال شده در نوتبوک را با استفاده از کلید میانبر `ctrl+s` ذخیره کرده باشید در غیر این صورت، در پایان مسابقه **نمره** شما به **صفر** تغییر خواهد کرد.
همچنین اگر از کولب برای اجرای این فایل نوتبوک استفاده میکنید، قبل از ارسال فایل `result.zip`، آخرین نسخهی نوتبوک خود را دانلود کرده و داخل فایل ارسالی قرار دهید.
</details>
سیمان بازی
| فایل اولیهی پروژه را میتوانید از [این لینک](/contest/assignments/84381/download_problem_initial_project/308147/) دانلود کنید.|
| :--: |
شرکت پیشرو فینتک، «نکسوسپی» (*NexusPay*)، به سیستم پیشرفته و مبتنی بر هوش مصنوعی خود برای تشخیص تقلب افتخار میکند. مدلهای این شرکت بر روی میلیونها تراکنش آموزش دیدهاند و فعالیتهای متقلبانه را با دقتی چشمگیر شناسایی میکنند. با این حال، بخش مالی به تازگی متوجه یک ناهنجاری دائمی شده است: یک جریان کوچک و ثابت از تراکنشهای جعلی از زیر دست سیستم در میرود.
این «تراکنشهای شبح» (*fraud*) با الگوهای شناختهشده مطابقت ندارند. مبالغ آنها به طور غیرعادی بالا نیست، از کشورهای پرخطر سرچشمه نمیگیرند و هشدارهای رفتاری را که مدلهای فعلی ما برای شناسایی آنها طراحی شدهاند، فعال نمیکنند. گویی برای تحلیلهای رفتاری استاندارد ما نامرئی هستند.
شما به عنوان یک دانشمند داده در «پروژه سنتینل» استخدام شدهاید. مأموریت شما تجزیه و تحلیل یک مجموعه داده جدید است که جزئیات تراکنشها را با فرادادههای پردازش داخلی ترکیب میکند.
هدف شما ساخت یک مدل طبقهبندی است که بتواند تراکنشهای «شبح» را با **بالاترین دقت ممکن** شناسایی کند. هر درصد بهبود در دقت، از زیان مالی قابل توجهی برای شرکت جلوگیری میکند و تیمهای فعلی در رسیدن به یک راهحل بهینه به بنبست خوردهاند.
تئوری تیم داخلی داده این است که الگوی اصلی، در رفتار کاربر نیست، بلکه در **زیرساخت پردازشی** سیستم نهفته است. به همین دلیل، برخی از فرادادههای داخلی که گمان میرود کلید حل معما باشند، در این دیتاست گنجانده شدهاند.
<details class="yellow">
<summary>**دادگان**</summary>
مجموعه داده مورد استفاده شامل ویژگیهای جمعآوری شده از مشتریان است که عبارتاند از:
| *نام ستون (Column Name)* | *توضیح مختصر* |
|:----------------------------:|:-------------------------------------------------------------------------:|
| *processing_batch_id* | شماره_دسته_پردازش |
| *transaction_amount* | تعداد تراکنش |
| *user_age_days* | عمر حساب کاربر به روز |
| *ip_risk_score* | امتیاز ریسکی بودن ip |
| *transaction_speed_seconds* | تراکنش چند ثانیه طول میکشد؟ |
| *user_id* | آیدی کاربر |
| *product_category* | دستهبندی محصول |
| *payment_method* | روش پرداخت |
| *is_fraud* | ستون هدف (تراکنش شبح)
</details>
# ارزیابی
برای ارزیابی سیستم شما از فرمول زیر استفاده میگردد.
\[ \max(0, 100 \times (1 - \frac{\text{1 - Accuracy Score}}{0.01})) \]
> نکته: **فایل نهایی ارسالی برای این سوال، باید شامل دو ستون user_id , is_fraud رو باشد.**
تشخیص تقلب!
| فایل اولیهی سوال را میتوانید از [این لینک](/contest/assignments/84381/download_problem_initial_project/308148/) دانلود کنید.|
| :--: |
یک برنامه فضایی به نام «کاوشگران فضایی» وجود دارد که در آن به دنبال پیدا کردن برترین افراد علمی کشور جهت آمادهسازی برای مطالعه درباره فضا و کهکشان هستیم. در این سوال از شما خواسته شده است که از مجموعهداده مشخص شده، اطلاعات ارزشمندی برای این برنامه فضایی استخراج کنید.
|  |
| :---: |
| ارسال افراد برگزیده به فضا |
## نحوهی ارسال پاسخ
برای پاسخ به این سوال ابتدا فایل نوتبوک قرار گرفته در فایل اولیه را باز کنید و سپس مراحل را مطابق آنچه که از شما خواسته شده انجام دهید. در نهایت، پس از اجرای سلول جوابساز (آخرین سلول فایل نوتبوک) فایل `result.zip` ساخته شده را ارسال نمایید.
<details class="red">
<summary>
**هشدار مهم**
</summary>
توجه داشته باشید که پیش از اجرای سلول جوابساز، تغییرات اعمال شده در نوتبوک را با استفاده از کلید میانبر `ctrl+s` ذخیره کرده باشید در غیر این صورت، در پایان مسابقه **نمره** شما به **صفر** تغییر خواهد کرد.
همچنین اگر از کولب برای اجرای این فایل نوتبوک استفاده میکنید، قبل از ارسال فایل `result.zip`، آخرین نسخهی نوتبوک خود را دانلود کرده و داخل فایل ارسالی قرار دهید.
</details>
برنامه فضایی
| فایل اولیهی پروژه را میتوانید از [این لینک](/contest/assignments/84381/download_problem_initial_project/308142/) دانلود کنید.|
| :--: |
در این بخش از مسابقه، با مجموعهدادهای روبهرو هستید که تصویری گسترده و چندبعدی از وضعیت تحصیلی، رفتاری و خانوادگی دانشآموزان در یک محیط آموزشی دیجیتال یا ترکیبی ارائه میدهد. وظیفه شما این است که با تحلیل این دادهها، وضعیت کلی هر دانشآموز را پیشبینی و دستهبندی کنید.
این دادهها صرفاً به نمرات و عملکرد درسی محدود نمیشوند؛ بلکه طیفی متنوع از اطلاعات را در بر میگیرند (از ویژگیهای فردی و دموگرافیک گرفته تا میزان تعامل با منابع آموزشی، و حتی بازخورد والدین نسبت به مدرسه).
هدف نهایی این است که با بهرهگیری از این دادهها، بتوانید سطح عملکرد هر دانشآموز را در یکی از سه گروه **«پایین»، «متوسط» یا «بالا»** دستهبندی کنید.

------------
## معیار ارزیابی
برای ارزیابی مدل شما از معیار `F1 Score` استفاده میشود. برای نمرهگیری در این سوال مدل شما باید دارای `F1 Score` حداقل ۰.۷ باشد و در این حالت نمرهی نهایی بر اساس فرمول زیر محاسبه میگردد:
$$round(f1 score, 3) \times 100$$
اگر مدل شما به حدنصاب نرسد، نمرهی دریافتی **صفر** خواهد بود.
<details class="red">
<summary>
**توجه**
</summary>
در طول مسابقه امتیازی که مشاهده میکنید، فقط نتیجهی ارزیابی مدل شما روی ۳۰ درصد از دادههای آزمون است. بعد از پایان زمان مسابقه، **امتیاز نهایی** شما روی ۷۰ درصد مابقی محاسبه میشود.
این کار به منظور جلوگیری از بیشبرازش (`overfitting`) و حفظ عمومیت مدل انجام میشود تا مطمئن شویم مدلهایی که دچار بیشبرازش شدهاند، در امتیازدهی نهایی، افت میکنند.
</details>
------------
## نحوهی ارسال پاسخ
وظیفه شما این است که با استفاده از دادههای آموزش، مدلی بسازید که بتواند سطح هر دانشآموز در مجموعهی آزمایش پیشبینی کند. خروجی نهایی شما باید یک فایل با نام **submission.csv** باشد که تنها شامل یک ستون به نام **Class** است. در این فایل، برای هر دانشآموز در مجموعهی آزمایش باید سطح عملکرد (پایین، متوسط یا بالا) پیشبینی شده باشد.
توجه داشته باشید که **ترتیب سطرهای فایل خروجی باید دقیقاً مطابق با ترتیب دانشآموزان در مجموعهی test باشد**. نمونهای از فایل خروجی نهایی به شرح زیر است:
| **Class** |
|:---------:|
| M |
| M |
| L |
| H |
برای پاسخ به این سوال ابتدا فایل نوتبوک قرار گرفته در فایل اولیه را باز کنید و سپس مراحل را مطابق آنچه که از شما خواسته شده انجام دهید. در نهایت، پس از اجرای سلول جوابساز (آخرین سلول فایل نوتبوک) فایل `result.zip` ساخته شده را ارسال نمایید.
<details class="red">
<summary>
**هشدار مهم**
</summary>
توجه داشته باشید که پیش از اجرای سلول جوابساز، تغییرات اعمال شده در نوتبوک را با استفاده از کلید میانبر `ctrl+s` ذخیره کرده باشید در غیر این صورت، در پایان مسابقه **نمره** شما به **صفر** تغییر خواهد کرد.
همچنین اگر از کولب برای اجرای این فایل نوتبوک استفاده میکنید، قبل از ارسال فایل `result.zip`، آخرین نسخهی نوتبوک خود را دانلود کرده و داخل فایل ارسالی قرار دهید.
</details>
پشت نیمکت چی میگذره؟
| فایل اولیهی پروژه را میتوانید از [این لینک](/contest/assignments/84381/download_problem_initial_project/308149/) دانلود کنید.|
| :--: |
در این بخش از مسابقه، با دادههایی واقعی از محیطهای صنعتی سروکار دارید. این دادهها توسط سنسورهای صنعتی ثبت شدهاند که عملکرد آنها گاهی دچار اختلال یا نویز میشود. بروز خطا در این نوع سامانهها امری طبیعی است و تشخیص بهموقع این پدیدهها از اهمیت بالایی برخوردار است.
هدف شما در این مرحله، شناسایی دادههای غیرعادی از میان دادههای عادی است؛ مسئلهای که در دنیای واقعی کاربردهای فراوانی در پایش سلامت تجهیزات، پیشبینی خرابیها و افزایش ایمنی صنعتی دارد.

-----------------------
## معیار ارزیابی
برای ارزیابی مدل شما از معیار `F1 Score` استفاده میشود. برای نمرهگیری در این سوال مدل شما باید دارای `F1 Score` حداقل ۰.۵۵ باشد و در این حالت نمرهی نهایی بر اساس فرمول زیر محاسبه میگردد:
$$round(f1 score, 3) \times 100$$
اگر مدل شما به حدنصاب نرسد، نمرهی دریافتی **صفر** خواهد بود.
<details class="red">
<summary>
**توجه**
</summary>
در طول مسابقه امتیازی که مشاهده میکنید، فقط نتیجهی ارزیابی مدل شما روی ۳۰ درصد از دادههای آزمون است. بعد از پایان زمان مسابقه، **امتیاز نهایی** شما روی ۷۰ درصد مابقی محاسبه میشود.
این کار به منظور جلوگیری از بیشبرازش (`overfitting`) و حفظ عمومیت مدل انجام میشود تا مطمئن شویم مدلهایی که دچار بیشبرازش شدهاند، در امتیازدهی نهایی، افت میکنند.
</details>
---------------------------------
## نحوهی ارسال پاسخ
پاسخ نهایی شما باید در قالب فایلی با نام **submission.csv** ارائه شود. این فایل باید شامل یک ستون با نام **is_anomaly** باشد. در این ستون، برای هر نمونه از دادههای آزمون مشخص میکنید که آیا آن نمونه غیرعادی است یا خیر:
+ اگر نمونهای **غیرعادی** باشد، مقدار **۱** در آن ردیف قرار دهید.
+ و اگر **عادی** باشد، مقدار **۰** در آن ردیف قرار دهید.
جدول زیر نمونهای از پنج سطر اول فایل خروجی مورد انتظار را نشان میدهد:
| **is_anomaly** |
|:---------:|
| 0 |
| 0 |
| 1 |
| 0 |
| 1 |
برای پاسخ به این سوال ابتدا فایل نوتبوک قرار گرفته در فایل اولیه را باز کنید و سپس مراحل را مطابق آنچه که از شما خواسته شده انجام دهید. در نهایت، پس از اجرای سلول جوابساز (آخرین سلول فایل نوتبوک) فایل `result.zip` ساخته شده را ارسال نمایید.
<details class="red">
<summary>
**هشدار مهم**
</summary>
توجه داشته باشید که پیش از اجرای سلول جوابساز، تغییرات اعمال شده در نوتبوک را با استفاده از کلید میانبر `ctrl+s` ذخیره کرده باشید در غیر این صورت، در پایان مسابقه **نمره** شما به **صفر** تغییر خواهد کرد.
همچنین اگر از کولب برای اجرای این فایل نوتبوک استفاده میکنید، قبل از ارسال فایل `result.zip`، آخرین نسخهی نوتبوک خود را دانلود کرده و داخل فایل ارسالی قرار دهید.
</details>
نویز مشکوک
| فایل اولیهی تمرین را میتوانید از [این لینک](/contest/assignments/84381/download_problem_initial_project/308143/) دانلود کنید. |
| :--: |
شما به تازگی به عنوان مدیر ورزشی باشگاه فوتبال ریشهدار و پرطرفدار **«آذرخش»** انتخاب شدهاید. فصلی که گذشت، فصل پر فراز و نشیبی برای آذرخش بود. با وجود کسب سهمیه لیگ قهرمانان، هیئت مدیره برای رهایی از فشارهای ناشی از قوانین **«بازی جوانمردانه مالی» (Financial Fair Play)** و تامین بودجه لازم برای نوسازی زیرساختهای باشگاه، مجبور به فروش دو ستاره کلیدی تیم شد.
با فروش این دو بازیکن، مبلغ قابل توجهی به حساب باشگاه واریز شده، اما هواداران خشمگین و نگران آینده تیم هستند. شبکههای اجتماعی پر از هشتگهای اعتراضی شده و فشار رسانهها برای معرفی جانشینان این دو بازیکن به اوج خود رسیده است. در اولین کنفرانس خبری، شما با این وعده که «آذرخش قدرتمندتر از همیشه بازخواهد گشت» سعی در آرام کردن اوضاع داشتید.

شما در یک پنجره نقل و انتقالات بیرحم قرار گرفتهاید. از یک سو، قوانین سفت و سخت فیرپلی مالی به شما اجازه نمیدهد تمام پول حاصل از فروش را خرج کنید. شما تنها مجاز به استفاده از **۸۰ درصد** از مجموع مبلغ فروش این دو بازیکن برای خرید بازیکنان جدید هستید. از سوی دیگر، سرمربی تیم به شدت نگران افت کیفیت تیم است. شما باید با استفاده از علم داده، دو بازیکن جدید را شناسایی و جایگزین این دو بازیکن کنید. اما این یک خرید ساده نیست. شما باید یک شاهکار مدیریتی انجام دهید. پیدا کردن جفتی از بازیکنان که نه تنها از نظر فنی شبیه به دو بازیکن از دست رفته باشند، بلکه تا حدی با توجه به گزینهها کیفیت تیم را حفظ کرده و علاوه بر آن به فکر جوانگرایی هم باشید. در نهایت شما باید سیستمی را پیادهسازی کنید که آیدی دو بازیکن فروخته شده را دریافت کرده و با توجه به ویژگیهای بازیکنان یک لیست 5تایی از آیدی جفت بازیکنانی که قادر به پر کردن جای خالی ایشان هستند را برگرداند.
----------
### **معیار ارزیابی: (`PairScore`)** 📈
ارزیابی نهایی بر اساس یک امتیاز کلی به نام `PairScore` برای بهترین جفت پیشنهادی شما انجام خواهد شد. این امتیاز ترکیبی از **چهار فاکتور کلیدی** است:
1. **شباهت پروفایل (Profile Similarity):** اینکه ویژگیهای فنی بازیکنان جدید چقدر با بازیکنان فروخته شده **با توجه به پست تخصصی آنها** همخوانی دارد.
2. **حفظ کیفیت (Quality Maintenance):** اینکه کارایی تیم در آن پست خاص تا چه حد حفظ شده یا بهبود یافته است. صرفا *OVR* کلی ملاک نیست. اگر بازیکنان پیشنهادی باعث پایین آمدن *OVR* تیم شوند امتیاز منفی دریافت میکنند در غیر اینصورت امتیاز مثبت.
3. **فاکتور جوانی (Youth Factor):** به گزینههای جوانتر و آیندهدار امتیاز **بیشتری** تعلق میگیرد و اگر بازیکنان معرفی شده باعث افزایش میانگین سنی تیم شوند، شما امتیاز منفی دریافت خواهید کرد.
4. **ارزش مالی (Financial Value):** پیدا کردن گزینههایی که نسبت به قیمتشان، کیفیت بالایی ارائه میدهند (value for money)، یک امتیاز مثبت بزرگ محسوب میشود. هرچه صرفهجویی در بودجه بیشتر، امتیاز بیشتر.
> **هزینه خرید جفت پیشنهادی شما نباید از بودجه تعیین شده تجاوز کند.**
اگرچه فرمول دقیق و وزندهی این فاکتورها نزد کمیته داوری محفوظ است، اما یک راهحل موفق، راهحلی است که در هر چهار زمینه عملکردی متقاعدکننده و متعادل از خود به نمایش بگذارد.
----------
### **خروجی**
شما در نهایت باید یک تابع به زبان برنامهنویسی پایتون را ارسال کنید. این تابع باید**آیدی 2 بازیکن به فروش رفته و دیتاست کلی (با فرمت دیتافریم)** را دریافت کرده و آیدی یک بازیکن پیشنهادی به ازای هر کدام از فروخته شدهها *return* کند. (یعنی خروجی تابع باید دو آیدی باشد.). بازیکنان پیشنهادی شما با توجه به معیار `PairScore` تیم داوری سنجیده میشوند و امتیاز میگیرند.
> نکته: اگر خارج از notebook قرار داده شده قصد نوشتن برنامه را دارید، شما باید فایلی به نام `player_recommender.py` داشته باشید که در دل این برنامه تابعی به نام `player_recommender` وجود دارد.
مدیر ورزشی «آذرخش»
| فایل اولیهی سوال را میتوانید از [این لینک](/contest/assignments/84381/download_problem_initial_project/308144/) دانلود کنید.|
| :--: |
در این سوال قرار است به توسعه بخشی از بزرگترین و کاربردیترین سیستم برای سفر بپردازیم. طاها مدیرعامل شرکت و پلتفرم آنلاین **سفرچک** از شما برای شرکت در توسعه سیستمی برای بهبود کیفیت سفر کاربران وبسایت خود دعوت میکند.
|  |
| :--: |
| رابط کاربری سفرجیب |
وبسایت سفرچک از بخشهای مختلفی برای کمک به مسافران تشکیل شده است که هرکدام خدمات منحصربهفردی به کاربران ارائه میکند. در این لحظه مهندسین نرمافزار این پلتفرم در حال طراحی بخشی به نام سفرجیب هستند تا به مسافران برای محاسبه هزینه سفر مورد نظر خود کمک کند. از شما خواسته شده تا در این ماموریت سیستمی را طراحی کنید تا هزینه اقامت هتل را برای کاربران پیشبینی کند.
**برای این مأموریت آمادهاید؟!**
## معیار ارزیابی
برای ارزیابی مدل شما از معیار `R2 Score` استفاده میشود. برای نمرهگیری در این سوال مدل شما باید دارای `R2 Score` حداقل ۰.۵ باشد و در این حالت نمرهی نهایی بر اساس فرمول زیر محاسبه میگردد:
$$round(r2score, 3) \times 100$$
اگر مدل شما به حدنصاب نرسد، نمرهی دریافتی **صفر** خواهد بود.
<details class="red">
<summary>
**توجه**
</summary>
در طول مسابقه امتیازی که مشاهده میکنید، فقط نتیجهی ارزیابی مدل شما روی ۳۰ درصد از دادههای آزمون است. بعد از پایان زمان مسابقه، **امتیاز نهایی** شما روی ۷۰ درصد مابقی محاسبه میشود.
این کار به منظور جلوگیری از بیشبرازش (`overfitting`) و حفظ عمومیت مدل انجام میشود تا مطمئن شویم مدلهایی که دچار بیشبرازش شدهاند، در امتیازدهی نهایی، افت میکنند.
</details>
## نحوهی ارسال پاسخ
برای پاسخ به این سوال ابتدا فایل نوتبوک قرار گرفته در فایل اولیه را باز کنید و سپس مراحل را مطابق آنچه که از شما خواسته شده انجام دهید. در نهایت، پس از اجرای سلول جوابساز (آخرین سلول فایل نوتبوک) فایل `result.zip` ساخته شده را ارسال نمایید.
<details class="red">
<summary>
**هشدار مهم**
</summary>
توجه داشته باشید که پیش از اجرای سلول جوابساز، تغییرات اعمال شده در نوتبوک را با استفاده از کلید میانبر `ctrl+s` ذخیره کرده باشید در غیر این صورت، در پایان مسابقه **نمره** شما به **صفر** تغییر خواهد کرد.
همچنین اگر از کولب برای اجرای این فایل نوتبوک استفاده میکنید، قبل از ارسال فایل `result.zip`، آخرین نسخهی نوتبوک خود را دانلود کرده و داخل فایل ارسالی قرار دهید.
</details>
سفرجیب
| فایل اولیهی سوال را میتوانید از [این لینک](/contest/assignments/84381/download_problem_initial_project/308145/) دانلود کنید.|
| :--: |
«آوا تلکام» را یادتان هست؟ ما دوباره با یک چالش جدی مواجه شدیم و به کمک متخصص دادهای مثل شما نیازمندیم.
----------
در آستانه ورود به سال ۱۴۰۲، با یک چالش بزرگ و هیجانانگیز روبرو هستیم. در طول سالهای گذشته، از سال ۱۳۹۷ تا اواخر سال ۱۴۰۱، ما شاهد رشد انفجاری در تعداد مشتریان و حجم ترافیک مصرفی آنها بودهایم. از فروشگاههای آنلاین پربازدید و پلتفرمهای پخش ویدیو گرفته تا استارتاپهای بازیسازی و شرکتهای بزرگ، همگی برای ارائه خدمات خود به زیرساخت پایدار و قدرتمند «آوا تلکام» متکی هستند.
موفقیت ما به یک اصل کلیدی گره خورده است: **توازن**. ما باید بتوانیم منابع سرور و پهنای باند شبکه را به صورت لحظهای مدیریت کنیم. اگر منابع کمی تخصیص دهیم، سرعت خدمات کاهش یافته و مشتریان ما ناراضی خواهند شد. اگر هم بیش از حد منابع در نظر بگیریم، میلیونها تومان صرف هزینههای نگهداری سرورهای بدون استفاده خواهد شد.
اینجا جایی است که شما وارد میشوید. ما معتقدیم که کلید حل این چالش، در دستان متخصصان علم دادهای مانند شماست. ما به مدلی هوشمند نیاز داریم که بتواند با تحلیل الگوهای پیچیده مصرف در گذشته، تقاضای آینده شبکه را با دقت بالایی پیشبینی کند.
----------
مأموریت شما واضح است:
**شما باید یک مدل یادگیری ماشین توسعه دهید که با استفاده از دادههای مصرف هر ۱۵ دقیقه حدود ۳۷۰ مشتری منتخب ما در چند سال گذشته، بتواند مجموع کل ترافیک مصرفی شبکه را به صورت ساعتی برای تمام ۳۰ روز آینده یعنی تمام آذرماه سال ۱۴۰۱ پیشبینی کند.**
مدل شما باید بتواند الگوهای روزانه (ساعات اوج و فرود مصرف)، الگوهای هفتگی (تفاوت روزهای کاری و تعطیلات) و روندهای بلندمدت را تشخیص داده و یک پیشبینی دقیق و قابل اعتماد برای ۳۰ روز آینده ارائه دهد.
برای این سوال فایل زیر در اختیار شما قرار میگیرد:
1. **`train.csv` (مجموعه داده آموزش):**
+ این فایل شامل دادههای مصرف ۱۵دقیقهای برای حدود ۳۷۰ مشتری ناشناس ما (از `U1` تا `U370`) است. هر کدام از ستونهای این مجموعه داده که شامل `U_id` باشند، در واقع نمایانگر میزان مصرف کاربر مشخص در آن زمان مشخص است.
+ بازه زمانی دادهها از **۱ بهمن ۱۳۹۷** آغاز شده و تا **۳۰ آبان ۱۴۰۱** ادامه دارد.
+ واحد اعداد، **مگابایت (Megabytes)** است. برای مثال، عدد `7120.0` به معنای مصرف ۷۱۲۰ مگابایت در آن ساعت توسط آن مشتری است.
> نکته: مقادیر `0` که در سطرهای اولیه برای بعضی کاربران درج شده به معنی عدم وجود این کاربران در شبکه «آوا تلکام» است نه عدم مصرف که اصطلاحا به آن مشکل **«شروع سرد (cold start)»** گفته میشود.
### خروجی
خروجی شما باید شامل یک فایل `submission.csv` باشد که مجموع مصرف **ساعتی** کاربران ما را در ماه آینده (آذر ۱۴۰۱) مشخص میکند. در واقع ما میخواهیم بدانیم در آذرماه پیشرو، در هر ساعتی کاربران ما مجموعا چندمگابایت ترافیک مصرف میکنند.
+ ستونها باید شامل `timestamp` (برچسب زمانی دقیق برای هر ساعت از آذر ۱۴۰۱) و `total` (پیشبینی شما برای مجموع مصرف کل شبکه در آن ساعت) باشند.
| *timestamp* | *total* |
|:---------:|:----------:|
| 1401-09-01 00:00:00 | 79000 |
| 1401-09-01 01:00:00 | 79000 |
| ... | ... |
| 1401-09-30 23:00:00| 79000 |
### ارزیابی
عملکرد مدل شما بر اساس **خطای جذر میانگین مربعات (Root Mean Squared Error - RMSE)** ارزیابی میشود. برای تبدیل این خطا به یک «امتیاز» قابل مقایسه در بازه ۰ تا ۱۰۰، از یک تابع امتیازدهی غیرخطی استفاده میکنیم که در آن امتیاز بالاتر، نشاندهنده عملکرد برتر است.
این سیستم امتیازدهی، خطای مدل شما (RMSE) را در مقایسه با **انحراف معیار (Standard Deviation)** مقادیر واقعی (`std(Y_true)`) میسنجد. انحراف معیار، پراکندگی یا نوسان ذاتی دادههای ترافیک را اندازهگیری میکند. در نتیجه، یک مدل موفق نهتنها باید دقیق باشد، بلکه خطای آن باید نسبت به این نوسانات طبیعی، مقدار ناچیزی باشد.
\[
Score = 100 \times e^{\left(-\frac{\text{RMSE}}{\text{std}(Y_{\text{true}})}\right)}
\]
یک امتیاز ۱۰۰ به معنای پیشبینی کاملاً دقیق (خطای صفر) است. این فرمول به صورت نمایی عمل میکند؛ یعنی به مدلهایی که خطای آنها به مراتب کوچکتر از نوسانات طبیعی دادهها باشد، امتیاز بالایی اختصاص میدهد و با افزایش خطا، امتیاز به سرعت کاهش مییابد.