日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

【AI绘图学习笔记】奇异值分解(SVD)、主成分分析(PCA)

發布時間:2023/12/29 ChatGpt 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【AI绘图学习笔记】奇异值分解(SVD)、主成分分析(PCA) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這節的內容需要一些線性代數基礎知識,如果你沒聽懂本文在講什么,強烈建議你學習【官方雙語/合集】線性代數的本質 - 系列合集

文章目錄

  • 奇異值分解
    • 線性變換
    • 特征值和特征向量的幾何意義
    • 什么是奇異值分解?
    • 公式推導
      • SVD推廣到任意大小矩陣
    • 如何求SVD分解
  • 非負矩陣分解(NMF)
  • 主成分分析PCA
    • 我們為什么需要PCA?
    • 來找坐標原點
    • 來找坐標系
    • 怎么理解PCA
    • 什么是協方差矩陣
      • 公式推導
      • 重要思考!
      • 置信橢圓
      • PCA的缺點
    • PCA主成分與SVD的關系


奇異值分解

這段看的視頻是【學長小課堂】什么是奇異值分解SVD–SVD如何分解時空矩陣

線性變換


大多數本科生接觸的線性代數可能只是矩陣的運算,如果我們從幾何意義上來理解會發現一個嶄新的世界。

假設我們給出一個原矩陣D,D的矩陣如上所示,D由四個向量[x1,y1]T...[x4,y4]T[x_1,y_1]^T...[x_4,y_4]^T[x1?,y1?]T...[x4?,y4?]T構成。矩陣D的基(基底)是數軸正方形上的單位向量j=[0,1]T,i=[1,0]Tj=[0,1]^T,i=[1,0]^Tj=[0,1]T,i=[1,0]T,如圖左所示,實際上任何一個向量我們都可以視作基的運算,如下圖。


現在我們給出一個矩陣S=[2001]S=\begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix}S=[20?01?],然后我們將矩陣SD相乘,如果單純運算我們當然知道SD的結果。現在讓我們再看看新矩陣SD,我們會發現其中的向量[2x1,y1]....[2x4,y4][2x_1,y_1]....[2x_4,y_4][2x1?,y1?]....[2x4?,y4?]在x軸上都變為了原來的兩倍。
實際上,矩陣運算AB=C,我們可以解讀為:對B矩陣應用了A變換從而得到了新矩陣C
我們將D矩陣簡寫為D=[xy]D=\begin{bmatrix} x\\ y \end{bmatrix}D=[xy?],也就是說SD=[2001][xy]=x[20]+y[01]SD=\begin{bmatrix} \textcolor{red}{2} & \textcolor{blue}{0} \\ \textcolor{red}{0} & \textcolor{blue}{1} \end{bmatrix}\begin{bmatrix} x\\ y \end{bmatrix}=x\begin{bmatrix} \textcolor{red}{2} \\ \textcolor{red}{0} \end{bmatrix}+y\begin{bmatrix} \textcolor{blue}{0} \\ \textcolor{blue}{1} \end{bmatrix}SD=[20?01?][xy?]=x[20?]+y[01?]
因此S變換相當于將x乘以兩倍,y乘以一倍,本質上SSS矩陣對DDD矩陣的基進行了線性變換,j?1→j^,i?2→i^j*1 \to \hat j,i*2 \to \hat ij?1j^?,i?2i^,因此如下圖所示,SD會將D橫向拉伸兩倍。



如圖我們對矩陣D乘以一個旋轉矩陣R,其中R=[cos(θ)?sin(θ)sin(θ)cos(θ)]R=\begin{bmatrix} cos(θ)&-sin(θ) \\ sin(θ) &cos(θ) \end{bmatrix}R=[cos(θ)sin(θ)??sin(θ)cos(θ)?],其中θ角代表了旋轉的角度,當然這個矩陣代表了整體的旋轉,你可以想象整個網格以原點為旋轉中心旋轉。

