1. 程式人生 > >十六、推薦系統

十六、推薦系統

1 問題公式化

假如我們是一個電影供應商,有5不影片和4個使用者,我們要求使用者為電影打分:

2 基於內容的推薦演算法

假設每部電影有兩個特徵,x1代表電影的浪漫程度,x2代表電影的動作程度。

給予這些特徵來構建一個推薦演算法,假設採用迴歸模型,我們針對每一個使用者都訓練一個迴歸模型,如θ(1)為第一個使用者Alice的引數模型,為2*1向量,於是有:

每一個使用者的代價函式為:

其中求和是我們只計算評分過的電影,其中與線性迴歸模型不同的是,沒有同時乘以1/m。

所以對所有使用者的代價函式為:

採用梯度下降法最優化演算法,更新公式為:

3 協同過濾演算法

基於內容的推薦演算法是已知內容的特徵,學習使用者的引數。如果已知使用者的引數(如調查使用者對浪漫電影的喜歡程度,對動作電影的喜歡程度,得到使用者的引數),同樣可以學習到內容的特徵:

如果我們既沒有內容的特徵,也沒有使用者的引數,協同過濾演算法可以解決。

協同過濾演算法的優化目標:

對代價函式求偏導後:

可以根據學習到的特徵,來找到兩個相似的電影,根據:

這樣使用者可以根據已經看過的電影進行推薦。

4 低秩矩陣分解

矩陣化實現協同過濾演算法:

首先對評分進行矩陣化:

推出評分:

令:

評分為:

由於評分矩陣是低秩的,協同過濾演算法就是把評分矩陣分解為X和Θ兩個矩陣,所以也稱為低秩矩陣分解。

然後再根據電影間的相似度進行推薦:

5 均值歸一化

如何新增一個使用者,該使用者未對所有使用者進行評分,那麼應用協同過濾演算法後,給使用者推薦會發現可能給所有的電影都打0分。

因為我們在最小化代價函式的時候只有正則化項起作用,這個時候會把θ(5)全學習為0.

這個時候可以先對資料進行均值歸一化,對每個使用者的評分減去該電影的平均評分:

最後在預測評分時:

就能對新增使用者預測的評分都為均值