ریکامندر چیست؟ | مبانی سیستم پیشنهاد دهنده – به زبان ساده


در این مطلب، ضمن پاسخگویی به پرسش ریکامندر چیست به بررسی مبانی سیستم پیشنهاد دهنده به زبان ساده، به طور جامع و کامل و همراه با ارائه مثال پرداخته شده است. شایان توجه است که در سراسر این مطلب از کلمه قلم و اقلام برای اشاره به مفهوم «Item» و «Items» استفاده شده است.
چکیده مطلب ریکامندر چیست ؟
اینترنت به عنوان منبعی برای حجم انبوه دادهها و اطلاعات محسوب میشود. در عین حال، کالاها و خدمات متنوعی نیز از طریق اینترنت در دسترس عموم مردم هستند. در این اقیانوس، نیاز به ابزاری برای پالایش، اولویتبندی و تحویل موثر اطلاعات مورد نیاز و مرتبط به هر کاربر به او محسوس است. این کار به عنوان راهکاری مُسَکنوار برای مسئله وجود سرریز اطلاعات (Information Overload) در نظر گرفته شده است. امروزه، سرریز اطلاعات مشکلات متعددی را برای کاربران اینترنت به وجود آورده است. ریکامندر سیستم در صدد است تا این مشکل را با جستجو در میان حجم انبوهی از اطلاعاتی حل کند که همه روزه به صورت پویا تولید میشوند و محتوا و خدمات شخصیسازی شده برای هر کاربر را در اختیار او قرار دهد.
در مطلب ریکامندر چیست ابتدا مفهوم ریکامندر سیستم بیان و به پرسش ریکامندر چیست پاسخ داده شده است. سپس، به پرسش دلیل استفاده از سیستم ریکامندر چیست پاسخ داده شده و کاربرد ریکامندر سیستم مورد بررسی قرار گرفته است. در ادامه، پیشنیازهای لازم برای یک ریکامندر سیستم تشریح شدهاند و به روشهای تامین منابع اطلاعاتی برای ریکامندر سیستم پرداخته شده است. پس از آن، روش کار و روش ساخت ریکامندر سیستم مورد بررسی قرار گرفته و انواع ریکامندر سیستم تشریح شده است. سپس، مثالهایی از پیادهسازی ریکامندر سیستم همراه با ارائه کدهای لازم برای آن ارائه شده است تا مخاطب بتواند هر چه بهتر پاسخ پرسش ریکامندر چیست را دریافت کند. در نهایت، به پرسشهای متداول پیرامون ریکامندر سیستم یا همان سیستم پیشنهاد دهنده پاسخ داده شده است.
مقدمهای بر مبحث ریکامندر چیست ؟
رشد انفجاری اطلاعات دیجیتالی در دسترس و تعداد کاربران اینترنت، مشکل بالقوه سرریز اطلاعاتی را ایجاد میکند. این سرریز اطلاعاتی مانع دسترسی سریع و به موقع کاربران به اطلاعات مورد نظر خودشان در اینترنت میشود. سیستمهای بازیابی اطلاعات (Information Retrieval Systems) مانند گوگل، آلتاویستا و دیگر موارد، تا اندازهای این مشکل را حل کردهاند. اما سیستمهای مذکور، راهکارهای لازم را برای اولویتبندی و شخصیسازی اطلاعات را فراهم نمیکنند (البته گوگل چند سالی است که برای موتور جستجوی خود نیز از بحث شخصیسازی نتایج استفاده میکند و جمله بیان شده، صرفا به ماهیت خود موتور جستجو بودن اشاره دارد). منظور از شخصیسازی، نگاشت محتوای موجود بر اساس علایق و ترجیحات کاربر به منظور ارائه به او است. آنچه بیان شد منجر به افزایش بیش از پیش تقاضا برای ریکامندر سیستم شده است.
ریکامندر سیستم در واقع سیستم پالایش اطلاعات است که با مسئله سررریز اطلاعات مواجه میشود. این مواجهه، با پالایش حجم انبوهی از اطلاعات که به صورت پویا تولید شدهاند و ارائه اطلاعات حیاتی به کاربر بر اساس ترجیحات، سلایق و رفتار پیشین او پیرامون اقلام انجام میشود. ریکامندر سیستم بر اساس نمایه کاربر (User Profile) توانایی پیشبینی آن را دارد که آیا یک کاربر خاص یک قلم کالا یا خدمات خاص را میپسندد یا خیر. منظور از نمایه یا پروفایل کاربر، مجموعه اطلاعات شخصی مرتبط با یک کاربر خاص و یا کامپیوتر او است که هویت دیجیتال (و بعضا غیر دیجیتال) فرد را به نمایش میگذارد.
یک سیستم پیشنهاد دهنده هوشمند یا همان ریکامندر سیستم یک زیرکلاس از «سامانه پالایش اطلاعات» (سیستم فیلترینگ اطلاعات | Information Filtering System) است. ریکامندر سیستم در تلاش است که امتیاز (رتبه | Rank | Rate) احتمالی که یک کاربر ممکن است به یک قلم بدهد را پیشبینی کند. در واقع، ریکامندر در تلاش است تا ترجیحات کاربر از میان یک مجموعه از اقلام را پیشبینی کند. ریکامندر سیستم ها سیستمهای یادگیری ماشین (Machine Learning | ML) هستند که به کاربران کمک میکنند تا محصولات و خدمات جدید را کشف کنند.
هر بار که فرد در حال انجام خرید آنلاین است، یک ریکامندر سیستم به او راهنمایی میکند تا محصولاتی که برای او مناسبتر است و به آن (بر اساس پیشبینی انجام شده توسط ریکامندر سیستم) تمایل بیشتری دارد را سریعتر پیدا و خریداری کند. ریکامندر سیستم ها مانند فروشندگانی میمانند که مشتریهای همیشگی خود را به خوبی میشناسند و بر اساس این شناخت، به آنها پیشنهاداتی را برای خرید میدهند. نظر به حجم انبوه دادههای موجود در فضای اینترنت، ریکامندر سیستم ها در دنیای دیجیتالی کنونی یک قابلیت و ویژگی حیاتی محسوب میشوند. زیرا کاربران اینترنت در هجوم سرریز انتخابها قرار دارند و نیاز به پیدا کردن سریع چیزی دارند که به دنبال آن میگردند. از آنچه بیان شد به وضوح مشخص است که نیاز به استفاده از روشهای پیشنهاد اقلام موثر و صحیح در یک ریکامندر سیستم، مسئله بسیار مهم و قابل توجهی است.
ریکامندر معادل چه کلمهای در فارسی و انگلیسی است؟
در زبان فارسی به «ریکامندر سیستم» (Recommender System) یا «ریکامندیشن سیستم» (Recommendation System)، «سامانه پیشنهادگر»، «سامانه پیشنهادگر هوشمند»، «سامانه پیشنهاد دهنده هوشمند»، «سامانه توصیهگر» و یا «سامانه توصیهگر هوشمند» گفته میشود. گاه در اصطلاح انگلیسی Recommender System به جای کلمه System از واژگانی با معنای مشابه مانند «سکو» (پلتفرم | Platform) یا «موتور» (Engine) به صورت «Recommender Platform» یا «Recommender Engine» استفاده میشود.
در واقع، همه عبارات ریکامندر، ریکامندر سیستم، ریکامندیشن سیستم، سیستم پیشنهادگر، سیستم پیشنهادگر هوشمند، سیستم پیشنهاد دهنده، سیستم پیشنهاد دهنده هوشمند، سیستم توصیهگر، سیستم توصیهگر هوشمند، سکوی پیشنهادگر، سکوی پیشنهاد دهنده، سکوی پیشنهاد دهنده هوشمند، پلتفرم پیشنهادگر، پلتفرم پیشنهاد هوشمند، پلتفرم پیشنهاد دهنده، پلتفرم پیشنهاد دهنده هوشمند، موتور پیشنهادگر، موتور پیشنهاد هوشمند، موتور پیشنهاد دهنده هوشمند، موتور پیشنهادگر هوشمند، موتور توصیهگر و موتور توصیهگر هوشمند برای اشاره به یک چیز یعنی همان ریکامندر سیستم (Recommender System) به کار میروند.
در این میان و با توجه به مفهوم ریکامندر سیستم و چیستی آن، به نظر میرسد عبارت «سیستم پیشنهادگر» خلاصهترین و مناسبترین معادل فارسی برای آن باشد. در سرتاسر این مطلب برای جلوگیری از هرگونه ابهامی تاکید بر استفاده از کلمه ریکامندر است؛ هر چند که گاهی از معادلهای فارسی نیز استفاده شده است. اما نباید فراموش کرد که کلیه کلماتی که در اینجا بیان شد معادلهای مختلفی برای یک مفهوم واحد یعنی همان ریکامندر سیستم هستند.
ریکامندر چیست ؟
ریکامندر سیستم به پیشنهاد محصولات، خدمات، محتوا یا دیگر اقلام به کاربر، بر اساس علایق او میپردازد. ریکامندر سیستم صرفا اقلامی را به طور خودکار به کاربر پیشنهاد میکند که کاربر ممکن است آنها را بپسندد. ریکامندر سیستم ها در حال حاضر بسیار متداول هستند و بسیاری از افراد از آنها استفاده میکنند بدون آنکه بدانند آنچه به آنها کمک میکند تا کالا، خدمات و محتوای دلخواه خود را سریعتر پیدا کنند، یک ریکامندر سیستم است. با توجه به آنکه کاربران احتمالا نمیتوانند همه محصولات یا محتوای موجود در یک وبسایت را مشاهده کنند، ریکامندر سیستم نقش مهمی را در کمک به آنها برای داشتن تجربه بهتر ایفا میکند و در عین حال، محتوایی را در اختیار کاربر قرار میدهد که شاید کاربر در فرایند اکتشافی خود هرگز به آنها دست پیدا نکند.
همچون بسیاری از موضوعات و مباحث علمی، در بحث سیستم پیشنهاد دهنده هوشمند نیز دانشمندان گوناگون تعاریف متعددی را برای ریکامندر سیستم ارائه کردهاند. در اینجا، برخی از تعاریف ارائه شده در بیان چیستی ریکامندر سیستم با هدف بیان مفهوم آن به طور دقیق، تشریح شدهاند.
مثالی از یک ریکامندر سیستم در عمل، سیستم پیشنهاد محصول موجود در وبسایت خردهفروشی آمازون است. به عنوان مثالی دیگر میتوان به سیستم پیشنهاد فیلم و سریال موجود در وبسایت نتفلیکس و یا سیستم پیشنهاد ویدئوی یوتیوب اشاره کرد. سیستم پیشنهاد موسیقی در اسپاتیفای، تبلیغات گوگل و خوراک خبری فیسبوک (Facebook Newsfeed)، همه و همه مثالهایی از ریکامندر سیستم هستند.
یک مولفه مهم در کلیه ریکامندر سیستم ها تابع پیشنهادگر (Recommender Function) است که اطلاعات را پیرامون کاربر دریافت و بر اساس آن، برای مثال، امتیاز (رتبه) احتمالی که کاربر ممکن است به یک محصول بدهد را پیشبینی میکند. پیشبینی امتیازهای مورد نظر کاربر حتی پیش از آنکه کاربر واقعا آن رتبه را ثبت کرده باشد، یک ریکامندر سیستم را به ابزاری قدرتمند و بعضا شگفتانگیز مبدل میکند.
ریکامندر سیستمها ابزارهایی برای تعامل با فضاهای اطلاعاتی بزرگ و پیچیده هستند. ریکامندر سیستم ها یک نمای شخصیسازی شده از چنین فضاهای اطلاعاتی بزرگی را برای کاربران ایجاد و اقلام را بر اساس علائق کاربر اولویتبندی میکنند. مبحث ریکامندر سیستم ها در سال ۱۹۹۵ مطرح شد و از آن زمان تاکنون، استفاده از آن در حوزهها و مسائل گوناگون رشد قابل توجهی را داشته است. ریکامندر سیستم ها طیف وسیعی از روشهای هوش مصنوعی (Artificial Intelligence) شامل روشهای یادگیری ماشین، مدلسازی کاربر (User Modelling)، استنتاج مبتنی بر مورد (Case-Based Reasoning)، ارضای محدود (Constraint Satisfaction) و همچنین، علم داده (Data Science) را به کار میگیرند.
پیشنهادهای شخصیسازی شده بخش مهمی از بسیاری از وبسایتهای تجارت الکترونیکی مانند آمازون، نتفلیکس و پاندورا هستند. افزایش غنای تجربه کاربری و کاربردهای عملی متعدد و متنوع ریکامندر سیستم ها، الهامبخش پژوهشگران برای گسترش حیطه کاری آنها به حوزههای جدید و چالشبرانگیز بوده است. تعریف ریکامندر سیستم طی چند دههای که از معرفی آن میگذرد دستخوش تغییرات قابل توجهی شده است. در مقالهای که توسط «رزنیک» (Resnick) و «ورین» (Varian) در سال ۱۹۹۷ ارائه شده است، تعریف ریکامندر سیستم به صورت زیر بیان شده است:
در یک ریکامندر سیستم معمول، افراد پیشنهادها را به عنوان ورودی ارائه میکنند. سپس، سیستم این پیشنهادها را یکپارچه میکند و برای مخاطبان مناسب ارسال میکند. در برخی از موارد، تبدیل اولیه یک تجمیع (Aggregation) است. در دیگر موارد، ارزش سیستم بر توانایی خود برای ساخت تطبیقهای خوب بین پیشنهادها و افرادی تکیه دارد که به دنبال آنها هستند.
در تعریف ارائه شده، تکیه بر ریکامندر سیستمها به عنوان پشتیبانی برای تعاون بین کاربران است. پژوهشهای جدیدتر، تعریف ریکامندر سیستم ها را گسترش دادهاند و از آنها به عنوان سیستمهایی یاد کردهاند که اقلام مورد پسند (احتمالی) کاربر را صرفنظر از روش ساخت آنها به کاربر پیشنهاد میکنند. نمونهای از این تعریف که توسط «بورکه» (Burke) در سال ۲۰۲۰ میلادی ارائه شده، در ادامه آمده است:
هر سیستمی که پیشنهادهای شخصیسازی شده را به عنوان خروجی خود ارائه میکند یا تاثیری بر هدایت کاربر به یک راهکار شخصیسازی شده برای اقلام جالب توجه یا مفید در فضای بزرگ موجود برای همه راهکارهای ممکن دارد، یک سیستم پیشنهادگر است.
تعریف بالا، تعریفی کلیتر است که توسط «آدوموویشس» (Adomavicius) و «توزهیلن» (Tuzhilin) به صورت رسمیتری و در واقع به بیان ریاضی به شکل زیر ارائه شده است.
به بیان ریاضی، مسئله ریکامندیشن به صورتی که در ادامه بیان شده، قابل فرموله شدن است. فرض میشود که C یک مجموعه از همه کاربران و S مجموعهای از همه اقلام ممکن است که امکان پیشنهاد دادن آنها به کاربران وجود دارد. فرض میشود که u یک تابع مطلوبیت (Utility Function) است که غیرمفید بودن قلم S برای کاربر C را میسنجد. به بیان بهتر، که در آن R یک مجموعه با ترتیب کلی (Totally Ordered Set) است (اعداد صحیح غیرمنفی در یک بازه خاص). سپس، برای هر کاربر هدف انتخاب قلم است که مطلبویت کاربر را بیشینه میکند.
این تعریف، گستره ریکامندر سیستمها را به هر کاربردی که مطلوبیت مختص کاربر را محاسبه میکند برده و شامل بسیاری از مسائلی میشود که در زمینه بازیابی اطلاعات یا پایگاه داده هستند. حتی این تعریف گسترده نیز ممکن است برای برخی از ریکامندر سیستمها بسیار ناکامل به نظر برسد، چرا که برخی از ریکامندر سیستمها روی پیکربندیهای گوناگونی عمل میکنند که مخالف مجموعه ثابت S از همه اقلام است و برخی دیگر از آنها به ارائه پیشنهاد برای گروهها میپردازند (کاربردپذیری برای یک زیرمجموعه از کاربران به جای یک کاربر یکتا است).
این تعریف ممکن است آنچنان گمراه کننده باشد که در بسیاری از ریکامندر سیستم ها هنگامی که یک لیست امتیازدهی شده از اقلام تولید میشوند، مطلوبیت به طور صریح محاسبه نمیشود. در واقع، هدف آن است که اقلامی با بهترین مطلوبیت محاسبه شوند و الزامی برای محاسبه مطلوبیت به طور صریح وجود ندارد. بر اساس این مفروضات، دو اصل اساسی که پژوهشهای ریکامندر سیستم ها را از یکدیگر متمایز میکند عبارتند از:
- یک ریکامندر سیستم شخصیسازی شده است. پیشنهادها را با این هدف تولید میکند که تجربه یک کاربر را بهینه کنند، نه آنکه یه اجماع نظر گروهی را برای همه ارائه کند.
- یک ریکامندر سیستم گرایش به آن دارد که به کاربر کمک کند تا در میان گزینههای گسسته به انتخاب بپردازد. عموما، اقلام به طور کامل شناخته شده هستند و برای یک فرد خاص ساخته نشدهاند.
جنبههای شخصیسازی ریکامندر سیستم ها این موضوعات پژوهشی را با قدرت از آنچه که عموما به عنوان پژوهش در زمینه موتورهای جستجو و سیستمهای بازیابی اطلاعات است متمایز میکنند. در موتورهای جستجو یا دیگر سیستمهای بازیابی اطلاعات، یک مجموعه از نتایج مرتبط به یک کوئری مشخص نتایج مشابهی را صرفنظر از اینکه چه کسی جستجو را انجام داده ارائه میکند. البته باید توجه داشت که موتورهای جستجوی دارای قابلیت جستجوهای شخصیسازی شدهای که نتایج را با در نظر داشتن اینکه چه شخصی جستجو را انجام داده ارائه میکنند، از انواع ریکامندر سیستم ها محسوب میشوند. بسیاری از ریکامندر سیستم ها شخصیسازی را با نگهداری پروفایلهای فعالیت کاربران (کوتاه مدت، بلند مدت) یا ترجیحات بیان شده توسط خود آنها، به دست میآورند. دیگر ریکامندر سیستم ها نتایج شخصیسازی شده را از طریق یک تعامل دو طرفه فراهم میکنند.
دلیل استفاده از سیستم ریکامندر چیست ؟
در این بخش از مطلب ریکامندر چیست برخی از دلایل استفاده از ریکامندر سیستم به صورت اجمالی بیان میشوند و در واقع به پرسش دلیل استفاده از سیستم ریکامندر چیست پاسخ داده میشود.
- شرکتها از ریکامندر سیستم ها به منظور افزایش فروش با شخصیسازی کردن پیشنهادهای ارائه شده به کاربر و بهبود تجربه مشتریان استفاده میشوند.
- پیشنهادهای ارائه شده توسط یک سیستم پیشنهادگر جستجو را سرعت میبخشد و به کاربران امکان دسترسی به محتوایی که به آن علاقه دارند را میدهد. این ریکامندر سیستم به کاربران پیشنهادات شگفتانگیز را برای محصولات و خدمات میدهد.
- ریکامندر سیستم ها به شرکتها کمک میکنند تا از رقبای خود جلوتر باشند و درآمد خود را افزایش دهند.
- شرکتها با استفاده از ریکامندر سیستم ها میتوانند به ارسال ایمیلهایی بپردازند که حاوی لینکهای مربوط به اقلام پیشنهادی بر اساس تمایلات کاربر است.
- هنگامی که کاربران شروع به دریافت پیشبینیها بر اساس علائق خود میکنند، اعتمادشان به شرکت جلب میشود. این امر احتمال اینکه آنها مشتری شرکت باقی بمانند و محتوا، محصول یا خدمات بیشتری از سازمان را مصرف کنند افزایش میدهد.
کاربرد سیستم ریکامندر چیست ؟
ریکامندر سیستم ها در حوزههای گوناگونی مورد استفاده قرار میگیرند و هم برای ارائهدهندگان خدمات و هم برای کاربران سودمند هستند. ریکامندر سیستم هزینه (زمانی، محاسباتی و دیگر موارد) پیدا کردن و انتخاب اقلام در یک فروشگاه اینترنتی را کاهش میدهد. همچنین، اثبات شده است که ریکامندر سیستم ها فرایند و کیفیت تصمیمسازی هم برای کاربر و هم برای ارائهکننده را بهبود میبخشند. در تجارت الکترونیکی، ریکامندر سیستم ها ابزارهای مناسبی برای فروش محصولات و خدمات بیشتر هستند و همین امر منجر به ارتقای سطح درآمد فروشندگان میشود.
در کتابخانههای علمی، ریکامندر سیستم ها به کاربران کمک میکنند تا گامهایی فراتر از جستجو در برگهدان (Catalog Search) انجام دهند و در واقع، دسترسی کاربر به محتوای مورد نظر او را با بهرهگیری از ریکامندر سیستم تسهیل و تسریع میکنند. از ریکامندر سیستم معمولا در سرویسهای صوتی و تصویری برای پیشنهاد موسیقی یا فیلم و ساخت پلیلیست برای کاربر، در فروشگاههای آنلاین برای پیشنهاد محصول به مشتری و در شبکههای اجتماعی برای پیشنهاد محتوا به کاربر استفاده میشود. همچنین، از ریکامندر سیستم ها در سرویسهای مالی نیز استفاده میشود. برای مطالعه بیشتر پیرامون برخی از کاربردهای ریکامندر سیستم و فراگیری روش پیادهسازی برخی از محبوبترین انواع ریکامندر سیستم ها مطالعه مطالب زیر پیشنهاد میشود.
- ریکامندر سیستم خرید: پیادهسازی سیستمهای توصیهگر در پایتون — از صفر تا صد
- ریکامندر سیستم فیلم ۱: ساخت سیستم توصیه گر در پایتون — به زبان ساده
- ریکامندر سیستم فیلم ۲: ساخت سیستم توصیه گر (Recommender System) فیلم با پایتون — راهنمای جامع و ساده
- ریکامندر سیستم قیمت: سیستم توصیه گر قیمت با پایتون — راهنمای کاربردی
چه زمانی کسب و کار باید ریکامندر سیستم پیادهسازی کند؟
اکنون که درکی پیرامون ریکامندر سیستمها حاصل شد، زمان آن رسیده تا درباره زمانی صحبت شود که برای پیادهسازی یک ریکامندر سیستم برای کسب و کار، مفید و یا الزامی است. یک کسب و کار موفق ممکن است بتواند بدون داشتن ریکامندر سیستم بقا پیدا کند. اگرچه، در صورتی که کسب و کار بخواهد از قدرت دادهها به عنوان اهرمی برای ساخت تجربه کاربری بهتر و افزایش درآمد استفاده کند، باید مسئله پیادهسازی ریکامندر سیستم را به طور جدی در نظر داشته باشد.
پرسشی که برای بسیاری از کسب و کارها مطرح است این است که آیا یک ریکامندر سیستم خوب ارزش سرمایهگذاری دارد؟ یک راهکار خوب برای پاسخ به این پرسش بررسی آن است که شرکتهایی که ریکامندر سیستم پیادهسازی کردهاند، چه دستاوردهایی داشتهاند و در واقع، ریکامندر سیستم چه ارزش افزودهای برای آنها به همراه داشته است. در ادامه، برخی از این آمارها که برای سالهای پیش از ۲۰۲۱ است ارائه شدهاند. این آمارها برای سالهای جدیدتر و نزدیک به ۲۰۲۰ و ۲۰۲۱، به طور فزایندهای رشد داشتهاند.
- بنابر آمار ارائه شده توسط مککنزی (McKinsey)، ۳۵ درصد از خریدهای انجام شده از وبسایت خردهفروشی آمازون، در نتیجه استفاده از ریکامندر سیستم بوده است.
- مطابق با آمار ارائه شده توسط علیزیلا (Alizila) در طول جشنواره خرید سراسری چین در تاریخ ۱۱ نوامبر سال ۲۰۱۶، شرکت علیبابا با استفاده از صفحات لندینگ شخصیسازی شده، شاهد رشد ۲۰ درصدی در نرخ تبدیلهای (Conversion Rate) خود بود.
- ریکامندیشنها دلیل اصلی ۷۰ درصد زمانی هستند که افراد به مشاهده ویدئو در یوتیوب می پردازند.
- مطابق با آمار ارائه شده توسط مککنزی، ۷۵ درصد از آنچه که افراد در نتفلیکس مشاهده میکنند، بر اساس پیشنهادهای ریکامندر سیستم است.
- مطابق با مقاله ژورنال ارائه شده توسط کارلوس ای گومز اوریب (Carlos A Gomez-Uribe) و نیل هانت (Neil Hunt)، به کارگیری یک ریکامندر سیستم نتفلیکس را قادر به آن میسازد که در حدود یک میلیارد دلار در هر سال ذخیره کند. در این مقاله چنین آمده است:
کاهش ریزش ماهانه مشتریان هم موجب ازرش طول حیات یک دنبال کننده موجود میشود و هم تعداد دنبالکنندگان جدید مورد نیاز برای جایگزینی اعضای لغو (Cancel) شده را کاهش میدهد. ما بر این باوریم که تاثیر ترکیبی شخصیسازی و ریکامندر سیستم بیش از یک میلیارد دلار در سال صرفه جویی کنیم.
- مطابق با آمارهای ارائه شده توسط مککنزی (McKinsey) فروش متقاطع و روشهای نفوذ-دسته (Category-Penetration) فروش را به میزان ۲۰ درصد و سودآوری را به میزان ۳۰ درصد افزایش میدهند.
پیشنیازهای لازم برای راهاندازی یک سیستم ریکامندر چیست ؟
داده از جمله مهمترین دارایی سازمانها محسوب میشود. هر چه مجموعه دادهای که کسب و کار مالک آن است بزرگتر باشد، ریکامندر سیستم بهتر کار خواهد کرد و در واقع، خروجیهای دقیقتر و صحیحتری ارائه میکند. علاوه بر آن، کسب و کار میتواند اطمینان حاصل کند که تیم توسعه ریکامندر سیستم با دادههایی تجهیز شدهاند که میتوانند برای تحلیل و پردازش آنها از روشهای خوب یادگیری ماشین و علم داده استفاده و برای کسب و کار، ارزش آفرینی کنند.
در صورتی که فرادادهها (Meta Data) تنها چیزی باشند که کسب و کار در اختیار دارد، میتوان از رویکرد محتوامحور (Content-Based) در ساخت ریکامندر سیستم استفاده کرد. در صورتی که کسب و کار دادههای مربوط به تعداد زیادی از تعاملهای کاربر با اقلام (User-Item Interaction) را در اختیار دارد، میتواند از روش «پالایش گروهی» (Collaborative Filtering) برای ساخت ریکامندر سیستم استفاده کند. هر یک از این دو نوع ریکامندر سیستم در ادامه مطلب ریکامندر چیست تشریح شدهاند و اشاره به آنها در این بخش از مطلب، صرفا از جهت بیان نوع دادههای مورد نیاز برای ساخت ریکامندر سیستم، انواع داده موجود و دیگر مباحث مرتبط است. برخی از نکاتی که پیرامون دادههای مربوط به تعاملات کاربر-اقلام باید در نظر داشت در ادامه بیان شدهاند.
- باید تعاملات را با توجه به سیستم تعریف کرد تا دادهها قابل استخراج باشند. برای مثال، در صورتی که کاربر در حال کار با یک وبسایت تجارت الکترونیک است، تعاملها میتواند شامل کلیک روی اقلام، جستجوها، بازدیدها، اقلام مورد پسند، خریدها، رتبهدهیهای صریح، اقلام در سبد خرید و یا حتی محصولات خارج شده از سبد خرید و برخی از دیگر موارد باشند.
- تعاملات را میتوان به صورت صریح یا ضمنی تعریف کرد. تعاملات صریح به وسیله موقعیتهایی مانند زمانی که کاربر تمایل مثبت یا منفی را نسبت به یک قلم نشان میدهد، مثلا رتبهدهی یا قرار دادن نقد و بررسی (نظر) برای یک قلم، مشخصهسازی میشود. تعاملات ضمنی هنگامی است که تمایلات کاربر از اقدامات او مشتق ون تیجه گرفته شود. مثلا، بر اساس جستجوها یا خریداری یک قلم، علاقهمندیهای کاربر استنتاج شوند.
- اساسا، اقلام بسیار محبوبی وجود دارد که کاربران با آنها به شدت تعامل دارند و در عین حال، اقلامی وجود دارند که کاربر با آنها تعاملی ندارد. از این اقلام با عنوان «دم طولانی» (Long Tail) یاد میشود. ریکامندر سیستمها معمولا به خوبی روی اقلام محبوب کاربر کار میکنند. شاید پیشنهاد اقلامی که کاربر به شدت با آنها تعامل دارد به او برایش خیلی جذاب نباشد، زیرا خود معمولا به دنبال آنها است. اما پیشنهاد اقلام موجود در دم طولانی معمولا میتوان کاربر را بسیار شگفتزده کند؛ زیرا ممکن است در صورت پیشنهاد نشدن، اصلا به وسیله کاربر در نظر گرفته نشوند و یا جزو مواردی باشند که کاربر به طور کل آنها را از خاطر برده باشد.

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

