1. 程式人生 > >奇異值分解的理解與oepncv程式碼

奇異值分解的理解與oepncv程式碼

特徵分解的缺點

特徵分解的推導與意義與opencv程式碼在上一篇部落格中介紹了特徵分解的原理和推導,特徵分解在一定的情況下可以很好的分解(實對稱矩陣),但是也有很大的侷限性

1. 只能對可對角化的方陣使用
2. 在可以對角化的情況下,特徵向量之間也不一定相互正交

為了克服這些缺點,我們便在尋找對一個任意的M*N的矩陣都能找到一個類似特徵分解的公式(以下的是我的理解,如果有錯歡迎指出):

1.特徵分解所幹的事情:將在以I為基底的情況下,轉換到以特徵向量為基底的表示方法,並且將之在特徵向量的方向上進行特徵值倍的拉伸,最終再轉換回以I為基底的表示方法。換一個說法就是一個可以對角化的矩陣A的作用便是:對一個基底進行拉伸,即 A

P = P Λ AP=P\Lambda
2.我們在尋找的對任意矩陣都適用的類似的方法:由於不是所有矩陣都可以找到一個基底,並且對這個基底進行拉伸一定倍數便等於A的效果,例如,P不存在逆的情況。此時我們的目標變成將在以I為正交基底
的情況下,轉換到另一個正交基底,再拉伸一定倍數再旋轉一定的角度(在特徵分解裡對映到原來的基底I可以看成是旋轉一個比較特殊的角度),所產生的效果和與矩陣A直接相乘的效果是一樣的。換一個說法就是將一個單位正交基底經過A的對映到另一個正交基底,將拉伸的倍數提取出來,使新基底仍然是單位基底。

  • PS:第一種說法是我根據特徵分解的思路去理解svd分解每個矩陣代表的意義,第二種說法是根據另一篇部落格的證明思路去理解的。我不知道兩種思路是否都正確,歡迎指出錯誤
  1. 第一種思路 A
    = U Σ V T A=U\Sigma V^T
    :從右到左,第一個矩陣代表將從基底I轉換到基底V,第二個矩陣代表在V基底下的一定的拉伸,U是一個單位正交矩陣(因為旋轉矩陣一定是單位正交矩陣,但是單位旋轉矩陣是否是正交矩陣我不確定,假設是吧),那麼U的作用便是一個旋轉。
  2. 第二種思路 A V = U Σ AV=U\Sigma :等式左邊是一個正交基底,經過A的轉換到另一個正交基底,同時把拉伸倍數提取出來,則成為了 Σ \Sigma 。從這個角度來說,應該是任何一個矩陣的作用都是對某個基底旋轉加拉伸,而可對角化的矩陣的作用剛好是旋轉的角度為0,而對角矩陣的基底剛剛好是I,所以作用只是對各個軸上進行拉伸。

其實svd正是在做這麼一件事情,以下的推導用第二種思路(畢竟是看別人部落格的)。

奇異值分解(SVD)

將奇異分解所做的事情寫成數學表示式,即為 A V = U Σ AV=U\Sigma V是一個正交基底,U也是一個正交基底, Σ \Sigma 是一個對角陣,對角線上的值為U裡的每個列向量的拉伸倍數。我們的目標就是找到 V , U , Σ V,U,\Sigma 這個三個矩陣。
接下來尋找一下這三個矩陣

