奇異值分解和矩陣分解傻傻分不清楚?一文幫你理清兩者差異!

2021-01-10 電子發燒友

在推薦系統的相關研究中,我們常常用到兩個相關概念:矩陣分解和奇異值分解。這兩個概念是同一種算法嗎?兩者到底有什麼差別?在本文中,作者梳理了兩種算法的概念、來源和內容,並進行了比較。通過對相關內容的梳理,作者提出,矩陣分解是推薦系統中最初使用的概念,奇異值分解是對該方法的進一步發展。在現在的討論中,一般將兩種方法統一成為奇異值分解。

在 Andrew Ng 教授的機器學習課程中,介紹推薦系統時經常涉及矩陣分解、奇異值分解等數學知識,這些概念並不是很好理解。在 Andrew Ng 教授的課程提到了一種稱為稱為 (低因子) 矩陣分解的方法,而在 Google 搜索會得到另一個名稱:奇異值分解。網絡資源中對於該算法的解釋和 Andrew Ng 教授存在差異,但很多人都認為這兩個名稱指的是同一種算法。為了更好的梳理這兩個概念,在本文中,我對兩者進行了分別介紹,並對比了它們的不同。

推薦系統

推薦系統 (Recommender Systems, RS) 是一種自動化的針對用戶的內容推薦方式,被廣泛用於電子商務公司,流媒體服務 (streaming services) 和新聞網站等系統。根據用戶的喜好,推薦系統能夠投其所好,為用戶推薦一些合適的內容,以便減少用戶篩選過程中一些不必要的麻煩。

推薦系統並不是一種全新的技術,相關概念最晚在1990年就出現了。事實上,當前的機器學習熱潮,一部分要歸因於人們對 RS 的廣泛關注。 在2006年,Netflix 贊助了一場為電影尋找最佳推薦系統的競賽,在當時引起了一片轟動,也讓推薦系統再次得到了廣泛的關注。

矩陣表示

我們可以有很多種方式來向別人推薦一部電影。其中一種效果較好的策略,是將用戶對電影的評分看做一個用戶 x 電影矩陣,如下所示:

     

在該矩陣中,問號代表用戶未評分的電影。隨後,只需要以某種方式預測來用戶對電影評分,並向用戶推薦他們可能喜歡的電影。

矩陣分解

在 Netflix 舉辦的比賽上,參賽者 Simon Funk 提出了一個很好的想法,即用戶對電影的評分不是隨給出的。用戶會基於一定的邏輯,針對電影中他所所喜歡的部分 (如特定的女演員或類型) 和不喜歡的情節 (長時間或糟糕的笑話) 賦予不同的權重,並進行加權計算,最後得到一個分數作為該電影的評分。這個過程可以用如下公式表示:

     

其中 xm 是電影 m 特徵值的一個列向量,而 θᵤ 是另一個列向量,表示用戶 u 賦予每個電影特徵的權重。每個用戶都有不同的權重集合,而每個電影的特徵也對應不同的特徵集合。

事實證明,如果能夠任意地修改特徵的數量並忽略所缺失的那部分電影評分,那麼就可以找到一組權重和特徵值,依據這些值所創建新矩陣與原始的評分矩陣是很接近的。這一過程可以通過梯度下降來實現,且類似於線性回歸中所使用的梯度下降,只不過我們需要同時優化權重和特徵這兩組參數。以上文提供的用戶-電影矩陣為例,優化後得到的結果將生成如下新的矩陣:

       

值得注意的是,在大多數真實數據集中,生成的結果矩陣並不會精確地與原始矩陣保持一致。因為在現實生活中,用戶不會對通過矩陣乘法和求和等操作對電影進行評分。大多數情況下,用戶對電影進行評分只是一種主觀性的行為,且可能受到各種外部因素的影響。儘管如此,這裡所介紹的方法還是希望通過數學公式來表達用戶在電影評分時的主要邏輯。

