سیستم های پیشنهاد دهنده سیستم هایی هستند که در پیدا کردن و انتخاب نمودن آیتم های مورد نظر کاربران به آنها کمک می کنند. طبیعی است که این سیستم ها بدون در اختیار داشتن اطلاعات کافی و صحیح در مورد کاربران و آیتم های مورد نظر آنها (بعنوان مثال فیلم، موزیک، کتاب و ...)  قادر به پیشنهاد دادن نمی باشند. بنابراین یکی از اساسی ترین اهداف آنها جمع آوری اطلاعات گوناگون در رابطه با صلایق کاربران و آیتم های موجود در سیستم است. منابع و روش های گوناگونی برای جمع آوری چنین اطلاعاتی وجود  دارد. یک روش جمع آوری اطلاعات بصورت صریح که در آن کاربر صراحتا اعلام می کند که به چه چیز هایی علاقه دارد ( بعنوان نمونه با امتیاز دادن (rate) به یک موزیک). روش دیگر روش ضمنی  است که کمی دشوار تر است و در آن سیستم باید صلایق کاربر را با کنترل و دنبال کردن رفتار ها و فعالیت های او بیابد ( بعنوان مثال باید ببینید کاربر به چه موزیک هایی بیشتر گوش می دهد، چه صفحاتی را بازدید می کند، با چه کسانی در ارتباط است و ...). علاوه بر اطلاعات ضمنی و صریح برخی از سیستم ها نیز هستند که از اطلاعات شخصی کاربران استفاده می کنند. بعنوان مثال سن، جنسیت و ملیت کاربران می تواند منبع خوبی برای شناخت کاربر  و ارائه پیشنهاد به وی باشد. به این گونه از اطلاعات Demographic Information گفته می شود که گروهی از سیستم های پیشنهاد دهنده مبتنی بر همین اطلاعات بنا شده اند. با ظهور web 2 و گسترش شبکه های اجتماعی در سال های اخیر محققین به منبع اطلاعاتی دیگری برای بهبود کیفیت پیشنهاد ها پی بردند  که همان اطلاعات موجود در شبکه های اجتماعی بود  و بر همین اساس کار های تحقیقاتی زیادی در این حوزه شکل ریزی گردید.

اهمیت سیستم های پیشنهاد دهنده وقتی بیش از پیش مشخص می شود که کاربران با انبوهی از اطلاعات و آیتم ها مواجه باشند. در چنین شرایطی سیستم باید پیشنهاد های خود را با در نظر گرفتن موارد زیر به کاربر دهد :

  • شرایط و محیطی که کاربر در ان قرار دارد (user context)
  • نیاز کاربر
  • دانش سیستم در مورد کاربر
  • سابقه فعالیت های کاربر

هر کدام از موارد بالا، زمینه ظهور گروهی از سیستم های پیشنهاد دهنده بوده است. بعنوان مثال شرایط و محلی که کاربر در آن قرار  دارد باعث پیدایش گروهی از سیستم های پیشنهاد دهنده بنام context-aware recommender system شده است. و یا دانش سیستم از کاربر، زمینه ظهور سیستم های پیشنهاد دهنده مبتنی بر دانش   (knowledge-based RS)را فراهم آورده است.

 

اصول سیستم های پیشنهاد دهنده :