1. 具體怎麼選取正交基底V我也不太清楚,不過前人已經幫我們找到了,就是 A T A A^TA 的單位特徵向量
V = [ v 1   v 2   v 3 ] V=[v_1 \ v_2 …\ v_3] A T A v j = λ j v j v i = 1 A^TAv_j=\lambda_j v_j,|v_i|=1 ),並且各個列向量都是正交的(因為 A T A A^TA 是一個實對稱陣),即 v i T v j = 0 v_i^Tv_j=0
2. 則A矩陣會將這組基底對映成 A V = [ A v 1   A v 2 A v n ] AV=[Av_1 \ Av_2…Av_n] ,對映後的各個列向量依然是正交的,即 ( A v i ) T ( A v j ) = v i T A T A v j = λ j v i T v j = 0 (Av_i)^T(Av_j)=v_i^TA^TAv_j=\lambda_j v_i^T v_j=0
3.到此,我們已經證明了AV的基底也是正交的,即U的每一列都是正交的,即 u i T u j = 0 u_i^Tu_j=0。 接下來是將U給單位化,因為我們的目的是得到單位正交基底。
已知 ( A v i ) T ( A v i ) = A v i 2 (Av_i)^T(Av_i)=| Av_i |^2
( A v i ) T ( A v i ) = v i T A T A v i = λ i v i T v i = λ i (Av_i)^T(Av_i)=v_i^TA^TAv_i=\lambda_i v_i^T v_i=\lambda_i
可以得到 A v i = λ i = σ i | Av_i |=\sqrt{\lambda_i}=\sigma_i
則令 A v i = σ i u i Av_i=\sigma_iu_i (由於 A v i Av_i 的模長與 σ \sigma 相等,則 u i u_i 一定為與 A v i Av_i

相關推薦

奇異分解理解oepncv程式碼

特徵分解的缺點 特徵分解的推導與意義與opencv程式碼在上一篇部落格中介紹了特徵分解的原理和推導,特徵分解在一定的情況下可以很好的分解(實對稱矩陣),但是也有很大的侷限性 1. 只能對可對角化的方陣使用 2. 在可以對角化的情況下,特徵向量之間也不一定相互正交 為

奇異分解(SVD)線性變換的幾何意義

奇異值分解( The singular value decomposition )   該部分是從幾何層面上去理解二維的SVD:對於任意的 2 x 2 矩陣,通過SVD可以將一個相互垂直的網格(orthogonal grid)變換到另外一個相互垂直的網格。   我們可以通過向量的方式來描述這個事實

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

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

SVD奇異分解 中特徵值奇異的數學理解意義

前言 之前的部落格中SVD推薦演算法寫得不是很嚴謹,r̂ ui=∑Ff=1PufQfi+μ+bu+bir^ui=∑f=1FPufQfi+μ+bu+bi 更像是矩陣分解多一點,沒有涉及到SVD的數學意義,這篇部落格大概會寫一些數學SVD的數學理解,以及SVD在P

機器學習的數學基礎 - 特征分解奇異分解

src ron 特征 技術 ima 基礎 bsp posit pos 特征分解 奇異值分解(Singular Value Decomposition, SVD) 機器學習的數學基礎 - 特征分解與奇異值分解

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

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

矩陣的特徵值分解奇異分解的幾何意義

1、首先,矩陣可以認為是一種線性變換:確定了定義域空間與目標空間的兩組基,就可以很自然地得到該線性變換的矩陣表示。即矩陣A可以通過Ax=b將一個向量x線性變換到另一個向量b,這個過程中,線性變換的作用包

矩陣特徵值分解奇異分解含義解析及應用

此文有一半轉載自他出,主要在這進行個整理,具體內容文中都有相關的轉載連結。特徵值與特徵向量的幾何意義矩陣的乘法是什麼,別隻告訴我只是“前一個矩陣的行乘以後一個矩陣的列”,還會一點的可能還會說“前一個矩陣的列數等於後一個矩陣的行數才能相乘”,然而,這裡卻會和你說——那都是表象。

特徵值分解奇異分解及其應用

SVD奇異值分解 正交矩陣 正交矩陣   正交矩陣對應著正交變換,特點在於不改變向量的尺寸(模)和任意兩個向量的夾角。在x-y座標系中,通俗地講,就是旋轉兩個座標軸,得到新的互相垂直的座標軸,求向量在新座標系中的投影。 正交變換舉例

奇異分解理解

我們都知道,圖片實際上對應著一個矩陣,矩陣的大小就是畫素大小,比如這張圖對應的矩陣階數就是450*333,矩陣上每個元素的數值對應著畫素值。我們記這個畫素矩陣為 現在我們對矩陣進行奇異值分解。直觀上,奇異值分解將矩陣分解成若干個秩一矩陣之和,用公式表示就是: 其中等式右邊每一項前的係數就是奇異值,和分別表示列

奇異分解(SVD)降維

一、特徵分解 許多數學物件可以通過將它們分解成多個組成部分或者找到它們地 一些屬性來更好的理解。這些屬性是通用的,而不是我們選擇表示它們的方式而產生的。如:我們可以用十進位制或二進位制等方式表示12,但12=2*2*3永遠是對的。 1、特徵分解 特

基於奇異分解的影象壓縮除噪

一、本報告所用的一些基本原理 第一,慮噪過程。 巴特沃斯濾波器的特點是通頻帶內的頻率響應曲線最大限度平坦,沒有起伏,而在阻頻帶則逐漸下降為零。在振幅的對數對角頻率的波得圖上,從某一邊界角頻率開始,振幅隨著角頻率的增加而逐步減少,趨向負無窮大。 本程式通過不斷調整通帶截止頻率

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

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

【PCALDA】特徵值分解奇異分解以及影象壓縮處理原理

    上一次寫了關於PCA與LDA的文章,PCA的實現一般有兩種,一種是用特徵值分解去實現的,一種是用奇異值分解去實現的。在上篇文章中便是基於特徵值分解的一種解釋。特徵值和奇異值在大部分人的印象中,往往是停留在純粹的數學計算中。而且線性代數或者矩陣論裡面,也很少講任何跟特徵值與奇異值有關的應用背景。奇異值分

《學習OpenCV3》第7章第4題-SVD奇異分解的驗算

lac size ast 編寫代碼 ref www adding 第7章 mar 原文題目: 中文翻譯: 解題過程 d.使用OpenCV編寫代碼 /******************************************************

SVD 奇異分解

依賴 nat 矩陣相乘 適用於 mac 分類 topic 沒有 一個 強大的矩陣奇異值分解(SVD)及其應用 版權聲明: 本文由LeftNotEasy發布於http://leftnoteasy.cnblogs.com, 本文可以被全部的轉載或者部分使用

機器學習實戰精讀--------奇異分解(SVD)

svd 奇異值分解奇異值分解(SVD):是一種強大的降維工具,通過利用SVD來逼近矩陣並從中提取重要特征,通過保留矩陣80%~ 90%的能量,就能得到重要的特征並去掉噪聲SVD分解會降低程序的速度,大型系統中SVD每天運行一次或者頻率更低,並且還要離線進行。隱性語義索引(LST):試圖繞過自然語言理解,用統計

Median absolute deviation | Singular Value Decomposition奇異分解 | cumulative sums |

con osi out posit position for BE absolute lar Consider the data (1, 1, 2, 2, 4, 6, 9). It has a median value of 2. The absolute devia

奇異分解(SVD)原理及應用

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

機器學習中的數學-強大的矩陣奇異分解(SVD)及其應用

版權宣告:     本文由LeftNotEasy釋出於http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html 前言: &nb