منابع اطلاعاتی سیستم ریکامندر چیست ؟
یک سیستم هوش مصنوعی یک یا تعداد بیشتری منبع دانش را برای کارهای خود استفاده میکند. یک سیستم یادگیری ماشین نظارت شده یک مجموعه از دادههای برچسبدار را به عنوان منبع دانش اصلی خود استفاده میکند. اما الگوریتم و پارامترهای آن به عنوان نوع ضمنی از دانش در نظر گرفته میشوند که برای کار دستهبندی (Classification) مناسب هستند. الگوریتمهای پیشنهادگر را میتوان بر اساس منبع دانشی که مورد استفاده قرار میدهند دستهبندی کرد.
سه نوع کلی از دانش وجود دارد:
- دانش اجتماعی پیرامون پایگاه کاربر (User-Base) به صورت کلی
- دانش فردی پیرامون یک کاربر خاص که پیشنهادهای قابل ارائه به او مورد جستجو هستند (و احتمالا دانشی پیرامون ویژگیهای خاصی که آن پیشنهادها باید داشته باشند)
- دانش محتوایی پیرامون اقلامی که پیشنهاد میشوند از یک لیست ویژگیهای ساده گرفته تا دانش هستیشناختی و دانش Means-Ends که سیستم را قادر میسازد که پیرامون چگونگی آن که یک قلم (کالا، خدمات یا محتوا) میتواند نیازهای کاربر را مرتفع کند استدلال کند.