矩陣的線性變換就包括拉伸和旋轉兩種,如果一個矩陣(向量)x在應用了變換矩陣A后,原點位置依舊不變,且基向量為直線,坐標上的網格線保持平行,我們就稱這種變換為線性變換。

一種更直觀的變換方式,就是將基向量移動到變換矩陣對應的坐標,想象整個網格隨之運動。

在乘以R矩陣后,RSD相當于在SD的圖像上應用了線性旋轉得到了新的圖像。

特征值和特征向量的幾何意義

矩陣乘法核心思想(6):特征向量與特征值的幾何意義
先說結論,其實我們剛才已經講過了。

  • 矩陣乘法即線性變換——對向量進行旋轉和長度伸縮,效果與函數相同;
  • 特征向量指向只縮放不旋轉的方向;
  • 特征值即縮放因子;
  • 旋轉矩陣無實數特征向量和特征值。

單個向量的張成空間是一條直線,在大部分時候,線性變換后的向量會偏移原來的張成空間,然而某些時候一些向量僅僅只是將進行了拉伸,因此就被留在了原張成空間中,或者說所有處于這條直線上的向量都僅僅只是被拉伸。我們把這些應用了線性變換后仍然留在原張成空間的向量稱為特征向量,其被拉伸的比例因子我們稱為特征值,因此,拉伸為三倍的那個直線就是一個屬于特征值3的特征向量。


那么假設我們找到了這個特征向量,然后對一個三維矩陣(我們將其看作一個三維空間)進行了一次旋轉,我們知道特征向量經過旋轉這種線性變換仍然留在原張成空間上,因此特征向量線性變換前后的位置保持不變,那么我們就可以視為對這個矩陣以特征向量為旋轉軸進行了一次旋轉。

計算特征值的公式就是AV?=λV?A\vec V=\lambda \vec VAV=λV,其中λ\lambdaλ是特征值矩陣,尋找特征向量V?\vec VV就是求解(A?λE)V?=0(A-\lambda E)\vec V=0(A?λE)V=0,這是一個齊次線性方程組,當det(A?λE)=0det(A-\lambda E)=0det(A?λE)=0(A?λE)(A-\lambda E)(A?λE)這個矩陣非滿秩的時候存在非零解。

現在讓我們重新審視一下AV?=λv?A\vec V=\lambda \vec vAV=λv這個式子:

A代表了一個變換矩陣,v?\vec vv代表了特征向量,當矩陣*向量=向量,因此Av?A\vec vAv代表了對v?\vec vv的一次線性變換,在SVD中,我們可以將矩陣變換拆解為A=DRA=DRA=DR,即旋轉和拉伸,因此Av?A\vec vAv相當于對向量v?\vec vv進行了旋轉加拉伸的線性變換,它的結果AV?=λv?A\vec V=\lambda \vec vAV=λv,相當于對原向量拉伸了特征值λ\lambdaλ倍。也就是說,在特征向量上的線性變換A完全可以由λ\lambdaλ所定義!

那么特征值能不能是復數呢?能,這意味著特征向量縮放了一個虛數倍?在笛卡爾坐標系上實在是太難想象了,而且有些超綱了。

為什么對角矩陣的主元就是特征值?我們可以將基向量視為特征向量,因此主元上的元素就是特征值。

我們能進行SVD分解的基礎之一就是特征值的這些特性,實際上SVD公式M=UΣVTM=U\Sigma V^TM=UΣVT中的U,V都代表旋轉變換,只有Σ\SigmaΣ代表了縮放,而在后面我們也會知道,原來MMTMM^TMMT的特征值L=Σ2L=\Sigma^2L=Σ2,如果我們對一個非奇異矩陣進行了SVD分解,所得到的奇異值其實就是特征值,因此和我們現在所說的特征值代表縮放因子這一結論是一致的


什么是奇異值分解?