通過上面的計算,現在我們已經得到了一個近似矩陣,那該如何來預測缺失的電影評級呢?通過回顧上面的計算過程,我們可以發現,為了構建這個新矩陣,這裡定義了一個公式來填充矩陣中的所有值,包括原始矩陣中的缺失值。因此,如果想要預測缺失的用戶電影評分,這裡只需獲取該缺失電影的所有特徵值,再乘以該用戶的所有權重並將所有內容相加,就能得到用戶對該電影的評分。因此在這裡,如果想要預測用戶2對電影1的評級,可以通過以下計算:

     

為了簡化表達式,在這裡可以對 θ 和 x 進行分離,並將它們放入各自的矩陣(比如 P 和 Q)。

以上就是 Funk 所提出的矩陣分解方法,也是 Andrew Ng 教授在課上所提到的矩陣分解。該方法在當時 Netflix 競賽中獲得第三名,引起了廣泛的關注,並在當前許多應用中仍被使用。

奇異值分解

下面介紹奇異值分解 (Singular Value Decomposition, SVD)。SVD 方法是將一個矩陣分解為三個矩陣的矩陣分解方法,即 A =UΣVᵀ,且三個分解矩陣會具有一些較好的數學特性。

SVD 方法具有廣泛的應用,其中之一就是主成分分析(Principal Component Analysis, PCA) ,該方法能夠將維度 n 的數據集減少到 k 個維度 (k

這裡不再展開介紹 SVD 方法的詳細信息。我們只需要記住,奇異值分解與矩陣分解的處理方式不同。使用SVD 方法會得到三個分解矩陣,而 Funk 提出的矩陣分解方式只創建了兩個矩陣。

那為什麼在每次搜索推薦系統時總會彈出 SVD 的相關內容呢? Luis Argerich 認為原因在於:

       

事實上,矩陣分解是推薦系統中首先使用的方法,而 SVD++ 可視為是對它的一種擴展形式。正如 Xavier Amatriain 所說的那樣:

     

而 Wikipedia 在對矩陣分解(推薦系統)的相關條目中也有類似的表述:

       

最後,簡單進行一下總結:

奇異值分解(SVD)是一種相對複雜的數學技術,它將矩陣分解為三個新的矩陣,並廣泛應用於當前許多的應用中,包括主成分分析(PCA)和推薦系統(RS)。

Simon Funk 在2006年的 Netflix 競賽中提出並使用了一個非常好的策略,改方法將矩陣分解為兩個權重矩陣,並使用梯度下降來找到特徵和權重所對應的的最優值。實質上,這是不同於 SVD 方法的另一種技術,將其稱為矩陣分解更為合適。

隨著這兩種方法的廣泛應用,研究者並沒有嚴謹地在術語上區分這兩種方法,而是統一將其稱為 SVD。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 強大的矩陣奇異值分解(SVD)及其應用
    在上篇文章中便是基於特徵值分解的一種解釋。特徵值和奇異值在大部分人的印象中,往往是停留在純粹的數學計算中。而且線性代數或者矩陣論裡面,也很少講任何跟特徵值與奇異值有關的應用背景。奇異值分解是一個有著很明顯的物理意義的一種方法,它可以將一個比較複雜的矩陣用更小更簡單的幾個子矩陣的相乘來表示,這些小矩陣描述的是矩陣的重要的特性。
  • 奇異值、奇異矩陣、SVD分解、正交矩陣
    定義:設A為m*n階矩陣,A'表示A的轉置矩陣,A'*A的n個特徵值的非負平方根叫作A的奇異值。記為σi(A)。如果把A『*A的特徵值記為λi(A『*A),則σi(A)=sqrt(λi(A』*A))。奇異矩陣:奇異矩陣是線性代數的概念,就是對應的行列式等於0的矩陣。奇異矩陣的判斷方法:首先,看這個矩陣是不是方陣(即行數和列數相等的矩陣。若行數和列數不相等,那就談不上奇異矩陣和非奇異矩陣)。
  • 奇異值分解及其應用
    特徵值和奇異值在大部分人的印象中,往往是停留在純粹的數學計算中。而且線性代數或者矩陣論裡面,也很少講任何跟特徵值與奇異值有關的應用背景。奇異值分解是一個有著很明顯的物理意義的一種方法,它可以將一個比較複雜的矩陣用更小更簡單的幾個子矩陣的相乘來表示,這些小矩陣描述的是矩陣的重要的特性。
  • 奇異值分解(SVD) 的 幾何意義
    換句話說,定義在單位圓上的函數|Mx|分別在v1和v2方向上取得最大和最小值。這樣我們就把尋找矩陣的奇異值分解過程縮小到了優化函數|Mx|上了。結果發現(具體的推到過程這裡就不詳細介紹了)這個函數取得最優值的向量分別是矩陣 MT M 的特徵向量。由於MTM是對稱矩陣,因此不同特徵值對應的特徵向量都是互相正交的,我們用vi 表示MTM的所有特徵向量。
  • 奇異值分解簡介:從原理到基礎機器學習應用
    奇異值分解(SVD)可能是最著名和使用最廣泛的矩陣分解方法。所有矩陣都有一種 SVD 方法,這使得其比特徵分解(eigendecomposition)等其它方法更加穩定。因此,這種方法在很多應用中都有應用,包括壓縮、去噪、數據壓縮。在這份教程中,你將了解用於將矩陣分解成其組成元素的奇異值分解方法。
  • 通俗易懂的講解奇異值分解(SVD)和主成分分析(PCA)
    因此特徵值λ1與λ2均不為0,從而x1*x2也不可能等於0——所以這個特徵向量是正交的。這揭示了一個重要的結論:對稱矩陣能夠被分解為兩個正交特徵向量組成的矩陣與對角矩陣的乘積。並且,對稱矩陣的特徵值均為實數。對稱矩陣的特徵向量具有正交性3.
  • 推薦系統 | 矩陣分解(SVD)原理和實戰
    三者均用於矩陣降維。其中:特徵分解可用於主成分分析。奇異值分解(SVD)和隱語義模型(LFM)可用於推薦系統中,將評分矩陣補全、降維。一.但是針對更一般的情況,由於特徵分解矩陣A必須為方陣,對於行和列不相同的矩陣,應該如何分解,可以引出我們下文討論的SVD。二. SVD2.1 定義SVD也是對矩陣進行分解,但是和特徵分解不同,SVD並不要求要分解的矩陣為方陣。
  • 幾何角度理解奇異值分解SVD
    一、左乘矩陣的幾何意義 向量左乘對角矩陣,幾何上相當對這個向量的長度進行縮放,此處坐標軸保持不變; 向量左乘對稱矩陣,幾何上相當於對這個向量的長度進行縮放,並且對坐標軸也進行旋轉; 給向量左乘普通矩陣,總能找到一組正交的坐標軸來表示該向量,這組坐標軸是由原來的坐標軸通過縮放和旋轉而得到。
  • 數據科學中需要知道的5個關於奇異值分解(SVD)的應用
    奇異值分解(SVD)的應用我們將在此處遵循自上而下的方法並首先討論SVD應用。如果你對它如何工作感興趣的,我在下面會講解SVD背後的數學原理。現在你只需要知道四點來理解這些應用:SVD是將矩陣A分解為3個矩陣--U,S和V。S是奇異值的對角矩陣。將奇異值視為矩陣中不同特徵的重要性值矩陣的秩是對存儲在矩陣中的獨特信息的度量。
  • 矩陣分解 (乘法篇)
    對角和三角矩陣首先, 我們總結下, 在矩陣加法分解中出現了三種矩陣: 上三角矩陣, 下三角矩陣 和 對角陣。  這三種矩陣在乘法的分解中也會遇到。 那麼是不是乘法矩陣中有這三種矩陣就夠了呢? 不是的!正交矩陣還有一種經典的矩陣, 叫正交矩陣, 什麼叫正交矩陣呢?
  • 矩陣的奇異值與特徵值有什麼相似之處與區別之處?
    一個線性變換的作用可以包含旋轉、縮放和投影三種類型的效應。奇異值分解正是對線性變換這三種效應的一個析構。
  • SVD奇異值分解的數學涵義及其應用實例
    "酉矩陣."維基百科, 自由的百科全書. 維基百科, 自由的百科全書,15Nov.2018.Web.15Nov.2018‹https://zh.wikipedia.org/w/index.phptitle=%E9%85%89%E7%9F%A9%E9%98%B5&oldid=52035033›.
  • 如何用張量分解加速深層神經網絡?(附代碼)
    這幫助我很好的開始學習這塊內容,建議你閱讀一下這些內容。加上裁剪(pruning),張量分解是加快現有深度神經網絡的實用工具,我希望這篇文章能讓這些內容更加容易理解。這些方法需要將一個層分解成幾個更小的層。儘管在分解後會有更多的層,但是浮點運算次數和權重的總數會變小。
  • 專題七:矩陣分解
    專題七:矩陣分解矩陣分解分為兩類:和分解與積分解.和分解是將一個矩陣分解為一些矩陣的和.積分解是將一個矩陣分解為一些矩陣的乘積.矩陣分解通常是利用標準形理論.,或者正交三角分解.例(華中科技大學,2005)任一
  • 英語詞彙辨析:傻傻分不清楚Airplane,Aeroplane,Aircraft?
    新東方網>英語>英語學習>語法詞彙>詞彙指導>正文英語詞彙辨析:傻傻分不清楚Airplane,Aeroplane,Aircraft?
  • 矩陣的特徵值分解的物理意義
    矩陣的特徵值分解目的就是提取出一個矩陣最重要的特徵。這其實是在平面上對一個軸進行的拉伸變換(如藍色的箭頭所示),在圖中,藍色的箭頭是一個最主要的變化方向(變化方向可能有不止一個),如果我們想要描述好一個變換,那我們就描述好這個變換主要的變化方向就好了。
  • 鳳梨和菠蘿傻傻分不清楚,兩者有啥區別?網友:主要因為「這」!
    有很多的蔬菜和水果,大量的上市,大家都會想到現在市面上經常都售賣的一種菠蘿。菠蘿的顏色特別的漂亮,我們從遠處可以聞到它的一個清香味道。當你在逛街的時候都能夠看到小商販,他們都會把這些菠蘿切成一塊一塊的,放在一個玻璃柜子裡面來吸引著大家。不知道你們了解嗎?菠蘿其實也都是有一個孿生兄弟,他的名字呢叫做鳳梨。鳳梨和菠蘿傻傻分不清楚,兩者有啥區別?網友:主要因為「這」!
  • 酵素是酵素,酵母是酵母,別再傻傻分不清楚了!
    首先,答案是否定的:酵母不是酵素,兩者從本質上就有所不同。下面智食匯蛋白肽酵素就帶大家看一看酵素和酵母到底有何區別。 酵素是酵素,酵母是酵母,別再傻傻分不清楚了!
  • 長得像「雙胞胎」的水果,傻傻分不清楚?你能分辨幾種?
    水果的種類數不勝數,不可能你都認識,就算是一些比較常見的水果,有時候也不一定分辨得很清楚,比如像"龍眼和桂圓」、「葡萄和提子」它們或是長得特別相似,或是吃起來味道差不多,總會令我們傻傻分不清楚,下面這六對「雙胞胎」水果,一個比一個像親姐們,我賭80包辣條,您認不全!
  • 基於多個特徵分塊貝葉斯分類器融合策略的人臉識別方法
    摘要:提出一種基於奇異值分解和貝葉斯決策的人臉特徵提取與識別算法。通過對人臉圖像樣本進行幾何歸一化和灰度均衡化後,結合分塊與加權,運用奇異值分解,分別獲得特徵臉和標準臉,然後採用多個基於特徵分塊的貝葉斯分類器(FBBC)的融合策略進行分類識別。實驗驗證了該方法的有效性,具有良好的精煉和實時性品質指標。