برای پایه ریزی و ایجاد یک سیستم پیشنهاد دهنده کارا مواردی وجود دارند که باید به آنها توجه نمود و در پروسه طراحی و پیاده سازی سیستم آنها را باید در نظر گرفت. این موارد به شرح ذیل می باشند:

  • نوع داده های موجود در بستر سیستم. بنا به کاربرد سیستم ممکن است انواع مختلفی از منابع اطلاعاتی در سیستم وجود داشته باشد. این اطلاعات می توانند امتیاز های کاربران به آیتم ها (ratings)، اطلاعات شخصی کاربران، محتوای مربوط به آیتم های سیستم، ارتباطات موجود در شبکه های اجتماعی و اطلاعات مربوط به موقعیت کاربر(location-aware information) باشند. طبیعی است که در پروسه طراحی یک سیستم پیشنهاد دهنده باید به نوع داده های در اختیار توجه بسیار نمود.

 

  • الگوریتم فیلترینگ مورد استفاده. هدف سیستم های پیشنهاد دهنده در واقع رتبه بندی آیتم های سیستم به لحاظ نزدیک بودن به علایق کاربران می باشد تا در هنگام ارائه پیشنهاد آیتم هایی با رتبه بالاتر را به کاربر پیشنهاد دهند. برای این منظور الگوریتم های متعددی پیشنهاد شده اند که مهمترین آنها عبارتند از :
  • Collaborative Filtering
  • Content-based Filtering
  • Social-based Filtering
  • Knowledge-based Filtering
  • Context-aware Filtering
  • Hybrid Filtering

 

  • مدل انتخابی برای سیستم. در حال حاظر برای پیاده سازی سیستم های پیشنهاد دهنده دو راهکار استفاده می شود. یکی استفاده مستقیم از داده های موجود سیستم است که به این راهکار، روش مبتنی بر حافظه یا memory-based گفته می شود و دیگری که کمی هوشمند تر است استفاده از یک مدل در سیستم است که بدان راهکار مبتنی بر مدل یا model-based  گفته می شود (استفاده از الگوریتم های ژنتیک، شبکه های عصبی، فازی).
  • تکنیک مورد استفاده در پیشنهاد دادن. راهکار ها و تکنیک های مختلفی برای پیاده سازی هسته یک سیستم پیشنهاد دهنده وجود دارد. بعنوان مثال می توان از الگوریتم های ژنتیک، شبکه های عصبی، شبکه های Bayesian، روش های احتمالی و یا الگوریتم های هماسیگی برای پیاده سازی هسته چنین سیستم هایی استفاده می شوند.
  • مقیاس پذیری مورد انتظار سیستم.
  • کارایی مطلوب سیستم ( از نظر میزان حافظ مصرفی و زمان).
  • کیفیت نتایج قابل ارائه. نتایجی که یک سیستم پیشنهاد دهنده ارائه می دهد می تواند با توجه به کاربرد آن و اینکه در چه حوزه ای از بازار کسب و کار در حال استفاده است متفاوت باشد. بعنوان مثال در برخی از سیستم ها ممکن است هدف ارائه جدید ترین ها باشد (novelty) در حالی که در برخی دیگر هدف می تواند پوشش دادن به تمامی آیتم ها باشد. بطور کلی در سیستم های پیشنهاد دهنده هدف فراهم آوردن سه فاکتور تازگی(novelty) ، دقت (precision)  و پوشش (coverage) در نتایج پیشنهادی است.

 

روش ها و الگوریتم های فیلترینگ :

بدون شک اساسی ترین جزء در سیستم های پیشنهاد دهنده الگوریتم و راهکار فیلترینگ آن می باشد. در ادامه به مهمترین راهکارهای مورد استفاده در این زمینه خواهیم پرداخت :

 

Collaborative Filtering:

یکی از مهمترین و پراستفاده ترین روش های فیلترینگ در سیستم های پیشنهاد دهنده روش Collaborative Filtering می باشد که پایه و مبنای کار در بسیاری از راهکار های دیگر نیز بشمار می رود. روش کار این الگوریتم در واقع به همان صورتی است که ما در تصمیم گیری های روزمره مان عمل می نماییم. بعنوان مثال کالایی را می خریم که بیشتر مورد پسند دیگران واقع شده باشد (مثلا در دنیای تجارت الکترونیک امتیازهای (rate) بیشتری به آن داده شده باشد). بنابراین می توان گفت در روش Collaborative Filtering آنچه مد نظر قرار داده می شود، بیشتر تجربه دیگران است تا خود فرد.

در این روش ابتدا باید اجازه داد تا کاربران در سیستم مشارکت نمایند و به آیتم های مختلف موجود در سیستم امتیاز دهند. البته این امتیاز دادن ها می توان به صورت ضمنی نیز اتفاق بیفتد و توسط سیستم تشخیص داده شود. بعنوان مثال یک نوع امیتاز دادن ضمنی می توان بدین شکل باشد که آیتم هایی که بیشتر دانلود شده اند احتمالا از محبوبیت بیشتری برخوردار بوده اند و در نتیجه امتیاز بیشتری نسبت به بقیه به آنها داده می شود.

توجه داشته باشید که در این راهکار سیستم بر مبنای امتیازات، آیتم ها را رتبه بندی می کند و آیتم هایی با بیشترین امتیاز را به کاربر پیشنهاد می دهد. بهمین دلیل در صورتی که سیستم تازه شروع به کار کرده باشد و یا آیتم جدیدی به سیستم اضافه شود، اطلاعات کافی از آیتم ها در دسترس نخواهد بود و در نتیجه نمی توان به درستی امتیاز دهی و رتبه بندی را انجام داد. این یکی از مشکلات اساسی و مهم در اینگونه سیستم هاست که با عنوان شروع سرد (Cold Start) شناخته می شود. البته این سیستم ها از مشکل دیگری نیز رنج می برند که پراکندگی داده ها (Data Sparsity) می باشد. بدین معنی که اطلاعات در سیستم وجود دارد اما پراکنده هستند و نمی توان بدرستی و با قطعیت گفت که چه آیتمی مقبولیت بیشتری دارد.

 

مشکل Cold-Start و Data Sparsity:

همانطور که گفته شد یکی از مهمترین مشکلاتی که سیستم های پیشنهاد دهنده مبتنی بر CF با آن مواجه هستند، مسئله Cold-start می باشد. این مشکل زمانی ایجاد می شود که بمنظور ارائه پیشنهاد، اطلاعات لازم و کافی (ratings) در سیستم وجود نداشته باشد. این حالت ممکن است به یکی از دلایل زیر رخ دهد.

  • شروع کار سیستم پیشنهاد دهنده – راهکاری که در چنین حالاتی پیشنهاد می شود اینست که با استفاده از روش های مناسب کاربران را تشویق به دادن رای به آیتم ها نماییم و زمانی اقدام به پیشنهاد به کاربر کنیم که به اندازه کافی اطلاعات جمع آوری شده باشد.
  • ورود کاربر جدید به سیستم – مهمترین مشکل برای سیستم های پیشنهاد دهنده مبتنی بر CF زمانی است که کاربر جدیدی وارد سیستم می شود. در این صورت اطلاعات کافی در مورد آیتم ها وجود دارد اما از آجا که کاربر جدید الورود هنوز به آیتمی رای نداده است نمی توان از روش های معمول مورد استفاده در CF استفاده نمود. برای حل چنین مشکلی در سیستم، عموما CF را با دیگر روش های رایج در سیستم های پیشنهاد دهنده ترکیب می کنند و یک سیستم ترکیبی (Hybrid) را می سازند (مثلا CF  با Content-based Filtering).
  • درج آیتم جدید در سیستم – عموما آیتم های جدید دارای هیچ امتیازی (rate) نمی باشند. بر همین اساس در لیست پیشنهادات هرگز آورده نمی شوند و از دیدگاه کاربران نیز پنهان می مانند. این مسئله باعث می شود که در آینده نیز به آنها هیچ امتیازی داده نشود. البته این مسئله در سیستم های RS از اهمیت بالایی برخوردار نیست و می توان بر اساس روش ها و ابزار های دیگری این آیتم ها را به کاربران نشان داد تا به آنها رای دهند.

بدلیل مشکلات cold-start و نیز پراکندگی داده ها عموما سیستم های CF را بصورت ترکیبی با سایر راهکار ها بکار می برند تا از مزایای آنها بهره مند شده و در عین حال معایب آن را نیز بر طرف نمایند. بعنوان مثال یکی از راهکار هایی که پیشنهاد شده است پیاده سازی Collaborative Tagging  در یک سیستم مبتنی بر Collaborative Filtering است تا بتوان صلایق کاربران را شناخت و آیتم ها را بر اساس تمایلات کاربران دسته بندی نمود.

یکی دیگر از راه های مقابله با مشکلات ذکر شده استفاده از تکنیک های خوشه بندی (clustering) می باشد که عموما برای حل مشکل cold-start بکار گرفته می شود. در این روش می توان آیتم ها یا کاربران و یا هر دوی آنها (bi-clustering) را خوشه بندی کرد. این تکنیک ها علاوه بر برطرف کردن مشکل ذکر شده باعث بهبود کارایی سیستم پیشنهاد دهنده نیز می گردند.

برای برطرف نمودن مشکل پراکندگی داده ها (data sparsity) نیز عموما از تکنیک های dimensionality reduction استفاده می شود. در کنار این روش، تکنیک های Latent Semantic Index و Singular Value Decomposition نیز وجود دارند. در مورد تکنیک SVD باید گفت که علیرغم نتایج بسیار خوب، این تکنیک سربار پردازشی بالایی دارد و از آنها بهتر است در کاربرد های آفلاینی استفاده نمود که تغییرات زیادی در اطلاعات آنها وجود ندارند.

 

الگوریتم KNN  یا K Nearest Neighbors:

رایجترین الگوریتم مورد استفاده در روش CF، الگوریتم KNN می باشد. در این الگوریتم دو رویکرد وجود دارد. رویکرد اول نگاهی کاربر به کاربر یا user-to-user به سیستم دارد. الگوریتم هایی که بر مبنای این نگاه پیاده سازی می شوند شامل سه گام هستند :

گام اول -  در این گام بر اساس یک معیار شباهت (cosine، Pearson Correlation،  Mean square difference)  برای کاربر a  تعداد k همسایه انتخاب می شود. این همسایگان، آنهایی هستند که بیشترین شباهت را به کاربر aدارند.

گام دوم - در گام دوم به ازای تمامی آیتم های موجود در سیستم معیاری کمی برای پیشبینی (prediction) آنکه آیا آیتم i مورد پسند کاربر a  قرار خواهد گرفت یا خیر محاسبه می شود.  محاسبه این معیار کمی با استفاده از راهکار های مختلفی (میانگین امتیازات (average)، حاصل جمع وزن دار (weighted sum) و ...)  از روی امتیاز هایی که همسایگان کاربر a به آیتم i داده اند حاصل می شود.

گام سوم – بر اساس گام دوم، از بین تمامی آیتم ها N آیتمی که بیشتری مقدار پیشبینی را دارند به کاربر پیشنهاد داده می شوند.

 

از جمله مزیت های این الگوریتم سادگی و در عین حال دقت نتایج حاصل از آن است. البته دو مشکل اساسی نیز دارد که عبارتند از مقیاس پذیری کم (scalability)  و آسیب پذیری در مقابل پراکندگی داده ها (sparsity) در پایگاه داده. با افزوده شدن کاربر جدید به سیستم معیار های شباهت و مقادیر پیشبینی ها باید مجددا حساب شوند که با افزایش تعداد کاربران و بزرگ شدن سیستم این مسئله سر بار محاسباتی زیادی را به سیستم وارد  می آورد و مشکل ساز می شود.

برای حل مشکل مقیاس پذیری در این الگوریتم، نسخه دیگری از آن با رویکردی متفاوت ارائه شده است. این رویکرد نگاه آیتم به آیتم (item-to-item) دارد و توانسته است مشکل مقیاس پذیری را تا حد قابل توجهی کاهش دهد. در این نسخه نیز سه گام اصلی دیده می شود که به شرح زیر می باشند :

گام اول – ابتدا بر اساس معیارهای شباهت برای هر آیتم i تعداد q همسایه را تعیین می کنیم.

گام دوم – در صورتی که کاربر a به آیتم  i تاکنون امتیازی نداده باشد، بر اساس امتیازاتی که این کاربر به آیتم های همسایه i داده است مقدار پیشبینی (prediction) را محاسبه می کنیم.

گام سوم – بر اساس مقادیر پیشبینی ها (recommendations) آیتم هایی را که بیشترین مقدار پیشبینی را دارند به کاربر a پیشنهاد می کنیم.

 

تعیین میزان شباهت :

اساس کار در سیستم های پیشنهاد دهنده مبتنی بر CF تعیین میزان شباهت بین کاربران و آیتم هاست تا بر اساس آن بتوان هماسیگی را بدست آورد. برای این منظور نیاز به یک معیار شباهت وجود دارد. در روش های سنتی شباهت بر اساس امیتاز دهی (ratings) تعیین می شد. بدین گونه که اگر اگر دو کاربر به یک آیتم رای می دادند سیستم نتیجه می گرفت که شباهتی بین این دو آیتم وجود دارد. در مورد آیتم ها نیز این مسئله به گونه ای دیگر قابل تعریف است. بدین صورت که در صورتی که به دو آیتم توسط کاربران یکسانی رای می دادند سیستم احتمال می داد که شباهتی بین این دو آیتم وجود دارد.

در کنار این معیار، موارد دیگری نیز مطرح هستند که از آنها در تعیین شباهت بین کاربران و آیتم ها استفاده می شود. برخی از این معیار ها عبارتند از :

Pearson Correlation، Cosine ، Adjusted Cosine، Mean Square Difference و Constraint Correlation

با ظهور Web 2 و گسترش شبکه های اجتماعی این روز ها گرایش به سمت استفاده از پتانسیل موجود در این شبکه در امر تعیین میزان شباهت و ارائه پیشنهادات دقیق تر بوجود آمده است. بر همین مسائل مسائلی همچون trust، Credibility و reputation نیز در تعیین میزان شباهت استفاده می شود.

 

Demographic Filtering:

اطلاعاتی نظیر سن، جنسیت، ملیت و ... در گروه اطلاعات دموگرافیک (Demographic) قرار می گیرند. سیستم هایی که از این روش استفاده می کنند بر این اساس عمل می کنند که کاربرانی که صفات دموگرافیک مشابهی دارند (مثلا در یک بازه سنی قرار می گیرند) احتمالا صلایق و خواسته ها مشابهی نیز دارند.

 

Content-based Filtering:

بر خلاف روش قبلی که پیشنهاد ها بر اساس تجربیات دیگران داده می شد، در Content-based Filtering تکیه بر اطلاعات و صلایق کاربر جاری است، بدین شکل که برای ارائه پیشنهاد، به انتخاب ها و تجربیات وی در گذشته توجه می شود. عموما در چنین روش هایی نیاز به تحلیل و آنالیز اطلاعات و محتویات (contents) مربوط به کاربر و آیتم های موجود در سیستم است تا بتوان میزان شباهت بین کاربر و آیتم های سیستم (و نیز شباهت بین آیتم ها با یکدیگر) را تعیین نمود. در نتایج پیشنهادی به کاربر، آیتم هایی آورده می شوند که شباهت بیشتری به آیتم هایی دارند که قبلا کاربر آنها را انتخاب نموده است. نکته مهم و اساسی در چنین سیستم هایی انتخاب یک معیار شباهت (similarity measure) می باشد.

روش Content-based Filtering دارای دشواری ها و معایبی می باشند که عبارتند از :

  • دشوار بودن استخراج داده ها و اطلاعات در مورد آیتم ها و کاربران. در این روش هدف پیدا نمودن شباهت بین آیتم های مختلف بر اساس صفات و محتویات آنهاست که در برخی از کاربرد ها و حوزه ها (مانند موزیک، ویدئو  وب لاگ ها) این کار بسیار پیچیده و دشوار است. در این روش نیاز به راهکار هایی برای استخراج صفات بصورت خود کار می باشد.
  • مشکل overspecialization. در طول حیات سیستم، تلاش بر این است که آیتم هایی به کاربر پیشنهاد داده شوند که شباهت بیشتری به آیتم های انتخاب شده توسط او در گذشته داشته باشند. این باعث می شود که آیتم هایی که ممکن است مورد پسند کاربر باشند ولی شباهتی به آیتم های انتخاب شده در گذشته ندارند، به کاربر هر گز پیشنهاد داده نشوند و از دید وی مخفی بمانند.
  • عدم امکان گرفتن بازخورد کاربران.  معمولا در سیستم هایی که از این راهکار استفاده می کنند امکان گرفتن بازخورد (feedback) از کاربران وجود ندارد. بعنوان مثال در چنین سیستم هایی معمولا کاربران به آیتم ها امتیاز نمی دهند (برخلاف آنچه در مورد سیستم های CF داشتیم). این مسئله باعث می شود که نتوان دریافت که آیا پیشنهاد داده شده به کاربر صحیح بوده است با خیر.

بدلیل وجود چنین معضلاتی معمولا این راهکار را بصورت ترکیبی با راهکار های دیگر مورد استفاده قرار می دهند. بعنوان مثال یکی از کارهای خوب در زمینه ایجاد سیستم های hybrid ترکیب Content-based Filtering با شبکه های اجتماعی بوده است. در چنین سیستم هایی علاوه بر ratings از اطلاعات موجود در شبکه های اجتماعی مانند کامنت ها، بلاگ ها، ارتباطات بین دوستان، like ها و followers استفاده می شود تا بتوان کیفیت و دقت نتایج را بهبود داد.

 

گام های روش CBF:

در روش Content-based Filtering سه گام اصلی وجود دارد:

  • استخراج صفات (attributes) مربوط به آیتم ها – برای آنکه یک سیستم مبتنی بر CBF بخوبی عمل نماید، ابتدا می بایست صفات مربوط به آیتم ها استخراج شوند. عموما بیشتر صفات بطور صریح همراه با آیتم ها در سیستم درج می شوند. بنابراین استخراج اینگونه صفات با مشکل خاصی مواجه نمی باشد. اما گروهی دیگر از صفات هستند که بر اساس دامنه (domain) سیستم، برای استخراج آنها باید از تکنیک های خاصی استفاده نمود. بعنوان مثال در سیستم هایی که آیتم ها اسناد متنی هستند، می بایست از روش های کلاسیک بازیابی اطلاعات (information retrieval) استفاده نمود تا بتوان به صفاتی از قبیل term frequency،  inverse document frequency و document length دست پیدا کرد.
  • مقایسه صفات آیتم ها با صلایق کاربر – پس از مشخص شدن صفات آیتم ها باید تحلیل هایی صورت پذیرد که نشان دهد آیتم های موجود در سیستم تا چه اندازه با علایق کاربر همخوانی دارند که این کار عموما با استفاده از روش هایی از قبیل روش های اکتشافی (heuristic) و یا الگوریتم های classification انجام می شود.
  • پیشنهاد دادن آیتم هایی که شباهت بیشتری به صلایق کاربر دارند.

 

گرایش موجود در مورد سیستم های CBF ترکیب آنها با شبکه های اجتماعی و استفاده از اطلاعاتی نظیر tag، comment  و social network sharing است. معروف ترین این سیستم ها سیستم های پیشنهاد دهنده تگ (tag recommendation systems) هستند. البته حوزه کار بر روی تگ ها به دو دسته تولید سیستم های پیشنهاد دهنده تگ و استفاده از تگ ها در پیشنهادات تقسیم می شود.

 

گروه بندی کاربران :

سیستم های CBF بدلیل نیاز به اعمال پردازشی و تحلیلی فراوان کارایی کمتری نسبت به بقیه سیستم ها دارند. یکی از راهکار های موثری که برای بهبود کارایی آنها پیشنهاد شده است گروهبندی کاربران و ارائه پیشنهاد به کل گروه است (بجای یک کاربر). اگر چه در این روش بهبودی در دقت و کیفیت نتایج حاصل نمی شود اما در کارایی و کم شدن سربار پردازشی تاثیر بسیاری دارد.

 

Social-based Filtering:

همانطور که گفته شد با گسترش شبکه های اجتماعی گروهی از محققان به سمت استفاده از اطلاعات موجود در این شبکه ها (نظیر trust، followed، Followers، friends، comments، blog و tags) در سیستم های پیشنهاد دهنده رفتند. توجه داشته باشید که این اطلاعات ممکن است بصورت صریح و یا ضمنی جمع آوری شوند. بر اساس نتایج حاصل از بکارگیری این اطلاعات مشخص شده است که این کار باعث بهبود نتایج پیشنهادی و همچنین کاهش مشکل sparsity شده است.

در حوزه استفاده از شبکه های اجتماعی در سیستمهای RS، مطالعات و تحقیقات علمی به دو دسته تقسیم می شوند. گروهی بدنبال استفاده از اطلاعات موجود در این شبکه ها در جهت بهبود کارایی سیستم های موجود رفتند که نتایج حاصل از کارهای آنها گواه بر تاثیر مثبت این اطلاعات در سیستم های RS دارد. در مقابل گروهی دیگر از محققین به سمت ایجاد یک سیستم پیشنهاد دهنده جدید مبتنی بر Social Filtering رفتند. این گروه دیگر بدنبال ترکیب شبکه های اجتماعی با سایر سیستم های پیشنهاد دهنده نیستند. بلکه قصد دارند از پتانسیل های موجود در چنین شبکه هایی برای ایجاد یک سیستم مستقل استفاده نمایند.

 

Trust و Reputation