左圖中的M是一個線性變換矩陣,想要從一個單位圓達到M這個效果,你可以想象一下,我們就是把這個圓拉長并且旋轉。我們可以把整個操作分解為拉伸+旋轉。在奇異值分解中,則是分解為了旋轉VTV^TVT+拉伸Σ\SigmaΣ+旋轉UUU,奇異值分解的公式則是M=UΣVTM=U\Sigma V^TM=UΣVT


公式推導


如圖,V是原始域的標準正交基(即基為單位長度且正交),我們對其應用線性變換M得到了新的矩陣UΣU\SigmaUΣU=[u1→,u2→]U=[\overrightarrow{u_1},\overrightarrow{u_2}]U=[u1??,u2??]也是標準正交基(其基為原始域單位長度且正交),但是我們發現經過線性變換M的新矩陣U,它的基的長度實際上已經不是單位長度了(原始域的單位長度),相當于在U的基上進行了拉伸,我們用Σ\SigmaΣ表示這個拉伸矩陣,拉伸幅度用奇異值σ\sigmaσ表示。

因此我們可以得到MV=UΣMV=U\SigmaMV=UΣ,其中由于V是正交矩陣,因此VT=V?1V^T=V^{-1}VT=V?1
M=UΣV?1=UΣVTM=U\Sigma V^{-1}=U\Sigma V^TM=UΣV?1=UΣVT

SVD推廣到任意大小矩陣


對于任意大小矩陣可化為m×n=(m×m)(m×n)(n×n)

在上圖中舉出的這個例子中,我們發現Σ\SigmaΣ矩陣中的最后一行是沒有信息的,因此這一行可以忽略(在此例子中m=n+1),我們可以少計算一行,將其看作一個(m-1)*n的矩陣,那么UUU矩陣的最后一列也可以消去,因此可以得到一個更簡單矩陣計算:


在這里我們稍微提一下后面要講的主成分分析:其實就是選擇主要元素,丟棄非主要元素從而實現信息壓縮。
現在讓我們給Σ\SigmaΣ選擇r個主成分,得到新的壓縮過的三個矩陣


我們按照Σ\SigmaΣ中奇異值的個數進行模式拆分,由于壓縮矩陣是(m×r)(r×r)(r×n),所以我們分別把UUU拆成rrr列,Σ\SigmaΣ拆成rrr個奇異值,VTV^TVT拆成rrr行,依次組合成三個模式(pattern)

U,VTU,V^TU,VT拆出的成分相乘,得到一個新的矩陣,再分別乘以奇異值,最后將三個矩陣疊加在一起,就得到了原始矩陣M(由于選擇了主成分,因此存在信息丟失)

我們再將其拆解出來,就是基向量u?基向量v?奇異值σ基向量u*基向量v*奇異值\sigma基向量u?基向量v?奇異值σ,因為奇異值有三個,所以我們拆分出了三種模式,我們可以給不同的模式定義不同的信息

雖然三種模式的保存的信息形式都是時間,空間和大小,但是三種模式保存的時間,空間的分布都是不同的。


如何求SVD分解

M=UΣVTMTM=(UΣVT)TUΣVTMTM=VΣUTUΣVT(Σ對稱)MTM=VΣΣVTM=U\Sigma V^T\\ M^TM=(U\Sigma V^T)^TU\Sigma V^T\\ M^TM=V\Sigma U^TU\Sigma V^T(\Sigma對稱)\\ M^TM=V\Sigma\Sigma V^TM=UΣVTMTM=(UΣVT)TUΣVTMTM=VΣUTUΣVT(Σ對稱)MTM=VΣΣVT

我們令L=ΣΣL=\Sigma\SigmaL=ΣΣ,我們設MTMM^TMMTM的特征值為λ\lambdaλ,那么就有MTMv→=λv→M^TM\overrightarrow{v}=\lambda\overrightarrow{v}MTMv=λv

將上式子乘以V?1V^{-1}V?1,我們得到

