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

news2024/11/25 7:22:04

这节的内容需要一些线性代数基础知识,如果你没听懂本文在讲什么,强烈建议你学习【官方双语/合集】线性代数的本质 - 系列合集

文章目录

  • 奇异值分解
    • 线性变换
    • 特征值和特征向量的几何意义
    • 什么是奇异值分解?
    • 公式推导
      • SVD推广到任意大小矩阵
    • 如何求SVD分解
  • 非负矩阵分解(NMF)
  • 主成分分析PCA
    • 我们为什么需要PCA?
    • 来找坐标原点
    • 来找坐标系
    • 怎么理解PCA
    • 什么是协方差矩阵
      • 公式推导
      • 重要思考!
      • 置信椭圆
      • PCA的缺点
    • PCA主成分与SVD的关系


奇异值分解

这段看的视频是【学长小课堂】什么是奇异值分解SVD–SVD如何分解时空矩阵

线性变换

在这里插入图片描述
大多数本科生接触的线性代数可能只是矩阵的运算,如果我们从几何意义上来理解会发现一个崭新的世界。

假设我们给出一个原矩阵D,D的矩阵如上所示,D由四个向量 [ x 1 , y 1 ] T . . . [ x 4 , y 4 ] 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 ] T j=[0,1]^T,i=[1,0]^T j=[0,1]T,i=[1,0]T,如图左所示,实际上任何一个向量我们都可以视作基的运算,如下图。
在这里插入图片描述
在这里插入图片描述
现在我们给出一个矩阵 S = [ 2 0 0 1 ] S=\begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix} S=[2001],然后我们将矩阵SD相乘,如果单纯运算我们当然知道SD的结果。现在让我们再看看新矩阵SD,我们会发现其中的向量 [ 2 x 1 , y 1 ] . . . . [ 2 x 4 , y 4 ] [2x_1,y_1]....[2x_4,y_4] [2x1,y1]....[2x4,y4]在x轴上都变为了原来的两倍。
实际上,矩阵运算AB=C,我们可以解读为:对B矩阵应用了A变换从而得到了新矩阵C
我们将D矩阵简写为 D = [ x y ] D=\begin{bmatrix} x\\ y \end{bmatrix} D=[xy],也就是说 S D = [ 2 0 0 1 ] [ x y ] = x [ 2 0 ] + y [ 0 1 ] 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=[2001][xy]=x[20]+y[01]
因此S变换相当于将x乘以两倍,y乘以一倍,本质上 S S S矩阵对 D D D矩阵的基进行了线性变换 j ∗ 1 → j ^ , i ∗ 2 → i ^ j*1 \to \hat j,i*2 \to \hat i j1j^,i2i^,因此如下图所示,SD会将D横向拉伸两倍。
在这里插入图片描述


在这里插入图片描述
如图我们对矩阵D乘以一个旋转矩阵R,其中 R = [ c o s ( θ ) − s i n ( θ ) s i n ( θ ) c o s ( θ ) ] R=\begin{bmatrix} cos(θ)&-sin(θ) \\ sin(θ) &cos(θ) \end{bmatrix} R=[cos(θ)sin(θ)sin(θ)cos(θ)],其中θ角代表了旋转的角度,当然这个矩阵代表了整体的旋转,你可以想象整个网格以原点为旋转中心旋转。

矩阵的线性变换就包括拉伸和旋转两种,如果一个矩阵(向量)x在应用了变换矩阵A后,原点位置依旧不变,且基向量为直线,坐标上的网格线保持平行,我们就称这种变换为线性变换。

一种更直观的变换方式,就是将基向量移动到变换矩阵对应的坐标,想象整个网格随之运动。

在乘以R矩阵后,RSD相当于在SD的图像上应用了线性旋转得到了新的图像。

特征值和特征向量的几何意义

矩阵乘法核心思想(6):特征向量与特征值的几何意义
先说结论,其实我们刚才已经讲过了。

  • 矩阵乘法即线性变换——对向量进行旋转和长度伸缩,效果与函数相同;
  • 特征向量指向只缩放不旋转的方向;
  • 特征值即缩放因子;
  • 旋转矩阵无实数特征向量和特征值。
    在这里插入图片描述

单个向量的张成空间是一条直线,在大部分时候,线性变换后的向量会偏移原来的张成空间,然而某些时候一些向量仅仅只是将进行了拉伸,因此就被留在了原张成空间中,或者说所有处于这条直线上的向量都仅仅只是被拉伸。我们把这些应用了线性变换后仍然留在原张成空间的向量称为特征向量,其被拉伸的比例因子我们称为特征值,因此,拉伸为三倍的那个直线就是一个属于特征值3的特征向量。

