احتمالاً شما هم از آن دست کاربرانی باشید که یک سری محصول خاص را بصورت دورهای مصرف میکنید و زمانی که آن محصول مصرف شد، نوبت خرید دوباره فرا میرسد. هدف ما در این مسأله تشخیص همین عادتهای خرید (Purchase Habits) و پیشنهاد خرید بعدی به کاربران است. با این کار کاربران زمان کمتری را صرف پیدا کردن محصولات موردنظرشان میکنند.
همانطور که گفته شد، هدف ما این است که دریابیم هر کاربر در دیجیکالا چه محصولاتی را بصورت دورهای خریداری میکند. بصورت دقیقتر، میخواهیم بفهمیم که کاربر U
کالای P
را هر چند روز یک بار خریداری میکند و وقتی که موعد خرید بعدیاش رسید، به وی پیشنهاد خرید کالا را بدهیم. طبیعتاً برای این کار به تاریخچهی خرید کاربرها نیاز داریم که در بخش بعدی در مورد آن صحبت خواهیم کرد.
شما ابتدا باید هر جفت «کاربر-محصول» را جدا کرده و سپس سعی کنید با تست کردن الگوریتمهای مختلف پیشبینی کنید که تاریخ خرید بعدی این کاربر از همین محصول چه زمانیست. روند مسأله ساده بوده و کار اصلی شما تلاش برای پیدا کردن دقیق دوره برای هر جفت «کاربر-محصول» و پیشنهاد تاریخ خرید بعدی است.
به عبارت «جفت» دقت کنید. در آخر شما باید به ازای هر جفت، یک تاریخ خروجی بدهید.
ابتدا فایل تاریخچهی خرید و فرمت جوابی که باید آپلود کنید را از این لینک دریافت کنید. فایل purchase_history.csv
بخشی از خریدهای کاربران و تاریخشان را شامل میشود (البته آخرین خرید آنها حذف و برای ارزیابی نگهداری شده است). شما میبایست عملیاتتان را روی فایل purchase_history.csv
انجام داده و خروجی را درون فایل answer.csv
ذخیره کنید. چند ردیف از فایل purchase_history.csv
را در جدول زیر مشاهده میکنید:
user_id | product_id | created_at |
---|---|---|
6823506 | 1015421 | 2019-06-10 |
11886162 | 5622949 | 2019-11-27 |
در بخش قبلی اشاره شد که آخرین خرید هر جفت «کاربر-محصول» برای ارزیابی برداشته میشود و جواب شما نیز با همان آخرین خرید مقایسه خواهد شد. فرمول ارزیابی میانگین وزندار تفاوت پیشبینی شما از تاریخ خرید بعدی و تاریخ اصلی خرید بعدی هر جفت «کاربر-محصول» در نظر گرفته شده و طبق روند زیر محاسبه میشود:
در فرمول بالا:
score
است. score=100
) یعنی میانگین اختلاف روزهای پیشبینیشده ۰ بوده و بدترین جواب (score=0
) یعنی شما به طور میانگین ۱۰۰ روز از حالت واقعی فاصله داشتهاید. طبیعتاً شما باید تلاش کنید که score
به بیشترین مقدار (۱۰۰) برسد.score
خواهد بود. برای مثال اگر فردی تمامی تاریخها را ۵ روز دیرتر پیشبینی کرده باشد، مقدار score
وی برابر با ۹۵ خواهد بود.error
شما وزن بیشتری دریافت کند (به اصطلاح بیشتر punish شوید).برای ارسال جواب این سوال، شما میبایست تاریخ خرید بعدی هر جفت «کاربر-محصول» را درون جدول answer.csv
ذخیره کرده (بدون دو ستون اول) و این فایل را zip
کرده و آپلود کنید. به موارد زیر هنگام ساختن فایل خروجی دقت کنید:
next_purchase
نگهداری شود.answer.csv
باشد.header
ستون گذاشته شود.index
خودداری کنید.zip
اهمیتی ندارد.answer.csv
🔗فایل خروجی شما (answer.csv
) باید دارای یک ستون و ۳۱۸,۰۵۰ ردیف (بدون احتساب header
) باشد. همچنین ترتیب تاریخهای نوشتهشده باید مثل همان ترتیب اولیه در فایل answer.csv
باشد وگرنه نمرهی شما اشتباه محاسبه خواهد شد.