رویکردهای گوناگونی که برای پیشنهاد در ریکامندرها اتخاذ میشود که از این طیف منابع دانش نشات میگیرند و در واقع، نوع منبع در انتخاب نوع روش تاثیر اساسی دارد.
روش فراهم کردن داده برای سیستم ریکامندر چیست ؟
دادهها را به اشکال مختلفی میتوان فراهم کرد. دو دسته مشخص از روشهای فراهم کردن داده برای ریکامندر سیستم «رتبهبندی صریح» (Explicit Rating | امتیازدهی صریح) و «رتبهبندی ضمنی» (Implicit Rating | امتیازدهی ضمنی) هستند.
رتبهبندی صریح در ریکامندر چیست ؟
رتبهبندی صریح توسط کاربران انجام میشود و ریکامندر سیستم نظر کاربر را عینا استخراج میکند. به عنوان مثالهایی از این مورد میتوان به رتبهبندی با دادن ستاره (Star Rating)، نوشتن نقد و بررسی (Review)، بازخورد (Feedback)، پسند (Like) و «دنبال کردن» (Following) اشاره کرد.
رتبهبندی ضمنی در ریکامندر چیست ؟
رتبهبندی ضمنی هنگامی انجام میشود که کاربران با اقلام در تعامل هستند. ریکامندر سیستم رفتار کاربر را استنتاج میکند. این کار بر اساس کلیک کردنهای ناخودآگاه کاربر روی اقلام انجام میشود و بنابراین کاری ساده است. به عنوان مثالهایی از این مورد میتوان به «کلیکها» (Clicks)، «بازدیدها» (Views) و «خریدها» (Purchases) اشاره کرد. شایان توجه است که بازدیدها و خریدها موجودیتهای بهتری برای ارائه پیشنهاد بر اساس آنها هستند زیرا که کاربران زمان و هزینه خود را صرف چیزهایی میکنند که برای آنها حیاتی است.
مشابهت محصول (پالایش قلم-قلم)
مشابهت محصول کاربردیترین سیستم برای پیشنهاد محصولات است و ساز و کار آن بر اساس آن است که کاربران چقدر محصولات گوناگون را میپسندند. اگر کاربر به دنبال یک محصول خاص در حال جستجو یا مرور صفحات وب است، محصولات مشابه به آن را میتوان به او نمایش داد. کاربران معمولا انتظار دارند که محصول مورد نظر خود را به سرعت پیدا کنند و در صورتی که ضمن پیدا کردن محصولات مرتبط زمان سختی را پشت سر بگذارند، منصرف میشوند.
هنگامی که کاربر روی یک محصول کلیک میکند میتوان محصولات مشابه دیگر را به او نشان داد و یا اگر کاربر محصولی را خریداری کرد، میتوان به او ایمیل زد و کوپن تخفیف یا تبلیغاتی را برای محصولاتی مشابه با محصولی که تهیه کرده است به او ارائه داد. شباهت محصولات هنگامی مفید است که ارائهدهنده خدمات هنوز شناخت کافی را از کاربر ندارد اما میداند که او از چه محصولاتی بازدید میکند.
شباهت کاربر (پالایش کاربر - کاربر)
مشابهت کاربر راهی برای بررسی شباهتهای بین ترجیحات دو کاربر است. اگر دو کاربر دارای ترجیحات مشابهی برای یک محصول هستند، میتوان حدس زد که آنها علایق مشترکی دارند. این درست مانند آن است که یک دوست به دوست دیگر خود محصولی را پیشنهاد کند.
یکی از نواقص شابهت کاربر آن است که نیاز به همه دادههای کاربر برای پیشنهاد محصول است. به این روش «مسئله شروع سرد» (Cold Start Problem) گفته میشود. زیرا آغاز فرایند پیشنهاددهی نیاز به دادههای پیشین پیرامون کاربر دارد. یک وبسایت تجارت الکترونیک که اخیرا راهاندازی شده است از مسئله شروع سرد رنج میبرد زیرا حجم زیادی از دادههای کاربران را ندارد. مشابهت محصولات این مشکل را ندارد زیرا تنها نیازمند اطلاعات محصولات و ترجیحات کاربران است. برای مثال، نتفلیکس این مشکل را با پرسیدن علاقهمندیهای کاربران خود در بدو عضویت آنها حل میکند. نمونهای از ساز و کار نتفلیکس در این رابطه، در تصویر زیر قابل مشاهده است.
معیارهای مشابهت
معیارهای مشابهت سنجههایی در سنجش فاصله هستند. نزدیکترین نقاط به یکدیگر بیشترین شباهت را به یکدیگر دارند و دورترین نقاط، کمترین مشابهت را به هم دارند. متداولترین معیارهای مشابهت که در بحث طراحی ریکامندر سیستم مورد استفاده قرار میگیرند عبارتند از:
- فاصله مینکوفسکی (Minkowski Distance)
- فاصله منهتن (Manhattan Distance)
- فاصله اقلیدسی (Euclidean Distance)
- فاصله همینگ (Hamming Distance)
- شباهت کسینوسی (Cosine Similarity)
- ضریب همبستگی پیرسون (Pearson Coefficient)
- اندیس ژاکارد (Jaccard Index)
پرداختن به روشهای محاسبه هر یک از این معیارها از حوصله این مطلب خارج است. مخاطبان میتوانند برای مطالعه بیشتر در این رابطه، از مطالب زیر استفاده کنند:
- فاصله اقلیدسی، منهتن و مینکوفسکی ــ معرفی و کاربردها در دادهکاوی
- ضریب همبستگی (Correlation Coefficients) و شیوه محاسبه آنها — به زبان ساده (+دانلود فیلم آموزش رایگان)
- ضریب همبستگی و ماتریس همبستگی در R — کاربرد در یادگیری ماشین
- فضای متریک و نامساوی مثلثی — به زبان ساده
رابطه و داده در ریکامندر سیستم ها
برای پاسخ به پرسش روش کار سیستم ریکامندر چیست باید با مفاهیم «روابط» (Relationship) و داده (Data) آشنا شد.
روابط در ریکامندر سیستم ها
روابط در ریکامندر سیستم ها بینش قابل توجهی را پیرامون مشتریان فراهم میکند. سه نوع کلی از روابط در ریکامندر سیستم وجود دارد که در ادامه بیان شدهاند.
رابطه کاربر - محصول
رابطه کاربر-محصول (User-Product Relationship) زمانی به وقوع میپیوندد که برخی از کاربران تمایل خاصی به اقلام (محصولات) مشخصی دارند و یا اولویت خاصی برای آنها قائل میشوند. برای مثال، یک بازیکن کریکت ممکن است به اقلام مربوط به بازی کریکت علاقه داشته باشد، بنابراین وبسایتهای تجارت الکترونیک یک رابطه «Player->Cricket» برای آنها میسازند.
رابطه محصول - محصول
رابطه محصول - محصول (Product-Product Relationship) زمانی به وقوع میپیوندد که اقلام در ذات خود مشابه هستند، چه بر اساس ظاهر و چه بر اساس توضیحات آنها. به عنوان مثالهایی از رابطه محصول-محصول میتوان به کتاب یا موسیقی با ژانر مشابه، غذاهایی با نوع غذای مشابه یا مقالات جدید پیرامون یک موضوع مشخص اشاره کرد.
رابطه کاربر - کاربر
رابطه کاربر-کاربر (User-User Relationship) هنگامی به وقوع میپیوندد که برخی از مشتریان دارای سلیقه مشابه نسبت به یک محصول یا خدمت هستند. به عنوان مثالی پیرامون این مورد میتوان به داشتن دوستان مشترک در فیسبوک، سن مشابه و سوابق مشابه اشاره کرد.
داده در ریکامندر سیستم ها
علاوه بر روابط، ریکامندر سیستمها از انواع دادههایی استفاده میکنند که در ادامه بیان شده است.
دادههای رفتاری کاربر
دادههای رفتاری کاربران (User Behavior Data) اطلاعات مفیدی را پیرامون مشارکت کاربران برای یک محصول ارائه میکنند. این دادهها به واسطه رتبهبندیها، کلیکها و تاریخچه خریدها قابل گردآوری هستند.
دادههای جمعیتی کاربر
دادههای جمعیتی کاربر (User Demographic Data) مربوط به اطلاعات شخصی کاربر شامل سن، تحصیلات، درآمد و موقعیت جغرافیایی است.
دادههای مشخصه محصول
دادههای مشخصه محصول اطلاعات مربوط به خود محصول مانند ژانر برای کتاب، تولید کننده فیلم و خوان (Cuisine) برای غذا است.
اکنون که مفهوم روابط و دادهها در ریکامندر سیستم مورد بررسی قرار گرفت، بهتر میتوان به پرسش روش کار سیستم ریکامندر چیست پاسخ داد. شایان توجه است که ریکامندر سیستم با دو دسته کلی از اطلاعات کار میکند که در ادامه بیان شدهاند:
- اطلاعات مشخصهها: این اطلاعات پیرامون اقلام (کلیدواژهها، دستهها و دیگر موارد) و کاربران (علائق، پروفایل و دیگر موارد) است.
- تعامل کاربر-اقلام: این اطلاعات شامل رتبهها، تعداد خریدها، پسندها (Likes) و دیگر موارد است.
بر این اساس، میتوان بین سه رویکردی که در سیستمهای پیشنهادگر مورد استفاده قرار گرفته است تمایز قائل شد. این سه رویکرد در ادامه بیان شدهاند.
- سیستمهای مبتنی بر محتوا (Content Based) که از اطلاعات مشخصهها استفاده میکند.
- سیستمهای پالایش گروهی (Collaborative Filtering) که بر مبنای تعاملات کاربر-قلم هستند.
- سیستمهای ترکیبی (Hybrid Systems) که دو نوع اطلاعات را با هدف اجتناب از مسائلی ترکیب میکنند که در هنگام کار با یک نوع تولید میشود.
انواع سیستمهای ریکامندر چه هستند؟
در ادامه مطلب ریکامندر چیست، به طور عمیقتری به سیستمهای مبتنی بر محتوا و پالایش گروهی پرداخته خواهد شد و تفاوتهای آنها مورد بررسی قرار خواهد گرفت. در تصویر زیر، دستهبندی کلی روشهای مورد استفاده در ریکامندر سیستم ها ارائه شده است.