در میان اطلاعات موجود در شبکه های اجتماعی، trust و reputation نسبت به بقیه توجهی بیشتری را به خود جذب کرده اند. معیار trust در واقع میزان اعتبار یک کاربر در بین سایر کاربران است که نقش موثری در پیشنهادات می تواند داشته باشد. بعنوان مثال هرچه میزان trust یک کاربر بیشتر باشد، امتیاز هایی که او به آیتم ها می دهد از درجه اهمیت و وزن بیشتری نسبت به سایرین برخوردار است. دو راه کار برای تعیین Trust کاربران وجود دارد. روش اول از طریق اطلاعاتی است که صریحا از خود کاربر کسب می شود. روش دوم نیز از طریق اطلاعات ضمنی و روابط بین کاربران که در شبکه های اجتماعی موجود است می باشد. برخی از راهکار هایی که تا کنون در مقالات پیشنهاد شده اند عبارتند از : مکانیزم های انتشار trust (trust propagation mechanism)، روش Follow The Leader، شبکه trust (Trust Network)، معیار های شباهت مبتنی بر خصوصیات فردی (personality-based similarity measures)، ِDistrust Analysis.

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

 

استفاده از برچسب (tag):

یکی از امکاناتی که در بیشتر سیستم های پیشنهاد دهنده اجتماعی وجود دارد اینست که کاربران امکان اختصاص برچسب (tag) را به آیتم ها دارند. بنابراین در چنین سیستم هایی ما مجموعه از سه تایی های <user, item, tag> را داریم که این مجموعه ها باعث ایجاد فولکسونومی ها (folksonomies) می گردد. پتانسیل بالایی که توسط تگ ها، بعنوان فرا داده (metadata)، در فواکسونومی ها بوجود آمده است منجر شده است به اینکه گروهی از سیستم های پیشنهاد دهنده کاملا بر مبنای تگ ها شکل بگیرند (Tag Recommendation Systems). علاوه بر این گونه از سیستم ها، بدلیل مزایای بسیار استفاده از بر چسب ها، در برخی از سیستم های ترکیبی (hybrid) از این برچسب ها برای تقویت و بهبود کیفیت نتایج پیشنهادی بکارگیری شده است.

 

Context-aware Filtering:

حرکت به سمت Web 3 یا همان Internet Of Things باعث ظهور نسل جدیدی از سیستم های پیشنهاد دهنده شده است. در چنین محیطی دستگاه ها  و سنسور های گوناگونی وجود دارند که اطلاعاتی از شرایط کاربر (context) را جمع آوری می کنند. چنین اطلاعاتی را می توان در سیستم های پیشنهاد دهنده مورد استفاده قرار داد تا نسل جدیدی از سیستم ها بنام سیستم های مبتنی بر Context-aware information شکل بگیرند. تاکید این سیستم ها بر اطلاعاتی از قبیل زمان، مکان، اطلاعات حاصل از دوربین های امنیتی، RFID ها و شبکه های حسگر بیسیم ونیز پارامتر های سلامت، عادات خرید و غذاخوردن فرد می باشد. این اطلاعات را می توان بصورت صریح و یا با استفاده از روش های داده کاوی (data mining) کسب نمود.

 

Location-aware Recommendation Systems:

یکی از موفقترین این سیستم ها که در سال های اخیر کار های خوبی نیز بر روی آن انجام شده است، سیستم های پیشنهاد دهنده مبتنی بر موقعیت (Location-aware RS) می باشند. این گونه از سیستم ها که عموما در برنامه های تلفن همراه نمود دارند، بر اساس موقعیت فعلی کاربر پیشنهاداتی را در حوزه خاصی به وی می دهند.

دسته ای از این سیستم ها، بصورت ترکیبی با سیستم های CF استفاده می شوند. راهکار رایج در این نوع سیستم های پیشنهاد دهنده بدین صورت است که امتیازدهی بصورت سنتی در قالب یک روش CF به آیتم ها داده می شود. اما هنگامی که پیشنهاد به کاربر داده می شود اطلاعات جغرافیایی او نیز در پروسه ارائه پیشنهاد دخیل می گردند. این مسئله باعث ایجاد پیچیدگی در سیستم می شود. چرا که با تغییر مکان کاربر آیتمی که قبلا مطلوب کاربر بوده و باید به وی پیشنهاد داده می شد، ممکن است دیگر مورد پسند کاربر نباشد. بعنوان مثال فرض کنید فردی که در محل کار است بدنبال رستورانی برای سفارش ناهار می گردد. رستورانی که در نزدیکی محل کارش است به او پیشنهاد داده می شود و فرد به این رستوران امتیاز مثبت می دهد. حال اگر فرد به خانه خود باز گردد که در فاصله دوری نسبت به رستوران قرار گرفته است، آیا در هنگام سفارش غذا بازهم این رستوران باید به وی پیشنهاد داده شود یا خیر؟ اگرچه سیستم بر مبنای الگوریتم CF تشخیص می دهد که این رستوران مورد پسند کاربر است اما بدلیل دوری از محل فعلی کاربر نباید به وی نشان داده شود.

 

