| فایل اولیهی پروژه را میتوانید از [این لینک](/contest/assignments/98479/download_problem_initial_project/330487/) دانلود کنید.|
| :--: |
پوریا مدتهاست دنبال خرید یک لپتاپ خوبه. اما همونطور که خودتون میدونید، توی این روزای گرونی و با این همه مدل و برند مختلف، انتخاب کردن خیلی کار سادهای نیست. هر کسی یه پیشنهادی میده: یکی میگه سراغ پردازنده قوی برو، یکی دیگه روی کارت گرافیک تأکید میکنه، و بعضیها هم فقط به قیمت نگاه میکنن. نتیجه این همه پیشنهاد متناقض این شده که پوریا حسابی گیج بشه!
از طرفی، پوریا کمی علم داده بلده. اون به جای اینکه همینجوری و بدون منطق تصمیم بگیره، تصمیم گرفته با دادهها به سراغ خرید لپتاپ بره. برای همین کلی اطلاعات درباره لپتاپهای مختلف جمعآوری کرده: قیمت، مشخصات سختافزاری، برندها و کلی ویژگی دیگه.
اما حالا وقت اصلی شروع کاره: تحلیل این دادهها.
پوریا به تنهایی نمیتونه همهچیز رو بررسی کنه و به یه نتیجه دقیق برسه. اینجا جاییه که شما وارد میشید! وظیفه شما اینه که با استفاده از مهارتهای اکتشاف داده (EDA)، الگوها و نکات پنهان توی دیتاست رو پیدا کنید، مقایسه کنید و در نهایت کمک کنید تا بهترین لپتاپ برای پوریا مشخص بشه.
آیا میتونید در این چالش دادهای، پوریا رو به لپتاپ رؤیایی خودش برسونید؟

------------------------------
### معیار ارزیابی
در این سؤال، طبق توضیحات ارائهشده در نوتبوک، باید با تحلیل دادهها در نهایت **هشت جدول** استخراج کنید.
دادههای هر جدول باید **دقیقاً مطابق با پاسخ اصلی** باشند.
برای ارزیابی مدل شما از معیار `Accuracy` استفاده میشود. در این حالت نمرهی نهایی بر اساس فرمول زیر محاسبه میگردد:
$$round(Accuarcy, 3) \times 100$$
نتایج هر جدول شامل ستونهای عددی و غیرعددی است. پس از ارسال پاسخ، خروجی شما **سطربهسطر با پاسخ اصلی مقایسه میشود** و بر اساس **تعداد سطرهای صحیح** در نتایج، **امتیاز نهایی** شما محاسبه خواهد شد.
همچنین لازم است فایل **notebook.ipynb** (نوتبوک سؤال) را در پاسخ نهایی خود قرار دهید.
در صورت عدم وجود این فایل در پاسخ شما، **امتیاز صفر (۰)** برای آن سؤال در نظر گرفته خواهد شد.
<details class="red">
<summary>
**هشدار استفاده از مدلهای آماده و مولد**
</summary>
در این بخش از مسابقه، **بههیچوجه مجاز به استفاده از مدلهای آماده یا مدلهای مولد** (چه بهصورت **API** و چه بهصورت **Local**) برای تولید یا ثبت پاسخ نیستید.
بدیهی است در صورت احراز استفاده از هر یک از این مدلها در فرآیند حل یا ارائهی پاسخ در نوتبوک ثبتی شما، **هیچ نمرهای برای این بخش به شرکتکننده تعلق نخواهد گرفت**.
</details>
-----------------------------------------------------
## نحوهی ارسال پاسخ
در نهایت پس از اتمام هر دو بخش مسابقه، در یک پوشه به نام `result` نتایج را قرار دهید و بصورت `zip` در کوئرا ارسال کنید. فایل پاسخ شما باید شامل موارد زیر باشد:
```php
notebook.ipynb
table1.csv
table2.csv
table3.csv
table4.csv
table5.csv
table6.csv
table7.csv
table8.csv
```
| فایل اولیهی پروژه را میتوانید از [این لینک](/contest/assignments/98479/download_problem_initial_project/330488/) دانلود کنید.|
| :--: |
در این بخش از مسابقه، وارد دنیای **دادههای فیلمها** میشویم؛ جایی که پشت هر صحنهی سینمایی، حجم عظیمی از **اعداد، متنها و الگوهای پنهان** قرار دارد.
در اختیار شما یک **مجموعهدادهی بزرگ و متنوع** شامل اطلاعات متنی و عددی فیلمها قرار میگیرد و وظیفهی شما این است که با تحلیل هوشمندانهی این دادهها، به روشهای مختلف **اطلاعات معنادار و ارزشمند** دربارهی فیلمها استخراج کنید.
در این مسیر، مثل **Neo در Matrix**، باید فراتر از آنچه دیده میشود فکر کنید؛ الگوها را بشناسید، روابط پنهان را کشف کنید و از دل دادهها به بینش برسید. در ادامه، با ابزارها، ایدهها و چالشهای این دنیا بیشتر آشنا خواهید شد.

