الترشيح التعاوني: القائم على المستخدم والقائم على العنصر
تشابه المستخدمين، وتشابه العناصر، وأساليب الجوار، والتشابه الجيبي للتقييمات
الترشيح التعاوني: القائم على المستخدم والقائم على العنصر درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ما الترشيح التعاوني؟
يوصي الترشيح التعاوني (CF) بالعناصر من خلال التعلم من سلوك العديد من المستخدمين. والفكرة الأساسية هي أن الأشخاص الذين اتفقوا في الماضي يميلون إلى الاتفاق في المستقبل. ولا يحتاج هذا الأسلوب إلى أوصاف للعناصر، بل إلى سجل التفاعلات فقط.
مصفوفة المستخدم والعنصر
يبدأ الترشيح التعاوني من مصفوفة المستخدم والعنصر، حيث تمثل الصفوف المستخدمين، وتمثل الأعمدة العناصر، وتحتوي كل خلية على تقييم أو تكون فارغة إذا لم يُقيَّم العنصر. وتكون هذه المصفوفة عادةً متناثة جدًا، لأن كل مستخدم يقيّم عددًا قليلًا من العناصر.
import pandas as pd
matrix = ratings.pivot_table(
index="user_id", columns="item_id", values="rating"
)نوعا الترشيح التعاوني
- القائم على المستخدمين: العثور على مستخدمين مشابهين لكم، ثم التوصية بما أعجبهم.
- القائم على العناصر: العثور على عناصر مشابهة للعناصر التي أعجبتكم، ثم التوصية بها.
يعتمد الأسلوبان على مقياس للتشابه بين الصفوف (المستخدمين) أو الأعمدة (العناصر).
التشابه الجيبي
يقيس التشابه الجيبي الزاوية بين متجهي تقييم، مع تجاهل المقدار. وتشير القيم القريبة من 1 إلى ذوق متشابه جدًا، بينما تشير القيم القريبة من 0 إلى عدم وجود علاقة.
from sklearn.metrics.pairwise import cosine_similarity
filled = matrix.fillna(0)
user_sim = cosine_similarity(filled) # user x userالتنبؤ القائم على المستخدمين
للتنبؤ بتقييمكم لعنصر ما، احسبوا متوسطًا موزونًا لتقييمات المستخدمين المتشابهين لهذا العنصر، مع إعطاء كل تقييم وزنًا يساوي درجة التشابه. ويكون تأثير الجيران الأكثر تشابهًا أكبر.
صيغة التنبؤ
التقييم المتنبأ به = مجموع (التشابه * تقييم الجار) / مجموع (التشابه)، وذلك على الجيران الذين قيّموا العنصر. ويؤدي طرح متوسط كل مستخدم أولًا (توسيط المتوسط) إلى تصحيح الفروق بين المستخدمين الذين يميلون عمومًا إلى إعطاء تقييمات مرتفعة أو منخفضة.
import numpy as np
def predict(sims, ratings_for_item):
mask = ~np.isnan(ratings_for_item)
if sims[mask].sum() == 0:
return np.nan
return np.dot(sims[mask], ratings_for_item[mask]) / sims[mask].sum()اختيار الجيران (k)
بدلًا من استخدام جميع المستخدمين، احتفظوا فقط بأفضل k من الجيران الأكثر تشابهًا. يقلل ذلك الضوضاء الناتجة عن المستخدمين غير المتشابهين، ويسرّع التنبؤ. وتُعد k معلمة فائقة قابلة للضبط.
التشابه القائم على العناصر
يحسب الترشيح التعاوني القائم على العناصر التشابه بين أعمدة العناصر بدلًا من صفوف المستخدمين. ويوصي بالعناصر الأكثر تشابهًا مع العناصر التي أعجب بها المستخدم مسبقًا.
item_sim = cosine_similarity(filled.T) # item x itemلماذا يكون الترشيح القائم على العناصر أكثر استقرارًا؟
تتغير العلاقات بين العناصر ببطء؛ فعلى سبيل المثال، يظل التشابه بين فيلمين ثابتًا تقريبًا. أما أذواق المستخدمين وقاعدة المستخدمين فتتغير بسرعة أكبر. لذلك يمكن حساب أوجه التشابه بين العناصر مسبقًا وإعادة استخدامها، مما يوفر توصيات أكثر استقرارًا وقابلية للتوسع، ولهذا السبب اشتهرت Amazon بتفضيله.
مشكلة البداية الباردة
يواجه الترشيح التعاوني صعوبة مع المستخدمين أو العناصر الجديدة التي لا تملك تقييمات بعد، إذ لا يوجد ما يمكن مقارنته. وتشمل الحلول الشائعة مطالبة المستخدمين الجدد بإدخال بضعة تقييمات، أو الرجوع إلى أساليب قائمة على المحتوى (ستتناولها الدروس لاحقًا).
إنشاء التوصيات
احسبوا درجة كل عنصر لم يقيّمه المستخدم، ورتّبوا العناصر تنازليًا، ثم أعيدوا أفضل N عناصر كتوصيات.
scores = {item: predict_for(user, item)
for item in unrated_items(user)}
top_n = sorted(scores, key=scores.get, reverse=True)[:10]اختبار سريع
اختبروا معرفتكم بالترشيح التعاوني.
مراجعة
بنيتم نظام ترشيح تعاوني اعتمادًا على مصفوفة المستخدم والعنصر، وحسبتم التشابه الجيبي، وتنبأتم بالتقييمات باستخدام متوسط موزون بالتشابه للجيران، وتعرّفتم إلى سبب كون الترشيح التعاوني القائم على العناصر أكثر استقرارًا من الترشيح القائم على المستخدمين. التالي: تحليل المصفوفات باستخدام SVD.
الأسئلة الشائعة
هل درس «الترشيح التعاوني: القائم على المستخدم والقائم على العنصر» مجاني؟
نعم — نص درس «الترشيح التعاوني: القائم على المستخدم والقائم على العنصر» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ماذا ستتعلم في «الترشيح التعاوني: القائم على المستخدم والقائم على العنصر»؟
تشابه المستخدمين، وتشابه العناصر، وأساليب الجوار، والتشابه الجيبي للتقييمات تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟
لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «الترشيح التعاوني: القائم على المستخدم والقائم على العنصر»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟
نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الترشيح التعاوني: القائم على المستخدم والقائم على العنصر
- تحليل المصفوفات بالعوامل باستخدام SVD
- الترشيح القائم على المحتوى
- الأنظمة الهجينة ومقاييس التقييم