因此我們得到:
MTM=VLVTMTMV=VL=LVMMTU=UL=LU(V和U都是向量,所以能交換位置)M^TM=VLV^T\\ M^TMV=VL=LV\\ MM^TU=UL=LU(V和U都是向量,所以能交換位置)MTM=VLVTMTMV=VL=LVMMTU=UL=LU(VU都是向量,所以能交換位置)
所以V是MTMM^TMMTM的特征向量,U是MMTMM^TMMT的特征向量,因此Σ\SigmaΣ是矩陣MTM和MMTM^TM和MM^TMTMMMT的特征值L=Σ2L=\Sigma^2L=Σ2開方構成的對角陣,因此只需知道M,我們就可以進行SVD分解


非負矩陣分解(NMF)

視頻中只簡單的提了一嘴,簡單來說非負矩陣分解類似于SVD,將MMM分解為SBSBSB,這兩個矩陣中的每個向量,每個元素都是非負的,然后將S的每一列*B的每一行,得到右下角三個秩為1的矩陣并相加,最終結果近似于原始矩陣M,假設S列代表空間,B行代表時間,當時間空間為正值的時候我們比較方便討論其物理意義。由于缺失了奇異值σ\sigmaσ,所以我們不太好判斷哪種模式主要,所以可能我們需要求出矩陣范數來判斷每種模式的大小。


主成分分析PCA

我們為什么需要PCA?

我們來看看一個特殊的例子,如果在二維坐標上保存了這些樣本,我們發現實際上它們幾乎處于同一條直線,現在我們建立一個新的坐標系,那么如果以新坐標系為原點,就會發現所有的樣本基本分布在一維數軸上,也就是說,如果我們使用新的坐標系來保存樣本數據,那么我們只需要一維的矩陣就能保存所有信息,這樣我們就實現了數據的降維,并且保證了較少的信息損失。

因此,PCA的本質就是重構一個新的坐標系,使得我們在進行數據降維的時候,盡可能多地保存信息,使得信息損失較少。


來找坐標原點

讓我們來看一個例子:


假設我們有6只小鼠,每只測定了兩種基因。(其中小鼠意味著個體樣本,基因代表每個樣本測量的變量)

假設我們只有一個變量,那么我們可以將數據放在一維數軸上,123處于較高位,456處于較低位,不難發現123是相似的,456是相似的。而這兩堆之間的相似性不強。

如果有兩個變量,拓展到二維坐標上也是同理的。甚至于三維。

但是如果拓展到四維,那我們就沒法通過四維圖像來判斷這些樣本的近似度了。

如果我們分別計算樣本在變量1和變量2上的平均測度(圖中紅X),我們可以用這個平均值坐標代表數據的中心,我們將這一步稱為"去中心化"。確定數據的中心,是為了將其作為坐標原點。


來找坐標系

現在我們將中心移動到了原點,讓我們找到一條直線來擬合這些數據

怎么尋找最佳擬合直線應該不用我們多說了,最小二乘法。
現在讓我們以一個樣本為例,用點到直線的距離和原點構造出三角形,根據勾股定理,a固定,b越短,c越長,b和c是負相關的。也就是說最小二乘法使得所有點到直線的距離bib_ibi?之和最小,如果我們換個角度,那么cic_ici?之和將會達到最大
因此,我們在PCA中可以通過計算點的投影到原點的距離did_idi?來判斷是否找到了最佳擬合直線。需要注意的是,和線性回歸不同,由于PCA的坐標存在著正負,因此得到的距離did_idi?也有可能是負數,為了避免負數,因此我們要對其進行平方和計算,其實距離did_idi?意味著方差。

我們將距離平方和稱為SS,接下來為了找到這個最佳直線,我們開始旋轉,最終找到了這條線,此時的SS是最大的。

我們把現在找到的這條最佳擬合直線稱為主成分1(或PC1,Principal Component),假設它的斜率是0.25,也就是14\frac{1}{4}41?,意味著我們每往橫軸前進四個單位,在縱軸上會上升一個單位。

