1. 程式人生 > >奇異值分解(SVD)原理詳解及推導 (轉)

奇異值分解(SVD)原理詳解及推導 (轉)

很不錯的文章,適合入門。

    在網上看到有很多文章介紹SVD的,講的也都不錯,但是感覺還是有需要補充的,特別是關於矩陣和對映之間的對應關係。前段時間看了國外的一篇文章,叫A Singularly Valuable Decomposition The SVD of a Matrix,覺得分析的特別好,把矩陣和空間關係對應了起來。本文就參考了該文並結合矩陣的相關知識把SVD原理梳理一下。

   SVD不僅是一個數學問題,在工程應用中的很多地方都有它的身影,比如前面講的PCA,掌握了SVD原理後再去看PCA那是相當簡單的,在推薦系統方面,SVD更是名聲大噪,將它應用於推薦系統的是Netflix大獎的獲得者Koren,可以在Google上找到他寫的文章;用SVD可以很容易得到任意矩陣的滿秩分解,用滿秩分解可以對資料做壓縮。可以用SVD來證明對任意M*N的矩陣均存在如下分解:


這個可以應用在資料降維壓縮上!在資料相關性特別大的情況下儲存X和Y矩陣比儲存A矩陣佔用空間更小!

   在開始講解SVD之前,先補充一點矩陣代數的相關知識。

正交矩陣

   正交矩陣是在歐幾里得空間裡的叫法,在酉空間裡叫酉矩陣,一個正交矩陣對應的變換叫正交變換,這個變換的特點是不改變向量的尺寸和向量間的夾角,那麼它到底是個什麼樣的變換呢?看下面這張圖


假設二維空間中的一個向量OA,它在標準座標系也即e1、e2表示的座標是中表示為(a,b)'(用'表示轉置),現在把它用另一組座標e1'、e2'表示為(a',b')',存在矩陣U使得(a',b')'=U(a,b)',則U即為正交矩陣。從圖中可以看到,正交變換隻是將變換向量用另一組正交基表示,在這個過程中並沒有對向量做拉伸,也不改變向量的空間位置,加入對兩個向量同時做正交變換,那麼變換前後這兩個向量的夾角顯然不會改變。上面的例子只是正交變換的一個方面,即旋轉變換,可以把e1'、e2'座標系看做是e1、e2座標系經過旋轉某個斯塔角度得到,怎麼樣得到該旋轉矩陣U呢?如下

                                                                                       

                                                                  

                                                                   

a'和b'實際上是x在e1'和e2'軸上的投影大小,所以直接做內積可得,then

                                                                   

                                        

從圖中可以看到

                        

所以

                                     

正交陣U行(列)向量之間都是單位正交向量。上面求得的是一個旋轉矩陣,它對向量做旋轉變換!也許你會有疑問:剛才不是說向量空間位置不變嗎?怎麼現在又說它被旋轉了?對的,這兩個並沒有衝突,說空間位置不變是絕對的,但是座標是相對的,加入你站在e1上看OA,隨著e1旋轉到e1',看OA的位置就會改變。如下圖:


如圖,如果我選擇了e1'、e2'作為新的標準座標系,那麼在新座標系中OA(原標準座標系的表示)就變成了OA',這樣看來就好像座標系不動,把OA往順時針方向旋轉了“斯塔”角度,這個操作實現起來很簡單:將變換後的向量座標仍然表示在當前座標系中。

旋轉變換是正交變換的一個方面,這個挺有用的,比如在開發中需要實現某種旋轉效果,直接可以用旋轉變換實現。正交變換的另一個方面是反射變換,也即e1'的方向與圖中方向相反,這個不再討論。

總結:正交矩陣的行(列)向量都是兩兩正交的單位向量,正交矩陣對應的變換為正交變換,它有兩種表現:旋轉和反射。正交矩陣將標準正交基對映為標準正交基(即圖中從e1、e2到e1'、e2')

