فرض کنید که در راه رسیدن به مسابقات جهانی فوتبال، کاپیتان سوباسا تصمیم به استفاده از تحلیل داده برای ارتقای سطح فنی تیم خود گرفته است و به همین منظور شما به عنوان دانشمند داده تیم جذب شدهاید.
در هفته اول کاری خود، شما از تعدادی کارآموز درخواست میکنید که فیلم تمامی بازیهای فصل قبل لیگ را مشاهده کنند و اطلاعات مرتبط با شوتها در هر بازی را به صورت دستی ثبت کنند. خروجی کار در قالب csv
، تحویل شما شده است.
این مسابقه دارای ۴ سوال میباشد و شما میتوانید دادگان این مسابقه (یکسان برای تمامی سوالها به جز سوال نیمکت) را از این لینک دریافت کنید.
هر ردیف دادگان آموزش train.csv
، یک رویداد شوت و مشخصات آن، طبق جدول زیر میباشد:
نام ستون | توضیح ستون |
---|---|
matchId | شناسه بازی |
playerId | شناسه بازیکن شوتزننده |
playType | موقعیت بازی که در آن ضربه زده شد (جریان بازی، پنالتی، ضربه آزاد مستقیم، مستقیم از کرنر) |
bodyPart | بخشی از بدن که با آن شوت زده شدهاست (پای چپ، پای راست، سَر، سایر) |
x | موقعیت شوت در زمین به متر (مختصات x ) |
y | موقعیت شوت در زمین به متر (مختصات y ) |
interveningOpponents | تعداد بازیکنان حریف که در لحظه شوتزدن مانع دید شوتزننده به دروازه شده بودند |
interveningTeammates | تعداد همتیمیهایی که در لحظه شوت زدن مانع دید شوتزننده به دروازه شده بودند |
interferenceOnShooter | میزان دخالت مستقیم تیم مدافع بر روی شوتزننده (کم - هیچ بازیکن تیم حریف در یک متری شوتزننده نیست، متوسط - یک بازیکن حریف در ۱متری شوتزننده قرار دارد، زیاد - بیشتر از یک بازیکن حریف در ۱متری شوتزننده قرار دارند) |
minute | دقیقه زدن شوت |
second | ثانیه زدن شوت |
outcome | نتیجه شوت (برخورد به دفاع، موقعیت از دست رفته، برخورد به تیردروازه، مهار توسط دروازهبان، گُل، گُل بهخودی) |
مبدا مختصات (۰,۰) مرکز دروازهی تحت شوت میباشد و مختصات (x,y)، فاصله طولی (x) و عرضی (y) محل زدن شوت تا مبدا مختصات را به متر تعیین میکند، به عنوان مثال، موقعیت پنالتی در مختصات (۱۱,۰) میباشد.
برای آشنایی بیشتر با زمین فوتبال و ابعاد قسمتهای مختلف آن، شما به عکس زیر از ویکیپدیای فارسی دسترسی دارید.
در صورتی که با ورزش فوتبال آشنایی ندارید، می توانید قوانین آن را در ویکیپدیایفارسی از اینجا بخوانید.
در ابتدای کار، شما میخواهید با بررسی اولیه به اکتشاف در مجموعه دادگان آموزش (train.csv
) بپردازید و به سوالات زیر پاسخ بدهید (مثال خروجی هر سوال، در زیر آن آورده شدهاست).
در نظر داشته باشید که در این مرحله، گُل به خودی به عنوان گُل شوتزننده در نظر گرفته نمیشود و همچنین با مجموعه دادگان آزمایش (test.csv
) در این مرحله کاری نداریم.
چندبازیکن در مجموعهدادگان وجود دارند؟
کدام بازیکن، بیشترین تعداد گُل را زده است؟
کدام بازیکنان به ترتیب، بیشترین نرخ تبدیل شوت به گُل و کمترین آن را داشتند؟ (بدون فاصله قبل و بعد از ,
- همانند نمونه زیر)
فاصله اقلیدسی دورترین شوت تا مرکز دروازه چهقدر بوده است؟ (فقط قسمت عدد صحیح)
این مرحله در مجموع، شامل ۴ سوال (هر سوال، ۲۵ امتیاز) میباشد. در صورتی که به تمامی سوالات پاسخ صحیح بدهید، بایستی ۱۰۰ امتیاز از این مرحله کسب کنید.
برای ارسال پاسخ ، جواب هر سوال را مشابه مثال، در یک سطر از فایل text بنویسید. در نهایت یک فایل text چهار خطی با نام output.txt را برای ما بارگذاری کنید. در صورتی که جواب سوالی را نمیدانید در سطر مربوطه ۱- وارد کنید.
در خط i ام جواب سوال i ام نوشته شده است.
چون پاسخ سوال دوم و سوم را نمیدانستید، به جای آن عدد -۱ نوشته اید!
بعد از آشنایی اولیه با مجموعه دادگان مرحله قبل، شما میخواهید اقدام به ساختن مدل احتمال گُل (ارزیابی موقعیت شوت) با استفاده از دادگان آموزش (train.csv
) بکنید. این مدل بایستی با دریافت مشخصات مربوط به شوت (توضیح داده شده در گام قبل) به عنوان ورودی، احتمال گُل شدن (عددی بین صفر و یک) آن را به عنوان خروجی برگرداند.
به عنوان مثال، شما فکر میکنید مُدل شما احتمال گُل شدن صحنه زیر را چند درصد اعلام می کند؟
با توجه به این که شما، به دنبال ساخت یک مُدل مستقل از بازیکن و بازی هستید، در دادگان آزمایش (test.csv
) به ستونهای playerId
و matchId
دسترسی ندارید. همچنین در نظر داشته باشید که در این مرحله، گُل به خودی به عنوان خروجی گُل برای شوت در نظر گرفته میشود.
دادگان این گام، همان دادگان آموزش و آزمایش (train.csv
و test.csv
) سوال شغل جدید هستند.
برای ارزیابی مُدل شما از سطح زیر ناحیه نمودار ROC استفاده میشود. برای مطالعه بیشتر در مورد این نمودار میتوانید ویکیپدیا یا راهنمای کوتاه نکات و ترفندهای یادگیری ماشین را مطالعه کنید.
نتیجه AUC ROC مُدل شما بر روی دادگان آزمایش در عدد ۱۰۰۰ ضرب شده و به عنوان امتیاز این مرحله در نظر گرفته میشود (بالاترین امتیاز ممکن از این مرحله ۱۰۰۰ میباشد).
داوری این سوال قبل از پایان مسابقه، تنها بر اساس ۳۰ درصد از دادگان آزمایش (test
) خواهد بود. پس از اتمام مسابقه، برای بهروزرسانی نهایی جدول امتیازات از ۱۰۰ درصد دادگان آزمایش استفاده خواهد شد؛ این کار برای جلوگیری از بیشبرازش (overfit
) روی دادگان آزمایش انجام میشود.
پیشبینیهای مدل خود بر روی دادگان آزمایش (test.csv
) را در فایلی با نام output.csv
قرار دهید. این فایل باید دارای یک ستون با نام prediction
باشد که ردیف i ام آن پیشبینی شما (احتمال گُلشدن - عددی بین صفر و یک) برای شوت ردیف i ام از دادگان آزمایش باشد (دقت کنید که ستون باید حتما دارای header
باشد). بعد از آمادهسازی فایل output.csv
، آن را برای ما بارگذاری کنید.
انتظار میرود افرادی که دارای توانایی آشنایی با حوزه جدید و مسلط به پیشپردازش، feature engineering و اصول اولیه یادگیریماشین هستند، بتوانند این سوال را حل کنند.
در صورت طیکردن موفقیتآمیز مراحل قبلی، شما بایستی دارای یک مُدل مناسب ارزیابی موقعیت شوت باشید، حال با استفاده از آن مُدل و در قالب یک گزارش کوتاه، اقدام به شناسایی بهترین شوتزنان لیگ که تیم کاپیتان سوباسا میتواند آنها را جذب بکند، بکنید.
در این مرحله فقط دادگان آموزش (train.csv
) سوال شغل جدید را استفاده کنید.
با توجه به این که این سوال، روش حل و جواب منحصر به فردی ندارد، لطفا روش حل و جواب خود را برای شناسایی ۵ شوتزن برتر لیگ در قالب گزارش PDF
(حداکثر یک صفحه متن + حداکثر یک صفحه پیوست نمودار و عکس) بارگذاری کنید.
انتظار میرود افرادی که در مرحله قبل خوب عمل کرده باشند و دارای خلاقیت در کاربردیسازی تحلیلداده هستند، بتوانند امتیاز مناسبی از این سوال کسب کنند.
برای این مرحله، فقط گزارشهای ده نفر برتر مجموع گامهای اول و دوم، بعد از پایان زمان مسابقه مورد داوری قرار خواهندگرفت و بقیه افراد، از این مرحله امتیازی دریافت نخواهند کرد. در صورتی که شخصی از آن ده نفر، گزارش خود را ارسال نکردهباشد. گزارش نفر بعدی طبق جدول امتیازات مورد ارزیابی قرار خواهدگرفت.
هیئت داورانی که از حداقل ۲ نفر تشکیل شدهاست، اقدام به بررسی گزارشها میکنند. هر عضو هیئت داوران، هر گزارش را مطالعه کرده و بر اساس ملاکهای زیر به یک گزارش نمره میدهد.
لیست ملاکها (هر ملاک بین ۱ تا ۵ نمره میگیرد. نمره بیشتر به معنای بهتر بودن میباشد):
Data visualization
)نمره نهایی یک گزارش، بر اساس میانگین نمرات هیئت داوران محاسبه خواهد شد و در آخر سر گزارشها بر اساس این نمرات رتبهبندی میشوند. نفر اول ۲۰۰ امتیاز، نفر دوم ۱۸۰ امتیاز، نفر سوم ۱۶۰ امتیاز تا نفر آخر که ۲۰ امتیاز کسب میکند.
توجه داشتهباشید که در راهحل خود برای این سوال، حتما بایستی از مُدلی که در جواب سوال احتمال گُل ساختهاید، استفاده کنید. نحوه استفاده از این مُدل کاملا بستگی به خلاقیت و ایدهپردازی شما دارد.
فرض کنید که اولین بازی تیم بعد از فصل نقل و انتقالات انجام شد و شما به دادگان آن دسترسی دارید. با استفاده از این مجموعهدادگان جدید و مُدلی که در مرحله احتمال گُل آماده کردهاید، اقدام به آنالیز موقعیتهای گُل تیم کاپیتانسوباسا (تیم میهمان) در این بازی بکنید.
به نظر شما براساس موقعیتهای گُل و خروجی مُدل ارزیابی موقعیت شوت شما، کدام تیم شایستگی بُرد این بازی را داشت؟
دادگان این بازی در آدرس زیر در دسترس میباشند. توجه داشتهباشید که برای کار با این دادگان، ابتدا آنها را به صورت کامل دانلود کنید.
دادگان این بازی شامل دو نوع داده است:
event data
): این دادگان نشان میدهد که چه رخدادهایی روی توپ مانند شوت، سانتر و دریبل، توسط چه بازیکنی از چه تیمی، در چه مختصاتی از زمین و در چه زمانی صورت گرفته است. برای دسترسی به مستندات این دادگان به آدرس زیر مراجعه کنید. فایل Sample_Game_2_RawEventsData.csv
از دادگان این سوال به عنوان دادگان رخداد این بازی شناخته میشود.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
از طریق اینجا و اینجا که شامل تابعهای کمکی میباشند، در اختیار شما قرار گرفتهاست.
با مطالعه مستندات هرتابع، میتوانید ساختار دادگان را متوجه شوید، همچنین از آن تابعها در کار خود بهره ببرید و کار خود را تسریع ببخشید. توجه داشته باشید که در صورت نیاز، بایستی که تغییراتی اندک در داخل این توابع نیز بدهید!
توجه داشته باشید که دادگان ردیابی و رخداد از لحاظ زمانی با همدیگر همگامسازی شدهاند. در نتیجه شما بایستی بتوانید که با استفاده از این سه فایل، اقدام به بازسازی کامل یک لحظه شوتزنی همانند تصویر زیر بکنید. در تصویر زیر، دایرههای آبی نشان دهنده بازیکنان یک تیم، دایرههای قرمز هم نشاندهنده بازیکنان تیم مقابل آن میباشند. همچنین دایره سیاه نشاندهنده توپ است.
در دادگان این سوال، مختصات زمین در ابعاد x
و y
بین صفر و یک میباشند. مختصات (۰,۰) بالا سمت چپ زمین، مختصات (۱,۱) پایین سمت راست زمین و مختصات مرکز زمین نیز (۰.۵,۰.۵) می باشد. توجه داشته باشید که ابعاد واقعی زمین در این بازی ۱۰۵ متر در طول (x
) و ۶۸ متر در عرض (y
) است و شما بایستی که این تغییر مقیاس مختصات را در نظر داشتهباشید. فراموش نکنید که شما به اطلاعات جزییتر در مورد یک زمین فوتبال در ویکیپدیای فارسی دسترسی دارید.
برای این مرحله، فقط گزارشهای ده نفر برتر مجموع گامهای اول و دوم، بعد از پایان زمان مسابقه مورد داوری قرار خواهند گرفت. در صورتی که شخصی از آن ده نفر، گزارش خود را ارسال نکردهباشد. گزارش نفر بعدی طبق جدول امتیازات مورد ارزیابی قرار خواهدگرفت. نحوه ارزیابی این گزارشها در قسمت ارزیابی سوال نقل و انتقالات توضیح داده شدهاست.
توجه داشتهباشید که در راهحل خود برای این سوال، حتما بایستی از مُدلی که در جواب سوال احتمال گُل ساختهاید، استفاده کنید. نحوه استفاده از این مُدل کاملا بستگی به خلاقیت و ایدهپردازی شما دارد.
گزارش PDF
(حداکثر یک صفحه متن + حداکثر یک صفحه پیوست نمودار و عکس) خود را جهت اطلاع کاپیتان سوباسا، بارگذاری کنید.
انتظار میرود افرادی که در گامدوم- احتمال گُل خوب عمل کرده باشند و دارای توانایی کار با داده خام و کاربردیسازی تحلیلداده هستند، بتوانند امتیاز مناسبی از این مرحله کسب کنند.
به منظور جلوگیری از هر گونه تقلب و شبهه احتمالی که منجر به ضایع شدن حق شما شود، لطفا فایل کد برنامهنویسی (مثلا برای پایتون فایل .py
یا برای زبان R
هم فایل .R
) همه سوالات پاسخ داده شده خود را در قالب یک فایل زیپ در اینجا بارگذاری نمایید.
توجه داشته باشید که اگر از jupter notebook
استفاده می کنید بایستی همانند توضیح بالا، خروجی مورد نظر را دریافت کنید. به عنوان مثال، شما بایستی که از قسمت file
و زیرقسمت Download
خروجی .py
را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای jupyter
همانند .ipynb
مورد قبول واقع نخواهد شد.
برای هر سوال که جواب دادید، یک پوشه به نام آن سوال (مانند Step1
) ایجاد و تمامی کدهای خود را در آن قرار دهید. در نهایت، همه پوشهها را در تحت یک پوشه نهایی زیپ کرده و برای ما فقط یک فایل زیپ ارسال کنید.
با تشکر فراوان
تیم مسابقات داده کوئرا