سیستم های توصیه گر (Recommender System) : در میان آتش

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

برای اینکه یه کم این موضوعات قابل فهم تر بشه با مثال جلو می ریم این مثال می تونه شامل هر کسب و کاری بشه و شما می تونید اسم ها رو با هر چیزی که تو ذهنتون دارین عوض کنید ولی برای ملموس تر شدن سعی می کنم چیزی رو مثال بزنم که حداقل یک بار باهاش کار کردین مثال من گوگل پلی (یا بازار ) هست فرض کنید که شما مسئول بخشی هستید که می خواهید پیشنهاد ها رو در اختیار کاربران قرار بده به نظر شما اولین چیزی که بهش نیاز داریم چیه ...؟

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

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

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

روش اول : فیلترینگ بر اساس محتوا (Content Based Filtering)

فیلترینگ بر اساس محتوا
فیلترینگ بر اساس محتوا

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

روش دوم : فیلترینگ مشارکتی (Collaborative Filtering)

فیلترینگ مشارکتی
فیلترینگ مشارکتی

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

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

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

روش سوم : فیلترینگ ترکیبی (Hybrid Filtering)

سوم روش از این روش ها همون طور که از اسمش پیداست ترکیبی از دو روش قبلی هست مثلا فرض کنید که ما با استفاده از روش فیلترینگ مشارکتی بهترین پیشنهاد ها رو پیدا کردیم و حالا به جای اینکه اون ها به مخاطب ارائه بدیم بررسی می کنیم که این پیشنهاد ها از نظر محتوایی چه میزان شباهتی با آیتمی که در حال حاضر انتخاب شده است دارد بر این اساس ما دو روش قبل را با هم ترکیب کردیم و حالا می تونیم پیشنهاد های بهینه تری رو به مخاطبمون بدیم .

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