ریکامندر سیستم مبتنی بر محتوا چیست؟
ریکامندر سیستمهای مبتنی بر محتوا پیشنهادها را با استفاده از ویژگیهای اقلام کاربر و پروفایل او ارائه میکنند. آنها در صورتی که یک کاربر به یک قلم در گذشته علاقهمند بوده باشد، این فرضیه را دارند که پس در آینده نیز یکبار دیگر به آن علاقهمند خواهد شد. اقلام مشابه نیز معمولا معمولا بر اساس ویژگیهای آنها گروهبندی میشوند.
پروفایلهای کاربران با استفاده از تعاملات تاریخی یا با پرسیدن پرسشهای صریح از کاربران پیرامون علاقهمندیهای آنها تهیه میشود. سیستمهای دیگری نیزی وجود دارند که به طور ضعیف و صرفا بر اساس محتوا عمل نمیکنند، بلکه دادههای شخصی کاربر و دادههای اجتماعی او را مورد استفاده قرار میدهند.
مسئلهای که در اینجا مطرح میشود ارائه پیشنهادهای صریح است، زیرا به دلیل شخصیسازی بیش از حد برخی از اقلام موجود در دم بلند هرگز به کاربر نمایش داده نمیشوند (کاربر A تنها به دسته C ،B و D علاقهمند است و سیستم قادر به پیشنهاد اقلام بیرون از این دستهها نیست.حتی اگر آنها برای کاربر مورد پسند باشند).
دیگر مسئله متداولی که وجود دارد این است که کاربران جدید فاقد یک پروفایل تعریف شده هستند، مگر اینکه در هنگام ثبتنام صراحتا از آنها سوالاتی پرسیده شود. با این اوصاف، افزودن اقلام جدید به سیستم کاری نسبتا آسان است. تنها نیاز به حصول اطمینان از آن است که مطابق با ویژگیهای آنها، یک گروه به آنها تخصیص داده میشود.
سیستم پالایش گروهی چیست؟
پالایش گروهی یکی از پرکاربردترین رویکردها در طراحی و ساخت ریکامندر سیستم است و معمولا، نتایج بهتری را نسبت به سیستمهای پیشنهاد دهنده مبتنی بر محتوا فراهم میکند. نمونههایی از این نوع ریکامندر سیستم در سیستمهای پیشنهادگر یوتیوب، نتفلیکس و اسپاتیفای وجود دارند.
این نوع از سیستمها از تعاملات کاربر برای پالایش کردن اقلام مورد علاقه او استفاده میکنند. میتوان مجموعه تعاملات کاربر با اقلام را با بهرهگیری از ماتریس بصریسازی کرد. این کار بدین شکل انجام میشود که هر ورودی (i , j) تعاملات بین کاربر i و قلم j را نمایش میدهد.
یک راهکار جذاب برای پالایش گروهی در نظر گرفتن آن به عنوان یک تعمیم از دستهبندی (Classification) و رگرسیون (Regression) است. در حالی که در این موارد، هدف پیشبینی یک متغیر است که به طور مستقیم به دیگر متغیرها (ویژگیها) وابسته است؛ در پالایش گروهی چنین تمایزی بین متغیرهای ویژگیها و متغیرهای کلاسها وجود ندارد.

در بصریسازی مسئله به عنوان یک ماتریس، به پیشبینی مقادیر یک ستون نگاه نمیشود، بلکه به پیشبینی مقدار هر ورودی داده شدهای نگاه میشود. به طور خلاصه، سیستمهای پالایش گروهی بر مبنای این فرض هستند که اگر یک کاربر قلم A را بپسندد و کاربر دیگری نیز قلم A را به اندازه قلم B بپسندد، بنابراین این امکان وجود دارد که کاربر اول نیز قلم B را بپسندد. بنابراین، هدف پیشبینی تعاملهای جدید بر اساس دادههای تاریخی است. دو نوع از روشهای پالایش گروهی وجود دارد که عبارتند از: سیستم مبتنی بر حافظه (Memory-Based System) و سیستم مبتنی بر مدل (Model-Based System). در ادامه، هر یک از این موارد به طور کامل تشریح شدهاند.

روش مبتنی بر حافظه
دو رویکرد وجود دارد: رویکرد اول خوشههای کاربران را شناسایی و تعاملات یک کاربر خاص را برای پیشبینی تعاملات دیگر کاربران مشابه استفاده میکند. رویکرد دوم، خوشههای اقلام را که به وسیله کاربر A رتبهدهی شده در نظر میگیرد و از آنها برای پیشبینی تعاملات کاربر A با قلم متمایز اما مشابه B استفاده میکند. این روشها معمولا دارای مشکلاتی در بحث ماتریسهای خلوت (ماتریس تُنُک | ماتریس اسپارس | Sparse Matrix) هستند. دلیل این امر آن است که تعداد تعاملات کاربر اقلام میتواند برای ساخت خوشههای با کیفیت بسیار کم باشد.
روش مبتنی بر مدل
این روشها بر مبنای روشهای یادگیری ماشین و دادهکاوی هستند. هدف آموزش دادن مدلها برای آن است که امکان انجام پیشبینی را داشته باشند. برای مثال، میتوان از از تعاملهای کاربر-قلم موجود برای آموزش دادن مدل به منظور پیشبینی ۵ قلم برتری که یک کاربر ممکن است بیش از هرچیزی بپسندد استفاده کرد. یکی از مزایای این روشها آن است که قادر به انجام آن هستند که تعداد زیادی از اقلام را به تعداد زیادی از کاربران پیشنهاد بدهند که این میزان، با تعداد قابل انجام توسط روش مبتنی بر حافظه قابل مقایسه و بسیار بیشتر از آن است. از همین رو گفته میشود که روش مبتنی بر مدل دارای پوششدهی بالایی است، حتی زمانی که با ماتریسهای خلوت بسیار بزرگ کار میکند.
مشکلات روش سیستم پالایش گروهی
دو چالش اساسی هنگام کار با سیستم پالایش گروهی وجود دارد. این چالشها در ادامه بیان شدهاند.
- مسئله شروع سرد: باید اطلاعات کافی را برای کار کردن ریکامندر سیستم (تعاملات کاربر-اقلام) ضمن ساخت و راهاندازی آن داشت. در صورتی که یک وبسایت تجارت الکترونیک جدید راهاندازی شود، نمیتوان تا هنگامی که تعداد مشخصی از کاربران در آن کار و با اقلام تعامل کنند، پیشنهادی به آنها ارائه کرد.
- افزودن کاربران/اقلام جدید به سیستم: چه کاربر جدید باشد و چه قلم، هیچ اطلاعات پیشینی پیرامون آن وجود ندارد چون پیشتر تعاملی با آن انجام نشده است.
این مسائل را میتوان با طرح پرسش از کاربران پیرامون دیگر انواع دادهها در هنگام ثبتنام (شامل جنسیت، سن، علاقهمندیها و دیگر موارد) تا حدی کاهش داد و از فرادادههای (متادیتا | Meta Data) اقلام برای قادر شدن به نسبت دادن آنها به اقلام موجود در پایگاهداده (DataBase) استفاده کرد.
از چه روشهایی برای ساخت ریکامندر سیستم استفاده میشود؟
دو روش اصلی برای ساخت یک ریکامندر سیستم مبتنی بر پالایش گروهی وجود دارد که عبارتند از شبکههای عصبی کاملا متصل (Fully Connected Neural Networks) و Item2vec. هر یک از موارد بیان شده در ادامه تشریح شدهاند.
شبکههای عصبی کاملا متصل
یک رویکرد کلاسیک «تجزیه ماتریس» (Matrix Factorization) است. هدف، کامل کردن ماتریس تعاملات کاربر است (در اینجا فرضا R نامیده میشود). فرض میشود که کاربر به طور معجزهآسایی دو ماتریس U و I را دارد که در آن U×I برابر با R در ورودیهای شناخته شده است. با استفاده از ضرب U×I مقادیر ورودیهای ناشناس R نیز به دست میآیند که بعدا برای تولید پیشنهادها قابل استفاده هستند.

یک راهکار هوشمندانه برای پیدا کردن ماتریسهای U و I استفاده از شبکه عصبی است. ابتدا، باید هر کاربر و قلم را به یک بردار به ترتیب با ابعاد M و N نگاشت کرد. این یعنی نیاز به یادگیری ارائه (Representations) کاربران و اقلام معمولا «توکار» (Embeddings) است (به دلیل اینکه این مفاهیم در یک فضای برداری توکار میشود). چنانکه هنوز مقادیر این بردارها مشخص نیست، باید از یک مقداردهی اولیه تصادفی شروع شود).
سپس، برای هر تعامل کاربر-قلم (u,x) هر دو امبدینگهای کاربر u و قلم x الحاق میشود تا یک بردار یکتا ارائه شود. چنانکه ارزش این تعامل کاربر-قلم از پیش مشخص باشد، میتوان خروجی شبکه برای این بردار را مجبور کرد که بدین صورت باشد. سپس، شبکه از روش «پسانتشار» (Backpropagation) برای تنظیم وزن خود و توکار کردن خودش استفاده میکند، بنابراین نتایج با چیزی که انتظار میرود مطابقت دارند. بدین ترتیب، شبکه بهترین راهکار برای ارائه کاربران و اقلام را فراخواهد گرفت و برای پیشبینی تعاملاتی که پیش از این ندیده است با خوراک دادن آن با نتایج امبد شده مفید است.
برای مثال، با نگاهی به تصویر ارائه شده در بالا، فرض می شود که «User Matrix» و «Item Matrix»به طور تصادفی «embeddings» را مقداردهی اولیه میکنند. برای تعامل (A,X)، شبکه عصبی با بردار [1.2,0.8,1.2,0.6] خوراک داده میشود و خروجی آن را مجبور میکند که برابر با 4٫5 باشد. برای این مثال، میتوان از MSE به عنوان تابع زیان استفاده کرد. در صورتی که یک تابع دودویی از تعاملها وجود داشته باشد، مناسبتر است که از یک تابع زیان متداولتر در مسائل دستهبندی مانند «آنتروپی متقاطع» (Cross Entropy) استفاده شود.
یک نتیجه بسیار جالب توجه این رویکرد آن است که امبدینگزها معمولا حاوی اطلاعات نحوی مشخصی هستند. بنابراین، تنها با پیشبینی تعاملهای ناشناخته کار به پایان نمیرسد، بلکه بینشی گردآوری میشود که میتوان آن را در عمل به کار برد. برای مثال، کاربران مشابه کار را به صورت نزدیکتر به یکدیگر در فضای برداری کاربر مشخص میکند. این مورد برای مثال میتواند برای مطالعه چگونگی رفتار مشتریان مفید باشد.
Item2vec
Item2vec این موضوع را مطرح میکند که امبدینگزها برای اقلام را میتوان با استفاده از روشی به نام Word2vec پیدا کرد. این روش، سفارشهای خرید فروشگاه را به عنوان اطلاعات زمینهای به کار میگیرد که دلالت بر آن دارد که اقلام خریداری شده تحت شرایط مشابه قابل مقایسه هستند (و ارائه خیلی مشابهی را در فضا خواهند داشت که در آن امبدینگها موثر هستند).
این رویکرد نه به صورت مستقیم (Directly) شامل کاربران میشود و نه آنها را در لحظه ارائه پیشنهاد در نظر میگیرد. همچنین اگر هدف نشان دادن جایگزینهای کاربر برای یک قلم خاص باشد که انتخاب کرده است، میتواند بسیار مفید باشد (شما این تلویزیون را خریداری کردهاید، پس شما ممکن است این اقلام دیگر را نیز بپسندید). مشکل اصلی که در اینجا وجود دارد آن است که نیاز به حجم انبوهی از دادهها برای تولید امبدینگزهای خوب است.
چطور میتوان یک ریکامندر سیستم را ارزیابی کرد؟
ریکامندر سیستم ها با بهرهگیری از راهکارهای گوناگونی قابل ارزیابی هستند و پاسخ به این پرسش که مناسبترین راهکار برای ارزیابی سیستم ریکامندر چیست وابسته به اهداف توسعهدهنده ریکامندر سیستم است. در صورتی که هدف تنها پیشنهاد ۵ قلم برتر است (۵ قلمی که بیشترین احتمال تعامل کاربر با آنها وجود دارد) نیاز به در نظر داشتن پیشبینیها با توجه به اقلام در هنگام انجام ارزیابی نیست.
اگرچه، ممکن است کسب و کار علاوه بر پیشنهاد ۵ قلم برتر، تمایل به اولویتبندی آنها برای کاربر داشته باشد. بنابراین، در ضمن ارزیابی نیز باید این مورد را در نظر داشت. حالت انتخابی ارزیابی تاثیر مهمی را روی راهکاری دارد که سیستم طراحی میشود. دو نوع از ارزیابی ریکامندر سیستم ها معمولا مورد بحث هستند که عبارتند از رویکردهای آنلاین و آفلاین.
روش آنلاین ارزیابی سیستم ریکامندر چیست؟
با روش آنلاین که به آن تست A/B نیز گفته میشود، تعاملهای کاربر وقتی که پیشنهادهای ریکامندرسیستم به کاربر داده میشود، سنجیده میشود. برای مثال، میتوان زمانی که کاربر روی قلم پیشنهاد شده کلیک میکند - همچون نرخ تبدیل - و تاثیر مستقیم سیستم را سنجید. این رویکرد برای ارزیابی ایدهآل است. اگرچه، معمولا پیادهسازی این روش کاری دشوار است، زیرا که تنها راه برای اجرای آزمایش تعامل با سیستم است که در حال حاضر خودشان در حال تولید هستند. هر شکستی در آزمایش مانند آن است که تاثیر مستقیمی بر درآمد کسب و کار و تجربه کاربر داشته است. علاوه بر آن، استفاده از مشتریان واقعی برای آزمایشها در ریکامندر سیستمها بسیار کندتر از آن است که دادهها از پیش موجود باشند.
روشهای آفلاین ارزیابی سیستم ریکامندر چیست؟
روشهای آفلاین برای مراحل آزمایشی ایدهآل محسوب میشوند؛ زیرا که کاربر به طور مستقیم درگیر نمیشود و برخلاف روشهای آنلاین، سیستم برای مورد ارزیابی قرار گرفتن نیازی به مستقر شدن ندارد. دادهها به دو دسته آموزش (Train) و «ارزیابی» (Validation) تقسیم میشوند که این یعنی بخشی از دادهها برای ساخت سیستم مورد استفاده قرار خواهد گرفت و بخش دیگر برای ارزیابی آن استفاده میشود. هنگام استفاده از این روشها، توسعهدهنده باید توجه داشته باشد که عواملی وجود دارند که نتایج را تحت تاثیر قرار میدهند و به اندازه کافی قابل ارائه نیستند. برای مثال، فاکتور زمان در بسیاری از توصیهها حائز اهمیت است (فصلها، آب و هوا و دیگر موارد)، چنانکه ممکن است حالت مشتری در برهه خاصی از زمان با دیگر برههها متفاوت باشد.
مثال از ریکامندر سیستم: موتور پیشنهاد هوشمند با پالایش گروهی
چنانکه پیش ازاین نیز بیان شد برای پیادهسازی یک سیستم پیشنهادگر هوشمند نیاز به یک مجموعه داده شامل مجموعهای از اقلام و یک مجموعه از کاربران است که با برخی از اقلام تعامل داشتهاند. تعاملات کاربر با اقلام چنانکه پیشتر نیز بیان شد میتواند صریح (رتبه ۱ از ۵ یا پسند/عدم پسند) یا ضمنی (مشاهده یک قلم، افزودن آن به لیست علاقهمندیها، زمان صرف شده روی یک مقاله) باشد.
در حال کار با چنین دادههایی، در اغلب موارد ارائه آنها به صورت ماتریسی انجام میشود که شامل تعاملات انجام شده توسط یک مجموعه از کاربران با برخی از اقلام از یک مجموعه اقلام است. هر سطر حاوی امتیازی است که توسط کاربر داده شده و هر ستون حاوی امتیازاتی است که یک قلم دریافت کرده است. یک ماتریس با پنج کاربر و پنج قلم چیزی شبیه به تصویر زیر است:
ماتریس پنج کاربر را نشان میدهد که به برخی از اقلام در مقیاس ۱ تا ۵ امتیازدهی کردهاند. برای مثال، اولین کاربر امتیار ۴ را به سومین قلم یعنی i3 داده است. در اغلب موارد، سلولهای ماتریس خالی هستند، زیرا کاربران تنها به برخی از اقلام امتیازدهی کردهاند. این مورد که کاربران با همه اقلام یا بخش عمدهها تعامل کرده باشند غیرمحتمل است. یک ماتریس با بیشترین سلولهای خالی را ماتریس تنک میگویند و نقطه مقایل یک ماتریس اسپارس یک ماتریس چگال (Dense) است. مجموعه دادههای زیادی وجود دارند که گردآوری شدهاند و برای پژوهش و بنچمارکینگ در دسترس عموم قرار گرفتهاند. برای آشنایی با این مجموعه دادهها، مطالعه مطالب زیر پیشنهاد میشود.
- مجموعه دادههای عمومی برای داده کاوی و هوش مصنوعی — راهنمای کاربردی
- مجموعه دادههای رایگان و قابل دانلود برای علم داده و یادگیری ماشین
یکی از بهترین مجموعه دادهها برای آغاز کار ساخت سیستم ریکامندر سیستم و یادگیری و پژوهش با آن، مجموعه داده «MovieLens» [+] است که توسط «GroupLens Research» گردآوری و برای استفاده عموم منتشر شده است. به طور کلی، مجموعه داده ۱۰۰ هزارتایی MovieLens یک مجموعه داده بنچمارک پایدار با بیش از ۱۰۰۰۰۰ امتیازدهی انجام شده توسط ۹۴۳ کاربر برای ۱۶۸۲ فیلم است که در آن هر کاربر حداقل برای ۲۰ فیلم امتیازدهی کرده است. این مجموعه داده شامل فایلهای زیادی است که حاوی اطلاعاتی پیرامون فیلمها، کاربران و امتیازدهیهای انجام شده توسط کاربران به فیلمهایی است که آنها را مشاهده کردهاند. دو مورد از این موارد در ادامه آورده شدهاند.
- u.item: لیست فیلمها
- u.data: لیست امتیازات داده شده توسط کاربر
فایل u.data که حاوی امتیازات است یک لیست از شناسه کاربران (user ID)، «شناسه قلم» (item ID)، امتیازها (rating) و برچسب زمان (timestamp) است. چند خط اول فایل چیزی شبیه جدول زیر است.