也就是說對于每個數據而言,因為它們的分布是近似于這條直線的,因此每個樣本在橫軸Gene1的方向上擴散更寬,而在縱軸Gene2的方向上的擴散就相對較小。(就像上圖第一象限的樣本,它們更偏向右邊而不是上面,第三象限的樣本更偏向左邊而非下面)

我們也可以將PC1這條直線,視為Gene1和Gene2兩個變量的線性組合


根據勾股定理,我們想要得到單位長度1的PC1,那么我們就需要44.12\frac{4}{4.12}4.124?的Gene1和14.12\frac{1}{4.12}4.121?的Gene2,我們將這個單位長度向量稱為PC1的奇異向量或特征向量,我們將每種變量Gene的比例稱為載荷得分(Loading Scores),SS就是PC1的特征值L=ΣΣL=\Sigma\SigmaL=ΣΣ,因此SS\sqrt{SS}SS?就是PC1的奇異值


在二維數軸上,PC2就是簡單的一條經過原點且垂直于PC1的直線。所以PC2的斜率和PC1的斜率之積是-1,所以當前PC2的斜率為-4。然后我們再求PC2方向上單位長度的特征向量,奇異值以及載荷得分。同時也能得到PC2的SS。

要繪制最終的PCA圖,我們需要旋轉所有內容,并且使得PC1呈水平狀態。然后根據投影位置找到樣本,

以上內容是在幾何上對PCA的理解,實際上,我們可以將PCA理解為:尋找一個方便我們進行數據降維的特征空間的方法。PC1和PC2都是這個特征空間的軸,而我們之所以要SS(方差)達到最大,是因為方差可以用于解釋平行于特征空間軸方向的數據傳播

那么我們結合公式推導看看PCA的過程


怎么理解PCA


讓我們來看看兩組數據,第一組數據,它在x,y方向上都是正態分布,并且x和y不相關,我們把第一組數據稱為白數據(white data),由于是標準正態分布,因此其均值是0,方差是1。
右邊的數據是我們手上去中心化后的數據,x和y都是正態分布但不是標準正態分布,并且x和y相關,意味著隨著數據在x方向上的增大,在y方向上也會增大。

在學習了SVD分解后,我們知道可以通過線性變換將DDD轉化為D′D'D這個矩陣,其中SSS代表我們往方差最大的方向進行拉伸,而RRR則是旋轉方向最大的方向的角度,因此我們解決PCA問題可以轉化為找到這個旋轉矩陣RRR

同樣的,我們也可以通過逆運算,從手上的數據D′D'D來計算白數據DDD,值得一提的是,由于RRR是一個旋轉矩陣,因此基一定是正交的,也就意味著它是一個正交矩陣,因此R?1=RTR^{-1}=R^TR?1=RT,而SSS矩陣是對角矩陣,因此其逆矩陣相當于對角元素的倒數。

什么是協方差矩陣

因此,想要解決PCA問題,我們需要找到旋轉矩陣RRR,那么怎么找到它呢?我們需要協方差矩陣的幫助

在剛才從幾何上理解PCA的過程,我們知道尋找到PC1的條件是要使得方差最大,但是如果運用到計算中,我們的方差公式σ(x)或者σ(y)\sigma(x)或者\sigma(y)σ(x)或者σ(y)只能表示數據在x軸方向上或者y軸方向上的方差,而你可以翻回上面的圖看看,我們尋找PC1的時候需要的是對角方向(斜線)上的方差,因此我們需要引入一個新的概念:協方差

協方差,我們用cov(x,y)cov(x,y)cov(x,y)來表示,它代表的是兩個變量在變化過程中是同方向變化還是反方向變化?其同向或反向程度如何?它代表了數據在x和y上的相關程度,也就是斜線方向上傳播的相關關系。
其中當協方差cov(x,y)>0cov(x,y)>0cov(x,y)>0代表x和y在同方向上相關,反之cov(x,y)<0cov(x,y)<0cov(x,y)<0代表反方向相關,且協方差的絕對值越大代表了方向上的相關程度(變化比例)越大。
協方差公式:cov(x,y)=∑i=1n(xi?x ̄)(yi?y ̄)n?1cov(x,y)=\frac{\sum^n_{i=1}(x_i-\overline x)(y_i-\overline y)}{n-1}cov(x,y)=n?1i=1n?(xi??x)(yi??y?)?

