سیستم توصیه گر (Recommendation System) چیست؟

مدرس: مسعود کاویانی

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

فرض کنید شما یک وب سایت خبری یا تفریحی با صفحاتِ مختلف دارید. هر کاربر می‌تواند به وب‌سایتِ شما مراجعه کرده و چند صفحه‌ی مختلف را مشاهده کند. اجازه دهید مثل دروس گذشته (طبقه‌بندی چیست؟ و خوشه.بندی چیست؟)، جدول یا همان ماتریس کاربران و صفحات را این‌بار برای کاربران و صفحات در وب‌سایت رسم کنیم:

سیستم توصیه گر

تفسیر ماتریسِ بالا بسیار ساده است. هر سطر از این ماتریس یک کاربر را نمایش می‌دهد، این در حالی است که هر ستونِ این ماتریس بیان‌گر یک صفحه از وب‌سایت است. همان‌طور که می‌بینید، کاربرِ شماره‌ی ۱، صفحاتِ ۲ و ۶ را مشاهده کرده ولی از بقیه صفحات بازدید نداشته است. کاربرِ شماره ۲ نیز صفحات ۱ و ۵ را مشاهده کرده است. فرض کنید که حدودِ ۵۰ هزار کاربر داریم و در حدودِ ۱۰۰۰ صفحه (که در ماتریسِ بالا به صورت کامل نشان داده نشده است). به راحتی می‌توانید ماتریس بالا را برای این کاربران و صفحات به صورتِ یک پایگاه داده ایجاد کنید.

با ایجاد این ماتریس و تزریق آن به الگوریتم‌های سیستم‌های توصیه‌گر (recommendation systems)، الگوریتم از این ماتریس یادگرفته و می‌تواند در مواقعِ لازم توصیه‌های مختلف را به کاربرانِ وب‌سایت ارائه دهد. مثلاً فرض کنید در مثالِ بالا یک کاربرِ جدید وارد سیستم شده است و صفحاتِ ۱ و ۴ را بازدید کرده است. سیستم با توجه به معیارهای مختلف یک سیستمِ توصیه‌گر و با توجه به کاربران قبلی این وب سایت که صفحات ۱ و ۴ یا یکی از این دو صفحه را مشاهده کرده‌اند، می‌تواند یک صفحه جدید (مثلاً صفحه شماره ۱۰) را به کاربر حاضر پیشنهاد دهد. چون به احتمال زیاد این کاربر نیز، به آن صفحه‌ی جدید علاقه دارد – با توجه به رفتار کاربران قبلی. توجه کنید مثلاً کاربران قبلی معمولا صفحات ۱ و ۴ و ۱۰ را با هم مشاهده می‌کردند. در واقع این‌جا از رفتار کاربران قبلی، سیستم به این نتیجه رسیده است که احتمالاً کاربرِ جدید نیز، به صفحه‌ای مانند صفحه‌ی ۱۰ علاقه دارد)

سیستم‌های توصیه‌گر و الگوریتم‌های آن‌ها بسیار وسیع هستند. از الگوریتم‌های نزدیک‌ترین همسایه (Nearest Neighbors) تا الگوریتم های Apriori، Eclat و FG Growth. همچنین روش‌های ترکیبی با خوشه‌بندی نیز (که در مثال یادگیری ماشین گفته شد) می‌تواند جهت سرعت بخشیدن و دقتِ بالاتر در این سیستم‌ها استفاده گردد.

کاربردهای سیستم های توصیه‌گر  می‌تواند بسیار گسترده باشند. به جز مثال بالا که در مورد کاربرانِ وب‌سایت‌ها بود، در موردِ خریدارانِ کالاهای مختلف و توصیه‌ی یک کالای جدید به کاربرانِ جدید نیز می‌توان از سیستم‌های توصیه‌گر استفاده کرد. در market placeهای مختلف مانند Google Play و یا Apple Store نیز می‌توان سیستمِ توصیه‌گر را پیاده سازی کرد. به این صورت که با توجه به نرم افزارهایی که یک شخص دانلود کرده است، نرم افزارِ جدیدی (مطابق با رفتار کاربران دیگر) به این کاربر پیشنهاد گردد. حتی در بازارِ عمده فروشی مثل عمده فروشی موادِ غذایی نیز می‌توان این سیستم‌های توصیه‌گر را به صورت وسیع به کار گرفت. مثلاً اگر یک خریدار چند محصول را با هم خرید کند، از میانِ رفتارِ مشتریانِ قبلی، می‌توان یک یا چند محصولِ جدیدِ دیگر را به این خریدار پیشنهاد داد.

ترتیب پیشنهادی خواندن درس‌های این مجموعه به صورت زیر است:

6 دیدگاه دربارهٔ «سیستم توصیه گر (Recommendation System) چیست؟»

  1. سلام و روز بخیر
    فرق اصلی الگوریتم های سیستم های توصیه گر و یادگیری ماشین و داده کاوی در چیه؟
    چون کار اصلی که همه ی اونها انجام میدن تقریبا میشه گفت یکی عه! ولی تفاوت فقط در اسم عه! یا یک تفاوت پایه ای و اصلی با هم دارن. ممنون میشم بیشتر توضیح بدین

    1. سلام و ممنون از توجه شما
      در واقع بسیاری از سیستم های توصیه گر(به جز آنهایی که با روش های آماری محض کار میکنند) زیر مجموعه ای از الگوریتم های یادگیری ماشین هستند و زیاد هم درگیر اسم ها نشویم. اسم ها بیشتر برای مدل کردن و تفکیک یادگیری هستند

  2. سلام
    من می خواهم در مورد سیستم های توصیه گر و بهبود نتایجش ( البته با الگوریتم های تکاملی )تحقیق کاملی داشته باشم ،ممون خواهم بود اگر برایم سورس معرفی فرمایید ، هر سورسی که فکر می کنید مفید می تواند باشد ،باز هم تشکر می کنم.(yaran110@gmail.com)

  3. ضمن تشکر از سایت بسیار بسیار خوبتون ، سوالی که داشتم این است که این الگوریتم ها برای چه میزان دیتا مفید است . در cheat sheet سایت scikit-learn برای برخی الگوریتم ها شرط تعداد نمونه گذاشتته این موضوع رو جواب نهایی تاثیر میذاره ؟ و در مواردی که به یک الگوریتم مانند همین KNN لازم داریم اما تعداد نمونه بالای یک میلیون است چه روشی برای افزایش سرعت پیشنهاد می کنید ؟

  4. سلام علیکم استاد. ببخشید یک سوالی در مورد دوره ی علم داده با پایتون دارم. جسارتا آیا برگزاری این دوره به صورت مجازی است یا حضوری؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *