آشنایی با چند مورد از رکامندر سیستم‌های اپن‌سورس


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

PredictionIO
این سیستم یادگیری ماشینی اپن‌سورس بر پایۀ سرویس‌های Apache Spark ،ApacheHBase و Spray ساخته شده است که دولوپرها و دیتاساینتیست‌ها با استفاده از آن می‌توانند دست به توسعۀ یک رکامندر سیستم‌ مبتنی بر #یادگیری ماشینی بزنند.

HapiGER
این رکامندر سیستم مبتنی بر نودجی‌اس است که از متدی تحت عنوان Collaborative Filtering به منظور پیش‌بینی محصولات متناسب با سلایق کاربران استفاده می‌کند که در آن ترجیحات یا دیتای سایر کاربران به صورت اصطلاحاً Collaborative (مشارکتی) جمع‌آوری و آنالیز می‌شود تا از میان تمامی محصولات سرویس مد نظر، محصولات متناسب با انتخاب‌های ایشان به صورت خودکار فیلتر شوند (جهت آشنایی بیشتر با نودجی‌اس، می‌توانید به مقالهٔ‌ Node.js (نودجی‌اس) چیست؟ مراجعه نمایید.)

این سیستم به صورت پیش‌فرض از قابلیتی تحت عنوان In-memory برخوردار بوده و از حافظۀ داخلی خود برای ذخیره، مدیریت و سایر تَسک‌های مربوط به دیتا استفاده می‌کند که منجر به کاهش تأخیر و سربار حافظۀ هارددیسک شده و همچنین محاسبات مورد نیاز به منظور دسترسی به دیتا را کاهش می‌دهد مضاف بر اینکه قابلیت پیاده‌سازی روی سیستم‌های مدیریت دیتابیسی از جمله PostgreSQL و Rethinkdb را دارا است.

Mahout
این سرویس مجموعه‌ای از الگوریتم‌های یادگیری ماشینی توزیع‌شده و مقیاس‌پذیر است که در آن تمرکز بیشتر بر روی پیاده‌سازی الگوریتم‌هایی همچون Collaborative Filtering ،Clustering و Classification بوده و در بسیاری از این موارد Apache Hadoop به کار گرفته شده است. همچنین در این فریمورک یکسری لایبرری جاوا برای عملیات ریاضیاتی رایج نظیر جبر خطی و آمار به همراه برخی از کالکشن‌های اصلی جاوا به منظور داده‌کاوی ارائه شده است.

Seldon
این رکامندر سیستم مبتنی بر جاوا است که بر اساس تکنولوژی‌هایی همچون Apache Spark توسعه یافته و پیشنهادات مربوط به دِموی فیلم‌های متناسب با دیتای ورودی کاربران را ارائه می‌دهد.

LensKit
این سرویس مجموعه‌ای از الگوریتم‌های Collaborative Filtering مورد استفاده در رکامندر سیستم‌ها و یکسری ابزار مبتنی بر جاوا است که به منظور توسعه و ارزیابی این سیستم‌ها در مقیاس‌ کوچک و متوسط طراحی شده است.

Oryx
این فریمورک یک معماری ساده و بلادرنگ را برای توسعۀ الگوریتم‌های یادگیری ماشینی و پیش‌بینی محصول همچون متدهای Collaborative Filtering ،Clustering و Classification ارائه می‌دهد که بر پایۀ پلتفرم‌های Apache Spark و Apache Kafka طراحی شده است.

RecDB
این سیستم به عنوان افزونه‌ای از سیستم مدیریت دیتابیس PostgreSQL و به منظور افزودن الگوریتم‌های پیشنهاد محصول همچون Collaborative Filtering به طور مستقیم به دیتابیس مورد استفاده قرار می‌گیرد به طوری که دیتای کاربران را در قالب User/Item به عنوان ورودی دریافت کرده و با اجرای الگوریتم‌های رکامندر روی آن‌ها، دیتا استراکچری را به منظور پیشنهاد محصولات مرتبط به عنوان خروجی ریتِرن می‌کند.

