پیشنهاد محصول


توضیح تصویر

شرکت‌های مختلف مجموعه اسنپ نیاز به استفاده از سیستم‌های پیشنهاددهنده، جهت پیشنهاد محصول به مشتریان خود دارند. آن‌ها می‌توانند با استفاده از تاریخچه امتیاز مشتریان به محصولات مختلف، اقدام به پیشنهاد محصول بکنند، به‌ گونه‌ای که مشتری از محصول پیشنهاد شده استقبال بکند. 😎

به‌عنوان مثال:

  • اسنپ‌تریپ می‌تواند هتل‌هایی را به مسافران پیشنهاد دهد که مسافران مشابه، از آن‌ها راضی بوده‌اند. توضیح تصویر ‌ ‌ ‌
  • اسنپ‌فود می‌تواند بر اساس امتیاز مشتریان به رستوران‌ها و یا غذاها اقدام به پیشنهاد رستوران/غذا به مشتریان دیگر بکند. توضیح تصویر

  • اسنپ‌شاپ می‌تواند محصولاتی که سیستم پیشنهاد‌دهنده احتمال می‌دهد امتیاز بالایی از سمت یک سری از مشتریان کسب کند را به آن‌ها با تخفیف شخصی‌سازی شده، پیشنهاد بدهد. توضیح تصویر
چند دقیقه برای تفکر 🤔

به نظر شما، هر یک از شرکت‌های دیگر مجموعه اسنپ که در زیر آورده شده‌اند، چه استفاده‌ای از یک سیستم پیشنهاد‌دهنده می‌توانند داشته‌ باشند؟

جواب سوال بالا، جزوی از سوال مسابقه نیست و صرفا جهت تفکر و آشنایی شماست. 🤗

توجه داشته‌ باشید که حتی‌ می‌توان از روی تحلیل احساس نظرات (سوال ۳ این مسابقه)، برای محاسبه امتیازی که هر مشتری به یک محصول می‌دهد، استفاده کرد. 😉

بیشتر بدانید 📚

سیستم‌های پیشنهاد‌دهنده دارای سابقه طولانی هستند. به عنوان مثال، می‌توانید از اینجا در مورد مسابقه سیستم‌ پیشنهاددهنده شرکت پخش فیلم 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=i=1n(rir^i)2nRMSE=\sqrt{\frac{\sum_{i=1}^{n}(r_i-\hat{r}_i)^2}{n}}

در فرمول بالا، ‍‍rir_i مقدار واقعی ‍‍rating برای سطر ‍‍ii است و r^i\hat{r}_i نیز مقدار پیش‌بینی شده مُدل شما برای آن ‍‍‍‍rating است. همچنین تعداد نمونه‌های دادگان را از شماره ۱ تا nn در نظر بگیرید. در نهایت، امتیاز شما از این مرحله بر اساس فرمول زیر محاسبه می‌گردد: score=(1.04RMSE)×100104×200score=(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
Plain text
توجه

حتما فایل output.csv باید دارای ۱۳۱,۳۵۸ سطر (بدون در نظر گرفتن header) و یک ستون باشد.

همچنین نام ستون بایستی بدون space در قبل و بعد از نام آن، باشد. در غیر این صورت، سیستم داوری نمره‌ای به شما نخواهد داد.

پیش‌بینی‌های شما از ratingها، می‌توانند به صورت عدد اعشاری نیز ارسال بشوند.

هشدار 😱

فراموش نکنید که قبل از پایان زمان مسابقه، بایستی تمامی کد‌های این مسابقه را از قسمت بارگذاری کُد برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی ‌کنید.

توجه داشته باشید که اگر از jupter notebook استفاده می کنید بایستی همانند توضیحات قسمت بارگذاری کُد، خروجی .py را دریافت و برای ارسال در نظر بگیرید. ارسال فایل‌های jupyter همانند ‍‍.ipynb مورد قبول واقع نخواهند شد.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.