------------------------------
## معیار ارزیابی
در این سوال شما با چالشهای متفاوت و دادههایی با انواع مختلف روبرو میشوید. شما وظیفه دارید تا به عنوان پاسخ جدولهای مختلفی را بوجود آورید.
برای ارزیابی مدل شما از معیار `Accuracy` استفاده میشود. برای نمرهگیری در این سوال مدل شما باید دارای `Accuracy` حداقل ۰.۵ باشد و در این حالت نمرهی نهایی بر اساس فرمول زیر محاسبه میگردد:
$$round(Accuarcy, 3) \times 100$$
همچنین برای بخش دیگری از این سوال مسابقه، از معیار `R2 Score` استفاده میشود. برای نمرهگیری در این سوال مدل شما باید دارای `R2 Score` حداقل ۰.۵ باشد و در این حالت نمرهی نهایی بر اساس فرمول زیر محاسبه میگردد:
$$round(r2score, 3) \times 100$$
اگر مدل شما به حدنصاب نرسد، نمرهی دریافتی **صفر** خواهد بود.
همچنین لازم است فایل **notebook.ipynb** (نوتبوک سؤال) را در پاسخ نهایی خود قرار دهید.
در صورت عدم وجود این فایل در پاسخ شما، **امتیاز صفر (۰)** برای آن سؤال در نظر گرفته خواهد شد.
<details class="red">
<summary>
**هشدار استفاده از مدلهای آماده و مولد**
</summary>
در این بخش از مسابقه، **بههیچوجه مجاز به استفاده از مدلهای آماده یا مدلهای مولد** (چه بهصورت **API** و چه بهصورت **Local**) برای تولید پاسخ نیستید.
بدیهی است در صورت احراز استفاده از هر یک از این مدلها در فرآیند حل یا ارائهی پاسخ در نوتبوک ثبتی شما، **هیچ نمرهای برای این بخش به شرکتکننده تعلق نخواهد گرفت**.
</details>
------------------------------
## نحوهی ارسال پاسخ
در نهایت پس از حل سوالات مسابقه، فایلهای زیر را در یک پوشه به نام `result` قرار دهید و بصورت `zip` در کوئرا ارسال کنید. فایل پاسخ شما باید شامل موارد زیر باشد:
```php
notebook.ipynb
weighted_score.csv
toy_story.csv
avengers.csv
titanic.csv
```
<details class="red">
<summary>
**هشدار مهم**
</summary>
توجه داشته باشید که پیش از اجرای سلول جوابساز، تغییرات اعمال شده در نوتبوک را با استفاده از کلید میانبر `ctrl+s` ذخیره کرده باشید در غیر این صورت، در پایان مسابقه **نمره** شما به **صفر** تغییر خواهد کرد.
همچنین اگر از کولب برای اجرای این فایل نوتبوک استفاده میکنید، قبل از ارسال فایل `result.zip`، آخرین نسخهی نوتبوک خود را دانلود کرده و داخل فایل ارسالی قرار دهید.
</details>
| فایل اولیهی پروژه را میتوانید از [این لینک](/contest/assignments/98479/download_problem_initial_project/330489/) دانلود کنید.|
| :--: |
**کیانوش استقرار زاده** بالاخره کار خودش را کرد! او توانست با کلی مکافات، سیستم بانکداری برره را به اینترنت جهانی وصل کند تا اهالی روستا بتوانند به جای چال کردن خمرههای سکه، در بازار فارکس (که در برره به آن **“فارکسدَر”** میگویند) ترید کنند.
اما صلح و صفا دوام زیادی نداشت! **شیرفرهاد** (نماینده پایین برره) ادعا کرده که الگوی حرکت نمودارها دقیقاً شبیه الگوی چریدن ببعیهایش است و او استاد تحلیل تکنیکال ببعی است. از طرف دیگر، **لیلون** (نماینده بالا برره) معتقد است که نوسانات بازار به زاویه تابش خورشید بر مزارع نخود بستگی دارد و علم نزد آنهاست. کار به دعوا کشید و **سالارخان** و **سردارخان** تصمیم گرفتند یک شرطبندی بزرگ برگزار کنند تا یکبار برای همیشه معلوم شود کت تن کیست! قانون مسابقه این است:
هر دو تیم به دادههای تاریخی دسترسی دارند، اما باید پیشبینی خود را برای **۹۶ ساعت آینده** (۴ روز) همین الان داخل پاکت بگذارند و تحویل **داوود برره** بدهند. در این ۴ روز، هیچکس حق ندارد دست به سیستم بزند یا زیرآبی برود. هر تیمی که بتواند جهت بازار را در این ۴ روز تاریک بهتر حدس بزند، صاحب تمام نخودهای تیم بازنده میشود.
شما به عنوان مشاور مخفی، وظیفه دارید آبروی تیم خود را بخرید. اگر اشتباه کنید، اهالی پایین برره شما را به عنوان نخود پوک از ده بیرون میکنند! آیا میتوانید آبروی کیانوش را بخرید و نگذارید پایین برره سقوط کند؟ **ووی!**