特徵值分解——EVD

    在討論SVD之前先討論矩陣的特徵值分解(EVD),在這裡,選擇一種特殊的矩陣——對稱陣(酉空間中叫hermite矩陣即厄米陣)。對稱陣有一個很優美的性質:它總能相似對角化,對稱陣不同特徵值對應的特徵向量兩兩正交。一個矩陣能相似對角化即說明其特徵子空間即為其列空間,若不能對角化則其特徵子空間為列空間的子空間。現在假設存在mxm的滿秩對稱矩陣A,它有m個不同的特徵值,設特徵值為

                                                                                                   

對應的單位特徵向量為

                                                                

則有

                                                                 

進而

                                                               

                                                  

                                                    

所以可得到A的特徵值分解(由於對稱陣特徵向量兩兩正交,所以U為正交陣,正交陣的逆矩陣等於其轉置)

                                                        

這裡假設A有m個不同的特徵值,實際上,只要A是對稱陣其均有如上分解。

矩陣A分解了,相應的,其對應的對映也分解為三個對映。現在假設有x向量,用A將其變換到A的列空間中,那麼首先由U'先對x做變換:

                                                                              

U是正交陣U'也是正交陣,所以U'對x的變換是正交變換,它將x用新的座標系來表示,這個座標系就是A的所有正交的特徵向量構成的座標系。比如將x用A的所有特徵向量表示為:

                                         

則通過第一個變換就可以把x表示為[a1 a2 ... am]':

                           

緊接著,在新的座標系表示下,由中間那個對角矩陣對新的向量座標換,其結果就是將向量往各個軸方向拉伸或壓縮:

                              

從上圖可以看到,如果A不是滿秩的話,那麼就是說對角陣的對角線上元素存在0,這時候就會導致維度退化,這樣就會使對映後的向量落入m維空間的子空間中。

最後一個變換就是U對拉伸或壓縮後的向量做變換,由於U和U'是互為逆矩陣,所以U變換是U'變換的逆變換。

因此,從對稱陣的分解對應的對映分解來分析一個矩陣的變換特點是非常直觀的。假設對稱陣特徵值全為1那麼顯然它就是單位陣,如果對稱陣的特徵值有個別是0其他全是1,那麼它就是一個正交投影矩陣,它將m維向量投影到它的列空間中。

根據對稱陣A的特徵向量,如果A是2*2的,那麼就可以在二維平面中找到這樣一個矩形,是的這個矩形經過A變換後還是矩形:

                                      

這個矩形的選擇就是讓其邊都落在A的特徵向量方向上,如果選擇其他矩形的話變換後的圖形就不是矩形了!

奇異值分解——SVD

   上面的特徵值分解的A矩陣是對稱陣,根據EVD可以找到一個(超)矩形使得變換後還是(超)矩形,也即A可以將一組正交基對映到另一組正交基!那麼現在來分析:對任意M*N的矩陣,能否找到一組正交基使得經過它變換後還是正交基?答案是肯定的,它就是SVD分解的精髓所在。

   現在假設存在M*N矩陣A,事實上,A矩陣將n維空間中的向量對映到k(k<=m)維空間中,k=Rank(A)。現在的目標就是:在n維空間中找一組正交基,使得經過A變換後還是正交的。假設已經找到這樣一組正交基:

                                                               

則A矩陣將這組基對映為:

                                                            

如果要使他們兩兩正交,即

                                      

根據假設,存在

                                      

所以如果正交基v選擇為A'A的特徵向量的話,由於A'A是對稱陣,v之間兩兩正交,那麼

                                                  

這樣就找到了正交基使其對映後還是正交基了,現在,將對映後的正交基單位化:

因為

                  

所以有

                                

所以取單位向量

                                        

由此可得

                

當k < i <= m時,對u1,u2,...,uk進行擴充套件u(k+1),...,um,使得u1,u2,...,um為m維空間中的一組正交基,即


同樣的,對v1,v2,...,vk進行擴充套件v(k+1),...,vn(這n-k個向量存在於A的零空間中,即Ax=0的解空間的基),使得v1,v2,...,vn為n維空間中的一組正交基,即


則可得到


繼而可以得到A矩陣的奇異值分解:

                                                 

                

