سلام
به مسابقه نهایی از مسیر داده لیگ کُدکاپ ۱۴۰۱ خوش آمدید.
برای آشنایی با سیستم داوری مسابقات تحلیل داده و یادگیری ماشین، ویدئو زیر را مشاهده کنید.
قبل از شروع مسابقه، ابتدا موارد زیر را مطالعه کنید:
test
) خواهد بود. پس از اتمام مسابقه، برای بهروزرسانی نهایی جدول امتیازات، از ۱۰۰ درصد مجموعه داده آزمایش بر روی ارسال نهایی شما استفاده خواهد شد؛ این کار برای جلوگیری از بیشبرازش (overfitting
) انجام میشود.مجموعه داده هر سوال را در صورت سوال مربوطه، میتوانید دریافت نمایید. اما پیش از آن، بایستی که محیط برنامهنویسی لازم برای محاسبات خود را آماده کنید. اگر میخواهید که با استفاده از زبان برنامهنویسی پایتون و کتابخانههای موجود در آن، در این مسابقه شرکت کنید. میتوانید از سامانه گوگل کُلَب استفاده کنید.
بدین صورت نیازی نیست که شما مجموعه داده های این مسابقه را روی کامپیوتر خود دانلود کنید. همچنین گوگل کُلَب این امکان را به شما میدهد که از قابلیتهای GPU
و TPU
آن به رایگان استفاده کرده و سرعت محاسبات خود را به طور قابل ملاحظهای افزایش دهید. پیشنهاد میشود که ابتدا کُد خود را در حالت CPU
توسعه دهید و فقط هنگامی که می خواهید شروع به آموزش دادن مُدل خود کنید، قابلیت GPU
یا TPU
را در صورت نیاز فعال کنید؛ بدین صورت، بهینه از منابع استفاده میکنید.
اگر اولین باری است که با گوگل کُلَب آشنا میشوید. پیشنهاد میشود راهنمای فارسی کار با آن را از اینجا به دقت مطالعه کنید. توجه داشته باشید که برای استفاده از گوگل کُلَب، شما نیازمند به داشتن ایمیل gmail
میباشید و قابلیتهای ارائه شده در نسخه رایگان آن، برای انجام این مسابقه کافی است.
همچنین فعلا برای دسترسی به آن نیازی به استفاده از فیلترشکن نیست.
محمد، سجاد، مهیار و کاوان به مطالعه کتاب بسیار علاقه دارند. از این رو محمد پیشنهاد داد که در روز معینی از هفته دور هم جمع شوند و جلسات مطالعه کتابخوانی دستهجمعی برگزار کنند. در یکی از جلسات کتابخوانی، پس از مطالعه کتاب، این چهار نفر تصمیم گرفتند مهارت خود را در زمینه تحلیل داده، همراه با چاشنی کتابخوانی محک بزنند. آن ها تصمیم گرفتند مسابقهای میان خود برگزار کنند و با استفاده از داده متنی یک کتاب، به چند سوال پاسخ بدهند. اینک محمد، سجاد، مهیار و کاوان از شما دعوت کردهاند همراه آنها در این مسابقه شرکت کنید و مهارت خود را بسنجید.
مجموعه داده سوال را میتوانید از این لینک دانلود کنید. |
---|
هنگامی که این فایل را از حالت فشرده خارج کنید، فایل (words.csv
) در اختیار شما خواهد بود. این فایل ۲۲۲۱۴۸ سطر و ۱ ستون دارد.
جزییات فایل words.csv
در جدول زیر آمدهاست:
نام ستون | توضیحات ستون |
---|---|
words | یک کلمه |
کلماتی که در این دیتافریم مشاهده میکنید، همگی کلمات کتاب معروف امریکایی نهنگ سفید نوشته Herman Melville است.
از طریق این لینک از ویکیپدیا میتوانید اطلاعات بیشتری در مورد کتاب بهدست بیاورید!
در ابتدای کار، شما میخواهید با بررسی اولیه به اکتشاف در مجموعه دادگان متنی (words.csv
) بپردازید و به سوالات زیر پاسخ بدهید (مثال خروجی هر سوال، در زیر آن آورده شدهاست).
q
شروع میشود را پیدا کنید.ابتدا کلمات منحصر به فرد را پیدا کنید، سپس از بین آنها، کلماتی را به شکل صعودی مرتبسازی کنید که طولشان برابر ۸ کاراکتر باشد!
این مرحله در مجموع، شامل 4 سوال (هر سوال، ۱۲/۵ امتیاز) میباشد. در صورتی که به تمامی سوالات پاسخ صحیح بدهید، بایستی که بتوانید ۵۰ امتیاز از این مرحله کسب کنید.
برای ارسال پاسخ، جواب هر سوال را مشابه مثال، در یک سطر از یک فایل text
بنویسید. در نهایت یک فایل چهار خطی با نام output.txt را برای ما بارگذاری کنید.
در صورتی که جواب سوالی را نمیدانید در سطر مربوطه ۱- وارد کنید.
در خط i ام جواب سوال i ام نوشته شدهاست.
چون پاسخ سوال دوم و چهارم را نمیدانستید، به جای آن عدد ۱- نوشتهاید!
فراموش نکنید که قبل از پایان زمان مسابقه، بایستی تمامی کدهای این مسابقه را از قسمت بارگذاری کُد برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی کنید.
توجه داشته باشید که اگر از jupter notebook
استفاده می کنید بایستی همانند توضیحات قسمت بارگذاری کُد، خروجی .py
را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای jupyter
همانند .ipynb
مورد قبول واقع نخواهند شد.
علی یک پسر بسیار تلاشگر و با استعداد است که به تازگی فارغ التحصیل شده و به دنبال شغلی مطابق با رشته تحصیلی خود میگردد. او وقت زیادی صرف جمع آوری اطلاعات شرکت ها کرده است و از آنجا که خیلی وسواس دارد. میخواهد جزییات بیشتری در مورد شرکت ها بدست بیاورد تا بدون دغدغه برای کار در شرکت مورد نظر خود اقدام کند. او با توجه به اطلاعاتی که جمع آوری کرده است، از شما به عنوان یک دانشمند داده میخواهد صنایع وابسته (Sub-Industry) به هر شرکت را پیشبینی کنید.
مجموعه داده سوال را میتوانید از این لینک دانلود کنید. |
---|
هنگامی که این فایل را از حالت فشرده خارج کنید. پوشه companies
را میبینید. در صورتی که وارد این پوشه شوید، فایل آموزش (train.csv
) و آزمایش (test.csv
) را مشاهده میکنید. فایل آموزش، دارای ساختار زیر است:
نام ستون | توضیحات ستون |
---|---|
Ticker | مخفف نام شرکت |
Company Name | نام شرکت |
Sector | بخش |
Industry Group | گروه صنایع |
Industry | صنایع |
Description | توضیحات |
Sub-Industry | صنایع وابسته |
تنها تفاوت مجموعه داده آموزش با آزمایش در این است که مجموعه داده آزمایش، ستونSub-Industry
را ندارند.
با استفاده از مجموعه داده آموزش، یک مُدل برای پیشبینی صنایع وابسته (ستون Sub-Industry
) هر شرکت آموزش دهید. بدین صورت علی میتواند راحتتر به شغل رویایی و ایدهآل خود برسد 😎😍
برای ارزیابی پاسخ شما از معیار F1 استفاده خواهد شد. این معیار به صورت زیر تعریف میشود: ولی به دلیل اینکه ستون پیشبینی دارای بیش از ۲ کلاس است ما از معیاری به نام Weighted F1 استفاده میکنیم که F1 میانگین وزنی کلاس ها را محاسبه میکند. برای مطالعه بیشتر در مورد این معیار میتوانید به این منبع مراجعه کنید.
داوری این سوال قبل از پایان مسابقه، تنها بر اساس ۳۰ درصد از مجموعه داده آزمایش (test ) خواهد بود. پس از اتمام مسابقه، برای بهروزرسانی نهایی جدول امتیازات، از ۱۰۰ درصد مجموعه داده آزمایش استفاده خواهد شد؛ این کار برای جلوگیری از بیشبرازش (overfit ) روی مجموعه داده آزمایش انجام میشود. |
---|
پیشبینیهای مدل خود بر روی دادگان آزمایش (test.csv
) را در فایلی با نام output.csv
قرار دهید.
این فایل باید دارای یک ستون به اسم Sub-Industry
باشد.(بزرگ و کوچک بودن حروف نام ستون رعایت شود) که ردیف i ام هر ستون، پیشبینی شما برای نظر ردیف i ام از فایل test.csv
باشد. بعد از آمادهسازی فایل output.csv
، آن را برای ما بارگذاری کنید.
output.csv
(فقط چهار خط اول به همراه نام ستون)🔗حتما فایل output.csv
باید دارای 944 سطر (بدون در نظر گرفتن header
) و یک ستون باشد.
فراموش نکنید که قبل از پایان زمان مسابقه، بایستی تمامی کدهای این مسابقه را از قسمت بارگذاری کُد برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی کنید.
توجه داشته باشید که اگر از jupter notebook
استفاده می کنید بایستی همانند توضیحات قسمت بارگذاری کُد، خروجی .py
را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای jupyter
همانند .ipynb
مورد قبول واقع نخواهند شد.
وبسایت کگل خانه دوم دانشمندان داده است. در این وبسایت میتوان انواع مختلفی از مجموعههای داده را پیدا کرد. از حوزه متن گرفته تا گراف، افراد در سراسر دنیا، دادههای خود را با دیگران به اشتراک میگذارند.
به عنوان تحلیلگر یا دانشمند داده و حتی مهندس یادگیری ماشین، شاید بارها و بارها پیش آمده است که برای تمرین شخصی یا پروژههای دانشگاهی و صنعتی در وبسایت کگل ساعتها مشغول بررسی مجموعه دادههای موجود باشید، تا بتوانید بهترین مجموعه داده مناسب نیازتان را پیدا کنید!
اگر میتوانستیم با استفاده از یادگیری ماشین و هوش مصنوعی، مجموعه دادههایی که مناسبتر هستند را پیدا کنیم، در وقتمان بسیار صرفهجویی میشد.
حال در این مسئله قصد داریم با استفاده از دادهای که از سایت کگل استخراج شده است، به پیشبینی معیار استفادهپذیری (usability score) مجموعههای داده بپردازیم!
مجموعه داده سوال را میتوانید از این لینک دانلود کنید. |
---|
هنگامی که این فایل را از حالت فشرده خارج کنید، فایلهای آموزش (train.csv
) و آزمایش (test.csv
) در اختیار شما خواهند بود. فایل آموزش، اطلاعات ۸۰۰۰ مجموعه داده را در ۹ ستون در خود جا داده است.
جزییات فایل آموزش، در جدول زیر آمدهاست:
نام ستون | توضیحات ستون |
---|---|
dataset url | لینک به مجموعه داده |
title | عنوان مجموعه داده |
dataset author | شخصی که مجموعه داده را در کگل قرار داده است |
dataset created | زمانی که مجموعه داده در کگل بارگذاری شده است |
file type, no. of files and file size | فرمت، تعداد و حجم مجموعه داده |
documentation remarks | توضیحاتی درباره کیفیت مستندات مجموعه داده |
votes | تعداد رایهای مثبتی که توسط کاربران سایت به مجموعه داده شده است |
medal | مدالی که مجموعه داده تصاحب کرده است. اگر این ستون خالی باشد، به معنی این است که مجموعه داده مدالی برنده نشده است |
usability score | معیار استفادهپذیری برای هر مجموعه داده |
ستون dataset created
با عبارتهایی نظیر 13 days ago یا an hour ago پر شده است. مبدا زمانی برای تبدیل این ستون به فرمت تاریخ را معادل 00:00:00 20-10-2022
در نظر بگیرید. پس در سطری که ستون dataset created
برابر 16 days ago باشد، در حقیقت تاریخ بارگذاری مجموعه داده در کگل، برابر 00:00:00 04-10-2022
بوده است.
توجه داشته باشید که فایل آزمایش دارای ستون usability score
نیست.
با استفاده از مجموعه داده آموزش، یک مُدل برای پیشبینی معیار استفادهپذیری مجموعه دادههای وبسایت کگل آموزش دهید؛ بدین صورت، در آینده برای پیدا کردن مجموعه دادههای مناسب، میتوانید از آن استفاده کنید و در وقت خود صرفهجویی نمایید 😎
در مجموعه داده آموزش و آزمایش، برخی ستونها مقدار null
یا nan
دارند. مدیریت این موضوع، بخشی از چالش مسئله است!
منتها توجه داشته باشید هیچ سطری از مجموعه داده آزمایش نباید حذف شود. زیرا سامانه داوری انتظار دارد به ازای تمامی سطرهای مجموعه آزمایشی که در اختیارتان قرار گرفته است، پیشبینی انجام دهید.
برای ارزیابی مُدل شما از معیار Root Mean Square Error
یا به اختصار RMSE
به شرح زیر استفاده میشود:
در فرمول بالا، مقدار واقعی usability score
برای سطر است و نیز مقدار پیشبینی شده مُدل شما برای آن usability score
است. همچنین تعداد نمونههای مجموعه داده را از شماره ۱ تا در نظر بگیرید. در نهایت، امتیاز شما از این مرحله بر اساس فرمول زیر محاسبه میگردد:
یک تابع تصادفی یا تابعی که همیشه یک امتیاز ثابت را پیش بینی میکند، حداقل RMSE
برابر با ۱.۷۱ برای مجموعه داده این سوال دارد. پس، مدلهایی که RMSE
آنها ۱.۷۱ یا بزرگتر از آن باشد، به عنوان مدل مناسب این مسئله، قابل قبول نیستند و هرمدلی که چنین عملکردی را روی مجموعه داده آزمایش داشتهباشد، امتیازی از این سوال کسب نمیکند.
لطفا در هنگام کار با این دادگان، به نکات زیر توجه داشته باشید:
RMSE
مدل شما، تا سه رقم اعشار محاسبه (رُند) و در فرمول امتیازدهی بالا، قرار داده میشود.score
شما، منفی شود. از این سوال حداقل صفر امتیاز میگیرید. 😜داوری این سوال قبل از پایان مسابقه، تنها بر اساس ۳۰ درصد از مجموعه داده آزمایش (test ) خواهد بود. پس از اتمام مسابقه، برای بهروزرسانی نهایی جدول امتیازات، از ۱۰۰ درصد مجموعه داده آزمایش استفاده خواهد شد؛ این کار برای جلوگیری از بیشبرازش (overfit ) روی مجموعه داده آزمایش انجام میشود. |
---|
پیشبینیهای مدل خود بر روی دادگان آزمایش (test.csv
) را در فایلی با نام output.csv
قرار دهید. این فایل باید دارای یک ستون با نام usability_score
(به زیرخط یا underline در این کلمه توجه کنید) باشد که ردیف iام آن، پیشبینی شما برای سطر iام مجموعه داده آزمایش باشد (دقت کنید که این ستون باید حتما دارای header
باشد).
بعد از آمادهسازی فایل output.csv
، آن را برای ما بارگذاری کنید.
output.csv
(فقط سه خط اول به همراه نام ستون)🔗حتما فایل output.csv
باید دارای ۵۰۸ سطر (بدون در نظر گرفتن header
) و یک ستون باشد.
همچنین نام ستون بایستی بدون space
در قبل و بعد از نام آن، باشد. در غیر این صورت، سیستم داوری نمرهای به شما نخواهد داد.
پیشبینیهای شما از usability_score
ها، میتوانند به صورت عدد اعشاری نیز ارسال بشوند.
فراموش نکنید که قبل از پایان زمان مسابقه، بایستی تمامی کدهای این مسابقه را از قسمت بارگذاری کُد برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی کنید.
توجه داشته باشید که اگر از jupter notebook
استفاده می کنید بایستی همانند توضیحات قسمت بارگذاری کُد، خروجی .py
را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای jupyter
همانند .ipynb
مورد قبول واقع نخواهند شد.
در حالی که بسیاری از ما از ارتباط داشتن در فضای مجازی لذت میبریم، استفاده بیش از حد آن میتواند موجب تحریک احساساتی مانند اضطراب، افسردگی، انزوا و ترس جاماندن شود.
کاوان یک روانشناس است. او تعدادی از نظرات و کامنتهای فضای مجازی را استخراج کرده و برای هر نظر، ۱۰ ویژگی روانشناختی در نظر گرفته و به هر کدام از این ۱۰ ویژگی، از بین ۰ تا ۴ امتیاز داده است تا در نهایت میزان استرس و افسردگی هر فرد را بررسی کند؛ ولی این کار زمان زیادی از او میگیرد.
بنابراین او از شما میخواهد مدلی آموزش دهید که با توجه به محتوای متن، به هر کدام از ویژگیهای روانشناختی نمرهای بین ۰ تا ۴ اختصاص دهد.
مجموعه داده سوال را میتوانید از این لینک دانلود کنید. |
---|
هنگامی که این فایل را از حالت فشرده خارج کنید، فایل آموزش (train.csv
) و آزمایش (test.csv
) را مشاهده میکنید. فایل آموزش، دارای ساختار زیر است:
نام ستون | توضیحات ستون |
---|---|
text | نوشته هر شخص |
sense | احساسات |
honor | احترام |
curse | توهین |
despise | تحقیر |
situation | وضعیت |
antihuman | غیرانسانی |
roughness | ناهنجاری |
slaughter | نسلکشی |
strike_support | حمله-حمایت |
depression_rate | استرس |
عمده نظرات موجود در ستون text
به زبان انگلیسی هستند؛ اما تعداد محدودی از نظرات وجود دارند که به زبانهای دیگر ثبت شدهاند. مدیریت این چالش بخشی از فرایند حل مسئله است.
همچنین تفاوت مجموعه داده آموزش با آزمایش در این است که مجموعه داده آزمایش، فقط ستون text
دارند.
مجموعه داده این سوال از توییتر انگلیسی استخراج شده است. بنابراین کوئرا هیچ نقشی در تولید داده این سوال نداشته است!
با استفاده از مجموعه داده آموزش، مدلی توسعه دهید که به هر ویژگی روانشناختی متن، از ۰ تا ۴ امتیاز دهد.(اعداد میتوانند اعشاری باشند) پس خروجی مسئله فقط یک عدد نیست!، بلکه به ازای هر متن در مجموعه داده آزمایش، میبایست یک بردار ۱۰ تایی پیشبینی کنید.
نمونه خروجی مسئله را در بخشهای بعدی مشاهده خواهید کرد.
امتیاز نهایی مُدل شما تابعی از خطای جذر میانگین مربعات (RMSE) است. برای مطالعه بیشتر در مورد این خطا میتوانید به ویکیپدیا مراجعه کنید.
این خطا برای هر ستون حساب میشود و در نهایت میانگین RMSE برای همه ستون ها (MCRMSE) بدست میآید.
امتیاز نهایی مدل شما، طبق فرمول زیر محاسبه میشود:
یک تابع تصادفی یا تابعی که همیشه یک امتیاز ثابت را پیش بینی میکند، حداقل RMSE
برابر با ۱.۵ برای مجموعه داده این سوال دارد. پس، مدلهایی که RMSE
آنها ۱.۵ یا بزرگتر از آن باشد، به عنوان مدل مناسب این مسئله، مورد قبول قرار نمیگیرند و هرمدلی که چنین عملکردی را روی مجموعه داده آزمایش داشتهباشد، امتیازی از این سوال کسب نمیکند.
لطفا در هنگام کار با این دادگان، به نکات زیر توجه داشته باشید:
RMSE
مدل شما، تا سه رقم اعشار محاسبه (رُند) و در فرمول امتیازدهی بالا، قرار داده میشود.score
شما، منفی شود. از این سوال حداقل صفر امتیاز میگیرید. 😜داوری این سوال قبل از پایان مسابقه، تنها بر اساس ۳۰ درصد از مجموعه داده آزمایش (test ) خواهد بود. پس از اتمام مسابقه، برای بهروزرسانی نهایی جدول امتیازات، از ۱۰۰ درصد مجموعه داده آزمایش استفاده خواهد شد؛ این کار برای جلوگیری از بیشبرازش (overfit ) روی مجموعه داده آزمایش انجام میشود. |
---|
پیشبینیهای مدل خود بر روی دادگان آزمایش (test.csv
) را در فایلی با نام output.csv
قرار دهید.
این فایل باید دارای ۱۰ ستون به اسم ویژگی ها باشد که ردیف i ام هر ستون ، پیشبینی شما (یک عدد بین ۰ تا ۴ با نهایتا ۳ رقم اعشار) برای نظر ردیف i ام از فایل test.csv
باشد. بعد از آمادهسازی فایل output.csv
، آن را برای ما بارگذاری کنید.
output.csv
(فقط چهار خط اول به همراه نام ستون)🔗حتما فایل output.csv
باید دارای ۱۷۵۴ سطر (بدون در نظر گرفتن header
) و ۱۰ ستون باشد.
فراموش نکنید که قبل از پایان زمان مسابقه، بایستی تمامی کدهای این مسابقه را از قسمت بارگذاری کُد برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی کنید.
توجه داشته باشید که اگر از jupter notebook
استفاده می کنید بایستی همانند توضیحات قسمت بارگذاری کُد، خروجی .py
را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای jupyter
همانند .ipynb
مورد قبول واقع نخواهند شد.
به منظور جلوگیری از هر گونه تقلب و شبهه احتمالی که منجر به ضایع شدن حق شما شود، شما بایستی که فایل کد برنامهنویسی (مثلا برای پایتون فایل .py
یا برای زبان R
هم فایل .R
) را در قالب یک فایل زیپ در اینجا بارگذاری نمایید. همچنین اگر که از ابزارهای نرمافزاری استفاده میکنید. خروجی (export
) آن را در فایل زیپ قرار دهید.
توجه داشته باشید که اگر از jupter notebook
استفاده می کنید بایستی همانند توضیح بالا، خروجی مورد نظر را دریافت کنید. به عنوان مثال، شما بایستی که از قسمت file
و زیرقسمت Download
خروجی .py
را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای jupyter
همانند .ipynb
مورد قبول واقع نخواهند شد.
برای هر سوال که جواب دادید، یک فایل کد به نام آن سوال ایجاد و تمامی کدهای خود را در آن قرار دهید. در نهایت، همه فایلها را زیپ کرده و برای ما فقط یک فایل زیپ ارسال کنید.
نمونه فایلی که بایستی در این سوال آپلود کنید را میتوانید از این لینک دانلود کنید. |
---|
برای سوال «مسابقه کتابخوانی» یک فایل به اسم mosabeghe_ketabkhani
ایجاد کنید.
برای سوال «شرکتهای جهانی» یک فایل به اسم sherkathaye_jahani
ایجاد کنید.
برای سوال «مجموعه دادهای از مجموعه دادهها» یک فایل به اسم majmooei_az_mojmooeha
ایجاد کنید.
برای سوال «روانشناسی سخن» یک فایل به اسم ravanshenasi_sokhan
ایجاد کنید.
در نهایت چهار فایل mosabeghe_ketabkhani
و sherkathaye_jahani
و majmooei_az_mojmooeha
و ravanshenasi_sokhan
را زیپ کرده و فقط همان یک فایل زیپ را در این سوال آپلود کنید.
با تشکر فراوان