機器學習——低秩矩陣分解中低秩的意義、矩陣填補、交叉驗證

  在研讀論文《Matrix completion by deep matrix factorization》時,遇到了一些不明白的知識點,花費了大量時間在網上查閱相關資料,終於找到了能夠讓自己一看就一目瞭然的博文,下面的內容是我對所看到博文的一些修正總結。

       注: 我寫的這篇文章一部分是轉自zouxy09的文章,在參考資料中也給出了原文章的鏈接地址。由於原文章涉及知識點比較多,所以總結後再寫來的目的主要是爲了以後能夠按照自己的理解、自己的需求、自己的思路來查閱知識點,也給予了自己要向所參考博文博主學習的希冀以及動力。當然,如果也能給大家帶來方便,那就更好了。(* ̄︶ ̄)

一、低秩矩陣中低秩(Low-rank)的意義

 

1,問題的引出——對低秩矩陣分解中低秩的誤解

 論文《Privileged Matrix Factorization for Collaborative Filtering》是我在推薦系統研究方向上所讀的第一篇論文(針對該篇論文,請看總結點擊打開鏈接),當時對矩陣分解的理解是:評分矩陣X分解成兩個隱特徵矩陣U和V,U代表用戶隱特徵矩陣,V代表商品隱特徵矩陣。U和V的隱因子向量的長度爲k,其中k<<min{m,n},自己也就理解成了分解後的兩個矩陣的秩是比原來的評分矩陣X的秩低很多,所以就把該方法稱爲低秩矩陣分解法。

        在我查閱了大量資料後,事實證明我對低秩矩陣分解中的低秩的意義理解是錯誤的。那麼低秩(Low-rank)的意義到底代表什麼呢,請看下面的解釋

2,低秩矩陣分解中低秩的意義

        我們先來回憶下線性代數裏面“秩”到底是啥?舉個簡單的例子吧:

  對上面的線性方程組,第一個方程和第二個方程有不同的解,而第2個方程和第3個方程的解完全相同。從這個意義上說,第3個方程是“多餘”的,因爲它沒有帶來任何的信息量,把它去掉,所得的方程組與原來的方程組同解。爲了從方程組中去掉多餘的方程,自然就導出了“矩陣的秩”這一概念。

 還記得我們怎麼手工求矩陣的秩嗎?爲了求矩陣A的秩,我們是通過矩陣初等變換把A化爲階梯型矩陣,若該階梯型矩陣有r個非零行,那A的秩rank(A)就等於r。從物理意義上講,矩陣的秩度量的就是矩陣的行列之間的相關性。

如果矩陣的各行或列是線性無關的,矩陣就是滿秩的,也就是秩等於行數。回到上面線性方程組來說吧,因爲線性方程組可以用矩陣描述嘛。秩就表示了有多少個有用的方程了。上面的方程組有3個方程,實際上只有2個是有用的,一個是多餘的,所以對應的矩陣的秩就是2了。

       OK。既然秩可以度量相關性,而矩陣的相關性實際上就表示了矩陣的結構信息。如果矩陣之間各行的相關性很強,那麼就表示這個矩陣實際可以投影到更低維的線性子空間,也就是用幾個向量就可以完全表達了,它就是低秩的。所以我們總結的一點就是:如果矩陣表達的是結構性信息,例如圖像、用戶-商品推薦表等等,那麼這個矩陣各行之間存在這一定的相關性,那這個矩陣一般就是低秩的。

       如果X是一個m行n列的數值矩陣,rank(X)是X的秩,假如rank (X)遠小於m和n,則我們稱X是低秩矩陣。低秩矩陣每行或每列都可以用其他的行或列線性表出,可見它包含大量的冗餘信息。利用這種冗餘信息,可以對缺失數據進行恢復,也可以對數據進行特徵提取。
 

 二、矩陣填補(Matrix Completion) 

  矩陣填補的應用很廣泛,論文《Matrix completion by deep matrix factorization》就給出了矩陣填補的兩個應用:圖像修復(image inpainting)、協同過濾(Collaborative filtering)。

        圖像修復:簡單來說就是通過矩陣填補模型將“打碼”的圖片修復成原來的圖片,如下圖所示:

       協同過濾:是推薦系統的一種模型,該方法通過分析用戶的歷史記錄(主要是用戶-商品評分矩陣)來給用戶做出推薦。例如我們在看一部電影的時候,如果喜歡看,就會給它打個分,例如3顆星。然後系統,例如Netflix等知名網站就會分析這些數據,看看到底每部影片的題材到底是怎樣的?針對每個人,喜歡怎樣的電影,然後會給對應的用戶推薦相似題材的電影。但有一個問題是:我們的網站上面有非常多的用戶,也有非常多的影片,不是所有的用戶都看過說有的電影,不是所有看過某電影的用戶都會給它評分。假設我們用一個“用戶-影片”的矩陣來描述這些記錄,例如下圖,可以看到,會有很多空白的地方。如果這些空白的地方存在,我們是很難對這個矩陣進行分析的,所以在分析之前,一般需要先對其進行補全。也叫矩陣填充。

那到底怎麼填呢?如何才能無中生有呢?每個爲0的地方的信息是否蘊含在其他已有的信息之上了呢?如果有,怎麼提取出來呢?Yeah,這就是低秩生效的地方了。這叫低秩矩陣重構問題,它可以用如下的模型表述:已知數據是一個給定的m*n矩陣A,如果其中一些元素因爲某種原因丟失了,我們能否根據其他行和列的元素,將這些元素恢復?當然,如果沒有其他的參考條件,想要確定這些數據很困難。但如果我們已知A的秩rank(A)<<m且rank(A)<<n,那麼我們可以通過矩陣各行(列)之間的線性相關將丟失的元素求出。你會問,這種假定我們要恢復的矩陣是低秩的,合理嗎?實際上是十分合理的,比如一個用戶對某電影評分是其他用戶對這部電影評分的線性組合。所以,通過低秩重構就可以預測用戶對其未評價過的視頻的喜好程度。從而對矩陣進行填充。

三、交叉驗證(Cross Validation)


        論文的實驗部分會經常用到交叉驗證,它是評價模型性能的一種指標,也是選擇合適超參的一種方法。

        交叉驗證:把在某種意義下將原始數據(dataset)進行分組,一部分做爲訓練集(train set),另一部分做爲驗證集(validation set or test set),首先用訓練集對分類器進行訓練,再利用驗證集來測試訓練得到的模型(model),以此來做爲評價分類器的性能指標。
四、參考資料

[1] 機器學習中的規則化範數(L0,L1,L2,核範數)

[2] 核範數與規則項參數選擇

[3] Du Y, Xu C, Tao D. Privileged matrix factorization for collaborative filtering[C]//Proceedings of the 26th International Joint Conference on Artificial Intelligence. AAAI Press, 2017: 1610-1616.

[4] Fan J, Cheng J. Matrix completion by deep matrix factorization[J]. Neural Networks, 2018, 98: 34-41.

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章