شرکتهای مختلف مجموعه اسنپ نیاز به استفاده از سیستمهای پیشنهاددهنده، جهت پیشنهاد محصول به مشتریان خود دارند. آنها میتوانند با استفاده از تاریخچه امتیاز مشتریان به محصولات مختلف، اقدام به پیشنهاد محصول بکنند، به گونهای که مشتری از محصول پیشنهاد شده استقبال بکند. 😎
بهعنوان مثال:
- اسنپتریپ میتواند هتلهایی را به مسافران پیشنهاد دهد که مسافران مشابه، از آنها راضی بودهاند.
- اسنپفود میتواند بر اساس امتیاز مشتریان به رستورانها و یا غذاها اقدام به پیشنهاد رستوران/غذا به مشتریان دیگر بکند.
- اسنپشاپ میتواند محصولاتی که سیستم پیشنهاددهنده احتمال میدهد امتیاز بالایی از سمت یک سری از مشتریان کسب کند را به آنها با تخفیف شخصیسازی شده، پیشنهاد بدهد.
چند دقیقه برای تفکر 🤔
به نظر شما، هر یک از شرکتهای دیگر مجموعه اسنپ که در زیر آورده شدهاند، چه استفادهای از یک سیستم پیشنهاددهنده میتوانند داشته باشند؟
جواب سوال بالا، جزوی از سوال مسابقه نیست و صرفا جهت تفکر و آشنایی شماست. 🤗
توجه داشته باشید که حتی میتوان از روی تحلیل احساس نظرات (سوال ۳ این مسابقه)، برای محاسبه امتیازی که هر مشتری به یک محصول میدهد، استفاده کرد. 😉
بیشتر بدانید 📚
سیستمهای پیشنهاددهنده دارای سابقه طولانی هستند. به عنوان مثال، میتوانید از اینجا در مورد مسابقه سیستم پیشنهاددهنده شرکت پخش فیلم Netflix که در سال ۲۰۰۶ شروع شد، مطالعه کنید.
دادگان
در این سوال، شما به تاریخچه امتیازهای مشتریان به محصولات مختلف در طول زمان از اینجا دسترسی دارید. هنگامی که این فایل را از حالت فشرده خارج کنید. پوشه data
را میبینید. در صورتی که وارد این پوشه شوید، فایلهای آموزش (train.csv
) و آزمایش (test.csv
) در اختیار شما خواهند بود. فایل آموزش، اطلاعات امتیازدهی مشتریان به محصولات مختلف در یک بازه حدودا ۷.۵ سال را نشان میدهد.
جزییات فایل آموزش، در جدول زیر آمدهاست:
نام ستون | توضیحات ستون |
---|---|
userId | شناسه مشتری |
itemId | شناسه محصول |
rating | امتیازی که مشتری به محصول مربوطه دادهاست که میتواند یکی از اعداد ۴،۳،۲،۱ یا ۵ باشد |
date | زمانی که مشتری به محصول مربوطه، امتیاز دادهاست |
فایل آزمایش، برای یک بازه حدودا ۶ ماهه، بعد از زمان دادگان فایل آموزش است و دارای اطلاعات مشتریانی است که به محصولات مختلف در آن بازه، امتیاز دادهاند. توجه داشته باشید که این فایل دارای ستون rating
نیست و همچنین تنها مشتریان و محصولاتی در آن موجودند که هر دوی آنها، قبلا در دادگان آموزش وجود داشته باشند.
صورت مسئله
با استفاده از دادگان آموزش، یک مُدل برای یک سیستم پیشنهاددهنده بسازید که برای سهتایی (شناسهمشتری، شناسه محصول و زمان امتیاز دادن) دادگان آزمایش، امتیازی که مشتری میدهد را پیشبینی کند. بدین صورت، مجموعه شرکتهای اسنپ میتوانند محصولی را به یک مشتری پیشنهاد دهند که مطمئن هستند امتیاز بالایی را از سمت مشتری دریافت خواهد کرد. 🥳
راهنمایی
شاید روشهای زیر، بتوانند به شما در حل این مسئله کمک بکنند:
- استفاده از روشهای مستقل از زمان/ترتیب مانند
collaborative filtering
وcontent based
و یا ترکیبی از هر دو - استفاده از الگوریتمهای وابسته به زمان/ترتیب مانند
sequence neural networks
وconvolutional neural networks
- استفاده از هر روش مرتبط دیگر با تحلیل داده، سیستمهای پیشنهاددهنده، یادگیری ماشین و یادگیری عمیق
ارزیابی
برای ارزیابی مُدل شما از معیار Root Mean Square Error
یا به اختصار RMSE
به شرح زیر استفاده میشود:
$$RMSE=\sqrt{\frac{\sum_{i=1}^{n}(r_i-\hat{r}_i)^2}{n}}$$
در فرمول بالا، $r_i$ مقدار واقعی rating
برای سطر $i$ است و $\hat{r}_i$ نیز مقدار پیشبینی شده مُدل شما برای آن rating
است. همچنین تعداد نمونههای دادگان را از شماره ۱ تا $n$ در نظر بگیرید. در نهایت، امتیاز شما از این مرحله بر اساس فرمول زیر محاسبه میگردد:
$$score=(1.04-RMSE)\times\frac{100}{104}\times200$$
توضیحات
یک تابع تصادفی یا تابعی که همیشه یک امتیاز ثابت را پیش بینی میکند، حداقل RMSE
برابر با ۱.۰۴ برای دادگان این سوال دارد. پس، مدلهایی که RMSE
آنها ۱.۰۴ یا بزرگتر از آن باشد، به عنوان مدل مناسب این مسئله، مورد قبول قرار نمیگیرند و هرمدلی که چنین عملکردی را روی دادگان آزمایش داشتهباشد، امتیازی از این سوال کسب نمیکند.
توجه
لطفا در هنگام کار با این دادگان، به نکات زیر توجه داشته باشید:
- مقدار
RMSE
مدل شما، تا سه رقم اعشار محاسبه (رُند) و در فرمول امتیازدهی بالا، قرار داده میشود. - این سوال، امتیاز منفی ندارد. حتی اگر
score
شما، منفی شود. از این سوال حداقل صفر امتیاز میگیرید. 😜 - بیشترین امتیاز ممکن از این سوال ۲۰۰ و کمترین امتیاز ممکن، صفر است.
خروجی
پیشبینیهای مدل خود بر روی دادگان آزمایش (test.csv
) را در فایلی با نام output.csv
قرار دهید. این فایل باید دارای یک ستون با نام prediction
باشد که ردیف iام آن، پیشبینی شما برای سطر iام دادگان آزمایش باشد (دقت کنید که این ستون باید حتما دارای header
باشد).
بعد از آمادهسازی فایل output.csv
، آن را برای ما بارگذاری کنید.
نمونه خروجی فایل output.csv
(فقط سه خط اول به همراه نام ستون)
prediction
5
1
3
توجه
حتما فایل output.csv
باید دارای ۱۳۱,۳۵۸ سطر (بدون در نظر گرفتن header
) و یک ستون باشد.
همچنین نام ستون بایستی بدون space
در قبل و بعد از نام آن، باشد. در غیر این صورت، سیستم داوری نمرهای به شما نخواهد داد.
پیشبینیهای شما از rating
ها، میتوانند به صورت عدد اعشاری نیز ارسال بشوند.
هشدار 😱
فراموش نکنید که قبل از پایان زمان مسابقه، بایستی تمامی کدهای این مسابقه را از قسمت بارگذاری کُد برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی کنید.
توجه داشته باشید که اگر از jupter notebook
استفاده می کنید بایستی همانند توضیحات قسمت بارگذاری کُد، خروجی .py
را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای jupyter
همانند .ipynb
مورد قبول واقع نخواهند شد.
ارسال پاسخ برای این سؤال