其中x ̄,y ̄\overline x,\overline yx,y?代表了各個樣本的x和y在數軸上的均值,由于我們已經完成了去中心化,因此坐標原點處于樣本中心,所以x ̄=0,y ̄=0\overline x=0,\overline y=0x=0,y?=0,因此協方差化簡為cov(x,y)=∑i=1n(xi)(yi)n?1cov(x,y)=\frac{\sum^n_{i=1}(x_i)(y_i)}{n-1}cov(x,y)=n?1i=1n?(xi?)(yi?)?,如果我們求x與x 的協方差,其結果就是x的方差


協方差矩陣就是由協方差構成的矩陣,其中對角線元素是方差,n階矩陣代表了n維坐標。初始的白數據我們說過,由于滿足標準正態分布,所以協方差是0,方差是1,因此協方差矩陣C=[1001]C=\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}C=[10?01?]

協方差在我們進行矩陣的線性變換的時候是怎么變動的呢?你可以想象一下,由于協方差矩陣C=[cov(x,x)cov(x,y)cov(x,y)cov(y,y)]C=\begin{bmatrix} cov(x,x) & cov(x,y) \\ cov(x,y)& cov(y,y) \end{bmatrix}C=[cov(x,x)cov(x,y)?cov(x,y)cov(y,y)?],所以當x,y上的向量變動會導致對應的協方差產生變動,因此你可以將其等價為基向量的線性變換所產生的相關性變化。

假設我們將數據向x軸兩邊拉伸,那么與x相關的協方差cov(x,x),cov(x,y)cov(x,x),cov(x,y)cov(x,x),cov(x,y)會發生變化,而cov(y,y)cov(y,y)cov(y,y)不會,因此想象一下整體數據往x軸兩邊擴張,y不變,因此x和x,x和y的相關性都會變大,意味著協方差的正負號不變,絕對值增大。反之若是向x軸內收縮,則協方差正負號不變,絕對值縮小。

當數據整體進行旋轉的時候,我們以當前xy方向作為對比,想象一下當整體旋轉九十度,那么原來的x坐標指向y坐標,而y坐標指向了x坐標的反向,因此方差cov(x,x),cov(y,y)cov(x,x),cov(y,y)cov(x,x),cov(y,y)相關程度不變,協方差cov(x,y)cov(x,y)cov(x,y)符號會產生正負變化,相當于每旋轉90度,cov(x,y)??1cov(x,y)*-1cov(x,y)??1。形狀上來看如果形狀類似 “/” 那協方差cov(x,y)>0cov(x,y)>0cov(x,y)>0,反之形狀類似 “\” 則協方差cov(x,y)<0cov(x,y)<0cov(x,y)<0

詳見協方差矩陣的幾何解釋

公式推導

還是要提一下,上式的矩陣D其實就是SVD里的矩陣M,讓我們詳解一下協方差矩陣的求法:
C=[cov(x,x)cov(x,y)cov(x,y)cov(y,y)]=[∑i=1nxi2n?1∑i=1nxiyin?1∑i=1nxiyin?1∑i=1nyi2n?1]C=\begin{bmatrix} cov(x,x) & cov(x,y) \\ cov(x,y)& cov(y,y) \end{bmatrix}=\begin{bmatrix} \frac {\sum^n_{i=1}x_i^2}{n-1} & \frac {\sum^n_{i=1}x_iy_i}{n-1} \\ \frac {\sum^n_{i=1}x_iy_i}{n-1}& \frac {\sum^n_{i=1}y_i^2}{n-1} \end{bmatrix}C=[cov(x,x)cov(x,y)?cov(x,y)cov(y,y)?]=[n?1i=1n?xi2??n?1i=1n?xi?yi???n?1i=1n?xi?yi??n?1i=1n?yi2???]
這個矩陣相乘結果可以提取1n?1\frac{1}{n-1}n?11?最終化為協方差矩陣C=1n?1DDTC=\frac{1}{n-1}DD^TC=n?11?DDT的矩陣與其轉置的乘積形式


