天天看點

淺談矩陣分解在推薦系統中的應用

推薦系統是當下越來越熱的一個研究問題,無論在學術界還是在工業界都有很多優秀的人才參與其中。近幾年舉辦的推薦系統比賽更是一次又一次地把推薦系統的研究推向了高潮,比如幾年前的neflix百萬大獎賽,kdd cup 2011的音樂推薦比賽,去年的百度電影推薦競賽,還有最近的阿裡巴巴大資料競賽。這些比賽對推薦系統的發展都起到了很大的推動作用,使我們有機會接觸到真實的工業界資料。我們利用這些資料可以更好地學習掌握推薦系統,這些資料網上很多,大家可以到網上下載下傳。

推薦系統在工業領域中取得了巨大的成功,尤其是在電子商務中。很多電子商務網站利用推薦系統來提高銷售收入,推薦系統為amazon網站每年帶來30%的銷售收入。推薦系統在不同網站上應用的方式不同,這個不是本文的重點,如果感興趣可以閱讀《推薦系統實踐》(人民郵電出版社,項亮)第一章内容。下面進入主題。

       為了友善介紹,假設推薦系統中有使用者集合有6個使用者,即u={u1,u2,u3,u4,u5,u6},項目(物品)集合有7個項目,即v={v1,v2,v3,v4,v5,v6,v7},使用者對項目的評分結合為r,使用者對項目的評分範圍是[0, 5]。r具體表示如下:

淺談矩陣分解在推薦系統中的應用
淺談矩陣分解在推薦系統中的應用

推薦系統的目标就是預測出符号“?”對應位置的分值。推薦系統基于這樣一個假設:使用者對項目的打分越高,表明使用者越喜歡。是以,預測出使用者對未評分項目的評分後,根據分值大小排序,把分值高的項目推薦給使用者。怎麼預測這些評分呢,方法大體上可以分為基于内容的推薦、協同過濾推薦和混合推薦三類,協同過濾算法進一步劃分又可分為基于基于記憶體的推薦(memory-based)和基于模型的推薦(model-based),本文介紹的矩陣分解算法屬于基于模型的推薦。

矩陣分解算法的數學理論基礎是矩陣的行列變換。在《線性代數》中,我們知道矩陣a進行行變換相當于a左乘一個矩陣,矩陣a進行列變換等價于矩陣a右乘一個矩陣,是以矩陣a可以表示為a=peq=pq(e是标準陣)。

       矩陣分解目标就是把使用者-項目評分矩陣r分解成使用者因子矩陣和項目因子矩陣乘的形式,即r=uv,這裡r是n×m, n =6, m =7,u是n×k,v是k×m。直覺地表示如下:

淺談矩陣分解在推薦系統中的應用
淺談矩陣分解在推薦系統中的應用

高維的使用者-項目評分矩陣分解成為兩個低維的使用者因子矩陣和項目因子矩陣,是以矩陣分解和pca不同,不是為了降維。使用者i對項目j的評分r_ij =innerproduct(u_i, v_j),更一般的情況是r_ij =f(u_i, v_j),這裡為了介紹友善就是用u_i和v_j内積的形式。下面介紹評估低維矩陣乘積拟合評分矩陣的方法。

首先假設,使用者對項目的真實評分和預測評分之間的差服從高斯分布,基于這一假設,可推導出目标函數如下:

淺談矩陣分解在推薦系統中的應用

最後得到矩陣分解的目标函數如下:

淺談矩陣分解在推薦系統中的應用

從最終得到得目标函數可以直覺地了解,預測的分值就是盡量逼近真實的已知評分值。有了目标函數之後,下面就開始談優化方法了,通常的優化方法分為兩種:交叉最小二乘法(alternative least squares)和随機梯度下降法(stochastic gradient descent)。

首先介紹交叉最小二乘法,之是以交叉最小二乘法能夠應用到這個目标函數主要是因為l對u和v都是凸函數。首先分别對使用者因子向量和項目因子向量求偏導,令偏導等于0求駐點,具體解法如下:

淺談矩陣分解在推薦系統中的應用

上面就是使用者因子向量和項目因子向量的更新公式,疊代更新公式即可找到可接受的局部最優解。疊代終止的條件下面會講到。

接下來講解随機梯度下降法,這個方法應用的最多。大緻思想是讓變量沿着目标函數負梯度的方向移動,直到移動到極小值點。直覺的表示如下:

淺談矩陣分解在推薦系統中的應用

其實負梯度的負方向,當函數是凸函數時是函數值減小的方向走;當函數是凹函數時是往函數值增大的方向移動。而矩陣分解的目标函數l是凸函數,是以,通過梯度下降法我們能夠得到目标函數l的極小值(理想情況是最小值)。

     言歸正傳,通過上面的講解,我們可以擷取梯度下降算法的因子矩陣更新公式,具體如下:

淺談矩陣分解在推薦系統中的應用

(3)和(4)中的γ指的是步長,也即是學習速率,它是一個超參數,需要調參确定。對于梯度見(1)和(2)。

下面說下疊代終止的條件。疊代終止的條件有很多種,就目前我了解的主要有

1)    設定一個門檻值,當l函數值小于門檻值時就停止疊代,不常用

2)    設定一個門檻值,目前後兩次函數值變化絕對值小于門檻值時,停止疊代

3)    設定固定疊代次數

淺談矩陣分解在推薦系統中的應用

(5)中λ_1和λ_2是指正則項的權重,這兩個值可以取一樣,具體取值也需要根據資料集調參得到。優化方法和前面一樣,隻是梯度公式需要更新一下。

矩陣分解算法目前在推薦系統中應用非常廣泛,對于使用rmse作為評價名額的系統尤為明顯,因為矩陣分解的目标就是使rmse取值最小。但矩陣分解有其弱點,就是解釋性差,不能很好為推薦結果做出解釋。

後面會繼續介紹矩陣分解算法的擴充性問題,就是如何加入隐回報資訊,加入時間資訊等。

引用:

說明上圖 圖2摘自李金屏課件

繼續閱讀