Predictor
این رکامندر سیستم با زبان برنامه‌نویسی روبی توسعه یافته که از معیارهایی همچون Jaccard Index یا Sorenson-Dice Coefficient به منظور بررسی میزان مشابهت محصولات مرتبط با سلایق کاربران استفاده می‌کند. به عنوان مثال، روشی که جهت پیش‌بینی مبتنی بر آیتم‌های انتخابی کاربران مورد استفاده قرار می‌گیرد بدین صورت است که می‌بیند معمولاً اکثر کاربران چه محصولات دیگری را علاوه بر کالای اصلی مد نظر خود انتخاب کرده‌اند به علاوه اینکه ارائۀ محصولات در روش‌های کاربر-محور بدین طریق انجام می‌شود که اگر کاربری به تعداد 10 عدد از یکسری کالای خاص را خریداری کرد، بنابراین احتمال دارد مایل به تهیۀ برخی کالاهای مرتبط با آن‌ها نیز باشد.

Surprise
این ابزار شامل مجموعه متدهایی است که بر پایۀ لایبرری Scikit پایتون و به منظور توسعه و آنالیز رکامندر سیستم‌ها و الگوریتم‌های آن طراحی شده است که به صورت پیش‌فرض یکسری دیتاسِت و همچنین الگوریتم‌هایی را شامل می‌شود که از آن جمله می‌توان Rating Prediction را نام برد که هدف از آن‌ها پیش‌بینی امتیازدهی کاربران به محصولات خاصی است که هنوز توسط ایشان رتبه‌بندی نشده‌اند و این در حالی است که پیش‌بینی‌ها بر اساس جمع‌آوری بازخورد مستقیم کاربران انجام می‌شوند بدین صورت که مثلاً یک کاربر خاص در گذشته برای برخی آیتم‌های مشابه چه امتیازی داده است که در نتیجۀ انجام چنین آنالیزهایی می‌توان ترجیح کاربران به منظور انتخاب سایر محصولات را پیش‌بینی کرد.

LightFM
این ابزار مجموعه‌ای از الگوریتم‌های پیشنهاد محصول است که با زبان پایتون توسعه یافته است به طوری که با آنالیز نظرات و دیتای مربوط به بازخورد کاربران نسبت به آیتم‌های مختلف، محصولات مشابه را فیلتر کرده و در معرض دید ایشان قرار می‌دهد. همچنین این لایبرری با به‌کارگیری زبان برنامه‌نویسی Cython امکان مقیاس‌پذیری به منظور آنالیز دیتاسِت‌های بسیار بزرگ در دیوایس‌های چندهسته‌ای را برای دولوپرها فراهم می‌کند (Cython یک زبان برنامه‌نویسی کامپایلری است که این امکان را برای دولوپرها فراهم می‌کند تا بتوانند برخی ماژول‌های زبان برنامه‌نویسی C را در Python اضافه کرده و اجرا کنند به طوری که کُد مذکور پرفورمنس و سینتکسی مشابه کدهای نوشته‌شده با زبان C خواهد داشت.)

Rexy
این رکامندر سیستم با پایتون کدنویسی شده است که بر اساس متد پیشنهاد محصولات با تگ‌های مشابه و یک ساختار انعطاف‌پذیر طراحی شده تا دولوپرها بتوانند از آن برای پیش‌بینی روی دیتاهایی با اِسکماهای مختلف استفاده کنند و همچنین در توسعۀ آن یک دیتابیس نوع NoSQL تحت عنوان Aerospike به کار گرفته شده است (جهت آشنایی بیشتر با این نوع دیتابیس‌ها، می‌توانید به مقالهٔ دیتابیس NoSQL چیست؟ مراجعه نمایید.)

QMF
این لایبرری مقیاس‌پذیر با زبان برنامه‌نویسی ++C توسعه‌ یافته است و پیشنهاد محصولات در این سیستم بر اساس مدلی تحت عنوان Matrix Factorization انجام می‌شود که در آن اعداد مربوط به هر یک از سطرها و ستون‌های ماتریس بیان‌گر امتیازی است که از بازخوردهای ضمنی کاربران به آیتم‌های مد نظر داده شده است و در ادامه الگوریتم‌هایی همچون Collaborative Filtering با تجزیه و بررسی این ماتریس، محصولات مشابه را بر اساس امتیازهای موجود انتخاب می‌کنند.