讓我們將C′=1n?1D′D′TC'=\frac {1}{n-1}D'D'^TC=n?11?DDT這個式子拆開
=1n?1RSD(RSD)T=1n?1RSDDTSTRT=RS(1n?1DDT)STRT=\frac{1}{n-1}RSD(RSD)^T\\ =\frac{1}{n-1}RSDD^TS^TR^T\\ =RS(\frac{1}{n-1}DD^T)S^TR^T=n?11?RSD(RSD)T=n?11?RSDDTSTRT=RS(n?11?DDT)STRT
因為我們知道白數據的方差是0,協方差是1,所以白數據的協方差矩陣C=1n?1DDT=[1001]C=\frac{1}{n-1}DD^T=\begin{bmatrix} 1 & 0 \\ 0& 1 \end{bmatrix}C=n?11?DDT=[10?01?],因此白數據的協方差矩陣是單位矩陣,所以原式子:
=RSSTRT=RSS^TR^T=RSSTRT
而我們之前說了,拉伸矩陣SSS是一個對角矩陣,所以S=STS=S^TS=ST,旋轉矩陣RRR是一個正交矩陣,因此RT=R?1R^T=R^{-1}RT=R?1

原式=RLR?1原式=RLR^{-1}原式=RLR?1

因此我們得出D′D'D的協方差矩陣 C′=RLR?1C'=RLR^{-1}C=RLR?1,其中L=SST=[a200b2]L=SS^T=\begin{bmatrix} a^2 & 0 \\ 0& b^2 \end{bmatrix}L=SST=[a20?0b2?]

那么其實到這里我們就已經很熟悉了,這個協方差矩陣和我們在SVD中學到的M=UΣVTM=U\Sigma V^TM=UΣVT的形式已經完全一致了,實際上兩者本質上可以說就是同一個式子,


假設C′C'C的特征值是λ\lambdaλ,我們來對其進行變形,由于是二維矩陣,所以有兩個特征值,我們把特征值v1v2v_1v_2v1?v2?看作矩陣R,λ\lambdaλ看作矩陣L,得到如上圖所示的矩陣變換。

因此變換后的協方差矩陣C′=RLR?1C'=RLR^{-1}C=RLR?1就相當于C′=特征向量?特征值矩陣?特征向量的逆C'=特征向量*特征值矩陣*特征向量的逆C=特征向量?特征值矩陣?特征向量的逆
由于協方差代表了兩個坐標的相關度,就相當于我們要求的線性變換后的矩陣D′D'D其PCA的橫軸PC1為第一列特征向量v?1\vec v_1v1?,而縱軸PC2就為v?2\vec v_2v2?,而L這個特征值矩陣代表了在白數據的xy方向上進行拉伸的倍數a,ba,ba,b的平方,λ1=a2,λ2=b2\lambda_1=a^2,\lambda_2=b^2λ1?=a2,λ2?=b2。為什么會這樣呢?

重要思考!

協方差和方差存在著什么關系?這一點我們需要特別指出,我們之前說過協方差代表了數據在斜線上的傳播關系,而方差代表了數據在x軸或者y軸上的傳播關系。也就是說,方差和協方差是負相關的,當數據在斜線上的傳播相關越大,則在橫軸縱軸上的傳播相關越小,也就是說,當協方差達到最大的時候,x和y的方差=0!同理當方差達到最大的時候,協方差=0。

讓我們思考一個問題:方差在什么時候能夠達到最大?

當然是協方差=0的時候,此時數據在斜方向上不相關,但是我們能不能直接確定一個最大方差?

