為瞭解決內容型篩選的某些限制,協作式篩選會使用使用者和項目之間的相似性來提供建議。這可讓您執行語意建議;也就是說,協作篩選模型可根據類似使用者 B 的興趣,將項目推薦給使用者 A。此外,系統會自動進行嵌入,不需要依賴特徵的手動工程。
電影推薦範例
假設某個電影推薦系統由訓練資料組成,當中包含以下意見回饋矩陣:
- 每一列都代表一個使用者。
- 每一欄代表一個項目 (電影)。
電影意見回饋分為以下兩個類別之一:
- 明確:使用者可透過提供數值評分來指定特定電影的喜歡程度。
- 隱式:如果使用者觀看電影,系統會推斷使用者感興趣。
為簡化說明,我們會假設意見回饋矩陣為二進位檔;也就是說,如果這個值為 1,表示對電影感興趣。
當使用者前往首頁時,系統應根據兩者推薦電影:
- 與使用者過去喜歡的電影相似
- 使用者喜歡的電影
為了方便說明,讓我們手動為下表說明的電影進行一些工程設計:
電影 | 評分 | 說明 |
---|---|---|
黑夜騎士 | PG-13 | 《蝙蝠龍》致力於為 Gotham City 帶來續航力,在這場續作大戰中展開《黑暗騎士》 挑戰。 |
《哈利波特:神秘的魔法石》 | PG | 一位孤兒男孩發現他踏上了一座精靈,他在霍瓦特斯魔法學院 (Hoitcharts School of Witchcraft and Hostry) 註冊,為他的第一戰打敗邪惡烈士沃德赫特 (Lord Voldemort)。 |
斯里克 | PG | 一位可愛的食蟻獸和驢子在路上出遊,以拯救菲昂 (Proness Fiona) 軍的任務,他正在這位恐龍的城堡中建造了監獄。 |
Belleville 的三腳架 | PG-13 | 在法國環法自行車賽中,專業單車騎士被綁架來,祖父或母親的海狗在海外協助休旅,在這段經歷下,邀請了 3 位參與爵士樂的歌手。 |
Memento 音樂 | R | 退伍軍人追求不朽的殺手,透過對線索將線索刺青在身體上。 |
1D 嵌入
假設我們要為每部電影指派一個純量, \([-1, 1]\) 就會說明這部電影是針對兒童 (負值) 或成人 (正值)。我們也會為 \([-1, 1]\) 中的每個使用者指派純量,用於描述使用者對兒童電影 (更接近 -1) 或成人電影 (更接近 +1) 的興趣。針對預期使用者會喜歡的電影,電影嵌入的產品與使用者嵌入產品應為更高 (接近 1)。
在下圖中,每個勾號都代表特定使用者觀看的電影。第三和第四個使用者偏好設定都很明確:第三位使用者偏好兒童觀看電影,第四位使用者偏好成人電影。但第一位使用者和第二位使用者';這項單一功能並未提供正確的偏好設定。
2D 嵌入
因此其中一項功能無法充分說明所有使用者的偏好設定。如要解決這個問題,請新增第二個功能:每個電影為熱門電影或藝術電影的程度。第二種功能則可以使用以下二維嵌入功能來代表每部電影:
我們會再次將使用者放在同一個嵌入空間中,以完整說明意見回饋矩陣:針對每組 (使用者、項目) 配對,我們希望使用者觀看電影時,會嵌入使用者嵌入的點產品,以及嵌入項目時接近 1,反之則為 0。
在這個範例中,我們手動編寫嵌入內容。在實務上,嵌入功能可以自動學習,也就是協作篩選模型的強大功能。在接下來的兩個章節中,我們會討論不同的模型,以瞭解這些嵌入功能以及如何訓練。
當模型學習嵌入時,這個方法的協作性質很明顯。假設電影的嵌入向量已修正,然後,這個模型可以學習嵌入向量,讓使用者能夠充分說明偏好設定。因此有類似偏好設定的使用者嵌入會彼此相近。同樣地,如果使用者的嵌入功能是固定的,我們就能學習嵌入電影,以正確說明意見回饋矩陣。因此,系統在嵌入空間中就會嵌入類似的使用者所喜歡的電影嵌入內容。