在这里插入图片描述
那么假设我们找到了这个特征向量,然后对一个三维矩阵(我们将其看作一个三维空间)进行了一次旋转,我们知道特征向量经过旋转这种线性变换仍然留在原张成空间上,因此特征向量线性变换前后的位置保持不变,那么我们就可以视为对这个矩阵以特征向量为旋转轴进行了一次旋转。

在这里插入图片描述计算特征值的公式就是 A V ⃗ = λ V ⃗ A\vec V=\lambda \vec V AV =λV ,其中 λ \lambda λ是特征值矩阵,寻找特征向量 V ⃗ \vec V V 就是求解 ( A − λ E ) V ⃗ = 0 (A-\lambda E)\vec V=0 (AλE)V =0,这是一个齐次线性方程组,当 d e t ( A − λ E ) = 0 det(A-\lambda E)=0 det(AλE)=0 ( A − λ E ) (A-\lambda E) (AλE)这个矩阵非满秩的时候存在非零解。

现在让我们重新审视一下 A V ⃗ = λ v ⃗ A\vec V=\lambda \vec v AV =λv 这个式子:

A代表了一个变换矩阵, v ⃗ \vec v v 代表了特征向量,当矩阵*向量=向量,因此 A v ⃗ A\vec v Av 代表了对 v ⃗ \vec v v 的一次线性变换,在SVD中,我们可以将矩阵变换拆解为 A = D R A=DR A=DR,即旋转和拉伸,因此 A v ⃗ A\vec v Av 相当于对向量 v ⃗ \vec v v 进行了旋转加拉伸的线性变换,它的结果 A V ⃗ = λ v ⃗ A\vec V=\lambda \vec v AV =λv ,相当于对原向量拉伸了特征值 λ \lambda λ倍。也就是说,在特征向量上的线性变换A完全可以由 λ \lambda λ所定义!

那么特征值能不能是复数呢?能,这意味着特征向量缩放了一个虚数倍?在笛卡尔坐标系上实在是太难想象了,而且有些超纲了。
在这里插入图片描述
为什么对角矩阵的主元就是特征值?我们可以将基向量视为特征向量,因此主元上的元素就是特征值。

我们能进行SVD分解的基础之一就是特征值的这些特性,实际上SVD公式 M = U Σ V T M=U\Sigma V^T M=UΣVT中的U,V都代表旋转变换,只有 Σ \Sigma Σ代表了缩放,而在后面我们也会知道,原来 M M T MM^T MMT的特征值 L = Σ 2 L=\Sigma^2 L=Σ2,如果我们对一个非奇异矩阵进行了SVD分解,所得到的奇异值其实就是特征值,因此和我们现在所说的特征值代表缩放因子这一结论是一致的


什么是奇异值分解?

在这里插入图片描述
左图中的M是一个线性变换矩阵,想要从一个单位圆达到M这个效果,你可以想象一下,我们就是把这个圆拉长并且旋转。我们可以把整个操作分解为拉伸+旋转。在奇异值分解中,则是分解为了旋转 V T V^T VT+拉伸 Σ \Sigma Σ+旋转 U U U,奇异值分解的公式则是 M = U Σ V T M=U\Sigma V^T M=UΣVT

在这里插入图片描述


公式推导

在这里插入图片描述
如图,V是原始域的标准正交基(即基为单位长度且正交),我们对其应用线性变换M得到了新的矩阵 U Σ U\Sigma UΣ U = [ u 1 → , u 2 → ] U=[\overrightarrow{u_1},\overrightarrow{u_2}] U=[u1 ,u2 ]也是标准正交基(其基为原始域单位长度且正交),但是我们发现经过线性变换M的新矩阵U,它的基的长度实际上已经不是单位长度了(原始域的单位长度),相当于在U的基上进行了拉伸,我们用 Σ \Sigma Σ表示这个拉伸矩阵,拉伸幅度用奇异值 σ \sigma σ表示。

因此我们可以得到 M V = U Σ MV=U\Sigma MV=UΣ,其中由于V是正交矩阵,因此 V T = V − 1 V^T=V^{-1} VT=V1
M = U Σ V − 1 = U Σ V T M=U\Sigma V^{-1}=U\Sigma V^T M=UΣV1=UΣVT

SVD推广到任意大小矩阵

在这里插入图片描述
对于任意大小矩阵可化为m×n=(m×m)(m×n)(n×n)

在上图中举出的这个例子中,我们发现 Σ \Sigma Σ矩阵中的最后一行是没有信息的,因此这一行可以忽略(在此例子中m=n+1),我们可以少计算一行,将其看作一个(m-1)*n的矩阵,那么 U U U矩阵的最后一列也可以消去,因此可以得到一个更简单矩阵计算:

在这里插入图片描述
在这里我们稍微提一下后面要讲的主成分分析:其实就是选择主要元素,丢弃非主要元素从而实现信息压缩。
在这里插入图片描述现在让我们给 Σ \Sigma Σ选择r个主成分,得到新的压缩过的三个矩阵

