میخواهیم شباهت فیلمها را با توجه به امتیازات کاربران به آنها در مجموعه دادهای ratings_grade_inflation2 که جزئیات آن در داده کاوی - ۳ - جزئیات دیتاستها
در دسترس است محاسبه کنیم.
Movie
u1
u2
u3
u4
Interstellar
1
2
3
4
Inception
1
2
3
4
Hangover
4
3
2
1
با نگاهی کوتاه به نظرات کاربران میتوان به این نتیجه رسید که شباهت دو فیلم interstellar و inception بیشتر از شباهت interstellar و hangover هست، به عبارتی در بهترین حالت انتظار داریم معیار ما شباهت کامل را برای دو فیلم interstellar و inception نتیجه دهد و عدم شباهت کامل برای دو مورد بعدی زیرا نظر کاربران برای دو فیلم interstellar و inception کاملا مشابه و برعکس نظر هر کاربر برای interstellar و hangover متفاوت بوده.
ابتدا با روش شباهت کسینوسی که در داده کاوی - ۵ - شباهت کسینوسی به شرح آن پرداختیم میزان شباهت فیلمها را محاسبه میکنیم و به نتیجه زیر میرسیم.
خروجی بدست آمده به نتاج مورد نظر ما نزدیک است، همانطور که انتظار داشتیم میزان شباهت Interstellar-Inception برابر شباهت کامل یعنی مثبت یک شد ولی برای دو فیلم Interstellar-Hangover که انتظار عدم شباهت کامل یعنی منفی یک را داشتیم عدد مثبت 0.666 حاصل شد!
فرمول شباهت کسینوسی تعدیل یافته یا Adjusted Cosine Similarity s(x,y)=∑i=1n(xi−Riˉ)2∑i=1n(yi−Riˉ)2∑i=1n(xi−xˉ)(yi−yˉ)
برابر میانگین مقادیر ثبت شده برای ویژگی i است که در مثال ما برابر میانگین امتیازات یک فرد مثل alireza است. در روش شباهت کسینوسی تعدیل شده با کم کردن میانگین امتیازات کاربر از امتیازهایش سعی شده تا مشکل تورم درجه حل شود.
پیادهسازی شباهت کسینوسی تعدیل یافته در پایتون
همانطور که مشاهده میکنید تغییر اصلی متد شباهت کسینوسی که در داده کاوی - ۵ - شباهت کسینوسی
مطرح شد شامل اضافه شدن تابع mean برای محاسبهی میانگین امتیازات دو کاربر و کم کردن میانگین امتیازات هر فرد زمان استفاده از امتیاز اوست.
حال مجددا میزان شباهت را با استفاده از روش شباهت کسینوسی تعدیل یافته با متد get_adjusted_cosine_similarity بدست میآوریم.
همانطور که مشاهده میکنید جواب بدست آمده با روش کسینوسی تعدیل یافته برابر جواب مورد انتظار ما است یعنی شباهت کامل دو فیلم Interstellar و Inception و عدم شباهت کامل Interstellar و Hangover.