## معرفی دادهها
دادههای این مسابقه مربوط به مجموعهای از **حسگرهای صنعتی** هستند که بر روی تجهیزات بزرگ مانند پمپها، توربینها و کمپرسورها نصب شدهاند. این حسگرها کمیتهایی نظیر **دما، فشار، ارتعاش، جریان و ولتاژ** را در طول زمان ثبت میکنند تا امکان پایش سلامت و عملکرد تجهیزات فراهم شود. هدف کلی مسابقه، طراحی مدلها و الگوریتمهایی است که بتوانند بر اساس این دادهها، خطاها را تشخیص دهند، الگوهای غیرعادی را بیابند یا عمر باقیمانده تجهیزات را پیشبینی کنند.
## ساختار کلی دادهها
اطلاعات هر حسگر برای هر سوال در فایل مربوطه با نام حسگر ارائه شده است:
ویژگیهای کلیدی دادهها:
+ ستون **`timestamp`** نشاندهندهی زمان ثبت داده است (مرتبشده به صورت صعودی).
+ ستون دوم مقدار همان حسگر را در هر لحظه ذخیره میکند.
+ در نسخهی **train**، در صورتی که برچسب وجود داشته باشد، تنها در سنسوری ذخیره شده که **بیشترین نرخ نمونهبرداری** را دارد.
+ نسخهی **test** فاقد برچسب است.
+ زمان در کل دادهها تغییر کرده اما **ترتیب زمانی حفظ شده است**.
### نرخ نمونهبرداری حسگرها
هر حسگر با **نرخ نمونهبرداری (Sampling Rate)** متفاوتی داده تولید میکند. این نرخ نشان میدهد که هر چند ثانیه یک بار مقدار حسگر ثبت میشود.
| نام حسگر | واحد اندازهگیری | نرخ نمونهبرداری (هر چند ثانیه یکبار) | توضیحات |
| ---------------- | ---------------- | ------------------------------------- | ---------------- |
| Temperature_C | °C | 1 | دمای تجهیز |
| Pressure_kPa | kPa | 2 | فشار سیال |
| VibAccel_m_s2 | m/s² | 10 | شتاب ارتعاش |
| VibVelocity_mm_s | mm/s | 5 | سرعت ارتعاش |
| BearingTemp_C | °C | 10 | دمای یاتاقان |
| FlowRate_L_min | L/min | 15 | نرخ جریان سیال |
| Humidity_pct | % | 5 | رطوبت محیط |
| OilLevel_cm | cm | 15 | سطح روغن |
| pH_units | – | 10 | اسیدیته سیال |
| Power_kW | kW | 1 | توان الکتریکی |
| Speed_RPM | RPM | 2 | سرعت دورانی |
| Torque_Nm | N·m | 5 | گشتاور محور |
| VibDisp_mm | mm | 15 | جابهجایی ارتعاش |
| Voltage_V | V | 2 | ولتاژ تغذیه |
## ⚠️ نکات مهم
+ خروجی هر مسئله باید با ساختار داده منطبق باشد؛ بهطور خاص، برای فایلهای **test**، خروجی باید به اندازهی تعداد ردیفهای حسگری باشد که بالاترین نرخ نمونهبرداری را دارد، چراکه برچسبها در همان نقاط زمانی تعریف میشوند.
+ به دلیل متفاوت بودن نرخ نمونهبرداری، دادههای سنسورها بهصورت طبیعی همتراز نیستند. هنگام ادغام، باید همگامسازی بر اساس `timestamp` انجام شود.
+ وجود مقادیر گمشده (`NaN`) در برخی حسگرها طبیعی است و باید در پیشپردازش مدیریت شوند.
+ به دلیل تغییر نرخ و بازههای زمانی، چالش قابل توجه در این دادهها **یکپارچهسازی زمانی** و مدیریت اختلاف نرخ نمونهبرداری است.
توضیحات مسابقه
| فایل نمونهٔ داده را میتوانید از [این لینک](/contest/assignments/89137/download_problem_initial_project/303234/) دانلود کنید. |
| :---------: |
در این سؤال بهجای دستهبندی یا پیشبینی، باید محاسبات آماری **پیشرفتهتری** روی بخشی از همان دادههای سنسوری پمپ انجام دهید. فایل `statistical_analysis_data.csv` شامل ۱٬۰۰۰ رکورد از همان دادههاست و ستونهای سنسورها، برچسب و ستون `RUL_seconds` را در بر میگیرد.
### توضیحات داده
+ **`statistical_analysis_data.csv`**: شامل ستونهای `timestamp`, `Temperature_C`, `Pressure_kPa`, `VibAccel_m_s2`, `VibVelocity_mm_s` و ستونهای برچسب و `RUL_seconds` است.
+ تنها ۱٬۰۰۰ سطر اول داده انتخاب شدهاند تا بتوانید محاسبات را انجام دهید.
### هدف
باید **۳۲ مقدار** به ترتیب زیر محاسبه و هرکدام را در یک خط جداگانه چاپ کنید. مگر جایی که «خام/بدون وینسور» تصریح شده، همهٔ محاسبات روی نسخهٔ **وینسورشده** (Winsorized)ی هر سنسور انجام میشوند:
<details class="blue">
<summary>
**تعریف وینسور**
</summary>
برای هر سنسور، صدکهای ۱٪ و ۹۹٪ با `interpolation='linear'` محاسبه و سپس با `clip` داده به بازهٔ [p1, p99] محدود شود.
</details>
<details class="olive">
<summary>
**میانگین**
</summary>
هر یک از چهار سنسور به ترتیب: دما، فشار، شتاب ارتعاش، سرعت ارتعاش (۴ مقدار)
</details>
<details class="olive">
<summary>
**انحراف معیار نمونهای**
</summary>
(`std` با `ddof=1`) برای همین سنسورها و همان ترتیب (۴ مقدار)
</details>
<details class="olive">
<summary>
**کمینه و بیشینهٔ خام (بدون وینسور)**
</summary>
برای هر سنسور و به ترتیب:
(min دما، max دما، min فشار، max فشار، min شتاب، max شتاب، min سرعت، max سرعت) (۸ مقدار)
</details>
<details class="olive">
<summary>
**ضریب همبستگی پیرسون**
</summary>
بین تمام جفتهای ممکن سنسورها (روی نسخهٔ وینسورشده و با حذف جفتهای NaN بهصورت pairwise):
(دما، فشار)، (دما، شتاب)، (دما، سرعت)، (فشار، شتاب)، (فشار، سرعت)، (شتاب، سرعت) (۶ مقدار)
</details>
<details class="olive">
<summary>
**میانه**
</summary>
برای هر سنسور (وینسورشده) به همان ترتیب استاندارد سنسورها (۴ مقدار)
</details>
<details class="olive">
<summary>
**خودهمبستگی با وقفهٔ ۱ (lag=1)**
</summary>
برای هر سنسور (وینسورشده) به همان ترتیب (۴ مقدار)
</details>
<details class="olive">
<summary>
**نرخ NaN**
</summary>
سهم ردیفهایی که **حداقل یکی** از چهار سنسورشان NaN دارد (روی دادهٔ خام) (۱ مقدار)
</details>
<details class="olive">
<summary>
**میانهٔ فاصلهٔ نمونهبرداری (ثانیه)**
</summary>
ستون timestamp را صعودی مرتب کنید، اختلاف زمانی متوالی را محاسبه کرده، مقادیر مثبت را نگه دارید و میانهٔ آنها را بر حسب ثانیه گزارش کنید (۱ مقدار)
</details>
### ⚠️ نکات مهم
+ خروجی **حتماً** باید دقیقاً با **۶ رقم اعشار** چاپ شود.
+ برای وینسور، صدکهای ۱٪ و ۹۹٪ باید با `interpolation='linear'` محاسبه شوند.
+ برای `std` از **نمونهای** (`ddof=1`) استفاده کنید.
+ برای **همبستگی پیرسون**، پس از وینسور، محاسبه بر پایهٔ حذف سطریِ **pairwise** انجام شود.
+ **کمینه/بیشینه** در بخش (۳) باید روی دادهٔ **خام** (بدون وینسور) محاسبه شوند.
+ در **lag-1 autocorr** از دادهٔ وینسورشده استفاده کنید.
+ ترتیب چاپ مقادیر **دقیقاً** همان ترتیبی است که در بالا آمده (جمعاً ۳۲ خط).
### معیار ارزیابی
هر مقدار خروجی با مقدار مرجع مقایسه میشود و اگر اختلاف نسبی آن کمتر از `1e-3` باشد، امتیاز کامل به آن مقدار تعلق میگیرد. امتیاز نهایی، میانگین امتیاز تمام ۳۲ مقدار است.
### نحوه ارسال پاسخ
یک فایل `result.zip` ارسال کنید که شامل:
1. **`submission.csv`**: حاوی **۳۲ خط** با عنوان prediction (نام ستون) که در هر خط یکی از مقادیر ذکرشده با **۶ رقم اعشار** نوشته شده است.
2. **`notebook.ipynb`**: نوتبوکی که نحوهٔ خواندن داده، پیشپردازش، محاسبات و تولید خروجی را با سلولهای جداگانه برای هر بخش توضیح دهد.
تحلیل آماری دادهها
| فایل اولیهی دادگان آموزش و آزمون را میتوانید از [این لینک](/contest/assignments/89137/download_problem_initial_project/303235/) دانلود کنید. |
| ----------------------------------------------------------------------------------------- |
در دنیای امروزی، سیستمهای صنعتی با استفاده از سنسورهای متعددی پایش میشوند تا از وقوع خرابیهای پرهزینه جلوگیری شود. در این سوال باید با استفاده از دادههای چهار سنسور **دما** (°C)، **فشار** (kPa)، **شتاب ارتعاش** (m/s²) و **سرعت ارتعاش** (mm/s) مربوط به یک پمپ، تشخیص دهید که آیا در هر لحظه نشانهای از خرابی وجود دارد یا خیر. دادهٔ آموزشی شامل برچسبی به نام `faulted` است که مقدار آن یا `normal` (عادی) است یا `faulted` (معیوب). هدف شما آموزش مدلی است که بتواند برچسب دادههای آزمون را پیشبینی کند.
### توضیحات داده
**نکتهٔ مهم:** در این سؤال **فقط** دادههای جداگانهٔ هر سنسور ارائه میشود. برای هر سنسور یک جفت فایل با فرمت زیر در اختیار دارید:
+ `SensorName_train.csv` و `SensorName_test.csv`
جزئیات هر فایل:
+ هر فایل شامل ستونهای `timestamp` (زمان ثبت داده) و مقدار همان حسگر است.
+ در نسخهی **train**، برچسب خطا (`faulted`) فقط در فایلی قرار دارد که **بیشترین نرخ نمونهبرداری** را دارد. سایر فایلهای train فاقد این ستون هستند.
+ نرخ نمونهبرداری هر حسگر متفاوت است (برخی هر ۱ ثانیه، برخی هر ۲، ۵، ۱۰ یا ۱۵ ثانیه داده تولید میکنند). در نتیجه، برای تحلیل چندحسگری لازم است دادهها بر اساس `timestamp` همگامسازی شوند.
### هدف
مدلی طراحی کنید که با استفاده از این چهار حسگر، قادر باشد خرابی پمپ را تشخیص دهد و برای دادههای آزمون، برچسب هر رکورد را پیشبینی کند. خروجی شما باید دقیقاً به اندازهی تعداد ردیفهای حسگری باشد که بالاترین نرخ نمونهبرداری را دارد، زیرا برچسبها در همان نقاط زمانی تعریف میشوند.
### معیار ارزیابی
برای ارزیابی عملکرد مدلها از **Macro-F1** (میانگین F1 برای کلاسهای `normal` و `faulted`) استفاده میشود:
$$F1_{macro} = \frac{1}{2} (F1_{normal} + F1_{faulted})$$
<details class="red">
<summary>
**حداقل امتیاز**
</summary>
> در صورتی که Macro‑F1 شما کمتر از ۰٫۵ باشد، نمرهٔ نهایی صفر خواهد بود.
</details>
<details class="red">
<summary>
**داده ارزیابی**
</summary>
در طول مسابقه امتیازی که مشاهده میکنید، تنها نتیجهی ارزیابی مدل شما روی ۳۰ درصد از دادههای آزمون است. پس از پایان مسابقه، **امتیاز نهایی** بر روی ۷۰ درصد باقیمانده محاسبه میشود. این فرآیند به منظور جلوگیری از بیشبرازش (`overfitting`) و اطمینان از قابلیت تعمیم مدلها انجام میشود.
</details>
<details class="red">
<summary>
**خروجی مورد انتظار**
</summary>
خروجی شما باید دقیقاً به اندازهی تعداد ردیفهای فایلی باشد که بالاترین نرخ نمونهبرداری را دارد، زیرا برچسبها در همان نقاط زمانی تعریف میشوند.
</details>
### نحوه ارسال پاسخ
باید یک فایل `result.zip` ارسال کنید که شامل موارد زیر باشد:
1. **`submission.csv`**: خروجی مدل شما برای **تمام رکوردهای فایل تست سنسوری با بیشترین نرخ نمونهبرداری**، شامل یک ستون به نام `prediction` که مقدار هر سطر آن `normal` یا `faulted` است.
2. **`notebook.ipynb`**: نوتبوکی که مراحل پیشپردازش (ادغام دادهها بر اساس `timestamp`، مدیریت نرخ نمونهبرداری متفاوت و مقادیر گمشده)، آموزش مدل و تولید خروجی نهایی را مستند میکند.
عیبیابی
| فایل اولیهی دادگان آموزش و آزمون را میتوانید از [این لینک](/contest/assignments/89137/download_problem_initial_project/303236/) دانلود کنید.|
|:-:|
ماشینآلات صنعتی معمولاً پیش از بروز خرابی کامل نشانههایی از کاهش عملکرد یا افزایش فشار و دما نشان میدهند. در این سؤال دادههای حسگری یک توربین در اختیار شما قرار گرفته است. هدف این است که **زمان باقیمانده تا خرابی بعدی** (Remaining Useful Life) بر حسب ثانیه پیشبینی شود.
ستون هدف `RUL_seconds` نشان میدهد که برای هر رکورد، چند ثانیه تا پایان چرخهی آن نمونه باقی مانده است.
### توضیحات داده
+ دادههای هر حسگر در قالب دو فایل ارائه شده است:
+ `SensorName_train.csv`
+ `SensorName_test.csv`
+ در این سوال همهی فایلها شامل تعداد **یکسانی از ردیفها** هستند و نیازی به همگامسازی یا مدیریت نرخ نمونهبرداری متفاوت وجود ندارد.
+ ستون `timestamp` از دادهها حذف شده است تا مقدار `RUL_seconds` تنها از روی مقادیر حسگرها قابل پیشبینی باشد.
+ در نسخهی **train**، ستون هدف `RUL_seconds` وجود دارد.
### هدف
مدلی طراحی کنید که بر اساس الگوهای موجود در دادههای حسگرها، مقدار `RUL_seconds` را برای دادههای آزمون پیشبینی کند. مدل شما باید قادر باشد کاهش تدریجی عمر باقیمانده را با نزدیک شدن به خرابی یاد بگیرد.
### معیار ارزیابی
برای این سوال از **معیار R2** برای ارزیابی دقت پیشبینی استفاده میشود. امتیاز شما به صورت زیر محاسبه میشود:
$$round(r2score, 3) \times 100$$
<details class="red">
<summary>
**حداقل امتیاز**
</summary>
> اگر مقدار R2 شما کمتر از ۰٫۶ باشد، نمرهٔ نهایی صفر خواهد بود.
</details>
<details class="red">
<summary>
**داده ارزیابی**
</summary>
مانند سایر مسائل، حین مسابقه تنها امتیاز حاصل از ۳۰ درصد دادههای آزمون به شما نمایش داده میشود و امتیاز نهایی بر روی ۷۰ درصد باقیمانده محاسبه میشود تا از بیشبرازش جلوگیری شود.
</details>
### نحوه ارسال پاسخ
باید یک فایل `result.zip` ارسال کنید که شامل دو بخش زیر باشد:
1. **`submission.csv`**: شامل یک ستون به نام `prediction` که در هر سطر مقدار پیشبینیشدهی `RUL_seconds` برای تمام رکوردهای فایلهای `*_test.csv` قرار دارد. تعداد سطرها باید دقیقاً برابر با دادههای آزمون باشد.
2. **`notebook.ipynb`**: شامل کد کامل شما، با مراحل پیشپردازش، آموزش مدل و تولید خروجی نهایی.
پیشبینی زمان سلامت
| فایل اولیهی دادگان آموزش و آزمون را میتوانید از [این لینک](/contest/assignments/89137/download_problem_initial_project/303237/) دانلود کنید. |
|:-:|
در این سؤال ترکیبی، دادههای مربوط به تمامی حالتهای معیوب در اختیار شما قرار گرفته است. مدل شما باید دو برچسب را به طور همزمان پیشبینی کند:
+ **نوع خرابی (fault_type)**: میتواند یکی از `bearing_fault`، `misalignment`، `lubrication_fault` یا `sensor_fault` باشد.
+ **منبع خرابی (fault_source)**: مقدار آن یا `equipment_fault` است یا `sensor_fault`.
### توضیحات داده
+ دادهها برای هر حسگر در قالب دو فایل جداگانه ارائه شده است:
+ `SensorName_train.csv`
+ `SensorName_test.csv`
+ هر فایل شامل ستونهای `timestamp` و مقدار همان حسگر است.
+ در نسخهی **train**، دو ستون برچسب `fault_type` و `fault_source` فقط در فایلی وجود دارد که **بالاترین نرخ نمونهبرداری** را دارد. سایر فایلهای train فاقد این برچسبها هستند.
+ زمانها تغییر یافتهاند، اما **ترتیب زمانی کاملاً حفظ شده است**.
+ نرخ نمونهبرداری سنسورها متفاوت است (۱، ۲، ۵، ۱۰ یا ۱۵ ثانیه). بنابراین، برای تحلیل چندحسگری باید دادهها بر اساس `timestamp` همگامسازی شوند.
### هدف
مدلی بسازید که بر اساس سیگنالهای حسگرها، به طور همزمان منبع خرابی (تجهیز یا حسگر) و نوع خرابی (یکی از چهار حالت) را تشخیص دهد. این مسئله یک مسألهی **چندبرچسبی (Multi-Label)** است؛ یعنی هر رکورد باید دو مقدار پیشبینیشده داشته باشد.
### ⚠️ نکات مهم
+ تمامی ردیفها معیوب هستند؛ دادههای عادی در این مجموعه وجود ندارد.
+ خرابیهای حسگر ممکن است با تغییرات ثابت، جهشهای کوتاه یا مقادیر گمشده همراه باشند؛ در حالی که خرابیهای تجهیز عموماً چندین سنسور را تحت تأثیر قرار میدهند.
+ این سوال ترکیبی از دو مسئلهٔ پیشین است. میتوانید از مدلهای چند خروجی استفاده کنید یا دو مدل مجزا آموزش دهید و خروجیهای آنها را در یک فایل ترکیب کنید.
+ دادههای آزمون فاقد هر دو ستون برچسب هستند و شما باید برای هر سطر مقدار هر دو برچسب را پیشبینی کنید.
### معیار ارزیابی
برای ارزیابی، دو مقدار **Macro‑F1** محاسبه میشود: یکی برای ستون `fault_type` (چهار کلاس) و دیگری برای ستون `fault_source` (دو کلاس). امتیاز کلی شما برابر میانگین این دو مقدار است:
$$F1_{type}=F1_{macro}(faultType)$$
$$F1_{source}=F1_{macro}(faultSource)$$
$$score= (\frac{round(F1_{type}, 3) + round(F1_{source}, 3)}{2})*100$$
<details class="red">
<summary>
**حداقل امتیاز**
</summary>
> در صورتی که هر یک از دو مقدار Macro‑F1 کمتر از ۰٫۵ باشد، نمرهٔ نهایی صفر خواهد بود.
</details>
<details class="red">
<summary>
**داده ارزیابی**
</summary>
در طول مسابقه تنها ۳۰ درصد از دادههای آزمون برای محاسبهٔ امتیاز موقت استفاده میشود و ۷۰ درصد باقیمانده بعد از اتمام مسابقه برای امتیازدهی نهایی به کار خواهد رفت تا از بیشبرازش جلوگیری شود.
</details>
<details class="red">
<summary>
**خروجی مورد انتظار**
</summary>
خروجی شما باید دقیقاً به اندازهی تعداد ردیفهای فایلی باشد که بالاترین نرخ نمونهبرداری را دارد، زیرا برچسبها در همان نقاط زمانی تعریف میشوند.
</details>
### نحوه ارسال پاسخ
یک فایل `result.zip` ارسال کنید که شامل دو بخش زیر باشد:
1. **`submission.csv`**: شامل دو ستون `fault_type` و `fault_source` که برای **تمام رکوردهای فایل تست سنسوری با بیشترین نرخ نمونهبرداری**، مقادیر پیشبینیشدهی نوع خرابی و منبع خرابی را نگه میدارد.
2. **`notebook.ipynb`**: شامل روند آمادهسازی داده (ادغام بر اساس `timestamp` و مدیریت نرخ نمونهبرداری متفاوت)، آموزش مدل/مدلها و تولید خروجی.
تشخیص نوع و منبع خرابی
| فایل اولیهی دادگان آموزش را میتوانید از [این لینک](/contest/assignments/89137/download_problem_initial_project/303238/) دانلود کنید. |
|:-:|
در شناسایی ناهنجاری، هدف یافتن الگوهایی است که با رفتار معمول یا «عادی» دادهها سازگار نیستند. چنین ناهنجاریهایی ممکن است به خرابیهای تجهیز، خطای حسگر یا رویدادهای غیرمنتظره اشاره داشته باشند. روشهای بدونناظر فرض میکنند اکثر نمونهها عادی هستند و الگوریتمها نقاطی را که کمترین شباهت را با سایر دادهها دارند شناسایی میکنند.
### توضیحات داده
+ دادهها برای هر حسگر در قالب یک فایل ارائه شده است:
+ `SensorName_test.csv`
+ هر فایل شامل ستونهای `timestamp` و مقدار همان حسگر است.
+ برچسبی برای دادهها وجود ندارد (بدونناظر).
+ نرخ نمونهبرداری حسگرها متفاوت است (۱، ۲، ۵، ۱۰ یا ۱۵ ثانیه). برای تحلیل چندحسگری لازم است دادهها بر اساس `timestamp` همگامسازی شوند.
+ زمانها تغییر کردهاند، اما **ترتیب زمانی کاملاً حفظ شده است**.
### هدف
مدلی طراحی کنید که بر اساس الگوهای موجود در دادههای حسگرها، تشخیص دهد هر ردیف یک ناهنجاری است یا خیر. به عبارت دیگر، برای هر ردیف باید مقدار `1` (نشاندهندهی ناهنجاری) یا `0` (نشاندهندهی وضعیت عادی) پیشبینی شود. روشهای بدونناظر معمولاً با مدلسازی رفتار عادی آغاز میشوند و نقاط دورافتاده را به عنوان ناهنجاری گزارش میکنند.
### معیار ارزیابی
برای این سؤال از **امتیاز F1** برای ارزیابی دقت مدل استفاده میشود.
امتیاز شما به صورت زیر محاسبه میشود:
$$round(F1, 3) \times 100$$
<details class="red">
<summary>
**حداقل امتیاز**
</summary>
> اگر امتیاز F1 شما کمتر از ۰٫۵ باشد، نمرهٔ نهایی صفر خواهد بود.
</details>
<details class="red">
<summary>
**داده ارزیابی**
</summary>
مانند سایر مسائل، حین مسابقه تنها امتیاز حاصل از ۳۰ درصد دادهها به شما نمایش داده میشود و امتیاز نهایی بر روی ۷۰ درصد باقیمانده محاسبه میشود تا از بیشبرازش جلوگیری شود.
</details>
<details class="red">
<summary>
**خروجی مورد انتظار**
</summary>
خروجی شما باید دقیقاً به اندازهی تعداد ردیفهای فایلی باشد که بالاترین نرخ نمونهبرداری را دارد، زیرا برچسبها در همان نقاط زمانی تعریف میشوند.
</details>
### نحوه ارسال پاسخ
یک فایل `result.zip` ارسال کنید که شامل موارد زیر باشد:
1. **`submission.csv`**: شامل یک ستون به نام `prediction` که برای **تمام رکوردهای فایل train حسگری با بالاترین نرخ نمونهبرداری** مقدار پیشبینیشدهی ناهنجاری ثبت شده است (1 برای ناهنجاری و 0 برای عادی).
2. **`notebook.ipynb`**: نوتبوک شما که روند آمادهسازی داده (ادغام حسگرها بر اساس `timestamp`، مدیریت نرخ نمونهبرداری متفاوت و انتخاب ویژگیها)، مدلسازی بدونناظر و تولید خروجی را توضیح میدهد.