在这里插入图片描述
我们按照 Σ \Sigma Σ中奇异值的个数进行模式拆分,由于压缩矩阵是(m×r)(r×r)(r×n),所以我们分别把 U U U拆成 r r r列, Σ \Sigma Σ拆成 r r r个奇异值, V T V^T VT拆成 r r r行,依次组合成三个模式(pattern)

在这里插入图片描述在这里插入图片描述

U , V T U,V^T U,VT拆出的成分相乘,得到一个新的矩阵,再分别乘以奇异值,最后将三个矩阵叠加在一起,就得到了原始矩阵M(由于选择了主成分,因此存在信息丢失)
在这里插入图片描述
我们再将其拆解出来,就是 基向量 u ∗ 基向量 v ∗ 奇异值 σ 基向量u*基向量v*奇异值\sigma 基向量u基向量v奇异值σ,因为奇异值有三个,所以我们拆分出了三种模式,我们可以给不同的模式定义不同的信息
在这里插入图片描述
虽然三种模式的保存的信息形式都是时间,空间和大小,但是三种模式保存的时间,空间的分布都是不同的。


如何求SVD分解

M = U Σ V T M T M = ( U Σ V T ) T U Σ V T M T M = V Σ U T U Σ V T ( Σ 对称 ) M T M = V Σ Σ V T M=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^T M=UΣVTMTM=(UΣVT)TUΣVTMTM=VΣUTUΣVT(Σ对称)MTM=VΣΣVT

我们令 L = Σ Σ L=\Sigma\Sigma L=ΣΣ,我们设 M T M M^TM MTM的特征值为 λ \lambda λ,那么就有 M T M v → = λ v → M^TM\overrightarrow{v}=\lambda\overrightarrow{v} MTMv =λv
在这里插入图片描述
将上式子乘以 V − 1 V^{-1} V1,我们得到
在这里插入图片描述
因此我们得到:
M T M = V L V T M T M V = V L = L V M M T U = U L = L U ( V 和 U 都是向量 , 所以能交换位置 ) M^TM=VLV^T\\ M^TMV=VL=LV\\ MM^TU=UL=LU(V和U都是向量,所以能交换位置) MTM=VLVTMTMV=VL=LVMMTU=UL=LU(VU都是向量,所以能交换位置)
所以V是 M T M M^TM MTM的特征向量,U是 M M T MM^T MMT的特征向量,因此 Σ \Sigma Σ是矩阵 M T M 和 M M T M^TM和MM^T MTMMMT的特征值 L = Σ 2 L=\Sigma^2 L=Σ2开方构成的对角阵,因此只需知道M,我们就可以进行SVD分解
在这里插入图片描述


非负矩阵分解(NMF)

在这里插入图片描述视频中只简单的提了一嘴,简单来说非负矩阵分解类似于SVD,将 M M M分解为 S B SB SB,这两个矩阵中的每个向量,每个元素都是非负的,然后将S的每一列*B的每一行,得到右下角三个秩为1的矩阵并相加,最终结果近似于原始矩阵M,假设S列代表空间,B行代表时间,当时间空间为正值的时候我们比较方便讨论其物理意义。由于缺失了奇异值 σ \sigma σ,所以我们不太好判断哪种模式主要,所以可能我们需要求出矩阵范数来判断每种模式的大小。


主成分分析PCA

我们为什么需要PCA?

在这里插入图片描述

我们来看看一个特殊的例子,如果在二维坐标上保存了这些样本,我们发现实际上它们几乎处于同一条直线,现在我们建立一个新的坐标系,那么如果以新坐标系为原点,就会发现所有的样本基本分布在一维数轴上,也就是说,如果我们使用新的坐标系来保存样本数据,那么我们只需要一维的矩阵就能保存所有信息,这样我们就实现了数据的降维,并且保证了较少的信息损失。
在这里插入图片描述

因此,PCA的本质就是重构一个新的坐标系,使得我们在进行数据降维的时候,尽可能多地保存信息,使得信息损失较少。


来找坐标原点

让我们来看一个例子:

在这里插入图片描述
假设我们有6只小鼠,每只测定了两种基因。(其中小鼠意味着个体样本,基因代表每个样本测量的变量)

在这里插入图片描述假设我们只有一个变量,那么我们可以将数据放在一维数轴上,123处于较高位,456处于较低位,不难发现123是相似的,456是相似的。而这两堆之间的相似性不强。
在这里插入图片描述
如果有两个变量,拓展到二维坐标上也是同理的。甚至于三维。

但是如果拓展到四维,那我们就没法通过四维图像来判断这些样本的近似度了。

在这里插入图片描述如果我们分别计算样本在变量1和变量2上的平均测度(图中红X),我们可以用这个平均值坐标代表数据的中心,我们将这一步称为"去中心化"。确定数据的中心,是为了将其作为坐标原点。


来找坐标系