現在可以來對A矩陣的對映過程進行分析了:如果在n維空間中找到一個(超)矩形,其邊都落在A'A的特徵向量的方向上,那麼經過A變換後的形狀仍然為(超)矩形!

vi為A'A的特徵向量,稱為A的右奇異向量,ui=Avi實際上為AA'的特徵向量,稱為A的左奇異向量。下面利用SVD證明文章一開始的滿秩分解:


利用矩陣分塊乘法展開得:


可以看到第二項為0,有

                               


            

則A=XY即是A的滿秩分解。

整個SVD的推導過程就是這樣,後面會介紹SVD在推薦系統中的具體應用,也就是復現Koren論文中的演算法以及其推導過程。

相關推薦

奇異分解(SVD)原理推導

很不錯的文章,適合入門。     在網上看到有很多文章介紹SVD的,講的也都不錯,但是感覺還是有需要補充的,特別是關於矩陣和對映之間的對應關係。前段時間看了國外的一篇文章,叫A Singularly Valuable Decomposition The SVD of

奇異分解(SVD)原理推導

 轉載請宣告出處http://blog.csdn.net/zhongkejingwang/article/details/43053513     在網上看到有很多文章介紹SVD的,講的也都不錯,但是感覺還是有需要補充的,特別是關於矩陣和對映之間的對應關係。前段時間看了國外

奇異分解(SVD)原理

一、奇異值與特徵值基礎知識:     特徵值分解和奇異值分解在機器學習領域都是屬於滿地可見的方法。兩者有著很緊密的關係,我在接下來會談到,特徵值分解和奇異值分解的目的都是一樣,就是提取出一個矩陣最重要的特徵。先談談特徵值分解吧:    1)特

奇異分解(SVD)原理應用

4.4 存在 post 定性 tro ant 二維 5.1 spl 一、奇異值與特征值基礎知識: 特征值分解和奇異值分解在機器學習領域都是屬於滿地可見的方法。兩者有著很緊密的關系,我在接下來會談到,特征值分解和奇異值分解的目的都是一樣,就是提取出一個矩陣最重要的特征

PCA SVD原理應用

本文分為兩大部分即PCA和SVD,每一部分下又分為原理和應用兩小部分 說明:本文程式碼參考Peter Harrington編寫的Machine Learning in Action,感興趣的小夥伴可以去看一下,筆者認為這本書還不錯 注意:本篇重在說明公式推導,關於具體使用的話python有專

奇異分解(SVD)原理與在降維中的應用

奇異值分解(Singular Value Decomposition,以下簡稱SVD)是在機器學習領域廣泛應用的演算法,它不光可以用於降維演算法中的特徵分解,還可以用於推薦系統,以及自然語言處理等領域。是很多機器學習演算法的基石。本文就對SVD的原理做一個總結,

機器學習實戰Machine Learning in Action學習筆記————10.奇異分解(SVD)原理、基於協同過濾的推薦引擎、資料降維

關鍵字:SVD、奇異值分解、降維、基於協同過濾的推薦引擎作者:米倉山下時間:2018-11-3機器學習實戰(Machine Learning in Action,@author: Peter Harrington)原始碼下載地址:https://www.manning.com/books/machine-le

機器學習實戰Machine Learning in Action學習筆記————10.奇異分解(SVD)原理、基於協同過濾的推薦引擎、數據降維

