متن کامل آگهی:
باسلام و احترام
می خوام کد آن در زبان ++C بنویسید:
dataset هم دارم
مسئله
سیستمهای توصیهکننده به افراد کمک میکنند تا با ارائه توصیههای شخصیشده بر اساس اولویتهایشان، موارد مورد علاقه خود را پیدا کنند. به عنوان مثال، یک سیستم توصیهکننده میتواند مواردی مانند فیلم، کتاب، هتل یا موسیقی را به افراد توصیه کند. به منظور مدل سازی ترجیحات کاربران از تعاملات گذشته آنها مانند بازدیدهای محصول، رتبه بندی و خرید استفاده می شود. در حوزه تحقیق سیستم های توصیه گر (که زیرشاخه یادگیری ماشین و بازیابی اطلاعات است) الگوریتم های مختلفی توسعه یافته اند که در حال حاضر توسط بسیاری از شرکت های بزرگ مورد استفاده قرار می گیرند. در این پروژه شما الگوریتمهای فیلترینگ مشارکتی مبتنی بر همسایگی (NBCF) را به منظور پیشبینی رتبهبندی فیلم افراد پیادهسازی خواهید کرد. دو نوع اصلی الگوریتم NBCF وجود دارد: مبتنی بر کاربر (UBCF) و مبتنی بر آیتم (IBCF). اجازه دهید هر کدام را با یک مجموعه داده مثال توضیح دهیم.
2 UBCF و IBCF
یکی از مسئله های اساسی در سیستم های توصیه گر، پیش بینی رتبه یک کاربر برای یک آیتم خاص است. به عنوان مثال، با توجه به مجموعه داده در جدول 1، امتیاز کاربر 2 برای فیلم 3 چگونه است؟ اگر بتوانیم این رتبهبندی را پیشبینی کنیم، اگر مقدار بالایی مانند 4 یا 5 باشد، میتوانیم تصمیم بگیریم فیلم 3 را به کاربر 2 توصیه کنیم.
جدول 1: یک مجموعه داده نمونه.
فیلم 1 فیلم 2 فیلم 3 فیلم 4 فیلم 5
کاربر 1: فیلم _1: 1 , فیلم _2: 2 , فیلم_3: 1 , فیلم_4: 1 , فیلم_5 :5
کاربر 2: فیلم _1: 2 , فیلم _2: 3 , فیلم_3: - , فیلم_4: 4 , فیلم_5 :5
کاربر 3: فیلم _1: - , فیلم _2: 5 , فیلم_3: 4 , فیلم_4: 4 , فیلم_5 :2
کاربر 4: فیلم _1: 4 , فیلم _2: 4 , فیلم_3: 3 , فیلم_4: 2 , فیلم_5 :3
کاربر 5: فیلم _1: 3 , فیلم _2: - , فیلم_3:5 , فیلم_4: 2 , فیلم_5 :4
کاربر 6: فیلم _1: 4 , فیلم _2: 2 , فیلم_3: 3 , فیلم_4: 5 , فیلم_5 :4
در سادهترین شکل، UBCF به صورت زیر عمل میکند: برای پیشبینی رتبهبندی کاربر u به آیتم i، ابتدا شبیهترین k کاربر به u (که i را رتبهبندی کردهاند) پیدا میکنیم و رتبهبندی را به عنوان میانگین رتبهبندیهای مشابهترین آنها پیشبینی میکنیم. k کاربر در مورد i. برای یافتن شباهت بین دو کاربر می توان از روش های مختلفی استفاده کرد. در فیلترینگ مشارکتی، ما به رتبهبندی سایر کاربران نگاه میکنیم و کاربرانی را مییابیم که رتبهبندیهای مشابهی دارند. یکی از روش های رایج برای یافتن چنین شباهتی، تشابه کسینوس نامیده می شود.
به عنوان مثال، برای یافتن شباهت بین کاربر 2 و کاربر 5، ابتدا فیلم هایی را پیدا می کنیم که هر دو کاربر امتیاز داده اند. رتبه بندی کاربر 2 و کاربر 5 به این فیلم ها با بردارهای A = [2، 4، 5] و B = [3، 2، 4] داده می شود.
از سوی دیگر، IBCF به این صورت عمل می کند: برای پیش بینی رتبه کاربر u به آیتم i، ابتدا شبیه ترین k موارد به i را پیدا می کنیم (که توسط کاربر u رتبه بندی می شوند) و رتبه را به عنوان میانگین امتیاز پیش بینی می کنیم. کاربر u برای این موارد مشابه k. برای محاسبه شباهت، دوباره می توان از شباهت کسینوس استفاده کرد.
3 ارزیابی مجموعه داده ای که به شما داده می شود یک فایل متنی خواهد بود و فرمت زیر را خواهد داشت (هر خط شامل رتبه بندی یک کاربر خاص به یک فیلم خاص است):
UserID، MovieID، رتبه بندی
10، 100، 5
10، 101، 4
10، 102، 5
11، 100، 5
11، 201، 4
برای آزمایش عملکرد خود یک مجموعه تست مشابه زیر به شما داده می شود:
UserID، MovieID
10، 200
10، 201
10، 202
11, 300
11, 301
همانطور که مشاهده می شود، رتبه بندی ها مخفی هستند، وظیفه شما پیش بینی این رتبه ها و ارسال به وب سایت HackerRank است. شما دو هدف دارید: بهترین پیش بینی ها را انجام دهید و آن را در کمترین زمان انجام دهید. برای انجام بهترین پیشبینیها باید رتبهبندیهای واقعی را تا حد امکان پیشبینی کنید. معیار خطا برای محاسبه امتیازات شما، ریشه میانگین مربعات خطا (RMSE) خواهد بود.
که در آن yi رتبه واقعی و ˆyi رتبه پیش بینی شده است. برای مثال اگر y = [2، 4، 5، 3] و yˆ = [3، 4، 2، 2]
دو مسابقه جداگانه برگزار خواهد شد. یکی از آنها برای اندازه گیری عملکرد پیش بینی و دیگری برای اندازه گیری عملکرد زمانی استفاده خواهد شد. شما باید کد یکسانی را برای هر دو مسابقه ارسال کنید، در غیر این صورت مطالب ارسالی شما معتبر نخواهد بود و امتیازی دریافت نمی کنید. جزئیات بیشتر در مورد این ارسال توسط TA شما داده خواهد شد
4 ساخت مدل و آزمایش
شرح فوق در مورد UBCF و IBCF یک توضیح ساده و کلی است. شما آزاد هستید که از انواع مختلف این روش ها استفاده کنید، به خصوص می توانید معیارهای شباهت مختلف (به غیر از کسینوس) را امتحان کنید. می توانید اطلاعات بیشتری در مورد NBCF در بسیاری از منابع وب بیابید. شما آزاد هستید که از هر روشی که دوست دارید استفاده کنید (به غیر از UBCF و IBCF) اما باید حداقل UBCF یا IBCF را پیاده سازی کنید و نشان دهید که کار می کند. از آنجایی که فایل رتبه بندی ارائه شده یک فایل حجیم خواهد بود، سعی کنید بهترین ساختار داده و الگوریتم های (کارآمد) را برای اعمال UBCF و IBCF بیابید. قبل از ارسال پیشبینیهای خود، ممکن است بخواهید آزمایشهای آفلاین انجام دهید. در ساده ترین شکل آن می توانید داده های خود را به مجموعه های آموزشی و آزمایشی تقسیم کنید. مجموعه آزمون ممکن است با انتخاب تصادفی یک زیرمجموعه ساخته شود