Knowledge-based Filtering:

سیستم های پیشنهاد دهنده مبتنی بر دانش، نسل جدیدی از سیستم های RS هستند که مبتنی بر دانش موجود در رابطه با کاربران و آیتم ها هستند. چنین سیستم هایی، پیشنهادات خود را بر پایه تفسیر و استنباط خود از صلایق و نیاز های کاربر ارائه می دهند و از دیدگاه تئوری نسبت به سایر روش های ذکر شده از دقت و کیفیت بیشتری برخوردار هستند. طبیعی است که برای پیاده سازی چنین سیستم هایی نیاز به یک بستر و ساختار مبتنی دانش وجود دارد (آنتولوژی ها، case-based reasoning، constraint-based reasoning، knowledge vectors و social knowledge).

یکی از فیلد های کاری در زمینه knowledge-based filtering، Workflow می باشد که مبتنی بر مدل users-roles-tasks است.  در این مدل تشریح می شود که یک هر کدام از کاربران در چه نقش هایی چه وظایفی را انجام می دهند. شبکه های نظیر به نظیر (peer-to-peer) نیز حوزه دیگری از تحقیقات را به خود اختصاص می دهند که در آن دانش سیستم در مورد آیتم ها و کاربران در بین peer ها توزیع شده است.

 

روش های الهام گرفته شده از طبیعت (bio-inspired)

بسیاری از روش های ارائه شده در زمینه سیستم های RS از الگوریتم های مبتنی بر طبیعت الهام گرفته اند. بطور کلی می توان این راهکار ها را به دو گروه راهکار های الگوریتم تکاملی (GA) و راهکار های شبکه های عصبی (NN) تقسیم بندی نمود. البته مدل هایی نیز هستند که بر پایه شبکه های ایمنی بدن (Artificial Immune Network) پیشنهاد شده اند.

کار هایی که در حوزه الگوریتم های ژنتیک صورت گرفته است عموما در جهت ایجاد مدل های ترکیبی (hybrid) و یا خوشه بندی (clustering) بوده است. در بحث خوشه بندی این راهکار ها بدین صورت عمل می نمایند که کاربران را به گروه هایی دسته بندی می کنند طوری که کاربران مشابه در گروه های یکسانی قرار بگیرند. این کار باعث می شود که بجای فرد پیشنهادات به گروه داده شود و بدین ترتیب از زمان و سربار محاسبات کاسته شود. مدل های ترکیبی کاربران (hybrid user models)، عموما ترکیبی از CF با روش هایی از قبیل Demographic Filtering و یا Content-based Filtering هستند که بعنوان مثال در اینجا کروموزوم های الگوریتم ژنتیک را می توان بعنوان Demographic Information کاربران در نظر گرفت.

الگوریتم های شبکه های عصبی بر پایه عملکرد و رفتار سیستم عصبی بدن شکل گرفته اند که قدرت یادگیری را بر اساس ورودی ها و الگوهای پیشین برای سیستم های پیشنهاد دهنده فراهم می کنند. در راهکار های مبتنی بر شبکه های عصبی هدف برخوردار نمودن سیستم ازاین  قوه یادگیری است. بنابراین پروسه های یادگیری نظری SOM و Case Base Reasoning در کارهای انجام شده پیشین دیده می شوند.

راهکار های مبتنی بر شبکه ایمنی بدن نیز بمنظور رفع مشکل پراکندگی داده ها (data sparsity) و افزایش مقیاس پذیری سیستم  ارائه شده اند.البته همانند راهکار های دیگر این روش نیز بصورت ترکیبی با روش های CF بیشتر مورد استفاده قرار گرفته است.