www 實現 由於 就是 計算 學習筆記 圖片 blob 標示 關鍵字:SVD、奇異值分解、降維、基於協同過濾的推薦引擎作者:米倉山下時間:2018-11-3機器學習實戰(Machine Learning in Action,@author: Peter Harringto

Storm概念、原理及其應用BaseStorm

when 結構 tails 並發數 vm 虛擬機 cif 異步 優勢 name 本文借鑒官文,添加了一些解釋和看法,其中有些理解,寫的比較粗糙,有問題的地方希望大家指出。寫這篇文章,是想把一些官文和資料中基礎、重點拿出來,能總結出便於大家理解的話語。與大多數“wordc

Ansible自動化運維之Playbook體驗

tasks ansible sha shadow yml ESS remote name 自動化運維 Handlers介紹: Handlers也是一些task的列表,和一般的task並沒有什麽區別。是由通知者進行的notify,如果沒有被notify,則Handlers

滾動條製作

檢視滾動條的滾動距離 js中有兩套方法可以檢視當前滾動條的滾動距離。 第一套是這樣的: window.pageXOffset/window.pageYOffset 這個方法可以檢視滾動條的橫軸和縱軸的滾動距離,但是很遺憾的是IE8以及以下的版本不相容。 因此針對於IE,我們就需要有第二套方法: d

oracle的 分表 -----表分割槽

       今天在群裡討論了一個分庫分表的問題,再加上最近生產庫中一個訂單記錄過大的處理方式,對錶分割槽有了更深一步的理解,這裡轉載了一篇文章。oracle也好,mysql也好,都是支援分割槽的,通過時間等範圍、列表、hash、組合等等。分庫迎合了微服務,分

java enum(列舉)使用和總結

enum 的全稱為 enumeration, 是 JDK 1.5  中引入的新特性,存放在 java.lang 包中。     下面是我在使用 enum 過程中的一些經驗和總結,主要包括如下內容: 1. 原始的介面定義常量 2. 語法(定義) 3. 遍歷、switch 等常用

奇異分解(SVD)及其應用

這個假設是一個攝像機採集一個物體運動得到的圖片,上面的點表示物體運動的位置,假如我們想要用一條直線去擬合這些點,那我們會選擇什麼方向的線呢?當然是圖上標有signal的那條線。如果我們把這些點單純的投影到x軸或者y軸上,最後在x軸與y軸上得到的方差是相似的(因為這些點的趨勢是在45度左右的方向,所以投影到x軸

奇異分解SVD計算原理JAVA程式碼

SVD是什麼? SVD是針對非方陣的特徵降維方法,對於方陣通常用PCA來進行降維。設A是一個m*n矩陣 m>=n。那麼對A進行奇異值分解的結果就表示為(V.T的大小是r*n): 其中矩陣U中的列向量被稱為左奇異向量,V中的行向量被成為右奇異向量,Σ是一個對角矩陣

矩陣分解 (特徵值/奇異分解+SVD+齊次/非齊次線性方程組)

,#1. 用途# 1.1 應用領域 最優化問題:最小二乘問題 (求取最小二乘解的方法一般使用SVD) 統計分析:訊號與影象處理 求解線性方程組:Ax=0或Ax=b 奇異值分解:可以降維,同時可以降低資料儲存需求 1.2 矩陣是什麼 矩陣是什

STP原理SMTP案例分析

stp smtp STP工作原理:MSTP案例分析 一、 STP概述:邏輯上斷開環路,防止廣播風暴的產生 ,當線路故障阻塞接口被激活,恢復通信,起到備份線路的作用。二、STP工作原理 確定交換機角色: 根交換機———在一個VLAN中,有且只有一個根交換機。2.非根交換機——除了跟交換機意外,其

RIP概述、原理實驗驗證

RIP 路由 RIP路由協議 一.路由類型: 直連路由——設備直連的網絡默認路由靜態路由——管理員手動配置的路由動態路由(IGP)internal gateway protocol1.DV—距離矢量路由協議——RIP IGRP EIGRP2.LS—鏈路狀態路由協議——ISIS OSPF 二.RI

nfs原理配置

1.0 而是 size 應用程序 roc alt 掛載文件系統 客戶 接受 簡介 工作原理 配置 簡介 NFS(Network File System)即網絡文件系統,它允許網絡中的計算機之間通過網絡共享資源。將NFS主機分享的目錄,掛載到本地客戶端當中,

[數學] 奇異分解SVD的理解與應用

資料 blank art use 過濾 ble 對角線 cos .net 看一個預測的代碼,在預處理數據的時候使用了svd。了解了一下svd相關資料,比較喜歡第一篇文章的解釋,不過第二篇也很簡單。 https://blog.csdn.net/ab_use/article/d