或者我們換一個提問,能不能存在一個協方差矩陣,使得數據僅僅在軸方向上變換?

或者有沒有一個矩陣,能使得線性變換相當于向量的拉伸?

魔法解開了,答案是特征向量!當數軸是特征向量,應用的矩陣相當于特征值的時候,Av?=λv?A\vec v=\lambda \vec vAv=λv,能夠滿足我們的條件!因此方差在什么時候能取到最大?也就是方差=λ\lambdaλ,協方差=0的時候!

現在再讓我們看看這個公式

現在我們理解了,此時白數據的x軸就是v?1\vec v_1v1?,y軸就是v?2\vec v_2v2?,這也是我們想要重建的PCA坐標,那么要使得方差最大,所以特征矩陣就是L=SST=[a200b2]L=SS^T=\begin{bmatrix} a^2 & 0 \\ 0& b^2 \end{bmatrix}L=SST=[a20?0b2?]

C′C'CD′D'D的協方差,LLLD′D'D中用紅藍線畫出的新坐標系下的協方差,我們對D′D'D應用一下R?1R^{-1}R?1將其旋轉回去,這樣坐標就回歸到了白數據的坐標(后兩張圖的紅藍坐標軸是將原點重新換到新坐標后的圖片,后兩張的紅藍坐標相當于新建的標準笛卡爾坐標系,與第一張圖的紅藍軸不是同一個東西,由于網格沒有對應發生變換所以可能看的有點迷糊),方差就代表了在白數據軸方向的拉伸倍數λ\lambdaλ,實際上此處的方差方向才是第一張圖上的紅藍軸方向。

因此,PCA的方法實際上是將變換后的特征向量作為PC軸的方法,其方差最大的時候也就是對應協方差矩陣C=RLR?1C=RLR^{-1}C=RLR?1,相當于把特征方向旋轉到標準坐標系上再應用LLL的特征值變換。

此外,三維降二維的PCA和我們剛才講的類似,只不過我們要尋找的不止PC1,三維降二維是想讓數據投影到我們尋找到的平面,所以我們尋找到方差最大的軸PC1之后,還需要尋找到過原點垂直于PC1且方差最大的PC2。在找到這兩個軸后,PC3是一條過原點且同時垂直于PC1和PC2的軸,因此是唯一確定的。

置信橢圓

置信橢圓就是我們之前提到的置信域,它代表了一個搜索的區間范圍。

在白噪聲上的置信域是一個圓形,當我們對D進行了線性變換后,置信域被拉伸成了一個橢圓,由于是整體進行了變換,因此無論是變換前還是變換后,置信橢圓內包含的點的比例依舊是不變的,也就是若D中的s包含了95%的點,D’中的s依舊包含95%的點。置信橢圓的大小由s決定,可以查表得。

PCA的缺點

PCA相較于其他降維算法,的一個缺點就是離群點對于整體的影響較大,


PCA主成分與SVD的關系

我們知道V是MTMM^TMMTM的特征向量,而PCA主成分的方向是協方差矩陣C=1n?1D′TD′C=\frac{1}{n-1}{D'}^TD'C=n?11?DTD的特征向量,因此二者的特征向量是同一個方向上的不同大小的向量,所以SVD的V就是PCA主成分的方向。

SVD的U矩陣是MMTMM^TMMT的特征向量,U的作用就是SVD里講的,用三個矩陣壓縮存儲原矩陣。奇異值分解中的Σ\SigmaΣ奇異值選擇其實就相當于PCA中的主成分選擇,因此在這兩式子中,特征值矩陣的對角元素個數就代表了保存的維度數量。

此外,奇異值分解相較于PCA,只需知道原矩陣M即可計算出U,V了,不需要計算協方差矩陣,而PCA需要先計算出協方差矩陣才能計算出新矩陣D′D'D,因此相對而言SVD應該更高效。

總結

以上是生活随笔為你收集整理的【AI绘图学习笔记】奇异值分解(SVD)、主成分分析(PCA)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。