כדי להתמודד עם חלק מהמגבלות של סינון מבוסס-תוכן, סינון שיתופי משתמש בקווי דמיון בין משתמשים פריטים בו-זמנית כדי לספק המלצות. כך אפשר לקבלת המלצות אקראיות; כלומר, סינון שיתופי יכולים להמליץ על פריט למשתמש א' בהתאם לתחומי העניין של משתמש דומה ב'. בנוסף, אפשר ללמוד את ההטמעות באופן אוטומטי, בלי להסתמך על הנדסה ידנית של תכונות.
דוגמה להמלצה על סרט
נבחן מערכת המלצות על סרטים שבה נתוני האימון כוללים של מטריצת משוב שבה:
- כל שורה מייצגת משתמש.
- כל עמודה מייצגת פריט (סרט).
המשוב על סרטים משתייך לאחת משתי קטגוריות:
- בוטה – המשתמשים מציינים עד כמה הם אהבו סרט מסוים מתן דירוג מספרי.
- מרומז – אם משתמש צופה בסרט, המערכת מסיקה ש כאשר המשתמש מתעניין.
כדי לפשט את התהליך, נניח שמטריצת המשוב היא בינארית; כלומר, ערך מתוך 1 מציין שיש לך עניין בסרט.
כשמשתמש נכנס לדף הבית, המערכת צריכה להמליץ על סרטים על סמך שניהם:
- דמיון לסרטים שהמשתמש סימן בלייק בעבר
- סרטים שמשתמשים דומים אהבו
לצורך ההמחשה, בואו נגדיר ידנית כמה תכונות לסרטים כפי שמתואר בטבלה הבאה:
סרט | דירוג | תיאור |
---|---|---|
'האביר האפל' עולה | ההורים מוזהרים, חלק מהסרטים אינם מתאימים לצפייה מתחת לגיל 13 | באטמן מנסה להציל את גות'אם סיטי מהשמדה גרעינית בסרט ההמשך הזה האביר האפל, מוגדר ב-DC יקום הקומיקס. |
הארי פוטר ואבני המכשף | PG | ילד יתום מגלה שהוא קוסם ונרשם בית הספר של הוגוורטס כישוף וקסמים, שבו הוא מנהל את הקרב הראשון נגדו של לורד וולדמורט הרשע. |
שרק | PG | מפלצת חמודה והחמור שלו יוצאים למשימה כדי להציל את הנסיכה פיונה, נכלאה בטירה שלה על ידי דרקון. |
שלושת הפיצ'רים של בלוויל | ההורים מוזהרים, חלק מהסרטים אינם מתאימים לצפייה מתחת לגיל 13 | כשהאלוף המקצועי נחטף טור דה פראנס, סבתא שלו והכלב עודף משקל שלו מטיילים לחו"ל כדי להציל אותו, בעזרת 3 זמרי ג'אז ותיקים. |
מנטו | R | אמנזיאק מבקש נואשות לפתור את הרצח של אשתו קעקוע רמזים על הגוף. |
הטמעה בתלת-ממד
נניח שאנחנו מקצים לכל סרט סקלר \([-1, 1]\) שמתאר אם הסרט מיועד לילדים (ערכים שליליים) או למבוגרים (ערכים חיוביים). נניח גם שאנחנו מקצים סקלר לכל משתמש ב- \([-1, 1]\) שמתאר מידת העניין של המשתמש בסרטי ילדים (בקרוב ל-1-) או למבוגרים סרטים (קרוב יותר ל-+1). המוצר של הטמעת הסרט והמשתמש צריכה להיות גבוהה יותר (קרוב יותר ל-1) בסרטים שאנחנו מצפים מהמשתמש לסמן לייק.
בתרשים שלמטה, כל סימן וי מציין סרט המשתמש צפה. למשתמש השלישי ולמשתמש הרביעי יש העדפות מוסבר היטב על ידי התכונה הזו — המשתמש השלישי מעדיפים סרטים לילדים והמשתמש הרביעי מעדיף סרטים למבוגרים. לעומת זאת, המודל הראשון והשני משתמשים ההעדפות שלך לא מוסברות היטב באמצעות התכונה היחידה הזו.
הטמעה בדו-ממד
תכונה אחת לא הספיקה כדי להסביר את ההעדפות של כל המשתמשים. להתגבר על נוסיף תכונה שנייה: באיזו מידה כל סרט סרט שובר קופות או סרט אומנותי. בעזרת תכונה שנייה אפשר עכשיו לייצג כל סרט עם ההטמעה הדו-ממדית הבאה:
אנחנו שוב ממקמים את המשתמשים שלנו באותו מרחב הטמעה כדי להסביר בצורה הטובה ביותר מטריצת המשוב: עבור כל צמד (משתמש, פריט) רוצים רכיב המוצר של הטמעת המשתמש והטמעת הפריט כדי להיות קרובים ל-1 כשמשתמש צפה בסרט, ול-0 אם לא.
בדוגמה הזו, פיתחנו באופן ידני את ההטמעות. בפועל, הטמעות אוטומטית, שהיא העוצמה של סינון משותף למשימות ספציפיות. בשני הקטעים הבאים נדון במודלים שונים של הטמעות אלה, ואיך לאמן אותן.
אופי שיתוף הפעולה של גישה זו ניכר כשהמודל לומד של הטמעות. נניח שווקטורי ההטמעה של הסרטים קבועים. לאחר מכן: המודל יכול ללמוד וקטור הטמעה כדי שהמשתמשים יסבירו בצורה הטובה ביותר את ההעדפות שלהם. כתוצאה מכך, הטמעות של משתמשים עם העדפות דומות יהיו קרובים זה לזה. באופן דומה, אם ההטמעות בשביל המשתמשים קבועות, עכשיו נוכל ללמוד הטמעות סרטים כדי להסביר בצורה הטובה ביותר את מטריצת המשוב. כתוצאה מכך, הטמעות של סרטים שמשתמשים דומים יאהבו יהיו דומות את שטח ההטמעה.