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

۳ روش برای ساخت سیستم پیشنهاددهنده

    0

    بی شک استفاده سیستم پیشنهاددهنده Recommendation system یکی از بهترین روش‌ها برای بهبود تجربه کاربری در سامانه‌های مختلف و دروازه ورودی است به دنیای یادگیری ماشین. بسیاری از شرکت‌ها در حال حاضر از سیستم‌های پیشنهاددهنده یا بخش «پیشنهادات شما» استفاده می‌کنند. اخیراً محبوبیت سیستم‌های پیشنهاددهنده به لطف شرکت‌هایی مثل آمازون ، نتفلیکس و یوتیوب که هر یک نسخه شخصی‌سازی‌شده و مخصوص به خود را به کار گرفته‌اند، به شدت افزایش یافته است.

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

    حال می‌توانیم به سراغ حل مسئله اصلی برویم. برای مشاهده کد تکمیل‌شده می‌توانید به این لینک مراجعه نمایید. برای این مثال از دیتاست MovieLens 100k Dataset. استفاده خواهیم کرد.

    فیلتر تعاملی

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

    برای مثال، فرض کنید من و دوستم سلیقه مشابهی در انتخاب کتاب داشته‌ایم. حال دوست من از کتابی خوشش آمده که من هنوز نخوانده‌ام، اما از آن‌جا که در گذشته علایق یکسانی داشته‌ایم، به احتمال زیاد من نیز از آن کتاب خوشم خواهد آمد. به همین دلیل نیز او کتاب مذکور را به من پیشنهاد می‌دهد. این نوع پیشنهادات، فیلتر تعاملی مبتنی بر کاربر User-based collaborative filtering نیز نامیده می‌شوند.

    حال بیایید در مثال قبل به جای تمرکز روی علایق دوست من، روی مجموعه‌ای از اقلام که من قبلاً نسبت به آن‌ها علاقه نشان داده‌ام، متمرکز شویم. به این ترتیب، اقلام جدید بر اساس شباهتی که با اقلام موردعلاقه من در گذشته دارند، به من پیشنهاد خواهند شد و این شباهت بر اساس رتبه یا امتیازی که من به اقلام می‌دهم به دست آمده است. در چنین پیشنهاداتی با این جمله‌ مواجه هستیم: «کاربرانی که به فلان اقلام علاقه نشان داده‌اند، بهمان اقلام را نیز دوست داشته‌اند». این نوع الگوریتم را با نام فیلتر تعاملی مبتنی بر اقلام Item-based collaborative filtering نیز می‌شناسیم.

    در مجموع، هر دوی این روش‌ها در دسته‌ای از انواع فیلترهای تعاملی قرار می‌گیرند که با نام روش‌های مبتنی بر حافظه Memory based methods شناخته می‌شوند. حال بیایید مثالی از این روش‌های مبتنی بر حافظه را در پایتون ببینیم.

    سیستم پیشنهاددهنده

    به این ترتیب داده‌ها در قالب مدنظر ما قرار می‌گیرند. حال می‌خواهم دیتاست را به صورت تصادفی به دو دیتاست آموزشی و آزمایشی تقسیم کنم تا بتوانم بعدها از دیتاست آزمایشی برای آزمون و ارزیابی مدل استفاده کنم.

    اولین مرحله در ساخت یک سیستم فیلترینگ تعاملی، محاسبه شباهت بین کاربران (در روش مبتنی بر کاربر) یا اقلام (در روش مبتنی بر اقلام) است.

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

    کد بالا نمونه‌ای است از فیلتر تعاملی مبتنی بر کاربر. می‌توانیم روش مبتنی بر اقلام را نیز به صورت زیر پیاده‌سازی کنیم.

    شاید این الگوریتم‌ها عملکرد قابل‌توجهی نداشته باشند، اما برای درک مفهوم و شیوه‌های ارائه پیشنهاد کافی هستند.

    همانطور که گفته شد روش‌های تعاملی که در بالا دیدیم، در دسته روش‌های مبتنی بر حافظه قرار می‌گیرند. یک دسته دیگر از انواع روش‌های فیلتر تعاملی، رویکرد مبتنی بر مدل است. در این رویکرد، مدل‌ها با استفاده از الگوریتم‌های داده‌کاوی و یادگیری ماشینی طراحی می‌شوند تا رتبه‌بندی کاربر برای اقلام رتبه‌بندی‌نشده را پیش‌بینی کنند.

    فیلتر محتوایی

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

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

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

    بیایید ببینیم این روش چگونه در پایتون اجرا می‌شود:

    سیستم پیشنهاددهنده

    سیستم پیشنهاددهنده

    سیستم پیشنهاددهنده ترکیبی

    استفاده از سیستم‌های ترکیبی در دنیای واقعی رایج‌تر از روش‌های ساده است چرا که در این روش‌ها، مؤلفه‌های رویکردهای مختلف با هم ترکیب می‌شوند و به این ترتیب، بسیاری از کاستی‌های آن‌ها جبران می‌شود. در این مقاله، منظور از سیستم ترکیبی سیستمی است که دو روش تعاملی و محتوایی را با هم ترکیب می‌کند.

    در مقاله دیگری با همین مظمون، نوشته شده بود که سیستم‌های پیشنهاددهنده به منظور رسیدن به کارآیی با دو مشکل دست و پنجه نرم می‌کنند:

    ۱. مسئله پراکندگی رتبه‌ها: یعنی تعداد رتبه‌هایی که به عنوان ورودی به سیستم داده می‌شود بسیار کمتر از تعداد رتبه‌هایی است که سیستم باید پیش‌بینی کند. این مشکل معمولاً در مرحله آغازین یعنی وقتی اطلاعات کمی درباره رتبه‌بندی‌ها داریم، پررنگ‌تر است.

    ۲. مسئله اولین رتبه: یعنی تنها اقلامی را می‌توان به دیگران پیشنهاد داد که حداقل یک بار توسط کاربر دیگری رتبه‌بندی شده باشند.

    سخن آخر

    در این مقاله به ۳ روش کاربردی برای ساخت سیستم‌های پیشنهاددهنده پرداختیم و کدهای مربوط ۲ تا از آن‌ها (روش فیلتر تعاملی و فیلتر محتوایی) را به زبان پایتون نوشتیم. در این مقاله به جزئیات الگوریتم‌ها، تئوری پشت آن‌ها و معیارهای ارزیابی عملکرد پرداخته نشد. اگر اطلاعات بیشتری در این خصوص نیاز دارید می‌توانید به کانال یوتیوب آقای اندرو اِن‌جی و پلی‌لیست اختصاصی وی در حوزه سیستم‌های پیشنهاددهنده مراجعه کنید.

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

    مقاله قبلی

    هفته هوش مصنوعی در ایران و فراخوان طرح‌های نوآورانه استارتاپ‌ها

    مقاله بعدی

    شما همچنین ممکن است دوست داشته باشید

    نظرات

    پاسخ دهید

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