在这里插入图片描述现在我们将中心移动到了原点,让我们找到一条直线来拟合这些数据

在这里插入图片描述怎么寻找最佳拟合直线应该不用我们多说了,最小二乘法。
在这里插入图片描述现在让我们以一个样本为例,用点到直线的距离和原点构造出三角形,根据勾股定理,a固定,b越短,c越长,b和c是负相关的。也就是说最小二乘法使得所有点到直线的距离 b i b_i bi之和最小,如果我们换个角度,那么 c i c_i ci之和将会达到最大
在这里插入图片描述因此,我们在PCA中可以通过计算点的投影到原点的距离 d i d_i di来判断是否找到了最佳拟合直线。需要注意的是,和线性回归不同,由于PCA的坐标存在着正负,因此得到的距离 d i d_i di也有可能是负数,为了避免负数,因此我们要对其进行平方和计算,其实距离 d i d_i di意味着方差。
在这里插入图片描述
我们将距离平方和称为SS,接下来为了找到这个最佳直线,我们开始旋转,最终找到了这条线,此时的SS是最大的。

我们把现在找到的这条最佳拟合直线称为主成分1(或PC1,Principal Component),假设它的斜率是0.25,也就是 1 4 \frac{1}{4} 41,意味着我们每往横轴前进四个单位,在纵轴上会上升一个单位。
在这里插入图片描述
也就是说对于每个数据而言,因为它们的分布是近似于这条直线的,因此每个样本在横轴Gene1的方向上扩散更宽,而在纵轴Gene2的方向上的扩散就相对较小。(就像上图第一象限的样本,它们更偏向右边而不是上面,第三象限的样本更偏向左边而非下面)

我们也可以将PC1这条直线,视为Gene1和Gene2两个变量的线性组合

在这里插入图片描述
根据勾股定理,我们想要得到单位长度1的PC1,那么我们就需要 4 4.12 \frac{4}{4.12} 4.124的Gene1和 1 4.12 \frac{1}{4.12} 4.121的Gene2,我们将这个单位长度向量称为PC1的奇异向量或特征向量,我们将每种变量Gene的比例称为载荷得分(Loading Scores),SS就是PC1的特征值 L = Σ Σ L=\Sigma\Sigma L=ΣΣ,因此 S S \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分解后,我们知道可以通过线性变换将 D D D转化为 D ′ D' D这个矩阵,其中 S S S代表我们往方差最大的方向进行拉伸,而 R R R则是旋转方向最大的方向的角度,因此我们解决PCA问题可以转化为找到这个旋转矩阵 R R R
在这里插入图片描述
同样的,我们也可以通过逆运算,从手上的数据 D ′ D' D来计算白数据 D D D,值得一提的是,由于 R R R是一个旋转矩阵,因此基一定是正交的,也就意味着它是一个正交矩阵,因此 R − 1 = R T R^{-1}=R^T R1=RT,而 S S S矩阵是对角矩阵,因此其逆矩阵相当于对角元素的倒数。

什么是协方差矩阵

因此,想要解决PCA问题,我们需要找到旋转矩阵 R R R,那么怎么找到它呢?我们需要协方差矩阵的帮助
在这里插入图片描述
在刚才从几何上理解PCA的过程,我们知道寻找到PC1的条件是要使得方差最大,但是如果运用到计算中,我们的方差公式 σ ( x ) 或者 σ ( y ) \sigma(x)或者\sigma(y) σ(x)或者σ(y)只能表示数据在x轴方向上或者y轴方向上的方差,而你可以翻回上面的图看看,我们寻找PC1的时候需要的是对角方向(斜线)上的方差,因此我们需要引入一个新的概念:协方差

协方差,我们用 c o v ( x , y ) cov(x,y) cov(x,y)来表示,它代表的是两个变量在变化过程中是同方向变化还是反方向变化?其同向或反向程度如何?它代表了数据在x和y上的相关程度,也就是斜线方向上传播的相关关系。
其中当协方差 c o v ( x , y ) > 0 cov(x,y)>0 cov(x,y)>0代表x和y在同方向上相关,反之 c o v ( x , y ) < 0 cov(x,y)<0 cov(x,y)<0代表反方向相关,且协方差的绝对值越大代表了方向上的相关程度(变化比例)越大。

协方差公式: c o v ( x , y ) = ∑ i = 1 n ( x i − x ‾ ) ( y i − y ‾ ) n − 1 cov(x,y)=\frac{\sum^n_{i=1}(x_i-\overline x)(y_i-\overline y)}{n-1} cov(x,y)=n1i=1n(xix)(yiy)