چنانکه در بالا نشان داده شده است، فایل میگوید که کاربر چه امتیازی را به یک فیلم خاص داده است. این فایل حاوی ۱۰۰۰۰۰ رتبه است که برای پیشبینی رتبههای فیلمهایی که توسط کاربران دیده نشدهاند استفاده میشود.
مراحل مربوط به پالایش گروهی
برای ساخت سیستمی که بتواند بر مبنای ترجیحات کاربران دیگر اقلام را به صورت خودکار به کاربر پیشنهاد کند، اولین گام پیدا کردن مشابهت کاربران یا اقلام است. دومین گام پیشبینی امتیازهای اقلام است که هنور توسط کاربر امتیازدهی نشدهاند. بنابراین، نیاز به پاسخ دادن به پرسشهای زیر است:
- چطور میتوان تعیین کرد که کدام کاربر یا قلم مشابه با دیگری است؟
- با فرض اینکه این دانش وجود دارد که کدام کاربران شبیه به یکدیگر هستند، چطور میتوان امتیازی که یک کاربر بر مبنای امتیازدهی کاربران مشابه به یک قلم میدهد را تعیین کرد؟
- چطور میتوان صحت امتیازهای محاسبه شده را تعیین کرد؟
دو پرسش اول که یک پاسخ کوتاه و تک جملهای ندارند و پیش از این نیز به آنها پرداخته شد. پالاش گروهی (Collaborative Filtering) خانوادهای از الگوریتمها هستند که در آنها روشهای گوناگونی برای پیدا کردن کاربران یا اقلام مشابه و راهکارهای متعدد برای محاسبه امتیازها بر مبنای امتیازهای کاربران مشابه وجود دارد. بسته به نظر توسعهدهنده سیستم پیشنهادگر، میتوان از هر کدام از این رویکردها استفاده کرد. در ادامه این بخش از مطلب ریکامندر سیستم چیست و در مثال ارائه شده، از رویکردهای مختلفی برای پیدا کردن مشابهت و پیشبینی امتیازات استفاده شده است.
یک مسئله مهم که باید در نظر داشت این است که در روشهایی که به طور ضعیف برمبنای پالایش گروهی هستند مشابهت با استفاده از عواملی مانند سن کاربران، ژانر فیلم یا هر داده دیگری پیرامون کاربر یا اقلام محاسبه نمیشود. این مورد تنها بر مبنای امتیازدها داده شده توسط یک کاربر به یک قلم (صریح یا ضمنی) محاسبه میشود. برای مثال، دو کاربر را در صورتی میتوان مشابه در نظر گرفت که امتیاز مشابهی را به ده فیلم داده باشند، علارغم آنکه تفاوت قابل توجهی در سن آنها وجود داشته باشد.
سومین پرسش آن است که چگونه میتوان صحت پیشبینیها را اندازهگیری کرد و این پرسش نیز چندین پاسخ دارد که پیشتر در بخش روشهای ارزیابی ریکامندر سیستم به آن به طور اجمالی پرداخته شد. از جمله روشهای قابل استفاده برای ارزیابی ریکامندر سیستمها روشهای محاسبه خطا است که در سیستمهای زیادی و نه فقط در سیستمهای پالایش گروهی از آنها استفاده میشود.
یکی از رویکردها برای اندازهگیری صحت نتایج «خطای جذر میانگین مربعات» (Root Mean Square Error | RMSE) است که با استفاده از آن، رتبهها برای یک مجموعه داده تست از جفتهای کاربر-قلم که مقادیر رتبه آنها در حال حاضر شناخته شده محاسبه میشود. تفاوت بین مقدار و مقدار پیشبینی شده، خطا است. همه مقادیر خطا برای مجموعه تست باید مربع شوند، میانگین آنها محاسبه شود و سپس، ریشه دوم میانگین محاسبه شود تا RMSE به دست آید. دیگر سنجه برای اندازهگیری صحت، «میانگین قدرمطلق خطا» (Mean Absolute Error | MAE) است که در آن بزرگنمایی خطا با پیدا کردن مقدار مطلق و استفاده از مزایای همه مقادیر خطاها فراهم میشود. نیازی به نگرانی پیرامون جزئیات این روشهای محاسباتی وجود ندارد زیرا در حال حاضر این موارد در کتابخانههای زیادی در پایتون وجود دارند. در ادامه با استفاده از دو نوع روش مبتنی بر حافظه و مبتنی بر مدل ریکامندر سیستم با پایتون پیادهسازی خواهد شد.
ریکامندر سیستم مبتنی بر حافظه
اولین دسته شامل الگوریتمهایی است که مبتنی بر حافظه هستند و در آنها، روشهای آماری روی کل مجموعه داده برای محاسبه پیشبینیها اعمال میشود. برای پیدا کردن رتبه R که کاربر U به یک قلم I میدهد، رویکرد شامل گامهای زیر است:
- پیدا کردن کاربران مشابه با U که قلم I را امتیازدهی کردهاند.
- محاسبه امتیاز R بر مبنای امتیازهای کاربران پیدا شده در گامهای پیشین.
هر یک از دو گام بیان شده در ادامه پیادهسازی شدهاند.
پیدا کردن مشابهت کاربران بر مبنای امتیازها
برای درک مفهوم مشابهت، ابتدا یک مجموعه داده ساده ساخته میشود. دادهها شامل ۴ کاربر C ،B ،A و D میشوند که به دو فیلم امتیاز دادهاند. رتبهها در لیستها ذخیره میشود و هر لیست حاوی دو عدد است که امتیاز هر فیلم را مشخص میکنند.
- امتیازات داده شده توسط A عبارتند از: [2.0 ,1.0]
- امتیازات داده شده توسط B عبارتند از: [4.0 ,2.0]
- امتیازات داده شده توسط C عبارتند از: [4.0 ,2.5]
- امتیازات داده شده توسط D عبارتند از: [5.0 ,4.5]
برای آغاز کار، امتیازهای دو فیلم که توسط کاربران داده شده است روی نمودار ترسیم میشوند. نمودار خروجی به صورت زیر است.
در نمودار بالا، هر نقطه نشانگر یک کاربر است و نقاط نشانگر رتبههایی است که کاربران به این دو فیلم دادهاند. با نگاه به فاصله بین نقاط به نظر میرسد که محاسبه فاصله راهکار خوبی برای تخمین مشابهت باشد. میتوان فاصله را با استفاده از فرمول برای فاصله اقلیدسی بین دو نقطه پیدا کرد. میتوان از تابع موجود در SciPy به صورتی که در برنامه زیر نشان داده شده است برای انجام این کار استفاده کرد.
چنانکه در قطعه کد بالا نمایش داده شده است، میتوان از scipy.spatial.distance.euclidean برای محاسبه فاصله بین نقاط استفاده کرد. استفاده از این تابع برای محاسبه بین امتیازهای B ،A و D تا C با استفاده از فاصله نشان میدهد که امتیازهای داده شده توسط C به امتیازهای داده شده توسط B نزدیکتر است. میتوان مشاهده کرد که کاربر C نزدیکترین کاربر به B است؛ حتی با نگاه کردن به نمودار نیز میتوان این مورد را مشاهده کرد.
اما از بین A و D کدام یک به C نزدیکتر است؟ میتوان گفت که بر اساس فاصله، C به D نزدیکتر است. اما با نگاه کردن به رتبهها به نظر میرسد که C با A بیشتر از D تراز است زیرا هم A و هم C دومین فیلم را دو برابر بیشتر از فیلم اول دوست داشتهاند، اما D هر دو فیلم را به طور مساوی دوست داشته است. بنابراین، پرسشی که در این وهله مطرح میشود این است که از چه روشی میتوان برای شناسایی الگوهایی میتوان استفاده کرد که توسط فاصله اقلیدسی قابل محاسبه نیستند؟ آیا زاویه بین خطوط نیز میتواند علاوه بر فاصله نقاط در محاسبات برای انجام تصمیمگیری استفاده شود؟ میتوان نگاهی به زاویه بین خطوطی انداخت که مبدا مختصات نمودار را به ترتیب به نقاط وصل میکند.
نمودار چهار خط را نشان میدهد که هر نقطه را به مبدا مختصات متصل کردهاند. خطوط مورد استفاده برای نقاط A و B منطبق بر یکدیگر هستند و همین امر موجب شده تا زاویه بین آنها برابر با صفر باشد. میتوان در نظر گرفت که اگر زاویه بین خطوط افزایش پیدا کند، مشابهت کاهش پیدا میکند و اگر زاویه برابر با صفر باشد، کاربران بسیار شبیه خواهند بود. برای محاسبه شباهت با استفاده از زاویه، نیاز به تابعی است که مشابهت بالاتر یا فاصله کمتر را برای زاویه کمتر و مشابهت کمتر یا فاصله بیشتر را برای زاویه بالاتر باز میگرداند. کسینوس زاویه تابعی است که از ۱ تا ۱- کاهش پیدا میکند، زیرا که زاویه از ۰ تا ۱۸۰ است.
میتوان از کسینوس زاویه برای پیدا کردن مشابهت بین دو کاربر استفاده کرد. هر چه زاویه بالاتر باشد، کسینوس کمتر خواهد بود و بنابراین، مشابهت کاربران کمتر خواهد بود. همچنین، میتوان مقدار کسینوس زاویه را معکوس کرد تا کسینوس فاصله بین کاربر با تفریق آن از ۱ حاصل شود. scipy دارای تابعی است که فاصله کسینوسی بردارها را محاسبه میکند. این تابع مقدار بالاتری را برای زوایای بزرگتر باز میگرداند.
زاویه کوچکتر بین بردارهای C و A منجر به تولید فاصله کسینوسی کوچکتری میشود. بنابراین، در صورتی که توسعهدهنده ریکامندر سیستم تمایل دارد مشابهت کاربران را بدین روش رتبهدهی کند، باید از فاصل کسینوسی استفاده کند.
نکته: در مثال بالا، تنها دو فیلم در نظر گرفته شدهاند که طبعا بصریسازی بردارهای امتیازدهی را در دو بعد آسانتر ساخته است. این کار صرفا با این هدف انجام شده که تشریح موضوع آسانتر شود. بررسیهای موردی با اقلام متعدد دارای ابعاد بیشتری در بردارهای امتیازدهی هستند.
شایان توجه است که کاربران A و B از جهت سنجه مشابهت کسینوس کاملا مشابه در نظر گرفته شدهاند؛ علارغم آنکه امتیازهای متفاوتی دارند. این یک اتفاق معمول در جهان واقعی است و کاربرانی مانند A چیزی هستند که میتوان به آن «رایدهندگان سختگیر» (Tough Raters) گفت.
برای در نظر گرفتن چنین علایق کاربری، نیاز به آن است که همه کاربران با حذف سوگیریها (Biases) در سطح مشابهی قرار بگیرند. این کار را میتوان با تفریق امتیاز میانگین داده شده توسط کاربر به همه اقلام از هر قلم انجام داد. آنچه بیان شد، به طور دقیقتر به صورت زیر است:
- برای کاربر A، بردار امتیازدهی [۲ ,۱] دارای میانگین ۱٫۵ است. با تفریق ۱٫۵ از هر امتیازدهی، بردار [0.5 ,0.5-] حاصل خواهد شد.
- برای کاربر B، بردار امتیازدهی [۴ ,۲] دارای میانگین ۳ است. تفریق ۳ از هر امتیازی، بردار [1 ,1-] را به دست خواهد داد.
با انجام این کار، مقدار میانگین امتیاز داده شده توسط هر کاربر به ۰ تغییر پیدا کرد. کار مشابهی برای کاربران C و D نیز انجام میشود و میتوان مشاهده کرد که امتیازها اکنون برای دادن یک میانگین ۰ برای همه کاربرها تنظیم شدهاند که همه آنها را به سطح مشابهی میآورد و سوگیریهای آنها را حذف میکند.
کسینوس زاویه بین بردارهای تنظیم شده را «کسینوس مرکزی شده» (Centered Cosine) گویند. این رویکرد طبعتا زمانی استفاده میشود که مقادیر ناموجود (Missing Values) زیادی در بردارها وجود دارد و نیاز به قرار دادن یک مقدار متداول (Common Value) برای پر کردن مقادیر ناموجود وجود دارد.
پر کرد مقادیر ناموجود در ماتریس امتیازها با یک مقدار تصادفی میتواند منجر به عدم صحت شود. یک انتخاب مناسب برای پر کردن مقادیر ناموجود میتواند امتیاز میانگین هر کاربر باشد، اما میانگین اصلی کاربر A و B به ترتیب برابر با ۱٫۵ و ۳ است و تکمیل همه مقادیر خالی A با ۱٫۵ و همه موارد B با ۳ موجب میشود که این دو کاربر غیرمشابه شوند.
اما پس از تنظیم مقادیر، «میانگین مرکزی شده» (Centered Average) هر دو کاربر برابر با ۰ میشود. این موضوع این ایده را قوت میبخشد که مقادیر ناموجود برای هر دو کاربر A و B، کمتر یا بیشتر از مقدار میانگین هستند زیرا که برای هر دو کاربر با همه مقادیر ناجود در هر دو بردار کاربر، مقدار صفر به دست آمده است.
فاصله اقلیدسی و مشابهت کسینوسی از جمله رویکردهایی هستند که از آنها میتوان برای پیدا کردن کاربران مشابه با دیگر کاربران و حتی، اقلام مشابه با دیگر اقلام، استفاده کرد (تابع استفاده شده در بالا فاصله کسینوسی را محاسبه میکند. برای محاسبه فاصله کسینوسی، فاصله را باید از ۱ کم کرد).
نکته: فرمول محاسبه کسینوس مرکزی شده مشابه با فرمولی است که برای ضریب همبستگی پیرسون (Pearson Correlation Coefficient) استفاده میشود. در بسیاری از کتابخانهها و همچنین پیادهسازیهای ریکامندر سیستم ها از پیادهسازی کسینوس مرکزی شده با عنوان همبستگی پیرسون یاد شده است.
روش محاسبه امتیازها
پس از آنکه لیست کاربران مشابه با U تعیین شد، نیاز به محاسبه امتیازات R است که U به قلم مشخص I میدهد. در اینجا نیز درست مانند مشابهت، این کار را نیز میتوان به روشهای گوناگون انجام داد. میتوان پیشبینی کرد که امتیاز یک کاربر R برای شی I نزدیک به میانگین امتیازات داده شده به I توسط ۵ یا ۱۰ کاربر برتری است که مشابه U هستند. فرمول ریاضی برای میانگین امتیاز داده شده توسط n کاربر به صورت زیر است.
این رابطه نشان میدهد که رتبه میانگین داده شده توسط n کاربر مشابه برابر با مجموع امتیازات داده شده توسط آنها تقسیم بر تعداد کاربران مشابه است که برابر با n میشود. موقعیتهایی وجود دارد که در آن n کاربر مشابهی که کشف شدهاند به طور برابر با کاربر هدف U مشابه نیستند. ۳ مورد برتر آنها ممکن است بسیار مشابه باشند و کل آنها ممکن است به طور یکسان با U مشابه نباشند. در این شرایط، میتوان رویکردی را در نظر گرفت که در آن امتیاز مشابهترین کاربر از دومین کاربر مشابه با اهمیتتر است و همین ترتیب برای سایر کاربران نیز هست. میانگین وزنی میتواند برای به دست آوردن آنچه بیان شد کمک کند.
در رویکرد میانگین وزنی، میتوان هر امتیاز را در یک معیار مشابهت ضرب کرد (معیار مشابهت میگوید که کاربران چقدر به هم شبیه هستند). با ضرب کردن در معیار مشابهت، وزنهایی به امتیازات اضافه میشود. هر چه وزن یک امتیاز بیشتر باشد، بیشتر حائز اهمیت است. معیار مشابهت که به مثابه وزن عمل میکند باید معکوس فاصله تشریح شده در بالا باشد، زیرا فاصله کمتر به معنای مشابهت بیشتر است. برای مثال، میتوان کسینوس فاصله را از ۱ کسر کرد تا مشابهت کسینوسی حاصل شود. با داشتن معیار مشابهت S برای هر کاربری که به کاربر هدف U شباهت دارد، میتوان میانگین وزنی را با بهرهگیری از رابطه زیر محاسبه کرد.
در فرمول بالا، هر امتیازی در معیار مشابهت کاربری که امتیاز داده است ضرب میشود. امتیاز پیشبینی شده نهایی توسط کاربر U برابر با مجموع امتیازهای وزنی تقسیم بر مجموع وزنها است.
نکته: افرادی که با این پرسش مواجه میشوند که چرا مجموع امتیازهای وزنی تقسیم بر مجموع وزنها میشود و نه بر n، باید این مورد را در نظر داشت که در فرمول پیشین میانگین، تقسیم بر n انجام میشود و در آن، مقدار وزن برابر با ۱ است. مخرج همیشه مجموعه وزنها است، وقتی که بحث از پیدا کردن میانگین میشود و در میانگین نرمال، وزن ۱ بدین معنا است که مخرج برابر با n خواهد بود.
با میانگین وزنی، توجه بیشتری به امتیازهای کاربر مشابه به منظور مشابهت آنها میشود. همچنین، انواعی پالایش گروهی وجود دارد که در آنها امتیازها با پیدا کردن اقلام مشابه به یکدیگر به جای کاربران مشابه و محاسبه امتیازها انجام میشود. در بخش بعدی، به این نوع از پالایش گروهی پرداخته خواهد شد.
پالایش گروهی مبتنی بر کاربر و مبتنی بر قلم
در روشی که در مثال بالا تشریح شده است، ماتریس امتیازها برای پیدا کردن کاربران مشابه بر مبنای امتیازات داده شده توسط آنها است و از این رو به آن مشابهت مبتنی بر کاربر یا پالایش گروهی کاربر-کاربر گفته میشود. در صورتی که از ماتریس امتیاز برای پیشبینی اقلام مشابه بر مبنای امتیازات داده شده به آنها توسط کاربران استفاده شود، به این رویکرد پالایش گروهی مبتنی بر قلم یا قلم-قلم گفته میشود. دو رویکرد به لحاظ ریاضیاتی بسیار شبیه به هم هستند، اما یک تفاوت ادراکی بین دو مورد وجود دارد. در ادامه، دو روش بیان شده با یکدیگر مقایسه شدهاند.
مبتنی بر کابر: برای کاربر U، با یک مجموعه از کاربران مشابه بر مبنای بردار امتیازها شامل امتیازهای داده شده اقلام، امتیاز برای قلم I که به آن امتیازی داده نشده با انتخاب N کاربر از لیست مشابهت که به قلم I امتیاز دادهاند و محاسبه امتیاز بر مبنای این N امتیاز انجام میشود.
مبتنی بر قلم: برای قلم I با یک مجموعه از اقلام مشابه تعیین شده بر مبنای بردار امتیازها شامل امتیازهای دریافتی کاربر U، که به آن امتیاز نداده است، با انتخاب N قلم از لیست مشابهت که توسط U به آنها امتیاز داده شده است و محاسبه امتیازها بر مبنای این n امتیاز انجام میشود.
پالایش گروهی مبتنی بر قلم، توسط آمازون توسعه داده شده است. در یک سیستم که کاربران بیشتر از اقلام هستند، پالایش مبتنی بر قلم سریعتر و پایدارتر از مبتنی بر کاربر است. این مورد به این دلیل موثر است که معمولا، نرخ میانگین دریافت شده توسط یک قلم به سرعت امتیاز میانگین داده شده توسط یک کاربر برای اقلام متمایز نخواهد بود. این روش برای عملکرد بهتر از رویکرد مبتنی بر کاربر هنگامی که ماتریس امتیازها اسپارس است شناخته شده است.
اگرچه، رویکرد مبتنی بر کاربر عملکرد برای پایگاه داده با اقلام مرتبط با مرور وب یا تفریحاتی مانند MovieLens دارد که در آنها پیشنهادهای داده شده به کاربران بسیار واضح به نظر میرسند. چنین مجموعه دادهای نتایج بهتری را با روش تجزیه ماتریس یا با پیشنهادگرهای ترکیبی که محتوای دادهها را در نظر میگیرند (مبتنی بر محتوا) دارند. میتوان از کتابخانه Surprise برای آزمایش با الگوریتمهای ریکامندر مختلف به طور سریع استفاده کرد.
پالایش گروهی مبتنی بر مدل
دومین دسته، رویکردهای مبتنی بر مدل را پوشش میدهد که شامل یک گام برای کاهش یا فشردهسازی ماتریس اسپارس کاربر-قلم هستند. برای درک این گام، یک درک پایهای از کاهش ابعاد بسیار مفید خواهد بود.
کاهش ابعاد
در ماتریس کاربر-قلم، دو بعد وجود دارد که در ادامه بیان شدهاند:
- تعداد کاربران
- تعداد اقلام
اگر بیشتر ماتریس خالی باشد، کاهش ابعاد (Dimensionality Reduction) میتواند کارایی الگوریتم را هم از جهت فضا و هم از جهت زمان بهبود ببخشد. میتوان از روشهای گوناگونی مانند تجزیه ماتریس یا خودرمزگذارها (Autoencoders) برای این کار استفاده کرد.
تجزیه ماتریس
به تجزیه ماتریس میتوان به عنوان روشی برای شکستن یک ماتریس بزرگ به ضرب ماتریسهای کوچکتر نگاه کرد. این مورد مشابه با تجزیه اعداد صحیح است که در آنها ۱۲ را میتوان به صورت ۲ × ۶ یا ۲ × ۴ نوشت. در مورد ماتریسها، ماتریس A با ابعاد m × n را میتوان به ترتیب به ضرب دو ماتریس X و Y با ابعاد m x p و p x n کاهش داد.
نکته: در ضرب ماتریس، ماتریس X را تنها در صورتی میتوان در Y ضرب کرد که تعداد ستونها در X برابر با تعداد سطرها در Y باشد. بنابراین، دو ماتریس کاهش یافته دارای بعد مشابه p هستند. بسته به الگوریتم استفاده شده برای کاهش ابعاد، تعداد ماتریسهای کاهش یافته میتواند بیشتر از دو ماتریس باشد.
ماتریس کاهش یافته در واقع کاربران و اقلام را به طور جداگانه نشان میدهد. m سطر در ماتریس اول نشانگر m کاربر است و p سطر پیرامون ویژگیها یا مشخصههای کاربران اطلاعات میدهد. مورد مشابهی برای ماتریس قلم با n اقلام و p مشخصه وجود دارد. در ادامه، مثالی از اینکه تجزیه ماتریس چگونه به نظر میرسد نیز ارائه شده است.
در تصویر بالا، ماتریس به دو ماتریس کاهش پیدا کرده است. ماتریس سمت چپ ماتریس کاربر با m کاربر و ماتریس بالایی ماتریس اقلام با n قلم است. ماتریس امتیازدهی ۴ به دو بردار کاهش پیدا کرده و یا تجزیه شده است که عبارتند از:
- بردار کاربر (1- ,۲)
- بردار اقلام (۱ ,۲٫۵)
دو ستون در ماتریس کاربر و دو سطر در ماتریس اقلام را «عوامل پنهان» (Latent Factors) میگویند و این فاکتورهای پنهان نشانگر مشخصه پنهان پیرامو کاربر یا اقلام هستند. یک تفسیر ممکن پیرامون تجزیه میتواند به صورت زیر باشد: فرض میشود که در بردار کاربر (u, v)، متغیر u نشانگر آن است که یک کاربر چه میزان ژانر وحشت را دوست دارد و متغیر v نشانگر آن است که چقدر ژانر عاشقانه را دوست دارد.
بردار کاربر
- (1- ,۲) نشانگر یک کاربر است که فیلمهای ترسناک را دوست دارد و به آن به صورت مثبت امتیاز داده و فیلمهای عاشقانه را دوست ندارد و به آنها به صورت منفی امتیاز داده است.
- فرض میشود که در بردار اقلام (i, j)، متغیر i نشانگر آن است که چقدر یک فیلم به ژانر وحشت تعلق دارد و j نشانگر آن است که چقدر آن فیلم به ژانر عاشقانه تعلق دارد.
- فیلم (۱ ,۲٫۵) دارای رتبه وحشت ۲٫۵ و رتبه عاشقانه ۱ دارد. ضرب کردن آن با کاربر با استفاده از قوانین ضرب ماتریسها خروجی زیر را دارد:
- (2 * 2.5) + (-1 * 1) = 4
- بنابراین، فیلم متعلق به ژانر وحشت است و کاربر ممکن است به آن امتیاز ۵ را بدهد، اما درج جزئی عاشقانه در آن موجب شده تا امتیاز آن به ۴ کاهش پیدا کند.
ماتریسهای عامل (فاکتور) میتوانند چنین بینشی را پیرامون کاربران و اقلام آنها فراهم کنند. اما در حقیقت، آنها معمولا پیچیدهتر از توصیف ارائه شده در بالا هستند. تعداد چنین فاکتورهایی میتواند هر چیزی از یک تا صدها یا حتی هزاران باشد. این عدد یکی از چیزهایی است که باید در هنگام آموزش دادن مدل بهینه شود.
در مثال، نیاز به دو فاکتور پنهانی برای ژانر فیلم وجود دارد، اما در سناریوهای واقعی، این فاکتورهای پنهان نیاز به آن ندارند که خیلی مورد تحلیل قرار بگیرند. اینها الگوهایی در دادهها هستند که نقش خود را به صورت خودکار بازی میکنند؛ چه توسعهدهنده ریکامندر سیستم این نقش را رمزگشایی کند و چه این کار را انجام ندهد. تعداد فاکتورهای پنهانی ریکامندیشنها را به گونهای متاثر میکند که هر چه تعداد فاکتورها بیشتر باشد، پیشنهادها شخصیسازیتر میشوند. اما وجود فاکتورهای زیاد ممکن است منجر به بیشبرازش بشود.
نکته: بیشبرازش زمانی به وقوع میپیوندد که مدل آموزش میبیند تا دادههای آموزش را برازش کند. برای فراگیری بیشتر و بهتر مفهوم بیشبرازش، مطالعه مطلب «بیشبرازش (Overfitting)، کمبرازش (Underfitting) و برازش مناسب — مفهوم و شناسایی» پیشنهاد میشود.
الگوریتم برای تجزیه ماتریس
یکی از الگوریتمهای محبوب برای تجزیه ماتریس «تجزیه مقادیر منفرد» (Singular Value Decomposition | SVD) است. SVD هنگامی به شدت درخشید که تجزیه ماتریس به خوبی در رقابتهای جایزه نتفلیکس انجام شد. دیگر الگوریتمهای قابل استفاده در این راستا شامل «تحلیل مولفه اساسی» (Principal Component Analysis | PCA) و انواع آن از جمله «فاکتورگیری نامنفی ماتریس» (Non-negative matrix factorization | NMF) و دیگر موارد میشوند. خودرمزگذارها میتوانند برای کاهش ابعاد در صورتی استفاده شوند که کاربر قصد استفاده از شبکههای عصبی (Neural Networks) را دارد. میتوان پیادهسازی این الگوریتمها را در کتابخانههای گوناگون برای پایتون انجام داد، بنابراین نیازی به نگرانی پیرامون جزئیات در این وهله نیست. برای مطالعه بیشتر پیرامون کاهش ابعاد، مطالب زیر پیشنهاد میشوند:
- انتخاب ویژگی (Feature Selection) در دادههای ابعاد بالا — خودآموز ساده
- الگوریتم کاهش ابعاد t-SNE با مثالهای پایتون — آموزش کاربردی
ساخت ریکامندر سیستم با پایتون
کتابخانهها و ابزارهای کمی وجود دارند که پیادهسازیهایی از الگوریتمهای متنوع را فراهم میکنند که میتوان از آنها برای ساخت یک ریکامندر استفاده کرد. اما یکی از کتابخانههایی که استفاده از آن برای ساخت ریکامندر سیستم با پایتون پیشنهاد میشود کتابخانه Surprise است.
Surprise از ابزارهای اکوسیستم سایپای (SciPy) است که از الگوریتمهای ریکامندر و سنجههای مشابهت متعددی پشتیبانی میکند و بدین شکل، ساخت و تحلیل ریکامندر سیستمها را آسان میسازد. در ادامه، روش نصب کتابخانه Surprise با پایتون بیان شده است.
در ادامه، روش نصب Surprise از طریق مدیر بسته کوندا بیان شده است.
تذکر: نصب کتابخانه پانداس (Pandas) نیز برای پیادهسازی مثال تشریح شده در این بخش الزامی است.
برای استفاده از Surprise، باید ابتدا برخی از ماژولهای مبنا و کلاسهای موجود در آن را دانست که در ادامه بیان شدهاند.
- ماژول Dataset برای بارگذاری دادهها از فایلها، دیتافریمهای پانداس یا حتی مجموعه دادههای توکار موجود برای آزمایشها مورد استفاده قرار میگیرد. (MovieLens 100k یکی از کتابخانههای توکار موجود در Surprise است.) برای بارگذاری یک مجموعه داده، برخی از روشهای موجود عبارتند از:
- Dataset.load_builtin()
- Dataset.load_from_file()
- Dataset.load_from_df()
- کلاس Reader برای پارس (Parse) کردن یک فایل حاوی رتبهها مورد استفاده قرار میگیرد. فرمت پیشفرضی که در آن دادهها پذیرفته شدهاند آن است که هر امتیازی در خط جدایی از کد به ترتیب user item rating ذخیره شده است. این ترتیب و جداساز با استفاده از پارامترهای زیر قابل پیکربندی هستند.
-
- line_format یک رشته است که ترتیب دادهها را با اسامی فیلدهای جدا شده با استفاده از فضاهای خالی (Spaces) به صورت «item user rating» ذخیره میکند.
- sep برای تعیین جداسازهای بین فیلدها مانند «,» استفاده میشود.
- rating_scale برای تعیین مقیاس امتیازدهی مورد استفاده قرار میگیرد. حالت پیشفرض (۵ ,۱) است.
- skip_lines برای تعیین تعداد خطوط برای پرش از آغاز فایل مورد استفاده قرار میگیرد. مقدار پیشفرض برابر با ۰ است.
در ادامه، برنامهای که میتوان از آن برای بارگذاری دادهها از دیتافریم پانداس یا مجموعه داده توکار MovieLens 100k استفاده کرد ارائه شده است.
در برنامه بالا، دادهها در یک دیکشنری (Dictionary) ذخیر شدهاند که در دیتافریم پانداس و پس از آن در شی مجموعه داده از Surprise بارگذاری شده است.
الگوریتمهای برمبنای K نزدیکترین همسایگی
انتخاب الگوریتم برای تابع ریکامندر بستگی به روشی دارد که توسعهدهنده ریکامندر سیستم قصد استفاده از آن را دارد. برای رویکردهای مبتنی بر حافظه که در بالا تشریح شدهاند، الگوریتمی که برازش مناسبی ارائه میکند «k نزدیکترین همسایگی مرکزی شده» (Centered K-Nearest Neighbours | Centered k-NN) است. دلیل این انتخاب آن است که الگوریتم به فرمول مشابهت کسینوس تشریح شده در بالا بسیار نزدیک است. این الگوریتم در Surprise با عنوان KNNWithMeans موجود است. برای پیدا کردن مشباهت، نیاز است که تابع با پاس دادن یک دیکشنری به عوان آرگومان به تابع پیشنهادگر پیکربندی شود. دیکشنری باید کلیدهای مورد نیاز مانند مواردی که در زیر آمده است را داشته باشد:
- name حاوی سنجههای مشابهت برای استفاده است. گزینههای موجود pearson ،msd ،cosine یا pearson_baseline هستند. پیشفرض msd است.
- user_based یک boolean است که میگوید رویکرد برمبنای کاربر است یا برمبنای قلم. پیشفرض True است که یعنی رویکرد مبتنی بر کاربر مورد استفاده قرار گرفته است.
- min_support حداقل تعداد اقلام مشابه مورد نیاز بین کاربران برای آن است که مشابه در نظر گرفته شوند. برای رویکرد مبتنی بر قلم، این مورد متناظر با حداقل تعداد کاربران مشترک برای دو قلم است.
برنامه زیر تابع KNNWithMeans را پیکربندی میکند:
تابع ریکامندر در برنامه بالا برای استفاده از مشابهت کسینوس و برای پیدا کردن اقلام مشابه با استفاده از رویکرد مبتنی بر اقلام پیکربندی شده است. برای آزمودن این ریکامندر سیستم، نیاز به ساخت Trainset از data است. Trainset با دادههایی مشابه ساخته میشود اما حاوی اطلاعات بیشتری پیرامون دادهها مانند تعداد کاربران و اقلام (n_users, n_items) است که توسط الگوریتم مورد استفاده قرار میگیرند. میتوان این مورد را با استفاده از کل مجموعه داده و یا بخشی از دادهها ساخت. همچنین، میتوان دادهها را به Foldهایی تقسیم کرد که در آن برخی از دادهها برای آموزش و برخی برای تست مورد استفاده قرار میگیرند.
نکته: استفاده از تنها یک جفت داده تست و آموزش معمولا کافی نیست. هنگامی که مجموعه داده اصلی به مجموعههای تست و آموزش تقسیم میشود، باید بیش از یک جفت را برای مشاهدات گوناگون با تنوع در مجموعههای تست و آموزش ساخت. الگوریتمها باید با استفاده از زیرمجموعه (لایه | Folds) مختلف اعتبارسنجی متقابل (Cross Validation) شوند. با استفاده از جفتهای متفاوت، میتوان شاهد نتایج متفاوتی بود که توسط ریکامندر ارائه شدهاند. MovieLens 100k پنج دسته مختلف از دادههای تست و آموزش را فراهم میکند: u2.test ،u2.base ،u1.test ،u1.base و ...، u5.test ،u5.base برای اعتبارسنجی پنج لایه (5-Fold) مورد استفاده قرار میگیرد.
در ادامه، مثالی پیرامون چگونگی پیدا کردن آنکه کاربر E به فیلم 2 امتیاز میدهد، ارائه شده است.
الگوریتم پیشبینی کرده است که کاربر E به فیلم امتیاز E را میدهد که به اندازه کافی زیاد هست تا به عنوان ریکامندیشن به او نمایش داده شود. برای این مثال، میتوان از الگوریتمهای دیگر برمبنای KNN نیز با گزینههای مشابهت دیگر و الگوریتمهای تجزیه ماتریس موجود در کتابخانه Surprise استفاده کرد. با آزمودن الگوریتمهای مختلف روی مجموعه داده MovieLens، میتوان بنچمارکهایی را به دست آورد و مشاهده کرد که کدام الگوریتمها عملکرد بهتری را نسبت به سایر موارد دارند. در ادامه، روش استفاده از Surprise برای بررسی اینکه کدام پارامترها بهترین عملکرد را برای دادهها دارند بیان شده است.
تنظیم پارامترهای الگوریتم
Surprise یک کلاس به نام GridSearchCV که مشابه با GridSearchCV در سایکیتلرن است را فراهم میکند. با dict از همه پارامترها، GridSearchCV همه ترکیبات از پارامترها و گزارشها را امتحان میکند و بهترین پارامترها را برای هر معیار صحتی گزارش میدهد. برای مثال، میتوان بررسی کرد که کدام سنجه مشابهت بهترین عملکرد را برای توسعهدهنده در رویکرد مبتنی بر حافظه دارد.
خروجی برنامه بالا به صورت زیر است.
بنابراین، برای مجموعه داده MovieLens 100k، الگوریتم Centered-KNN بهترین عملکرد را دارد اگر از رویکرد مبتنی بر اقلام و MSD به عنوان معیار مشابهت با حداقل پشتیبانی ۳ استفاده شود. به طور مشابه، برای رویکرد مبتنی بر مدل، میتوان از Surprise برای بررسی اینکه کدام مقادیر برای عوامل زیر بهترین کارکردها را دارند استفاده کرد.
- n_epochs تعداد تکرارهای SGD است که اساسا بر مبنای یک روش تکرار شوند مورد استفاده در آمار برای کمینه کردن یک تابع هستند.
- lr_all نرخ یادگیری برای همه پارامترها است که پارامتری است که تصمیم میگیرد پارامترها در هر تکرار چقدر تنظیم شدهاند.
- reg_all یک اصطلاح باقاعدهسازی برای همه پارامترها است که عبارت پنالتی اضافه شده برای جلوگیری از بیش برازش است.
نکته: باید به خاطر داشت که هیچ ماتریس مشابهی در تجزیه الگوریتمهای ماتریس به عنوان فاکتور پنهانی وجود ندارد که از مشابهت میان کاربران یا اقلام پشتیبانی میکند.
خروجی برنامه بالا به صورت زیر است:
0.9642278631521038 {'n_epochs': 10, 'lr_all': 0.005, 'reg_all': 0.4}
بنابراین، ریکامندر سیستم ارائه شده در اینجا با استفاده از مجموعه داده MovieLens 100k در صورتی که ۱۰ دوره (Epoch) وجود داشته باشد از نرخ یادگیری 0٫005 و با قاعدهسازی 0٫4 استفاده شود، بهترین عملکرد را دارد. دیگر الگوریتمهای مبتنی بر تجزیه ماتریس موجود در Surprise عبارتند از SVD++ و NMF.
با دنبال کردن این مثالها، کاربر میتواند به طور عمیق پارامترهایی که برای این الگوریتمها قابل استفاده هستند را مورد بررسی قرار دهد. به طور قطع، پیشنهاد میشود که افراد ریاضیات نهفته در پس این موارد را بررسی کنند. از آنجا که نیازی به نگرانی پیرامون پیادهسازی الگوریتمها از پایه نیست، ریکامندر سیستم ها میتوانند یک گزینه خوب برای ورود عملی به دنیای یادگیری ماشین و ساخت برنامه کاربردی بر مبنای آن باشند.
پالایش گروهی چه زمانی قابل استفاده است؟
پالایش گروهی حول محور تعاملاتی که کاربر با اقلام دارد کار میکند. این تعاملات میتوانند کمک کنند تا الگوهایی کشف شوند که دادههای پیراون اقلام یا خود کاربران نمیتوانند. در ادامه، برخی از نکاتی که میتوانند به توسعهدهنده کمک کنند که تصمیم بگیرد آیا پالایش گروهی مورد استفاده قرار بگیرد یا خیر، آورده شدهاند:
- پالایش گروهی نیاز به آن ندارد که ویژگیهایی پیرامون اقلام یا کاربران شناخته شده باشند. این روش برای یک مجموعه از اقلام متفاوت مناسبسازی شده است؛ برای مثال، موجودی سوپرمارکت که در آن اقلام از دستههای مختلف قابل اضافه شدن هستند. در مجموعهای از اقلام مشابه مانند آنچه در یک فروشگاه وجود دارد، ویژگیهای شناخته شده مانند نویسندگان و ژانرها میتوانند مفید واقع شوند و ممکن است از رویکردهای مبتنی بر محتوا یا ترکیبی بهره ببرند.
- فیلترینگ گروهی میتواند به ریکامندرها کمک کند تا شخصیسازی بیش از حد در پروفایل کاربر انجام ندهند و پیشنهادهایی را ارائه کنند که به طور کامل از آنچه کاربر تاکنون دیده است متفاوت باشند. در صورتی که توسعهدهنده تمایل دارد تا برای مثال ریکامندر سیستم آن یک جفت کشف اسپرت را به کسی که تازه یک جفت دیگر از آن کفش خریده است را پیشنهاد نکند، باید پالایش گروهی را به جزئیات برنامه اضافه کند.
اگرچه پالاش گروهی به طور متداول در ریکامندرها استفاده میشود، برخی از چالشهایی که توسعهدهندگان ضمن استفاده از پالاش گروهی با آنها مواجه میشوند در ادامه آمده است.
- پالایش گروهی میتواند منجر به برخی از مسائل مانند مسئله شروع سرد (Cold Start Problem) برای اقلامی شوند که به لیست اضافه شدهاند. تا هنگامی که کاربری به این موارد امتیاز بدهد، این موارد پیشنهاد نمیشوند.
- خلوت (اسپارس) بودن دادهها میتواند ریکامندیشنهای مبتنی بر کاربر را تحت تاثیر قرار بدهد و همچنین، به مسئله شروع سرد که در بالا به آن پرداخته شده است بیفزاید.
- مقیاس کردن میتواند به چالشی برای مجموعه دادههای در حال رشد تبدیل شود، چرا که پیچیدگی ممکن است بسیار بالا باشد. هنگامی که مجموعه داده بزرگ است، پیشنهادهای مبتنی بر قلم سریعتر از پیشنهادهای مبتنی بر کاربر هستند.
- با یک پیادهسازی سر راست، ممکن است کاربر مشاهده کند که پیشنهادها صرفا گرایش به موارد محبوب دارند . اقلام موجود در دم دراز نادیده گرفته شدهاند.
نباید فراموش کرد که هر الگوریتم ریکامندر دارای مزایا و معایب خودش است. معمولا، راهکارهای ترکیبی گزینه مناسبی برای فائق آمدن به این چالشها هستند. مزیت چندین الگوریتم که با یکدیگر یا در پایپلاین کار میکنند آن است که میتوانند به راهاندازی ریکامندرهای صحیحتر کمک کنند. در حقیقت، راهکارهای برنده میادین معمولا ترکیبی پیچیده از چندین الگوریتم هستند.
مثال از ریکامندر سیستم: ریکامندر سیستم محتوا محور پیشنهاد مقالات
در این بخش از مطلب ریکامندر چیست، مثالی از یک ریکامندر سیستم محتوا محور پیشنهاد مقالات به همراه پیادهسازی آن در پایتون ارائه شده است.
در این مثال، یک ریکامندر سیستم برای مقالات نیویورک تایمز ساخته خواهد شد. این ریکامندر سیستم مثالی از تولید داده بسیار ساده است. این سیستم، مقالاتی را پیشنهاد میکند که کاربر بر اساس مقالهای که در حال حاضر در حال خواندن آن است باید بخواند. این کار با پیشنهاد مقالات مشابه بر مبنای دادههای متنی مقاله انجام میشود.
وارسی دادهها
متنی که در ادامه آمده، گزیدهای از اولین مقاله موجود در مجموعه داده است. قطعا در اینجا کار با دادههای متنی انجام میشود.
اکنون، اولین پرسشی که باید به آن پاسخ داده شود این است که چگونه باید این دادههای متنی را برداریسازی کرد. پرسش بعدی این است که چگونه میتوان ویژگیهای جدید را به صورت «Parts-of-Speech»، «N-Grams»، «Sentiment Scores» یا «Named Entities» مهندسی کرد؟ قطعا مبحث پردازش زبان طبیعی (Natural Language Processing | NLP) مبحثی بسیار پیچیده است که میتوان روزها به بررسی آن پرداخت. اما همه آزمایشهای بزرگ نیز از یک نقطه کوچک شروع شدهاند. در اینجا نیز از یک مثال ساده و قابل انجام استفاده شده است.
تقسیمبندی دادهها
ابتدا باید تصمیم گرفت که کدام ویژگیها از مجموعه داده مورد نظر هستند، آنها را در نظر گرفت و سپس، دادهها را به دو دسته آموزش و تست تقسیم کرد (همه پیشپردازشهای استاندارد باید روی دادهها انجام شود).
بردار متن
گزینههای بین انتخاب برداریسازهای گوناگون متن مانند کیسه کلمات «Bag-of-Words | BOW»، «ورد۲وک» (Word2Vec) و «Tf-Idf» وجود دارند. در این مثال از Tf-Idf استفاده شده است، دلیل این امر آن است که بر خلاف کلیسه کلمات، Tf-Idf اهمیت کلمات را نه بر اساس تکرار کلمات که بر اساس تکرار سند معکوس (Inverse Document Frequency) محاسبه میکند.
بنابراین، برای مثال اگر کلمهای مانند «اوباما» (Obama) تنها چند بار در متن تکرار شود (برخلاف کلمات توفقی مانند a یا the که مشتمل بر اطلاعات خاصی نیستند) اما در مقالات متعدد ظاهر شود، وزن بیشتری دریافت خواهد کرد. این کار از این جهت توجیه دارد که اوباما کلمه توقف نیست و با دلیل خوبی به آن اشاره شده است (به شدت به موضوع بحث مرتبط است).
سنجه مشابهت
هنگام انتخاب معیار مشابهت گزینههای متنوعی وجود دارد که از جمله آنها میتوان به Jacard و Cosine برای نامگذاری زوجها نام برد.
Jacard با مقایسه دو مجموعه متفاوت و انتخاب عناصر همپوشان کار میکند. مشابهت Jacard به عنوان یک گزینه در اینجا مطرح نیست زیرا که در ابتدا گفته شد که از Tf-Idf برای برداریسازی استفاده میشود. در صورتی که از روش BoW استفاده شده بود، استفاده از Jacard معقولتر بود.
با توجه به آنکه Tf-Idf وزنها را برای هر توکن در هر مقاله فراهم میکند میتوان ضرب داخلی بین وزنهای توکنهای مقالات گوناگون را محاسبه کرد. در صورتی که مقاله A دارای وزن بالایی برای توکنهایی مانند «Obama» و «White House» باشد و مقاله B نیز به همین صورت باشد، ضرب داخلی آنها منجر به حصول امتیاز مشابهت بالاتری نسبت به موردی میشود که در آن مقاله B دارای وزن کمتری برای توکنهای مشابه است (در اینجا برای سادگی فرض بر آن است که وزن همه توکنها نگهداری میشود).
ساخت ریکامندر محتوامحور
این قسمت در واقع آن قسمتی است که معجزه در آن به وقوع میپیوندد. در اینجا، تابعی ساخته میشود که N مقاله برتری را به عنوان خروجی میدهد که باید بر اساس امتیاز مشابهت با مقالهای که در حال حاضر کاربر در حال مطالعه آن است و همه مقالههای دیگر در بدنه (Corpus) به او پیشنهاد شود (دادههای آموزش).
تابع بالا به ترتیبی که در ادامه تشریح شده است کار میکند.
- محاسبه مشابهت بین مقاله کاربر و بدنه (Corpus)
- مرتبسازی امتیازها از بالاترین به پایینترین مشابهت
- دریافت N برترین مقاله مشابه (N مشابهترین مقاله)
- دریافت نام، دسته و آدرس N مقاله برتر متناظر
- بازگرداندن نام مقاله، دسته، آدرس و امتیاز آن
اعتبارسنجی نتایج
اکنون که مقالاتی برای کاربر پیشنهاد شده تا آنها را مطالعه کند (بر مبنای آنچه در حال حاضر در حال مطالعه آن است) باید بررسی کرد که آیا نتایج خروجی سیستم ریکامندر مبتنی بر محتوا درست است. اکنون نام مقاله و دسته مقالهای که کاربر در حال مطالعه آن است با مقاله پیشنهاد شده مقایسه میشود. در ادامه، ابتدا نگاهی به امتیازهای مشابهت انداخته میشود.
# similarity scores sorted_sim_scores[:5] # OUTPUT: # 0.566 # 0.498 # 0.479 # . # .
این امتیازات مشابهت خیلی بالا نیستند (شایان توجه است که مشابهت کسینوسی عددی بین ۰ و ۱ است). چگونه میتوان این را اثبات کرد؟ بسیار خب؛ میتوان برداریساز دیگری مانند Doc2Vec را در نظر گرفت. همچنین، میتوان از معیارهای مشابهت دیگری نیز استفاده کرد.
# user's article's section name X_test_sections[k] # OUTPUT: 'U.S' # corresponding section names for top n recs rec_sections # OUTPUT: 'World' 'U.S' 'World' 'World' 'U.S.'
به نظر میرسد نام دسته مقالات پیشنهاد شده بسیار مناسب هستند. این خوب است.
# user's article X_test[k] 'LOS ANGELES — The White House says President Barack Obama has told the Defense Department that it must ensure service members instructed to repay enlistment bonuses are being treated fairly and expeditiously.\nWhite House spokesman Josh Earnest says the president only recently become aware of Pentagon demands that some soldiers repay their enlistment bonuses after audits revealed overpayments by the California National Guard. If soldiers refuse, they could face interest charges, wage garnishments and tax liens.\nEarnest says he did not believe the president was prepared to support a blanket waiver of those repayments, but he said "we\'re not going to nickel and dime" service members when they get back from serving the country. He says they should not be held responsible for fraud perpetrated by others.'
مقاله کاربر پیرامون پرداختهای زیاد انجام شده به اعضای گارد ملی است. اکنون، برخی از N مقاله برتر پیشنهاد شده بررسی میشوند.
بسیار خب، به نظر میرسد ریکامندر به خوبی کار میکند. همه ۵ مثال پیشنهاد داده شده به نوعی مرتبط با مقالهای هستند که کاربر در حال مطالعه آن است. فرایند اختصاصی اعتبارسنجی استفاده شده در اینجا آنطور که انتظار میرفت عمل کند بود. در این مثال برخی از کارها به صورت دستی و با کپی پیست کردن انجام میشود؛ در حالی که در یک ریکامندر سیستم انتظار میرود که همه چیز از جمله مرحله ارزیابی به طور کامل خودکارسازی شود. ارائه یک ریکامندر سیستم قابل بهرهبردرای به طور کامل از حوصله این بحث خارج است و هدف از ارائه این مثال آشنایی هرچه بیشتر و بهتر مخاطب با مفهوم ریکامندر سیستم مبتنی بر محتوا است.
پرسشهای متداول پیرامون ریکامندر سیستم
در این بخش از مطلب ریکامندر چیست به پرسشهای متداول پیرامون ریکامندر سیستم پاسخ داده شده است.
کاربرد ریکامندر سیستم چیست؟
ریکامندر سیستم در تلاش است تا تمایل کاربر نسبت به اقلام (محتوا، کالا یا خدمات) را پیشبینی کند و بر این اساس، پیشنهادهای مناسبی را به او بدهد.
ریکامندر سیستم چگونه کار میکند؟
ریکامندر سیستم با دریافت دادهها پیرامون کاربر و اقلام و تحلیل آنها با استفاده از یک تابع پیشنهادگر، به پیشبینی پیرامون نظرات احتمالی کاربر پیرامون اقلام گوناگون میپردازد.
هدف ریکامندر سیستم چیست؟
هدف ریکامندر سیستم تولید پیشنهادهای اقلام (محتوا، کالا و خدمات) معنادار برای یک مجموعه از کاربران بر اساس علایق آنها است.
چگونه میتوان یک ریکامندر سیستم ساخت؟
با گردآوری دادههای کاربران، استفاده از روشهای یادگیری ماشین، علم داده و دانش ساخت اپلیکیشن وب، میتوان یک ریکامندر سیستم ساخت.
مثالهایی از ریکامندر سیستمها چه هستند؟
پیشنهاد موسیقی در اسپاتیفای، پیشنهاد محصول در آمازون، پیشنهاد ویدئو در یوتیوب و پیشنهاد فیلم در نتفلیکس مثالهایی از ریکامندر سیستم هستند.
آیا نیاز به استفاده از ریکامندر سیستمها وجود دارد؟
بله؛ ریکامندر سیستم هم برای خدماتدهنده (افزایش درآمد) و هم برای کاربر (تسریع و تسهیل دسترسی به اقلام مورد نیاز) مفید است.
چرا نیاز به استفاده از ریکامندر سیستمها است؟
ریکامندر سیستم به کاربر کمک میکند تا سریعتر و آسانتر به اقلام مورد نظر خود دست یابد و تجربه بهتری داشته باشد؛ در نتیجه درآمد خدماتدهنده را افزایش میدهد.
انواع ریکامندر سیستم چیست؟
سه دسته کلی ریکامندر سیستمها وجود دارند که عبارتند از ریکامندر سیستم مبتنی بر محتوا، ریکامندر سیستم مبتنی بر پالایش گروهی و ریکامندر سیستم ترکیبی.
چه ابزارها و روشهایی برای پیادهسازی یک سیستم پیشنهادگر وجود دارد؟
از روشهای یادگیری ماشین و علم داده برای پیادهسازی یک سیستم پیشنهادگر استفاده میشود. برای آگاهی از جزئیات دقیقتر و بیشتر پیرامون این پرسش، مطالعه مطلب «نکاتی پیرامون سیستم های پیشنهادگر — پادکست پرسش و پاسخ» پیشنهاد میشود.
از چه الگوریتمهایی برای ساخت ریکامندر سیستم میتوان استفاده کرد؟
بسته به نوع دادههای در دسترس، از الگوریتمهای گوناگون شامل روشهای پالایش گروهی یا پردازش محتوا میتوان استفاده کرد.
ریکامندر سیستمها نظارت شده هستند یا غیر نظارت شده؟
ریکامندر سیستمهای اولیه نظارت شده بودند و در گذر زمان، استفاده از روشهای غیرنظارت شده (با توجه به دادهها و شرایط مسئله) افزایش یافت.
با سلام
مطلب بسیار خوبی بود و از آن استفاده بردم
ارزوی موفقیت بیشتر برایتان دارم