+ محدودیت زمان: ندارد
+ محدودیت حافظه: ندارد
محمد، دیتا ساینتیست استارت آپی به نام **الک دولک** است. این شرکت قصد دارد ابزاری را در اختیار سایر شرکت ها قرار دهد تا بتوانند افراد جویای کار را در هر حوزه شغلی ارزیابی (الک) بکنند. حال از محمد خواسته شده تا مدلی برای ارزیابی دیتا ساینتیست ها طراحی بکند. این مدل برای هر دیتا ساینتیست یک بردار دارای ده ویژگی عددی بین ۰ تا بیست را اندازهگیری می کند و یک تخمین به عنوان خروجی بازمیگرداند که تخمینی از **شاخص خفنی** آن دیتا ساینتیست است. حال محمد ویژگی ها و شاخص خفنی مربوط به هزار دیتا ساینتیست را در اختیار دارد و با کمی بررسی متوجه شده است که می تواند با استفاده از رگرسیون خطی، مدلی مناسب برای تخمین شاخص خفنی طراحی نماید. او بردارهای همه دیتاساینتیستها را کنار هم قرار داده است تا یک ماتریس $1000\times10$ به نام $X$ تشکیل شود، و شاخص های خفنی را نیز به همین شکل پشت هم قرار داده است تا یک بردار با اندازه $1000$ به نام $Y$ تشکیل شود. محمد میداند که برای حل رگرسیون خطی باید بردار $W$ با اندازه $10$ را بیابد به طوری که:$$Y = X\times W$$
او همچنین میداند که برای محاسبه $W$ میتواند از رابطه زیر استفاده بکند (دقت کنید که همه ضرب ها ضرب ماتریسی هستند و $X^T$ ترانهاده ماتریس $X$ است.):
$$W = {({X^T}X})^{-1}X^TY$$
حال که سر محمد بسیار شلوغ است، به او کمک بکنید و مقدار $W$ را بیابید. به عنوان ورودی فایل **train.csv** در اختیار شما قرار گرفته میشود که دارای هزار ردیف و یازده ستون است. (داده های مربوط به این سوال را می توانید [اینجا](https://quera.ir/assignment/21631/download_problem_initial_project/78349/?noconvert=true) دریافت کنید). هر ردیف مربوط به یک دیتا ساینتیست، ستون های اول تا دهم مربوط به یک ویژگی و ستون یازدهم مربوط به شاخص خفنی میباشد. در پاسخ **فقط** فایل خروجی خود را با نام **output.txt** برای ما ارسال کنید که در آن عدد نوشته شده در خط $i$ ام برابر با $W_i$ است. نمونهای از پاسخ ارسال شده را میتوانید در زیر مشاهده نمایید.
```
0.011546
0.351223
0.032101
0.043211
0.052152
0.065645
0.073453
0.084232
0.092342
0.123444
```
شرکت الک دولک
+ محدودیت زمان: ندارد
+ محدودیت حافظه: ندارد
دیتای مربوط به سوال را از [اینجا](https://quera.ir/assignment/21631/download_problem_initial_project/78350/?noconvert=true) دانلود کنید.
در این سوال قصد داریم تا مجموعه دادگان مربوط به **معروفترین فیلمهای جهان** را بررسی کنیم. در این مجموعه دادگان اطلاعات متنوعی از فیلمها مانند بودجه(budget)، درآمد(revenue)، بازیگران(cast)، شرکتهای سازنده(production companies) و ژانر(genres) وجود دارد. از آنجا که دوست داریم اطلاعات سینمایی خودمان را افزایش دهیم، چند سوال راجع به این دادهها در ادامه پرسیده شده و شما باید کمک کنید تا جواب این سوالات را از دیتاست پیدا کنیم. برای ارسال پاسخ ، جواب هر سوال را مشابه مثال، در یک سطر از فایل text بنویسید. در نهایت یک فایل text چهار خطی با نام **output.txt** برای ما اپلود کنید. ***در صورتی که جواب سوالی را نمیدانید در سطر مربوطه ۱- وارد کنید.***
**۱)** سه ژانری که بیشترین تعداد فیلم در آن ساخته شده است را در نظر بگیرید. در مجموع چند
فیلم مختلف در این سه ژانر ساخته شده است؟(دقت کنید بعضی از فیلمها میتوانند چند ژانر داشته باشند.)
*پاسخ سوال را در سطر اول فایل و به صورت عدد و به زبان انگلیسی بنویسید.*
**۲)**شناخت شرکتهای فیلمسازی ودرآمدهای انها در صنعت فیلمسازی بسیار مهم است. شرکتهای فیلمسازی را به ترتیب نزولی بر اساس تعداد فیلم ساخته شده مرتب کنید. پنجمین شرکت در این لیست چه درآمدی از فروش فیلم هایش کسب کرده است؟(در صورتی که شرکت همکاری وجود داشته باشد درآمد فیلم به طور مساوی بین آنها تقسیم میشود) تنها قسمت صحیح جواب را در نظر بگیرید و قسمت اعشار را حذف کنید.
```
737490204
```
*پاسخ سوال را در سطر دوم فایل و به صورت عدد و به زبان انگلیسی بنویسید.*
**۳)**لیست بازیگران را به صورت نزولی و بر اساس تعداد فیلمی که بازی کردهاند مرتب کنید.
درصورتی که دو بازیگر تعداد فیلم یکسانی داشتند آنها را بر اساس حروف الفبا مرتب کنید. اولین بازیگر در این لیست با کدام شرکت فیلمسازی بیشترین مشارکت را داشته و این مشارکت در چند فیلم بوده است؟ پاسخ خود را به صورت مثال زیر در سطر سوم فایل بنویسید.
```
'company name', 6
```
**۴)**بازیگرانی که باهم بیش از شش فیلم(حداقل هفت) بازی کردهاند را زوج هنری میدانند. زوجهای هنری که در این لیست وجود داردند را بیابید و محاسبه کنید هر زوج چند فیلم مشترک
دارند. مجموع فیلمهای مشترک همهی زوجهای هنری موجود چه قدر است؟مثلا اگر زوج x, y ده فیلم و زوج e,x هفت فیلم مشترک و زوج r,t هشت فیلم مشترک داشته باشند پاسخ نهایی ۷+۸+۱۰ یعنی ۲۵ خواهد بود.
*پاسخ سوال را در سطر چهارم فایل و به صورت عدد و به زبان انگلیسی بنویسید.*
هر سوال ۳۵ امتیاز دارد. فراموش نکنید اگر جواب سوالی را نمیدانید در سطر مربوطه ۱- وارد کنید. پاسخها به ترتیب بررسی میشود.
فعالیت فرهنگی
محمد تصمیم گرفته است تا در کنار کار خود در شرکت الک دولک، در اوقات فراغت خود به تحلیل بازار بورس جهانی بپردازد. محمد از تاثیر رخدادهای مهم جهانی بر روی بازار بورس به خوبی مطلع است و به همین علت، مجموعه دادهای را در راستای تحلیل بورس آماده کرده است. در این مجموعه داده هر سطر مربوط به یک روز است که در آن ۲۵ سرفصل خبری مهم مربوط آن روز را از خبرگزاریهای مطرح استخراج کرده است. همچنین یک ستون به نام Label وجود دارد که مشخص می کند شاخص کل بورس در آن روز صعودی بوده یا نزولی. شرح دقیق ستونهای این مجموعه داده در جدول زیر آمده است.
|توضیح|ستون|
|--- |--- |
|وضعیت شاخص کلی بورس در آن روز. $0$ یعنی شاخص نزولی و $1$ یعنی شاخص صعودی بوده است| $Label$ |
| تاریخ به میلادی | $Date$ |
| یک تیتر خبری مهم مربوط به آن روز| $Top_{i} \;\;\;\;\;\; 0 \lt i \lt26$ |
حالا سر محمد بسیار شلوغ است و از شما که دیتا ساینتیست خبرهای هستید میخواهد تا مدلی جهت پیش بینی صعودی یا نزولی بودن شاخص کل بورس ارائه دهید. با استفاده از دادههای موجود در فایل **train.csv** مدل خود را آموزش دهید.یک فایل **test.csv** نیز قرار داده شده است که ورودیهای تست شما میباشد. در پاسخ خود فایلی با نام **output.csv** بارگذاری نمایید. این فایل باید فقط یک ستون داشته باشد که سطر $i$ ام آن مربوط به پیشبینی شما برای سطر $i$ ام از داده تست میباشد. داده های مربوط به سوال را می توانید از [اینجا](https://quera.ir/assignment/21631/download_problem_initial_project/78351/?noconvert=true) دریافت کنید. برای ارزیابی پاسخ شما از معیار F1 استفاده خواهد شد. این معیار به صورت زیر تعریف میشود:
$$F_1 = 2 \times \frac{precision \times recall}{precision + recall}$$
تحلیل بورسی
پلیس شهر هردمبیل با افزایش آمار جرم و جنایت در شهرهای تابعه مواجه شده است و به همین خاطر دست به دامان تکنولوژی روز برای بهبود عملکرد خود شدهاند. این واحد مجموعه دادههایی آماده کرده است که ستونهای آن به صورت زیر است:
| توضیح | ستون|
|--- |--- |
|این ستون موقعیت جغرافیای مکان تخلف را نشان میدهد| longitude/Latitude |
| زمان گزارش تخلف | Report time |
| توضیح اجمالی راجع به تخلف| Descript |
| واحد پلیسی که تخلف را پیگیری کرده است | police department |
| وضعیت جرم | resolved option |
| آدرس محل وقوع جرم | Address |
| تعداد واحدهای گشت که به محل اعزام شدهاند | number of units |
| زمان ثبت سیستمی جرم | register time|
این دادهها را میتوانیداز [اینجا](https://quera.ir/assignment/21631/download_problem_initial_project/78352/?noconvert=true) دانلود کنید.
رئیس پلیس به کمک نیروهای خود ستونی به نام target را ساختهاند که در آن هر جرم لیبل مخصوصی دارد و جرمها به دستههای مختلفی تقسیم شده اند. رئیس پلیس قصد دارد با استفاده از هوش مصنوعی و به کمک تکنولوژی وطنی سیستم لیبل خودکار برای دادههای دیگر درست کند. در این سوال فایل train شامل ستون target و فایل test بدون این ستون در اختیار شما قرار دارد. برای دادههای تست احتمال آنکه هر سطر متعلق به کدام کلاس است را ذکر کنید. نمونه فایل output.csv برای اپلود در اختیار شما قرار گرفته است. کافی است در ذیل هر ستون احتمال مربوط به آن را بنویسید. ترتیب ستونهای ارسالی باید عینا مانند فایل outputباشد.**در نهایت فایل output.csv را با zip کرده و با نام output.zip ارسال کنید.**
برای این سوال از تابع cross-entropy loss یا log loss استفاده میشود که در حالت دو کلاسه به شکل زیر تعریف می شود :
$$loss = y_t * log(y_p) + (1 - y_t) * log(1 - y_p) $$
$$ y_t = true\, label , y_p = prediction \, probability$$
برای جلوگیری از خطای محاسبه مقادیر صفر و یک را با 10e-5 و 1 - 10e-5 جایگزین میکنیم. امتیاز نهایی شما نیز از تابع زیر محاسبه میشود:
$$score = e^{(-0.9* ((2*loss)^{0.5}))} * 200$$
بنابراین هر چه loss پایینتری کسب کنید امتیاز شما بالاتر خواهد بود.
+دادههای خروجی شما یک بار نرمالایز خواهد شد. بنابراین نیازی نیست حتما به فرمت احتمالاتی خروجی ایجاد کنید.
+ترتیب ستونها باید مشابه ترتیب ستونها در فایل output باشد. پیشنهاد میشود از همان فایل استفاده کنید.
+طبیعتا این سوال رقابتی است و برای اینکه به امتیاز کامل برسید نیاز است تا loss برابر صفر داشته باشید!!!
پلیس شهر هردمبیل
+ محدودیت زمان: ندارد
+ محدودیت حافظه: ندارد
سام از بچگی علاقه خاصی به چراغ نخواب داشت. به همین دلیل چند ماه پیش ایده خود را برای شروع کسب و کاری جذاب (فروش چراغ نخواب) با دوستان خود مطرح کرد و امکانات محصول اولیه را نیز در یک گفتگوی تصویری با آب و تاب تمام ارائه کرد. هرچند نتواست آن ها را جذب این محصول زیبا کند! سام انسان با پشتکاریست برای همین او شخصاً کار های اولیه را انجام داد و توانست این محصول را ارائه کند. یک از مشکلاتی که او در کسب و کار خود با آن مواجه است، میزان فروش چراغ نخواب ها در هر روز است؛ چراکه میخواهد میزان خرید مواد اولیه لازم را معین کند. اما از آنجا که دست تنهاست از شما میخواهد که در حل این مسئله به او کمک کنید و میزان فروش روزانه در یک ماه آتی را تخمین بزنید. او در ذخیره سازی اطلاعات تنبلی کرده و در این چند ماه فقط آمار فروش خود را ثبت کرده است و فایل آن را در اختیار شما قرار میدهد.
# دیتاست
شامل یک فایل
`train.csv` در قالب زیر است. که میتوانید از [اینجا](https://quera.ir/assignment/21631/download_problem_initial_project/78353/?noconvert=true) دریافت کنید.
| فروش | تاریخ |
|:---------------:|:----------------:|
| 394 | 1399-05-31 |
| 415 | 1399-06-01 |
| ... | ... |
| 370 | 1399-09-21 |
# تابع امتیاز
در ارزیابی مدل شما از معیار میانگین مطلق درصد خطای متقارن یا Symmetric mean absolute percentage error که به اختصار smape گفته میشود، کمک گرفته خواهد شد.
$$ \frac{100}{n} \sum_{i=1}^n \frac{ | F_t - A_t | }{ (|A_t | + |F_t |) / 2}$$
که $F_t$ مقدار پیشبینی، $A_t$ مقدار درست و $n$ تعداد نمونه های مورد ارزیابی هستند.
تابع امتیاز به این شکل محاسبه میشود:
$$Score =\begin{cases} 0 &\text{ ,}\,\, smape > 17\\
\\ (\frac{17 - smape}{17 })^{0.35} \times 200 &\text{ , }\,\, smape \leq 17 \end{cases}
$$
# خروجی
شما باید فایل CSV با نام
`output.csv`
(در فایل دیتاست موجود است)
که هر سطر آن تخمین شما برای فروش در آن روز (در بازه ۲۲ آذر تا ۲۱ دی ماه ) است را ارسال کنید.
| فروش | تاریخ |
|:------------:|:----------------:|
| ? | 1399-09-22 |
| ? | ... |
| ? | 1399-10-21 |
چراغ نخواب
به منظور جلوگیری از هر گونه تقلب و شبهه احتمالی که منجر به ضایع شدن حق شما شود، لطفا فایل کد همه سوالات پاسخ داده شده خود را در قالب یک فایل زیپ در اینجا بارگزاری نمایید.
نحوه آپلود باید به این گونه باشد که برای هر سوال که جواب دادید، یک پوشه به نام آن سوال (مانند `problem1`) و تمامی کدهای خود را در آن آپلود کنید.
# توجه: نیازی به ارسال دیتاست ها نیست!
با تشکر فراوان