我們從一個例子開始定義推薦系統的問題。
假使我們是一個電影供應商,我們有 5 部電影和 4 個使用者,我們要求使用者為電影打分。
基於內容的推薦系統
在一個基於內容的推薦系統演算法中,我們假設對於我們希望推薦的東西有一些資料,這 些資料是有關這些東西的特徵。
在我們的例子中,我們可以假設每部電影都有兩個特徵,如 x1 代表電影的浪漫程度, x2 代表電影的動作程度。
其中 i:r(i,j)表示我們只計算那些使用者 j 評過分的電影。在一般的線性迴歸模型中,誤差 項和歸一項應該都是乘以1/2m,在這裡我們將m去掉。並且我們不對方差項 θ0 進行歸一 化處理。
上面的代價函數只是針對一個使用者的,為了學習所有使用者,我們將所有使用者的代價函數 求和:
協同過濾
在之前的基於內容的推薦系統中,對於每一部電影,我們都掌握了可用的特徵,使用這 些特徵訓練出了每一個使用者的參數。相反地,如果我們擁有使用者的參數,我們可以學習得出 電影的特徵。
注:在協同過濾從演算法中,我們通常不使用方差項,如果需要的話,演算法會自動學得。 協同過濾演算法使用步驟如下:
1. 初始 x(1),x(2),...,x(nm),θ(1),θ(2),...,θ(nu) 為一些隨機小值
2. 使用梯度下降演算法最小化代價函數
3. 在訓練完演算法後,我們預測 (θ(j))Tx(i) 為使用者 j 給電影 i 的評分
通過這個學習過程獲得的特徵矩陣包含了有關電影的重要資料,這些資料不總是人能讀
懂的,但是我們可以用這些資料作為給使用者推薦電影的依據。 例如,如果一位使用者正在觀看電影 x(i) ,我們可以尋找另一部電影 x(j) ,依據兩部電影的
特徵向量之間的距離 ||x(i)−x(j)|| 的大小。
向量化:低秩矩陣分解
在上幾節視頻中,我們談到了協同過濾演算法,本節視頻中我將會講到有關該演算法的向量 化實現,以及說說有關該演算法你可以做的其他事情。
舉例子:
1.當給出一件產品時,你能否找到與之相關的其它產品。
2.一位使用者最近看上一件產品,有沒有其它相關的產品,你可以推薦給他。
我將要做的是:實現一種選擇的方法,寫出協同過濾演算法的預測情況。
我們有關於五部電影的資料集,我將要做的是,將這些使用者的電影評分,進行分組並存
到一個矩陣中。
我們有五部電影,以及四位使用者,那麼 這個矩陣 Y 就是一個 5 行 4 列的矩陣,它將這
些電影的使用者評分資料都存在矩陣裡:
均值歸一化
然後我們利用這個新的 Y 矩陣來訓練演算法。如果我們要用新訓練出的演算法來預測評分, 則需要將平均值重新加回去,預測 (θ(j))T(x(i))+μi 對於Eve,我們的新模型會認為她給每部電影 的評分都是該電影的平均分。