شما باید مدلی بسازید که با یادگیری از گذشته، بگوید در **۹۶ کندلِ آینده** (که دیتای آن موجود نیست)، قیمت در پایان هر کندل نسبت به کندل فعلی **افزایش** مییابد یا **کاهش**؟
در واقع تنها دادهای که دارید، فایل `barareh_train.csv` است که حاوی تاریخچه قیمتها تا قبل از قطعی کابل است. شما باید از این دادهها برای آموزش مدل خود استفاده کنید تا بتوانید صعودی یا نزولی بودن هر 96 کندل بعد نسبت به کندل قبل خودشان را پیشبینی کنید.
### **قوانین و فرمت ارسال**
شما باید یک فایل خروجی به نام `submission.csv` تولید کنید که بجز سطر مربوط به نام ستونها، دقیقاً **۹۶ ردیف** داشته باشد. این فایل باید شامل ستونهای زیر باشد:
1. `timestamp`: زمان. زمان مربوط به هر کندل که باید از ساعت 0 روز 19 دسامبر شروع شده و تا ساعت **23** ادامه داشته باشد.
2. `direction`: پیشبینی شما.
+ عدد **`1`**: اگر پیشبینی میکنید قیمت `Close` این کندل نسبت به کندل قبلی **بیشتر** خواهد بود (صعودی).
+ عدد **`0`**: اگر پیشبینی میکنید قیمت **کمتر یا مساوی** خواهد بود (نزولی/رنج).
### **نحوه ارزیابی**
معیار ارزیابی مورد استفاده برای این سوال، **F1-Score** است. اما در برره کسی با شیر یا خط انداختن جایزه نمیگیرد! اگر **F1-Score** مدل شما کمتر از **50% (0.5)** باشد، یعنی مدل شما از شانس بدتر (یا برابر شانس) عمل کرده است. در این صورت نمره شما **صفر** خواهد شد.
**ها ای مدلِ پیشبینی که ونیویسی، اگه کمتر از ۵۰ درصد درست در بیاد، میدم نظامدوبرره چنان تو رو بزنه که نفهمی از بالا برره خوردی یا پایین برره! ووی!**
| فایل اولیهی پروژه را میتوانید از [لینک](https://drive.google.com/drive/folders/1Gvbm4PFVncRm3b2RBkGscrSFM8U6CfZA?usp=sharing) دانلود کنید.|
| :--: |
«اسم منو صدا نمیزنن…
نه چون اسم ندارم،
چون مهم نیست کی هستم؛ مهم اینه _چی میبینم_.»
— _بلاندی (مرد بینام)_
سالها پیش، در غرب وحشی، من با یک نگاه میفهمیدم طرف مقابلم **خوبه، بده یا زشته**.
نه با حرف، نه با سابقه، فقط با نگاه به صورتش.
حالا بعد از اینهمه دوئل و گرد و خاک، یک سؤال پیش اومده:
**اگه بهجای من، یک مدل بینایی کامپیوتر پشت این نگاه باشه چی؟**
در فیلم «خوب، بد، زشت»، مرد بینام با یک نگاه، پیش از هر کلامی، ماهیت افراد روبهرویش را تشخیص میداد؛ قضاوتی سریع بر پایهی نشانههای ظاهری. در این سؤال، این نگاه شهودی جای خود را به یک مدل بینایی کامپیوتر میدهد که باید تنها بر اساس تصاویر چهرهی افراد، ویژگیهایی مانند **سن، جنسیت و مشخصههای جمعیتشناختی** را پیشبینی کند. همانطور که در دوئلهای سینمایی، دقت و زمانبندی تعیینکنندهاند، در این چالش نیز کیفیت استخراج ویژگیها و قدرت مدلسازی، مرز میان پیشبینیهای «خوب»، «بد» و «زشت» را مشخص خواهد کرد.

----------------------------
## مجموعهداده
در مجموع، این مجموعهداده شامل **۹۷٬۶۹۸ تصویر** با ابعاد **۲۲۴×۲۲۴ پیکسل** است. از این تعداد:
+ **۸۶۷۴۴ تصویر** در بخش آموزش قرار دارند.
+ **۱۰۹۵۴ تصویر** در بخش آزمایش استفاده میشوند.
این مجموعهداده شامل تصاویر چهرهی افراد مختلف است که هر تصویر بهعنوان یک نمونهی مستقل در نظر گرفته شده و از طریق ستون `file` به فایل تصویر مربوطه ارجاع داده میشود. برای هر تصویر، چند برچسب توصیفی ارائه شده است:
+ **برچسب `gender`**: جنسیت فرد را در دو کلاس «Male» و «Female» مشخص میکند،
+ **برچسب `race`**: گروه جمعیتشناختی فرد را در قالب چند کلاس از پیش تعریفشده مانند East Asian، Southeast Asian، White، Black و Latino_Hispanic نشان میدهد.
هدف شما، طراحی مدلهایی است که تنها بر اساس تصویر چهره، بتواند برچسبهای جنسیت و نژاد را بهدرستی پیشبینی کند.
--------------------------------
## معیار ارزیابی
برای ارزیابی مدل شما از معیار `F1 Score` استفاده میشود. برای نمرهگیری در این سوال مدل شما باید دارای `F1 Score` حداقل ۰.۷ باشد و در این حالت نمرهی نهایی بر اساس فرمول زیر محاسبه میگردد:
$$round(f1 score, 3) \times 100$$
اگر مدل شما به حدنصاب نرسد، نمرهی دریافتی **صفر** خواهد بود.
همچنین لازم است فایل **notebook.ipynb** (نوتبوک سؤال) را در پاسخ نهایی خود قرار دهید.
در صورت عدم وجود این فایل در پاسخ شما، **امتیاز صفر (۰)** برای آن سؤال در نظر گرفته خواهد شد.
<details class="red">
<summary>
**توجه**
</summary>
در طول مسابقه امتیازی که مشاهده میکنید، فقط نتیجهی ارزیابی مدل شما روی ۳۰ درصد از دادههای آزمون است. بعد از پایان زمان مسابقه، **امتیاز نهایی** شما روی ۷۰ درصد مابقی محاسبه میشود.
این کار به منظور جلوگیری از بیشبرازش (`overfitting`) و حفظ عمومیت مدل انجام میشود تا مطمئن شویم مدلهایی که دچار بیشبرازش شدهاند، در امتیازدهی نهایی، افت میکنند.
</details>
<details class="red">
<summary>
**هشدار استفاده از مدلهای آماده و مولد**
</summary>
در این بخش از مسابقه، **بههیچوجه مجاز به استفاده از مدلهای آماده یا مدلهای مولد** (چه بهصورت **API** و چه بهصورت **Local**) برای تولید پاسخ نیستید.
بدیهی است در صورت احراز استفاده از هر یک از این مدلها در فرآیند حل یا ارائهی پاسخ در نوتبوک ثبتی شما، **هیچ نمرهای برای این بخش به شرکتکننده تعلق نخواهد گرفت**.
</details>
------------
## نحوهی ارسال پاسخ
وظیفه شما این است که یک **مدل مبتنی بر یادگیری عمیق** طراحی و آموزش دهید که بتواند تشخیص دهد هر تصویر متعلق به کدام دسته است.
توجه داشته باشید که **استفاده از هیچ مدل از پیشآموزشدیدهای مجاز نیست**. در صورتی که در نوتبوک شما استفاده از یک مدل از پیشآموزشدیده مشاهده شود، این عمل **به عنوان تخلف** تلقی خواهد شد.
تصاویر در دو پوشه **train** و **test** قرار دارند. در پوشه آموزش یک فایل به نام **train.csv** قرار دارد که در این فایل برچسب هر تصویر مشخص شده است. در پوشه آزمایش نیز یک فایل به نام **test.csv** وجود دارد اما برچسبهای نمونههای تست مشخص نیستند و شما وظیفه دارید آنها را پیشبینی کنید.
وظیفه شما این است که با استفاده از دادههای آموزش، مدلی بسازید که بتواند دسته هر تصویر که در مجموعه آزمایش قرار دارد را پیشبینی کند. خروجی نهایی شما باید یک فایل با نام **submission.csv** باشد. این فایل باید قالبی داشته باشد که **ترتیب سطرهای فایل خروجی باید دقیقاً مطابق با ترتیب نام تصاویر در فایل test.csv** باشد. نمونهای از فایل خروجی نهایی به شرح زیر است:
|file|gender|race|
|------|---|------|
|1.jpg|Male|White|
|2.jpg|Male|Indian|
برای پاسخ به این سوال ابتدا فایل نوتبوک قرار گرفته در فایل اولیه را باز کنید و سپس مراحل را مطابق آنچه که از شما خواسته شده انجام دهید. در نهایت، پس از اجرای سلول جوابساز (آخرین سلول فایل نوتبوک) فایل `result.zip` ساخته شده را ارسال نمایید.
<details class="red">
<summary>
**هشدار مهم**
</summary>
توجه داشته باشید که پیش از اجرای سلول جوابساز، تغییرات اعمال شده در نوتبوک را با استفاده از کلید میانبر `ctrl+s` ذخیره کرده باشید در غیر این صورت، در پایان مسابقه **نمره** شما به **صفر** تغییر خواهد کرد.
همچنین اگر از کولب برای اجرای این فایل نوتبوک استفاده میکنید، قبل از ارسال فایل `result.zip`، آخرین نسخهی نوتبوک خود را دانلود کرده و داخل فایل ارسالی قرار دهید.
</details>
| فایل اولیهی پروژه را میتوانید از [این لینک](/contest/assignments/98479/download_problem_initial_project/330491/) دانلود کنید.|
| :--: |
رایلی دیگر آن دختربچه کوچک نیست! او حالا یک جوان ۲۳ ساله است که در دنیای پیچیده و پرهیاهوی شبکههای اجتماعی زندگی میکند. مرکز فرماندهی ذهن او با بحرانی بیسابقه روبرو شده است.
هزاران پیام، توییت و کامنت از دنیای بیرون (توییتر، اینستاگرام و ...) به سمت مرکز سرازیر شدهاند. سیستم قدیمی دستهبندی خاطرات که مسئولیتش با **Joy (شادی)** و **Sadness (غم)** بود، زیر بار این حجم از دادههای پیچیده و متناقض از کار افتاده است.
بدتر از همه اینکه **سیستمهای مدرن و گرانقیمت "تغییرشکلدهنده" (Transformers/BERT)** به دلیل مصرف انرژی بیش از حد و تحریمهای بخش فنی، **خاموش شدهاند!**
ما اکنون به روشهای کلاسیک اما قدرتمند مهندسی اعصاب نیاز داریم. شما به عنوان **مهندس ارشد بخش حافظه بلندمدت** استخدام شدهاید. وظیفه شما این است که سیستمی طراحی کنید که بتواند گویهای خاطرات (متون) را بخواند و آنها را به درستی در ۷ جزیره شخصیتی رایلی دستهبندی کند.
آیا میتوانید بدون کمک گرفتن از رباتهای غولپیکر (مدلهای زبانی بزرگ)، نظم را به ذهن رایلی برگردانید؟

----------
شما یک دیتاست شامل نظرات و متون فارسی از شبکههای اجتماعی دریافت میکنید. هدف مدل شما تشخیص دقیق احساس نهفته در هر متن است. این یک مسئله **Classification** با ۷ کلاس مختلف است.
خروجی مدل شما باید دقیقاً یکی از موارد زیر باشد:
%align_right_start%
1. **ANGRY** (خشم 😡)
2. **FEAR** (ترس 😨)
3. **HAPPY** (شادی 😄)
4. **HATE** (تنفّر/انزجار 🤮)
5. **SAD** (غم 😢)
6. **SURPRISE** (تعجب/شگفتی 😲)
7. **OTHER** (سایر/خنثی 😐)
%align_end%
برای اینکه مهارت واقعی شما در درک معماری شبکههای عصبی سنجیده شود، قوانین سختگیرانهای برای این سوال وضع شده است. استفاده از هرگونه مدل مبتنی بر ترنسفورمر (*Transformer-based*) ممنوع است. مدل هایی مثل BERT, ParsBERT, RoBERTa, ALBERT, GPT, XLNet و ... ممنوع است. اما استفاده از *Embeddingهای* از پیش آموزشدیده **استاتیک** موردی ندارد.
### **معیار ارزیابی**
از آنجا که احساسات در دنیای واقعی به یک اندازه توزیع نشدهاند (دیتاست نامتوازن است)، معیار داوری **F1-Score با میانگینگیری Macro** است.
$$\text{Macro F1} = \frac{\sum_{i=1}^{n} F1_i}{n}$$
+ این یعنی عملکرد مدل شما روی کلاسهای کمتعداد (مثل ترس و تنفر) به اندازه کلاسهای پرتعداد (مثل سایر) اهمیت دارد.
+ **حد نصاب:** اگر امتیاز F1-Macro مدل شما کمتر از **0.20** باشد، یعنی سیستم شما قادر به تفکیک احساسات نیست و نمره **0** دریافت خواهید کرد.
### **فرمت ارسال**
شما باید یک فایل با فرمت `.csv` ارسال کنید که شامل هدر باشد و دقیقاً دو ستون داشته باشد:
1. `ID`: شناسه منحصربهفرد متن (که در فایل تست داده شده است).
2. `label`: پیشبینی مدل شما (با حروف بزرگ انگلیسی).
**نمونه فایل ارسالی صحیح:**
```
ID,label
1000,HAPPY
1001,OTHER
1002,ANGRY
1003,HATE
...
```
**نکات فنی:**
+ تعداد سطرهای فایل ارسالی باید دقیقاً برابر با تعداد سطرهای فایل تست باشد.
+ ارسال فایل `notebook.ipynb` که کد مدل و مراحل آموزش در آن مشخص باشد، **الزامی** است. داوران کد شما را چک میکنند و در صورت استفاده از مدلهای ممنوعه، امتیاز صفر لحاظ میشود.