今天,奇異值分解已經通過許多科學分支傳播,特别是心理學和社會學、氣候和大氣科學以及天文學。它在機器學習以及描述性和預測性統計中也非常有用。
曆史奇異值分解技術(簡稱SVD)具有長期且有些令人驚訝的曆史。它開始于社會科學與智力測試。早期的情報研究人員指出,用于衡量智力的不同方面的測試,例如口頭和空間,通常是密切相關的。
因此,他們假設有一個共同的智力的一般衡量标準,他們稱之為“g”,因為“一般情報”,現在通常被稱為“智商”,所以他們着手解釋構成的不同因素智力,以便拉出最重要的一個。
今天,奇異值分解已經通過許多科學分支傳播,特别是心理學和社會學,氣候和大氣科學以及天文學。它在機器學習以及描述性和預測性統計中也非常有用。
力學的啟發回顧基本力學,力的分解是力的合成的逆運算,求一個力的分力的過程,同樣遵守平行四邊形法則。如果分解後的兩個力是互相垂直的,就類似于坐标分解,一般可有無數種分法,如圖所示。
令人失望的是,幾乎所有網上SVD方面的博客都講的使其比必要的更複雜,而核心思想是非常簡單的。
SVD隻不過是将矢量分解為正交軸 - 我們隻是認為它可能需要更堂皇的名稱。
讓我們看看情況如何。
當矢量a被分解時,我們得到3個信息:
第一、 投影方向的單元矢量(v ₁和v ₂)我們進行矢量分解的方向。在上面它們是x和y軸,但可以是任何其他正交軸。
第二、長度投影(線段sa1和sa2),這告訴我們有多少矢量被包含在投影的各個方向(a在v₁比在v₂上的投影更多,因此,sa1>sa2)。
第三、矢量投影(矢量pa1和pa2),用于重建原始矢量的分量(矢量和為原始矢量),以及用于其可以很容易地驗證pa1 = sa1* v₁和pa2= sa2* v₂ ,很容易從以前的2個推斷出來。
關鍵結論:
任何向量都可以用下式表示:
1.投影方向單位向量(v 1,v 2,...)。
2.投影到它們上面的長度(sₐ1,sₐ2,......)。
SVD所做的就是将這個結論擴展到多個向量(或點)和所有維度:
這是數據集的一個示例,一個點可以被認為是從原點出發的矢量。但是要處理這麼多數據就是一個比較棘手的混亂。
如何處理這個混亂如果不先處理單個向量,我們就無法處理這個混亂!
數學中的許多概括,主要使用矩陣。因此,我們必須找到一種方法來表示使用矩陣的向量分解的操作。
事實證明這是很自然的事情:
與之前的數字相同,但通過傾斜投影軸,來表明不限于x和y。aₓ和aᵧ是向量a的坐标,按照慣例放入列矩陣(列向量)。對于v1和v2也是如此。
我們想要沿着單位矢量v 1和v 2分解或者說投影矢量a。
該投影是由點積來實現的 ,它為我們提供了長度投影sa1和sa2:
将a投射到v1和v2上。
但是如果我們可以利用矩陣,那麼效率是出色的......
通過為每個單位矢量添加更多的列,一次寫入兩個方程式。
我們甚至可以添加更多點......
添加一個額外的行就相當于添加了點。S是包含投影長度的矩陣。
在添加點b之後,它就是這樣的樣子:
現在可以很容易地推廣到任意數量的點和維度:
n =點的個數;
d =維度大小;
A =包含點的矩陣;
V =包含分解軸的矩陣;
S =包含投影長度的矩陣。
下面的動态很好的體現了數學優雅:
總結概括:
在這種情況下,點積隻是普通的矩陣乘法。
這就是說:
因為V列是正交的,所以它的逆=它的轉置(正交矩陣的屬性)。
這就是SVD的關鍵結論:
任何一組矢量(A)可以用其在某組正交軸(V)上的投影長度(S)表示。
傳統的SVD公式說:
但這隻是意味着我們想看看如何:
這就是接下來需要我們推導的。
如果仔細查看矩陣S,您會發現它包括:
事實證明(出于後面會看到的原因)我們最好能夠對這些列向量進行歸一化,即使它們具有單位長度。
這是通過相當于将每個列向量除以其大小來完成的,以矩陣形式。
看一個例子,來看看這個"分裂"的事情是如何完成的。
假設我們想将M的第1列除以2。要求必須乘以另一個矩陣來保持恒等:
可以直接驗證未知矩陣隻不過是單位矩陣,第1行第1列被除數2替換:
第二列除以3現在變成了直接的事-隻需用元素3有來更換單位陣第2行第2列:
應該明白如何将此操作推廣到任何大小的任何矩陣。
現在,我們要在上面的"除法"的概念應用到矩陣。
為了标準化S的列,我們将它們除以它們的大小......
.通過使用S,我們在上面的例子中用M做了什麼:
最後得到:
這不就是奇異值分解的形式嗎?
解釋我們來談談這個U和Σ ......
σ是什麼?為什麼我們要把S标準化來找到它們?
由上面我們已經知道,σᵢ是所有點在單位矢量vᵢ投影長度的平方和的平方根。
這是什麼意思?
紅色部分= 向量在v1上的投影。藍色部分= 向量在v2上的投影。點越接近特定投影軸,相應σ的值越大。
因為σ在其定義中包含特定軸上的投影長度之和,因此它們表示所有點與該軸的接近程度。
例如,如果σ1>σ2,那麼大多數點比v2更接近v1,反之亦然。
這在SVD的無數應用中具有巨大的實用性。
主要應用找到矩陣的SVD分解的算法并不是不随機選擇投影方向(矩陣V的列)的。
他們選擇要投影的向量作為數據集的主成分(矩陣A)。
它們是變化最大的線(最大方差)。
特征降維的目的是把數據集投影到方差最大的線(或平面):
洋紅色:投射前的點。紫羅蘭:投影後的點(維數減少)。
現在,使用SVD投影數據集的行為變得非常簡單,因為所有點都已經在所有主成分(vᵢ單位向量)上投影(分解):
因此,例如,将數據集投影到第一個主成分上......
現在,我們要做的就是删除與第一主成分無關的所有列。現在A'中的投影數據集 。
将兩個矩陣(上面的S和Vᵀ)相乘得到包含投影點的矩陣A'。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!