TensorRec
این فریمورک مبتنی بر TensorFlow است که این امکان را به دولوپرها می‌دهد تا بتوانند با استفاده از لایبرری تنسورفلو، الگوریتم‌هایی منحصربه‌فرد و مطابق با نیازهای خود را برای رکامندر سیستم‌ها توسعه دهند. همچنین فریمورک TensorRec قابلیت هَندل کردن کلیۀ تَسک‌های مربوط به دیتا نظیر رتبه‌بندی آن‌ها به منظور پیشنهاد محصولات مشابه را دارا است (برای آشنایی بیشتر با تنسورفلو، می‌توانید به مقالهٔ TensorFlow: لایبرری اپن‌سورس یادگیری ماشینی گوگل مراجعه نمایید.)

Spotlight
این فریمورک مبتنی بر لایبرری PyTorch است که در آن مدل‌هایی نظیر Factorization و Sequence برای توسعۀ رکامندر سیستم‌ها به کار گرفته شده است. به طور مثال، محصولات متناسب با علائق کاربران و بر اساس رفتار گذشتۀ ایشان در برخورد با سایر محصولات مشابه پیش‌بینی می‌شوند.

Recommenderlab
این فریمورک برای توسعه و تست الگوریتم‌های پیشنهاد محصول است که برخی از مهم‌ترین الگوریتم‌های آن عبارتند از:

- User-based Collborative Filtering یا به اختصار UBCF که پیش‌بینی‌ها در آن با بررسی رفتار کاربران در رابطه با مجموعه‌ای از محصولات انجام می‌شود.
- Item-based Collborative Filtering یا به اختصار IBCF که این نوع الگوریتم‌ها محصولی مشابه به سایر آیتم‌های انتخاب‌شده توسط کاربران را ارائه می‌دهند.
- Singular Value Decomposition یا به اختصار SVD که در این روش ماتریس تعاملات کاربران به سه ماتریس مجزا تقسیم شده و به عنوان ورودی به الگوریتم‌های رکامندر داده می‌شوند.
- Funk SVD که این روش توسط Simon Funk و به منظور بهینه‌سازی الگوریتم SVD پیاده‌سازی شده است که در آن متدی تحت عنوان Stochastic Gradient Descent یا به اختصار SGD در جهت کاهش خطای الگوریتم به کار گرفته شده است.
- Association Rule-based که این الگوریتم نیز به منظور شناسایی الگوی مربوط به سبد خرید کاربران و پیش‌بینی رفتار ایشان در خرید سایر محصولات مورد استفاده قرار می‌گیرد.

CaseRecommender
این فریمورک انعطاف‌پذیر با زبان برنامه‌نویسی پایتون توسعه یافته است که مجموعه‌ای از الگوریتم‌های رکامندر در آن پیاده‌سازی شده است و این امکان را در اختیار دولوپرها قرار می‌دهد تا بتوانند رکامندر سیستمی متناسب با نیازها و علائق خود توسعه دهند.

نتیجه‌گیری
به طور کلی، دیتای حاصل از آنالیز و بررسی رفتار کاربران در رابطه با یک سرویس جزو ضروریات یک Recommender System به شمار می‌روند که در متدهای رتبه‌بندی محصولات بر اساس ترجیحات کاربران مورد استفاده قرار می‌گیرند اما این در حالی است که هر یک از رکامندر سیستم‌ها یکسری نقاط ضعف و قوت مختص به خود را دارند که منجر بدین شده تا بسته به نوع دیتاسِت و نیاز سرویس مد نظر، یکی از این سیستم‌ها مناسب‌تر بوده و به منظور پیشنهاد محصولات مرتبط مورد استفاده قرار گیرند.

در پایان، چنانچه علاقمند هستید با الگوریتم پیشنهاد مقالات مشابه وبلاگ سکان آکادمی بیشتر آشنا شوید، توصیه می‌کنیم به مقالهٔ آموزش طراحی الگورتیمی با استفاده از Dot Product و Cosine Similarity جهت یافتن مقالات مرتبط در وب‌سایت مراجعه نمایید.

منبع


اکرم امراه‌نژاد