一、矩陣分解概述
我們都知道,現實生活中的User-Item矩陣極大(User數量極大、Item數量極大),而用戶的興趣和消費能力有限,對單個用戶來說消費的物品,產生評分記錄的物品是極少的。這樣造成了User-Item矩陣含有大量的空值,數據極為稀疏。矩陣分解的核心思想認為用戶的興趣只受少數幾個因素的影響,因此將稀疏且高維的User-Item評分矩陣分解為兩個低維矩陣,即通過User、Item評分信息來學習到的用戶特征矩陣P和物品特征矩陣Q,通過重構的低維矩陣預測用戶對產品的評分。由於用戶和物品的特征向量維度比較低,因而可以通過梯度下降(Gradient Descend)的方法高效地求解,分解示意圖如下所示。

二、基本矩陣分解
如上所述,User-Item評分矩陣維度較高且極為稀疏,傳統的奇異值分解方法只能對稠密矩陣進行分解,即不允許所分解矩陣有空值。因而,若采用奇異值分解,需要首先填充User-Item評分矩陣,顯然,這樣造成了兩個問題。
- 其一,填充大大增加了數據量,增加了算法復雜度。
- 其二,簡單粗暴的數據填充很容易造成數據失真。
這些問題導致了傳統的SVD矩陣分解表現並不理想。之后,Simon Funk在博客上公開發表了一個只考慮已有評分記錄的矩陣分解方法,稱為Funk-SVD,也就是被Yehuda Koren稱為隱語義模型的矩陣分解方法。他簡單地認為,既然我們的評價指標是均方根誤差(Root Mean Squared Error, RMSE),那么可以直接通過訓練集中的觀察值利用最小化RMSE學習用戶特征矩陣P和物品特征Q,並用通過一個正則化項來避免過擬合。其需要優化的函數為
其中K為已有評分記錄的(u,i)對集合,rui為用戶u對物品i的真實評分,最后一項為防止過擬合的正則化項,λ為正則化系數。假設輸入評分矩陣為R為M×N維矩陣,通過直接優化以上損失函數得到用戶特征矩陣P(M×K)和物品特征矩陣Q(K×N),其中K≪M,N。優化方法可以采用交叉最小二乘法或隨機梯度下降方法。其評分預測方法為
其中pu和qi分別為用戶u和物品i的特征向量,兩者的內積即為所要預測的評分。
三.總結
R = PQ,PQ的內積來表示預測的評分,用RMSE作評價,不過不分先后順序:在最小化RMSE約束下,來分解R矩陣,加入正則化項,防止過擬合。