其中 x ‾ , y ‾ \overline x,\overline y x,y代表了各个样本的x和y在数轴上的均值,由于我们已经完成了去中心化,因此坐标原点处于样本中心,所以 x ‾ = 0 , y ‾ = 0 \overline x=0,\overline y=0 x=0,y=0,因此协方差化简为 c o v ( x , y ) = ∑ i = 1 n ( x i ) ( y i ) n − 1 cov(x,y)=\frac{\sum^n_{i=1}(x_i)(y_i)}{n-1} cov(x,y)=n1i=1n(xi)(yi),如果我们求x与x 的协方差,其结果就是x的方差

在这里插入图片描述
协方差矩阵就是由协方差构成的矩阵,其中对角线元素是方差,n阶矩阵代表了n维坐标。初始的白数据我们说过,由于满足标准正态分布,所以协方差是0,方差是1,因此协方差矩阵 C = [ 1 0 0 1 ] C=\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} C=[1001]

协方差在我们进行矩阵的线性变换的时候是怎么变动的呢?你可以想象一下,由于协方差矩阵 C = [ c o v ( x , x ) c o v ( x , y ) c o v ( x , y ) c o v ( 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相关的协方差 c o v ( x , x ) , c o v ( x , y ) cov(x,x),cov(x,y) cov(x,x),cov(x,y)会发生变化,而 c o v ( y , y ) cov(y,y) cov(y,y)不会,因此想象一下整体数据往x轴两边扩张,y不变,因此x和x,x和y的相关性都会变大,意味着协方差的正负号不变,绝对值增大。反之若是向x轴内收缩,则协方差正负号不变,绝对值缩小。

当数据整体进行旋转的时候,我们以当前xy方向作为对比,想象一下当整体旋转九十度,那么原来的x坐标指向y坐标,而y坐标指向了x坐标的反向,因此方差 c o v ( x , x ) , c o v ( y , y ) cov(x,x),cov(y,y) cov(x,x),cov(y,y)相关程度不变,协方差 c o v ( x , y ) cov(x,y) cov(x,y)符号会产生正负变化,相当于每旋转90度, c o v ( x , y ) ∗ − 1 cov(x,y)*-1 cov(x,y)1。形状上来看如果形状类似“/”那协方差 c o v ( x , y ) > 0 cov(x,y)>0 cov(x,y)>0,反之形状类似""则协方差 c o v ( x , y ) < 0 cov(x,y)<0 cov(x,y)<0

详见协方差矩阵的几何解释

公式推导

在这里插入图片描述

还是要提一下,上式的矩阵D其实就是SVD里的矩阵M,让我们详解一下协方差矩阵的求法:
C = [ c o v ( x , x ) c o v ( x , y ) c o v ( x , y ) c o v ( y , y ) ] = [ ∑ i = 1 n x i 2 n − 1 ∑ i = 1 n x i y i n − 1 ∑ i = 1 n x i y i n − 1 ∑ i = 1 n y i 2 n − 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)]=[n1i=1nxi2n1i=1nxiyin1i=1nxiyin1i=1nyi2]
这个矩阵相乘结果可以提取 1 n − 1 \frac{1}{n-1} n11最终化为协方差矩阵 C = 1 n − 1 D D T C=\frac{1}{n-1}DD^T C=n11DDT的矩阵与其转置的乘积形式

在这里插入图片描述
让我们将 C ′ = 1 n − 1 D ′ D T C'=\frac {1}{n-1}D'D^T C=n11DDT这个式子拆开
= 1 n − 1 R S D ( R S D ) T = 1 n − 1 R S D D T S T R T = R S ( 1 n − 1 D D T ) S T R T =\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 =n11RSD(RSD)T=n11RSDDTSTRT=RS(n11DDT)STRT
因为我们知道白数据的方差是0,协方差是1,所以白数据的协方差矩阵 C = 1 n − 1 D D T = [ 1 0 0 1 ] C=\frac{1}{n-1}DD^T=\begin{bmatrix} 1 & 0 \\ 0& 1 \end{bmatrix} C=n11DDT=[1001],因此白数据的协方差矩阵是单位矩阵,所以原式子:
= R S S T R T =RSS^TR^T =RSSTRT
而我们之前说了,拉伸矩阵 S S S是一个对角矩阵,所以 S = S T S=S^T S=ST,旋转矩阵 R R R是一个正交矩阵,因此 R T = R − 1 R^T=R^{-1} RT=R1

原式 = R L R − 1 原式=RLR^{-1} 原式=RLR1

因此我们得出 D ′ D' D的协方差矩阵 C ′ = R L R − 1 C'=RLR^{-1} C=RLR1,其中 L = S S T = [ a 2 0 0 b 2 ] L=SS^T=\begin{bmatrix} a^2 & 0 \\ 0& b^2 \end{bmatrix} L=SST=[a200b2]

那么其实到这里我们就已经很熟悉了,这个协方差矩阵和我们在SVD中学到的 M = U Σ V T M=U\Sigma V^T M=UΣVT的形式已经完全一致了,实际上两者本质上可以说就是同一个式子,

在这里插入图片描述
假设 C ′ C' C的特征值是 λ \lambda λ,我们来对其进行变形,由于是二维矩阵,所以有两个特征值,我们把特征值 v 1 v 2 v_1v_2 v1v2看作矩阵R, λ \lambda λ看作矩阵L,得到如上图所示的矩阵变换。
在这里插入图片描述
因此变换后的协方差矩阵 C ′ = R L R − 1 C'=RLR^{-1} C=RLR1就相当于 C ′ = 特征向量 ∗ 特征值矩阵 ∗ 特征向量的转置 C'=特征向量*特征值矩阵*特征向量的转置 C=特征向量特征值矩阵特征向量的转置
由于协方差代表了两个坐标的相关度,就相当于我们要求的线性变换后的矩阵 D ′ D' D其PCA的横轴PC1为第一列特征向量 v ⃗ 1 \vec v_1 v 1,而纵轴PC2就为 v ⃗ 2 \vec v_2 v 2,而L这个特征值矩阵代表了在白数据的xy方向上进行拉伸的倍数 a , b a,b a,b的平方, λ 1 = a 2 , λ 2 = b 2 \lambda_1=a^2,\lambda_2=b^2 λ1=a2,λ2=b2。为什么会这样呢?

重要思考!

协方差和方差存在着什么关系?这一点我们需要特别指出,我们之前说过协方差代表了数据在斜线上的传播关系,而方差代表了数据在x轴或者y轴上的传播关系。也就是说,方差和协方差是负相关的,当数据在斜线上的传播相关越大,则在横轴纵轴上的传播相关越小,也就是说,当协方差达到最大的时候,x和y的方差=0!同理当方差达到最大的时候,协方差=0。

让我们思考一个问题:方差在什么时候能够达到最大?

当然是协方差=0的时候,此时数据在斜方向上不相关,但是我们能不能直接确定一个最大方差?

或者我们换一个提问,能不能存在一个协方差矩阵,使得数据仅仅在轴方向上变换?

或者有没有一个矩阵,能使得线性变换相当于向量的拉伸?

魔法解开了,答案是特征向量!当数轴是特征向量,应用的矩阵相当于特征值的时候, A v ⃗ = λ v ⃗ A\vec v=\lambda \vec v Av =λv ,能够满足我们的条件!因此方差在什么时候能取到最大?也就是方差= λ \lambda λ,协方差=0的时候!

现在再让我们看看这个公式
在这里插入图片描述
现在我们理解了,此时白数据的x轴就是 v ⃗ 1 \vec v_1 v 1,y轴就是 v ⃗ 2 \vec v_2 v 2,那么要使得方差最大,所以特征矩阵就是 L = S S T = [ a 2 0 0 b 2 ] L=SS^T=\begin{bmatrix} a^2 & 0 \\ 0& b^2 \end{bmatrix} L=SST=[a200b2]

在这里插入图片描述

C ′ C' C D ′ D' D的协方差, L L L D ′ D' D中用红蓝线画出的新坐标系下的协方差,我们对 D ′ D' D应用一下 R − 1 R^{-1} R1将其旋转回去,这样坐标就回归到了白数据的坐标(后两张图的红蓝坐标轴是将原点重新换到新坐标后的图片,后两张的红蓝坐标相当于新建的标准笛卡尔坐标系,与第一张图的红蓝轴不是同一个东西,由于网格没有对应发生变换所以可能看的有点迷糊),方差就代表了在白数据轴方向的拉伸倍数 λ \lambda λ,实际上此处的方差方向才是第一张图上的红蓝轴方向。
在这里插入图片描述
因此,PCA的方法实际上是将变换后的特征向量作为PC轴的方法,其方差最大的时候也就是对应协方差矩阵 C = R L R − 1 C=RLR^{-1} C=RLR1,相当于把特征方向旋转到标准坐标系上再应用 L L L的特征值变换。

在这里插入图片描述

此外,三维降二维的PCA和我们刚才讲的类似,只不过我们要寻找的不止PC1,三维降二维是想让数据投影到我们寻找到的平面,所以我们寻找到方差最大的轴PC1之后,还需要寻找到过原点垂直于PC1且方差最大的PC2。在找到这两个轴后,PC3是一条过原点且同时垂直于PC1和PC2的轴,因此是唯一确定的。

置信椭圆

在这里插入图片描述

置信椭圆就是我们之前提到的置信域,它代表了一个搜索的区间范围。

在白噪声上的置信域是一个圆形,当我们对D进行了线性变换后,置信域被拉伸成了一个椭圆,由于是整体进行了变换,因此无论是变换前还是变换后,置信椭圆内包含的点的比例依旧是不变的,也就是若D中的s包含了95%的点,D’中的s依旧包含95%的点。置信椭圆的大小由s决定,可以查表得。

PCA的缺点

在这里插入图片描述

PCA相较于其他降维算法,的一个缺点就是离群点对于整体的影响较大,


PCA主成分与SVD的关系

在这里插入图片描述

我们知道V是 M T M M^TM MTM的特征向量,而PCA主成分的方向是协方差矩阵 C = 1 n − 1 D ′ T D ′ C=\frac{1}{n-1}{D'}^TD' C=n11DTD的特征向量,因此二者的特征向量是同一个方向上的不同大小的向量,所以SVD的V就是PCA主成分的方向。

SVD的U矩阵是 M M T MM^T MMT的特征向量,U的作用就是SVD里讲的,用三个矩阵压缩存储原矩阵。奇异值分解中的 Σ \Sigma Σ奇异值选择其实就相当于PCA中的主成分选择,因此在这两式子中,特征值矩阵的对角元素个数就代表了保存的维度数量。

此外,奇异值分解相较于PCA,只需知道原矩阵M即可计算出U,V了,不需要计算协方差矩阵,而PCA需要先计算出协方差矩阵才能计算出新矩阵 D ′ D' D,因此相对而言SVD应该更高效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/401727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++的OpenCV】第十二课-OpenCV图像常用操作(九):找到图像的边界(轮廓)findContours()和drawContours()

&#x1f389;&#x1f389;&#x1f389;欢迎各位来到小白piao的学习空间&#xff01;\color{red}{欢迎各位来到小白piao的学习空间&#xff01;}欢迎各位来到小白piao的学习空间&#xff01;&#x1f389;&#x1f389;&#x1f389; &#x1f496;&#x1f496;&#x1f496…

PMP项目管理项目整合管理

目录1 项目整合管理概述2 制定项目章程3 制定项目管理计划4 指导与管理项目工作5 管理项目知识6 监控项目工作7 实施整体变更控制8 结束项目或阶段1 项目整合管理概述 项目整合管理包括对隶属于项目管理过程组的各种过程和项目管理活动进行识别、定义、组合、统一和协调的各个…

Linux服务器还有漏洞?建议使用 OpenVAS 日常检查!

几乎每天都会有新的系统漏洞产生&#xff0c;系统管理员经常忙于管理服务器&#xff0c;有时候会忽略一些很明显的安全问题。扫描 Linux 服务器以查找安全问题并不是很简单的事情&#xff0c;所以有时候需要借助于一些专门的工具。 OpenVAS 就是这样一种开源工具&#xff0c;它…

Easy Deep Learning——池化层

池化是什么&#xff1f;它有什么作用&#xff1f; 还是草地的场景&#xff0c;把草地分成一块块的网格&#xff0c;数量还是太多了&#xff0c;如何继续简化输入数据呢? 这时候可以只取一块网格中所有的小草的大小形状的平均值或者最大值作为一个输入数据&#xff0c;这样就大…

Tik Tok新手秘籍,做好五点可轻松起号

新手做TikTok需要有一个具体的规划布局&#xff0c;如果没有深思熟虑就上手开始的话&#xff0c;很有可能会导致功亏一篑&#xff0c;甚至是浪费时间。因此&#xff0c;想要做好 TikTok&#xff0c;就必须从最基本的运营细节开始&#xff0c;一步一步来&#xff0c;下面为大家分…

近红外荧光染料修饰氨基IR 825 NH2,IR 825-Amine,IR-825 NH2

IR 825 NH2&#xff0c;IR 825-NH2&#xff0c;IR825 Amine&#xff0c;IR825-Amine&#xff0c;新吲哚菁绿-氨基&#xff0c;荧光染料修饰氨基产品规格&#xff1a;1.CAS号&#xff1a;N/A2.包装规格&#xff1a;10mg&#xff0c;25mg&#xff0c;50mg&#xff0c;包装灵活&am…

数据结构(3)— 线性表之顺序存储详解介绍(含代码)

&#xff08;1&#xff09;博客代码在数据结构代码---GitHub仓库&#xff1b;线性表介绍线性表的基础概念&#xff08;1&#xff09;甲骨文表示&#xff1a;线性表是零个或多个数据元素的有限序列。&#xff08;2&#xff09;线性表&#xff0c;顾名思义&#xff0c;就是说这个…

git | git 2023 详细版

文章目录一、Git命令1.2 设计用户签名1.3 初始化本地库1.4 查看本地库状态1.5 添加至暂存区1.6 从暂存区删除1.7 将暂存区的文件提交到本地库1.8 查看版本信息二、Git分支2.1 查看分支2.2 创建分支2.3 切换分支2.4 合并分支三、GitHub3.1 代码克隆clone3.2 给库取别名3.3 推送本…

【服务器管理】Wordpress服务器内存占用太高(优化方案详解)

简述 在刚刚配置完服务器之后&#xff0c;想着试一试wordpress这个功能&#xff0c;结果打开服务器后台&#xff0c;发现本来就不多的内存被占用了一大半。 我真的服了&#xff0c;我还啥都没干呢&#xff0c;就这么多的内存占用&#xff0c;那之后我开始弄了还得了。因此有必…

masstransit的message几个高级用法

1&#xff09;问题&#xff0c;Class MessageA 基类&#xff0c;Class MessageB继承自MessageA&#xff1b; 用bus.Publish方法本想把有些消息只发给B队列&#xff0c;结果由于其继承关系A队列也获得了消息&#xff1b; 解决方法用send&#xff0c; Uri uri new Uri(RabbitM…

专项攻克——二叉树

文章目录一、二叉树定义、分类二、二叉树的存储结构三、创建二叉树四、遍历方式一、二叉树定义、分类 二叉树&#xff1a;是N个结点的有序集合&#xff0c;该集合或者为空集&#xff0c;或者由一个根节点跟两棵互不相交的、分别称为根节点的左子树或者右子树的二叉树组成。每个…

vue项目打包Gzip压缩,IIS发布

什么是gzip、有何用&#xff1f; gzip是GNUzip的缩写&#xff0c;最早用于UNIX系统的文件压缩。HTTP协议上的gzip编码是一种用来改进web应用程序性能的技术&#xff0c;web服务器和客户端&#xff08;浏览器&#xff09;必须共同支持gzip。目前主流的浏览器&#xff0c;Chrome…

18 个重要的 JavaScript 字符串方法

1. trim()它删除了两侧的空白。ECMAScript 2019 中还包含 trimStart() 和 trimStart() 方法。它们与 trim() 相同&#xff0c;但 trimStart() 和 trimEnd() 分别从字符串的开头和结尾删除空格。2. match()match() 方法返回匹配字符串的数组。3. split()split() 方法将字符串转换…

5大GPU厂商共建 | openKylin社区GPU SIG首次例会召开!

3月8日&#xff0c;openKylin社区GPU SIG首次例会以线上形式召开。此次会议由长沙景美集成电路设计有限公司、摩尔线程智能科技&#xff08;北京&#xff09;有限责任公司、格兰菲智能科技有限公司、象帝先计算技术&#xff08;重庆&#xff09;有限公司等GPU厂商的多位SIG Mai…

JavaScript 中的全部对象

宿主对象&#xff08;host Objects&#xff09;&#xff1a;由 JavaScript 宿主环境提供的对象&#xff0c;它们的行为完全由宿主环境决定。 【 浏览器环境宿主&#xff0c;全局对象window&#xff0c;window 上又有很多属性&#xff0c;如 document。 全局对象 window 上的属…

ROS1学习笔记:tf坐标系广播与监听的编程实现(ubuntu20.04)

参考B站古月居ROS入门21讲&#xff1a;tf坐标系广播与监听的编程实现 基于VMware Ubuntu 20.04 Noetic版本的环境 文章目录一、创建功能包二、创建代码2.1 以C为例2.1.1 配置代码编译规则2.1.2 编译整个工作空间2.1.2 配置环境变量2.1.4 执行代码2.2 以Python为例2.2.1 配置代码…

SD卡通信协议那些事

SD卡通信 SD卡通信协议主要包括物理层、数据传输层和应用层三个部分。 物理层&#xff1a;SD卡使用SPI或SDIO两种物理层协议进行通信。SPI是一种同步串行通信协议&#xff0c;使用4根信号线进行通信&#xff1b;SDIO是一种异步串行通信协议&#xff0c;使用9根信号线进行通信…

[ROC-RK3568-PC] [Firefly-Android] 10min带你了解I2C的使用

&#x1f347; 博主主页&#xff1a; 【Systemcall小酒屋】&#x1f347; 博主追寻&#xff1a;热衷于用简单的案例讲述复杂的技术&#xff0c;“假传万卷书&#xff0c;真传一案例”&#xff0c;这是林群院士说过的一句话&#xff0c;另外“成就是最好的老师”&#xff0c;技术…

做了个springboot接口参数解密的工具,我给它命名为万能钥匙(已上传maven中央仓库,附详细使用说明)

前言&#xff1a;之前工作中做过两个功能&#xff0c;就是之前写的这两篇博客&#xff0c;最近几天有个想法&#xff0c;给它做成一个springboot的start启动器&#xff0c;直接引入依赖&#xff0c;写好配置就能用了 springboot使用自定义注解实现接口参数解密&#xff0c;普通…

什么是UEFI签名认证?UEFI签名有什么好处?

为了防御恶意软件攻击&#xff0c;目前市面上所有电脑设备启动时默认开启安全启动(Secure Boot)模式。安全启动(Secure Boot)是UEFI扩展协议定义的安全标准&#xff0c;可以确保设备只使用OEM厂商信任的软件启动。UEFI签名认证就是对运行在 UEFI 系统下的 efi 驱动和通过 UEFI …