**فرض کنید** که در راه رسیدن به مسابقات جهانی فوتبال، [کاپیتان سوباسا](https://fa.wikipedia.org/wiki/%DA%A9%D8%A7%D9%BE%DB%8C%D8%AA%D8%A7%D9%86_%D8%B3%D9%88%D8%A8%D8%A7%D8%B3%D8%A7) تصمیم به استفاده از تحلیل داده برای ارتقای سطح فنی تیم خود گرفته است و به همین منظور **شما** به عنوان دانشمند داده تیم جذب شدهاید.
![کاپیتانسوباسا](https://bayanbox.ir/view/76055921241997816/Subasa.jpg)
در هفته اول کاری خود، شما از تعدادی *کارآموز* درخواست میکنید که فیلم تمامی بازیهای فصل قبل لیگ را مشاهده کنند و اطلاعات مرتبط با شوتها در هر بازی را به صورت دستی ثبت کنند. خروجی کار در قالب `csv`، تحویل شما شده است.
این مسابقه دارای ۴ سوال میباشد و شما میتوانید دادگان این مسابقه (یکسان برای تمامی سوالها به جز سوال *نیمکت*) را از [این لینک](/contest/assignments/28792/download_problem_initial_project/95183/) دریافت کنید.
# دادگان
هر ردیف دادگان آموزش `train.csv`، یک رویداد شوت و مشخصات آن، طبق جدول زیر میباشد:
| نام ستون | توضیح ستون |
|:------------------:|:------------------:|
|matchId|شناسه بازی|
|playerId|شناسه بازیکن شوتزننده|
|playType|موقعیت بازی که در آن ضربه زده شد (جریان بازی، پنالتی، ضربه آزاد مستقیم، مستقیم از کرنر)|
|bodyPart|بخشی از بدن که با آن شوت زده شدهاست (پای چپ، پای راست، سَر، سایر)|
|x|موقعیت شوت در زمین به متر (مختصات `x`)|
|y|موقعیت شوت در زمین به متر (مختصات `y`)|
|interveningOpponents|تعداد بازیکنان حریف که در لحظه شوتزدن مانع دید شوتزننده به دروازه شده بودند|
|interveningTeammates|تعداد همتیمیهایی که در لحظه شوت زدن مانع دید شوتزننده به دروازه شده بودند|
|interferenceOnShooter| میزان دخالت مستقیم تیم مدافع بر روی شوتزننده (کم - هیچ بازیکن تیم حریف در یک متری شوتزننده نیست، متوسط - یک بازیکن حریف در ۱متری شوتزننده قرار دارد، زیاد - بیشتر از یک بازیکن حریف در ۱متری شوتزننده قرار دارند)|
|minute|دقیقه زدن شوت|
|second|ثانیه زدن شوت|
|outcome|نتیجه شوت (برخورد به دفاع، موقعیت از دست رفته، برخورد به تیردروازه، مهار توسط دروازهبان، گُل، گُل بهخودی)|
مبدا مختصات (۰,۰) مرکز دروازهی تحت شوت میباشد و مختصات (x,y)، فاصله طولی (x) و عرضی (y) محل زدن شوت تا مبدا مختصات را به متر تعیین میکند، به عنوان مثال، موقعیت پنالتی در مختصات (۱۱,۰) میباشد.
برای آشنایی بیشتر با زمین فوتبال و ابعاد قسمتهای مختلف آن، شما به عکس زیر از [ویکیپدیای فارسی](https://fa.wikipedia.org/wiki/%D8%B2%D9%85%DB%8C%D9%86_%D9%81%D9%88%D8%AA%D8%A8%D8%A7%D9%84) دسترسی دارید.
![جزییاتزمینفوتبال](https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Football_pitch_metric.svg/800px-Football_pitch_metric.svg.png)
در صورتی که با ورزش فوتبال آشنایی ندارید، می توانید قوانین آن را در ویکیپدیایفارسی از [اینجا](https://fa.wikipedia.org/wiki/%D9%81%D9%88%D8%AA%D8%A8%D8%A7%D9%84) بخوانید.
# صورت مسئله
در ابتدای کار، شما میخواهید با بررسی اولیه به اکتشاف در مجموعه دادگان آموزش (`train.csv`) بپردازید و به سوالات زیر پاسخ بدهید (مثال خروجی هر سوال، در زیر آن آورده شدهاست).
در نظر داشته باشید که در این مرحله، *گُل به خودی* به عنوان گُل شوتزننده در نظر گرفته **نمیشود** و همچنین با مجموعه دادگان آزمایش (`test.csv`) در این مرحله کاری نداریم.
1. چندبازیکن در مجموعهدادگان وجود دارند؟
```
10
```
2. کدام بازیکن، بیشترین تعداد گُل را زده است؟
```
p_1
```
3. کدام بازیکنان به ترتیب، بیشترین نرخ تبدیل شوت به گُل و کمترین آن را داشتند؟ (بدون فاصله قبل و بعد از `,` - همانند نمونه زیر)
```
p_1,p_300
```
4. فاصله اقلیدسی دورترین شوت تا مرکز دروازه چهقدر بوده است؟ (فقط قسمت عدد صحیح)
```
100
```
این مرحله در مجموع، شامل ۴ سوال (هر سوال، ۲۵ امتیاز) میباشد. در صورتی که به تمامی سوالات پاسخ صحیح بدهید، بایستی ۱۰۰ امتیاز از این مرحله کسب کنید.
# خروجی
برای ارسال پاسخ ، جواب هر سوال را مشابه مثال، در یک سطر از فایل text بنویسید. در نهایت یک فایل text چهار خطی با نام **output.txt** را برای ما بارگذاری کنید. **_در صورتی که جواب سوالی را نمیدانید در سطر مربوطه ۱- وارد کنید._**
## نمونه خروجی ۱
```
10
p_1
p_1,p_300
100
```
<details class="green">
<summary>
*توضیحات*
</summary>
در خط *i* ام جواب سوال *i* ام نوشته شده است.
</details>
## نمونه خروجی ۲
```
10
-1
-1
30
```
<details class="green">
<summary>
*توضیحات*
</summary>
چون پاسخ سوال دوم و سوم را نمیدانستید، به جای آن عدد -۱ نوشته اید!
</details>
شغل جدید
بعد از آشنایی اولیه با مجموعه دادگان مرحله قبل، شما میخواهید اقدام به ساختن مدل احتمال گُل (ارزیابی موقعیت شوت) با استفاده از دادگان آموزش (`train.csv`) بکنید. این مدل بایستی با دریافت مشخصات مربوط به شوت (توضیح داده شده در گام قبل) به عنوان ورودی، احتمال گُل شدن (عددی بین صفر و یک) آن را به عنوان خروجی برگرداند.
![توضیح تصویر](https://bayanbox.ir/view/4452311812729334214/shoot.jpg)
به عنوان مثال، شما فکر میکنید مُدل شما احتمال گُل شدن [صحنه زیر](https://bayanbox.ir/view/5540254558017621225/Taremi.mp4) را چند درصد اعلام می کند؟
![توضیح تصویر](https://bayanbox.ir/view/8127073662025160404/Taremi.png)
با توجه به این که شما، به دنبال ساخت یک *مُدل مستقل از بازیکن و بازی* هستید، در دادگان آزمایش (`test.csv`) به ستونهای `playerId` و `matchId` دسترسی ندارید. همچنین در نظر داشته باشید که در این مرحله، *گُل به خودی* به عنوان خروجی گُل برای شوت در نظر گرفته **میشود**.
# دادگان
دادگان این گام، همان دادگان آموزش و آزمایش (`train.csv`و `test.csv`) سوال **شغل جدید** هستند.
# ارزیابی
برای ارزیابی مُدل شما از سطح زیر ناحیه نمودار ROC استفاده میشود. برای مطالعه بیشتر در مورد این نمودار میتوانید [ویکیپدیا](https://en.wikipedia.org/wiki/Receiver_operating_characteristic) یا [راهنمای کوتاه نکات و ترفندهای یادگیری ماشین](https://stanford.edu/~shervine/l/fa/teaching/cs-229/cheatsheet-machine-learning-tips-and-tricks) را مطالعه کنید.
نتیجه AUC ROC مُدل شما بر روی دادگان آزمایش در عدد ۱۰۰۰ ضرب شده و به عنوان امتیاز این مرحله در نظر گرفته میشود (بالاترین امتیاز ممکن از این مرحله ۱۰۰۰ میباشد).
داوری این سوال قبل از پایان مسابقه، تنها بر اساس ۳۰ درصد از دادگان آزمایش (`test`) خواهد بود. پس از اتمام مسابقه، برای بهروزرسانی نهایی جدول امتیازات از ۱۰۰ درصد دادگان آزمایش استفاده خواهد شد؛ این کار برای جلوگیری از بیشبرازش (`overfit`) روی دادگان آزمایش انجام میشود.
# خروجی
پیشبینیهای مدل خود بر روی دادگان آزمایش (`test.csv`) را در فایلی با نام `output.csv` قرار دهید. این فایل باید دارای یک ستون با نام `prediction` باشد که ردیف i ام آن پیشبینی شما (احتمال گُلشدن - عددی بین صفر و یک) برای شوت ردیف i ام از دادگان آزمایش باشد (دقت کنید که ستون باید حتما دارای `header` باشد). بعد از آمادهسازی فایل `output.csv`، آن را برای ما بارگذاری کنید.
<details class="yellow">
<summary>
**توجه**
</summary>
انتظار میرود افرادی که دارای توانایی آشنایی با حوزه جدید و مسلط به پیشپردازش، feature engineering و اصول اولیه یادگیریماشین هستند، بتوانند این سوال را حل کنند.
</details>
احتمال گُل
در صورت طیکردن موفقیتآمیز مراحل قبلی، شما بایستی دارای یک مُدل مناسب ارزیابی موقعیت شوت باشید، حال **با استفاده از آن مُدل** و در قالب یک گزارش کوتاه، اقدام به شناسایی بهترین شوتزنان لیگ که تیم کاپیتان سوباسا میتواند آنها را جذب بکند، بکنید.
![توضیح تصویر](https://bayanbox.ir/view/1352357110940992619/agent.jpg)
# دادگان
در این مرحله فقط دادگان آموزش (`train.csv`) سوال **شغل جدید** را استفاده کنید.
# خروجی
با توجه به این که این سوال، روش حل و جواب منحصر به فردی ندارد، لطفا روش حل و جواب خود را برای شناسایی ۵ شوتزن برتر لیگ در قالب گزارش `PDF` (حداکثر یک صفحه متن + حداکثر یک صفحه پیوست نمودار و عکس) بارگذاری کنید.
<details class="yellow">
<summary>
**توجه**
</summary>
انتظار میرود افرادی که در مرحله قبل خوب عمل کرده باشند و دارای خلاقیت در کاربردیسازی تحلیلداده هستند، بتوانند امتیاز مناسبی از این سوال کسب کنند.
</details>
# ارزیابی
برای این مرحله، فقط گزارشهای ده نفر برتر مجموع گامهای اول و دوم، بعد از پایان زمان مسابقه مورد داوری قرار خواهندگرفت و بقیه افراد، از این مرحله امتیازی دریافت نخواهند کرد. در صورتی که شخصی از آن ده نفر، گزارش خود را ارسال نکردهباشد. گزارش نفر بعدی طبق جدول امتیازات مورد ارزیابی قرار خواهدگرفت.
هیئت داورانی که از حداقل ۲ نفر تشکیل شدهاست، اقدام به بررسی گزارشها میکنند. هر عضو هیئت داوران، هر گزارش را مطالعه کرده و بر اساس ملاکهای زیر به یک گزارش نمره میدهد.
لیست ملاکها (هر ملاک بین ۱ تا ۵ نمره میگیرد. نمره بیشتر به معنای بهتر بودن میباشد):
1. کیفیت نگارش و شفاف بودن متن
2. استفاده مناسب از مصورسازی داده (`Data visualization`)
3. خلاقیت و استفاده از ایدههای جدید برای استخراج و ارائه حقایق موجود در داده
4. دقت نتایج کار
5. کاربردی بودن نتایج با توجه به صورت سوال
نمره نهایی یک گزارش، بر اساس میانگین نمرات هیئت داوران محاسبه خواهد شد و در آخر سر گزارشها بر اساس این نمرات رتبهبندی میشوند. نفر اول ۲۰۰ امتیاز، نفر دوم ۱۸۰ امتیاز، نفر سوم ۱۶۰ امتیاز تا نفر آخر که ۲۰ امتیاز کسب میکند.
# هشدار
توجه داشتهباشید که در راهحل خود برای این سوال، **حتما** بایستی از مُدلی که در جواب سوال *احتمال گُل* ساختهاید، استفاده کنید. نحوه استفاده از این مُدل کاملا بستگی به خلاقیت و ایدهپردازی شما دارد.
نقل و انتقالات
**فرض کنید** که اولین بازی تیم بعد از فصل نقل و انتقالات انجام شد و شما به دادگان آن دسترسی دارید. با استفاده از این مجموعهدادگان جدید و مُدلی که در مرحله *احتمال گُل* آماده کردهاید، اقدام به آنالیز موقعیتهای گُل تیم کاپیتانسوباسا (تیم میهمان) در این بازی بکنید.
![توضیح تصویر](https://bayanbox.ir/view/8341179084923790366/codingData.jpeg)
به نظر شما براساس موقعیتهای گُل و خروجی مُدل ارزیابی موقعیت شوت شما، کدام تیم شایستگی بُرد این بازی را داشت؟
# دادگان
دادگان این بازی در آدرس [زیر](https://github.com/metrica-sports/sample-data/tree/master/data/Sample_Game_2) در دسترس میباشند. توجه داشتهباشید که برای کار با این دادگان، ابتدا آنها را به صورت کامل دانلود کنید.
دادگان این بازی شامل دو نوع داده است:
1. دادگان رخداد (`event data`): این دادگان نشان میدهد که چه رخدادهایی روی توپ مانند شوت، سانتر و دریبل، توسط چه بازیکنی از چه تیمی، در چه مختصاتی از زمین و در چه زمانی صورت گرفته است. برای دسترسی به مستندات این دادگان به آدرس [زیر](https://github.com/metrica-sports/sample-data/blob/master/documentation/events-definitions.pdf) مراجعه کنید. فایل `Sample_Game_2_RawEventsData.csv` از دادگان این سوال به عنوان دادگان رخداد این بازی شناخته میشود.
2. دادگان ردیابی (`tracking data`): این دادگان به ازای ۲۵ فریم بر ثانیه، مختصات تمامی بازیکنان و توپ را در طول بازی نشان میدهد. فایلهای `Sample_Game_2_RawTrackingData_Away_Team.csv` و `Sample_Game_2_RawTrackingData_Home_Team.csv` به ترتیب، دادگان ردیابی تیم میهمان (`Away`) و میزبان (`Home`) این بازی میباشند.
هنگامی که فایل دادگان را به صورت فایل `csv` بخوانید، همچون ما، از ساختار آن تعجب خواهید کرد! متاسفانه شرکت تهیهکننده دادگان، مستندات کافی جهت فهمیدن این ساختار را در اختیار شما قرار نداده است! در عوض، برای کمک به شما در کار با دادگان این مسابقه و بصریسازی آنها، فایلهای `Metrica_Viz.py` و `Metrica_IO.py` از طریق [اینجا](https://github.com/Friends-of-Tracking-Data-FoTD/LaurieOnTracking/blob/master/Metrica_Viz.py) و [اینجا](https://github.com/Friends-of-Tracking-Data-FoTD/LaurieOnTracking/blob/master/Metrica_IO.py) که شامل تابعهای کمکی میباشند، در اختیار شما قرار گرفتهاست.
با مطالعه مستندات هرتابع، میتوانید ساختار دادگان را متوجه شوید، همچنین از آن تابعها در کار خود بهره ببرید و کار خود را تسریع ببخشید. توجه داشته باشید که در صورت نیاز، بایستی که تغییراتی اندک در داخل این توابع نیز بدهید!
توجه داشته باشید که دادگان ردیابی و رخداد از لحاظ زمانی با همدیگر همگامسازی شدهاند. در نتیجه شما بایستی بتوانید که با استفاده از این سه فایل، اقدام به بازسازی کامل یک لحظه شوتزنی همانند تصویر زیر بکنید. در تصویر زیر، دایرههای آبی نشان دهنده بازیکنان یک تیم، دایرههای قرمز هم نشاندهنده بازیکنان تیم مقابل آن میباشند. همچنین دایره سیاه نشاندهنده توپ است.
![توضیح تصویر](https://bayanbox.ir/view/5775023550110896183/moment.png)
در دادگان این سوال، مختصات زمین در ابعاد `x` و `y` بین صفر و یک میباشند. مختصات (۰,۰) بالا سمت چپ زمین، مختصات (۱,۱) پایین سمت راست زمین و مختصات مرکز زمین نیز (۰.۵,۰.۵) می باشد. توجه داشته باشید که ابعاد واقعی زمین در این بازی ۱۰۵ متر در طول (`x`) و ۶۸ متر در عرض (`y`) است و شما بایستی که این تغییر مقیاس مختصات را در نظر داشتهباشید. فراموش نکنید که شما به اطلاعات جزییتر در مورد یک زمین فوتبال در [ویکیپدیای فارسی](https://fa.wikipedia.org/wiki/%D8%B2%D9%85%DB%8C%D9%86_%D9%81%D9%88%D8%AA%D8%A8%D8%A7%D9%84) دسترسی دارید.
# ارزیابی
برای این مرحله، فقط گزارشهای ده نفر برتر مجموع گامهای اول و دوم، بعد از پایان زمان مسابقه مورد داوری قرار خواهند گرفت. در صورتی که شخصی از آن ده نفر، گزارش خود را ارسال نکردهباشد. گزارش نفر بعدی طبق جدول امتیازات مورد ارزیابی قرار خواهدگرفت. نحوه ارزیابی این گزارشها در قسمت ارزیابی سوال *نقل و انتقالات* توضیح داده شدهاست.
# هشدار
توجه داشتهباشید که در راهحل خود برای این سوال، **حتما** بایستی از مُدلی که در جواب سوال *احتمال گُل* ساختهاید، استفاده کنید. نحوه استفاده از این مُدل کاملا بستگی به خلاقیت و ایدهپردازی شما دارد.
# خروجی
گزارش `PDF` (حداکثر یک صفحه متن + حداکثر یک صفحه پیوست نمودار و عکس) خود را جهت اطلاع کاپیتان سوباسا، بارگذاری کنید.
<details class="yellow">
<summary>
**توجه**
</summary>
انتظار میرود افرادی که در *گامدوم- احتمال گُل* خوب عمل کرده باشند و دارای توانایی کار با داده خام و کاربردیسازی تحلیلداده هستند، بتوانند امتیاز مناسبی از این مرحله کسب کنند.
</details>
نیمکت
به منظور جلوگیری از هر گونه تقلب و شبهه احتمالی که منجر به ضایع شدن حق شما شود، لطفا فایل کد برنامهنویسی (مثلا برای پایتون فایل `.py` یا برای زبان `R` هم فایل `.R`) همه سوالات پاسخ داده شده خود را در قالب یک فایل زیپ در اینجا بارگذاری نمایید.
توجه داشته باشید که اگر از `jupter notebook` استفاده می کنید بایستی همانند توضیح بالا، خروجی مورد نظر را دریافت کنید. به عنوان مثال، شما بایستی که از قسمت `file` و زیرقسمت `Download` خروجی `.py` را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای `jupyter` همانند `.ipynb` مورد قبول واقع نخواهد شد.
برای هر سوال که جواب دادید، یک پوشه به نام آن سوال (مانند `Step1`) ایجاد و تمامی کدهای خود را در آن قرار دهید. در نهایت، همه پوشهها را در تحت یک پوشه نهایی زیپ کرده و برای ما **فقط یک فایل زیپ** ارسال کنید.
# توجه: از ارسال دادگان بپرهیزید!
با تشکر فراوان
تیم مسابقات داده کوئرا