【现代信号处理】 12 - 深入探讨奇异值分解

深入探讨奇异值分解

1. PCA、KL展开与SVD

1.1 PCA公式证明

  我们考虑一个随机矢量,其中zk是一个随机变量

Z = ( z 1 , . . . , z n ) T Z = (z_1,...,z_n)^T Z=(z1,...,zn)T

  我们假定Z符合高斯分布

Z ∼ N ( μ , Σ ) Z \sim N(\mu,\Sigma) ZN(μ,Σ)

  我们想对Z进行PCA,我们假设Z是个无偏的估计

E ( Z ) = 0 V a r ( Z ) = E ∣ Z ∣ 2 E(Z) = 0 \\ Var(Z) = E |Z|^2 E(Z)=0Var(Z)=EZ2

  我们想对Z进行分析,找到他能量分布最大的方向α,同时我们假设方向向量α是个单位向量,要找到Z能量分布最大的方向,也就是Z在α上投影最大。

α ∈ R n E ∣ P r o j α Z ∣ 2 ⇒ m a x E ∣ P r o j α Z ∣ 2 , s . t . ∣ ∣ α ∣ ∣ = 1 \alpha \in R^n \\ E|Proj_\alpha Z|^2 \Rightarrow maxE|Proj_\alpha Z|^2,s.t. ||\alpha|| = 1 αRnEProjαZ2maxEProjαZ2,s.t.α=1

  根据投影公式

P r o j α Z = α ( α T α ) − 1 α T Z ∣ ∣ P r o j α Z ∣ ∣ 2 = Z T α ( α T α ) − 1 α T ∗ α ( α T α ) − 1 α T Z = Z T α ∗ α T Z Proj_\alpha Z = \alpha (\alpha^T \alpha)^{-1} \alpha^T Z \\ ||Proj_\alpha Z||^2 = Z^T \alpha (\alpha^T \alpha)^{-1} \alpha^T *\alpha (\alpha^T \alpha)^{-1} \alpha^T Z\\ =Z^T \alpha* \alpha^T Z ProjαZ=α(αTα)1αTZProjαZ2=ZTα(αTα)1αTα(αTα)1αTZ=ZTααTZ

  所以目标函数变成

E ∣ P r o j α Z ∣ 2 ⇒ m a x E ∣ P r o j α Z ∣ 2 , s . t . ∣ ∣ α ∣ ∣ = 1 ⇒ m a x α E ∣ α T Z ∣ 2 , s . t . ∣ ∣ α ∣ ∣ = 1 E|Proj_\alpha Z|^2 \Rightarrow maxE|Proj_\alpha Z|^2,s.t. ||\alpha|| = 1 \\ \Rightarrow max_{\alpha}E|\alpha^TZ|^2,s.t. ||\alpha||=1 EProjαZ2maxEProjαZ2,s.t.α=1maxαEαTZ2,s.t.α=1

  用拉格朗日数乘法解条件极值问题

g ( α , λ ) = E ( α T Z ) ( Z T α ) − λ ( α T α − 1 ) = α T R Z α − λ ( α T α − 1 ) ∇ α g ( α , λ ) = 2 R Z α − 2 λ α = 0 R Z α = λ α g(\alpha,\lambda) = E(\alpha^TZ)(Z^T \alpha) - \lambda(\alpha^T \alpha-1) = \alpha^T R_Z \alpha - \lambda(\alpha^T \alpha-1)\\ \nabla_\alpha g(\alpha,\lambda) = 2R_Z\alpha - 2\lambda \alpha = 0 \\ R_Z \alpha = \lambda \alpha g(α,λ)=E(αTZ)(ZTα)λ(αTα1)=αTRZαλ(αTα1)αg(α,λ)=2RZα2λα=0RZα=λα

  其中

R Z = E ( Z ∗ Z T ) R_Z = E(Z*Z^T) RZ=E(ZZT)

  说明得到的方向是Z的相关矩阵的特征向量。

  而我们希望获得最大化的能量分散,也就是要获得最大的特征值

m a x α T R Z α = m a x λ ⇒ m a x α 1 T R Z α 1 = m a x λ 1 max \alpha^T R_Z \alpha = max \lambda \\ \Rightarrow max \alpha_1^T R_Z \alpha_1 = max \lambda_1 maxαTRZα=maxλmaxα1TRZα1=maxλ1

  因此我们找到的第一个主成分,就是最大的那个特征值。我们希望继续找能量分散最大的方向,其实也就是要到α的正交补空间中继续寻找,因此如果继续求条件极值的话,目标函数应该是这样的

m a x α n E ∣ α n T Z ∣ 2 s . t . ∣ ∣ α n ∣ ∣ = 1 s . t . α 1 T α n = 0 max_{\alpha_n}E|\alpha_n^TZ|^2 \\ s.t. \quad ||\alpha_n||=1 \\ \quad s.t. \quad \alpha_1^T \alpha_n = 0 maxαnEαnTZ2s.t.αn=1s.t.α1Tαn=0

  这样子找下去,其实获得的就是次小的特征值。然后依次类推,最后可以得到一组标准正交基。

  我们能得到这样的式子

R Z = ∑ k = 1 n λ k α k α k T λ 1 ≥ λ 2 ≥ . . . ≥ λ n α 1 , α 2 , . . . , α n R_Z = \sum_{k=1}^{n} \lambda_k \alpha_k \alpha_k^T \\ \lambda_1 \geq \lambda_2 \geq...\geq \lambda_n \\ \alpha_1,\alpha_2,...,\alpha_n RZ=k=1nλkαkαkTλ1λ2...λnα1,α2,...,αn

1.2 Karhunen-Loeve展开

  既然我们通过PCA之后,能够得到一组标准正交基,那么Z一定能够被分解为这一组标准正交基的线性组合

Z = k 1 α 1 + k 2 α 2 + . . . + k n α n k i = α i T Z Z = k_1 \alpha_1 +k_2 \alpha_2 + ... + k_n \alpha_n \quad\quad k_i = \alpha_i^TZ Z=k1α1+k2α2+...+knαnki=αiTZ

  这个式子叫做 Karhunen-Loeve展开,而且这个展开非常有趣的地方在于,除了基向量是正交的以外,系数是个随机变量,并且任意两个随机变量也是正交的

E ( k i k j ) = E ( α i T Z ∗ Z T α j ) = α i T R Z α j = ( α i T α j ) λ j = 0 E(k_i k_j) = E(\alpha_i^T Z*Z^T \alpha_j) \\ = \alpha_i^T R_Z\alpha_j = (\alpha_i^T \alpha_j) \lambda_j = 0 E(kikj)=E(αiTZZTαj)=αiTRZαj=(αiTαj)λj=0

  因此这个式子具有双正交性。主成分分析的展开具有双正交性,特征向量是正交的,同时特征向量前面的系数是随机变量,也是正交的。得到的这个展开式叫做Karhunen-Loeve展开,基在欧式空间是正交的,系数在随机变量的空间里,也是正交的。因此Karhunen-Loeve和PCA本质上是一样的

1.3 基于SVD提高PCA计算精度

  SVD可以用来提高PCA计算的精度,主要表现在,一方面能够降低运算量,并且提高计算精度;另外一方面也可以做性能很好的降噪处理。

1.3.1 优化数值计算稳定性

  我们假设我们有N的采样数据,每个数据是n维度的

X 1 , . . . . , X N , X N ∈ R n X_1,....,X_N,X_N \in R^n X1,....,XN,XNRn

  我们想通过采样数据估计一个相关阵

R ^ Z = 1 N ∑ k = 1 N X k ∗ X k T \hat R_Z = \frac{1}{N} \sum_{k=1}^N X_k*X_k^T R^Z=N1k=1NXkXkT

  因为我们也不知道具体样本均值是多少,就只能进行替代计算。用一行乘以一列得到一个矩阵,然后把这些秩一矩阵加在一起,最后求个平均值。

  也就是

R ^ Z = 1 N X ∗ X T = E ( X ∗ X T ) \hat R_Z = \frac{1}{N} X*X^T = E(X*X^T) R^Z=N1XXT=E(XXT)

X = ( X 1 , . . . , X N ) X = (X_1,...,X_N) X=(X1,...,XN)

  我们如果想对相关矩阵做特征分解,问题很大。

  • 首先,运算量很大。如果要计算相关阵,就已经是N*n2的运算量了,更不用说计算特征值和特征向量
  • 其次,这个矩阵的条件数很大,是正常的X本身的条件数的平方,数值稳定性很差。如果这个矩阵缺秩,或者近似缺秩,会产生很大的误差

  我们希望能够在数据域进行计算。不计算相关阵了

  如果X能够进行奇异值分解

X = U Σ V T X ∗ X T = U Σ Σ T U T X = U \Sigma V^T \\ X*X^T = U \Sigma \Sigma^T U^T X=UΣVTXXT=UΣΣTUT
  得到的结果就是特征分解。所以,我们不需要计算相关矩阵,也不需要计算相关矩阵的特征分解。

  相关矩阵上的特征向量,其实就等同于数据矩阵上的左奇异向量

Correlation Matrix ⇒ Eigenvector Data Matrix ⇒ Left Singular Vector \text{Correlation Matrix} \Rightarrow \text{Eigenvector}\\ \text{Data Matrix} \Rightarrow \text{Left Singular Vector} Correlation MatrixEigenvectorData MatrixLeft Singular Vector

  这样就解决了计算量大和数值计算稳定性的问题。

1.3.2 降噪

  但是使用SVD,跨过相关矩阵,直接取计算特征值和特征向量,可能忽视了一个问题,就是降噪。人们认为,求相关矩阵的过程中会求平均值,然后再做的特征分解。相当于做了均值滤波,也就是低通滤波,因此这种做法曾受到人们的质疑。

  但是实际上,SVD本身就具有降噪的能力,并且性能比平均值滤波要好。

  我们举一个例子来说明这个事情

  假设有一个谐波信号,并且有很多个点对这个谐波信号进行接收

X ( t ) = s i n ( ω t ) X i ( t ) = A i s i n ( ω t + ϕ i ) , i = 1 , . . . , n X(t) = sin(\omega t) \\ X_i(t) = A_i sin(\omega t + \phi_i),i = 1,...,n X(t)=sin(ωt)Xi(t)=Aisin(ωt+ϕi),i=1,...,n

  假设每个接收站都采样了N个。

X i ( k ) = A i s i n ( ω k Δ + ϕ i ) k = 1 , . . . , N i = 1 , . . . , n X_i(k) = A_i sin(\omega k\Delta + \phi_i) \\ k=1,...,N \\ i = 1,...,n Xi(k)=Aisin(ωkΔ+ϕi)k=1,...,Ni=1,...,n

  我们的采样幅度和相位可能有区别,但是频率不会有影响。因此我们得到了这样的数据

X = ( X 1 . . . X n ) = ( X 1 ( 1 ) . . . X 1 ( N ) . . . . . . . . . X n ( 1 ) . . . X n ( N ) ) X = \begin{pmatrix} X_1 \\ ...\\ X_n \end{pmatrix} =\begin{pmatrix} X_1(1) &...&X_1(N) \\ ...&...&...\\ X_n(1) &...& X_n(N) \end{pmatrix} X=X1...Xn=X1(1)...Xn(1).........X1(N)...Xn(N)

  对数据进行变形

X i ( k ) = A i s i n ( ω k Δ + ϕ i ) = A i c o s ( ϕ i ) s i n ( ω k Δ ) + A i s i n ( ϕ i ) c o s ( ω k Δ ) = C i S i n ( ω k Δ ) + D i c o s ( ω k Δ ) X_i(k) = A_i sin(\omega k\Delta + \phi_i) \\ = A_i cos(\phi_i)sin(\omega k \Delta) + A_i sin(\phi_i)cos(\omega k \Delta) \\ = C_i Sin(\omega k \Delta) +D_i cos(\omega k \Delta) Xi(k)=Aisin(ωkΔ+ϕi)=Aicos(ϕi)sin(ωkΔ)+Aisin(ϕi)cos(ωkΔ)=CiSin(ωkΔ)+Dicos(ωkΔ)

  我们假设Xi是行向量

X i = C i ( s i n ( ω Δ ) , . . . , s i n ( ω N Δ ) ) + D i ( c o s ( ω Δ ) , . . . , c o s ( ω N Δ ) ) X_i = C_i(sin(\omega \Delta),...,sin(\omega N \Delta)) + D_i (cos(\omega \Delta),... ,cos(\omega N \Delta)) Xi=Ci(sin(ωΔ),...,sin(ωNΔ))+Di(cos(ωΔ),...,cos(ωNΔ))

  因为X的所有元素都是两个矢量的线性组合,所以X的秩就是2

noise free:  r a n k ( X ) = 2 \text{noise free: }rank(X) = 2 noise free: rank(X)=2

  现在考虑给X加入噪声

X ^ = X + N \widehat X = X +N X =X+N

  引入噪声之后,通常Z就满秩了。我们假设有噪声条件下秩是n

noise:  r a n k ( X ^ ) = n \text{noise: }rank(\widehat X) = n noise: rank(X )=n

  我们对没有噪声和有噪声的信号分别做奇异值分解,试图去理解它的降噪作用

  X的秩是2

X = U ( σ 1 σ 2 . . . 0 ) ∗ V T X = U\begin{pmatrix} \sigma_1 & \\ &\sigma_2\\ &&...\\ &&&0 \end{pmatrix} *V^T X=Uσ1σ2...0VT
  加了噪声以后就满秩了

X ^ = U ^ ( σ ^ 1 σ ^ 2 . . . σ ^ n ) ∗ V ^ T \widehat X = \widehat U\begin{pmatrix} \widehat\sigma_1 & \\ &\widehat\sigma_2\\ &&...\\ &&&\widehat\sigma_n \end{pmatrix} *\widehat V^T X =U σ 1σ 2...σ nV T
  这样的话,我们得到的前两个特征值是谐波的能量,后面的特征值代表的就是噪声的能量。因此,我们只要对有噪声的信号进行奇异值阶段即可。也就是从第二个奇异值以后的奇异值全部变成0

  我们就可以通过这样的方法来进行降噪。使用奇异值分解进行降噪包括两步

  • 把噪声和信号分离开来
  • 奇异值阶段

  第一步,把噪声和信号分离开来,我们要解决的问题就是区分哪些维度对应信号,哪些维度对应噪声。

在这里插入图片描述

  我们可以通过像分析PCA的时候那样,分析特征值的取值情况,一般来说中间会有一个断崖式的下跌,也就让我们找到了噪声和信号的分界线。

  但是有时候可能会没有这个分界线

在这里插入图片描述

  这个时候主要的原因在于信噪比太低了。这看似是个非常矛盾的事情,因为我们就是因为有噪声才想做降噪,反而因为信噪比低做不了。这里的要求信噪比高是一个相对的情况。比如对雷达信号进行统计推断的时候,要求信噪比达到12-13db,而可能奇异值分解的方法降噪只需要达到5-6db的信噪比即可。因此这种方法还是可以的。

  第二步就是把噪声进行截断,让那些噪声对应的奇异值变成0,然后再计算。这样降噪其实比平均值好的多。如果波形本身有变化,平均值降噪就没啥用,噪声没去掉,信号细节也不见了。因为我们做了正交分解,所以我们对一些维度进行截断,并不影响信号的维度。

1.3.3 应用:Eigenface人脸识别算法

  我们来举个例子,说明一下svd优化过的pca具体是怎么使用的

  如果我们从另外一个角度来看待这个事情,其实这可以看做是一种信息压缩。原本有n个自由度,现在变成了几个。但是这种压缩不是为了数据传输准备的。因为这种压缩并没有任何的传输收益。

  经过前面的介绍,我们其实可以发现,SVD,KL展开(卡布兰诺为展开),PCA实际上做的是一件事情。

Z = K 1 α 1 + . . . + K n α n ⇒ Z = K 1 α 1 + K 2 α 2 Z = K_1\alpha1 +...+ K_n \alpha_n \Rightarrow Z = K_1 \alpha_1 + K_2 \alpha_2 Z=K1α1+...+KnαnZ=K1α1+K2α2

  如果我们用svd之后的结果做数据传输的话,我们不仅要传输系数,还要传输基底,这样的话不如直接传输原始数据。而图像压缩的那种,比如DCT或者DWT,他们的基变量是同一个,因为基变量是通过对图像的分析得到的,基变量近似相等,这样的话,我们就传输两个系数就行。

  我们这里做的这种压缩,实际上是为了做分类的(进行了信息提纯)。

C o m p r e s s i o n { ⇒ T r a n s m i s s i o n ⇒ C l a s s i f i c a t i o n Compression \begin{cases} \Rightarrow Transmission \\ \Rightarrow Classification \end{cases} Compression{TransmissionClassification

  比如在人脸识别中,人脸上的小黑头对人脸识别没有什么作用,我们就需要进行提纯操作,把不重要的部分全部丢弃。

  因此,这里我们介绍人脸识别中具有里程碑意义的算法eigenface(2001),在深度学习出现之前,这个算法是最好的,因为他简单。matlab实现不到20行

  其实一直以来,人脸识别有4个困难

  • 光线
  • 角度
  • 遮挡
  • 表情

  如果我们不刻意难为eigenface算法,避开这些因素,这个算法的识别率能够达到90%

  我们来看一下这个算法是怎么做的。我们对n个人的n张脸,做了N次采样。

n persons, n faces , N samples per face \text{n persons, n faces , N samples per face} n persons, n faces , N samples per face

X k ( 1 ) , . . . , X k ( N ) ∈ R m ( k = 1 , 2 , . . . , n ) X_k(1),...,X_k(N) \in R^m \\ (k=1,2,...,n) Xk(1),...,Xk(N)Rm(k=1,2,...,n)

  我们假设矩阵已经被向量化了,也就是拉直了

  接下来,我们要求数据的特征值了,通过SVD方法求,避免使用PCA的相关矩阵。

X 1 = U 1 Σ 1 V 1 T , . . . , X n = U n Σ n V n T X_1 = U_1 \Sigma_1 V_1^T,...,X_n = U_n \Sigma_n V_n^T X1=U1Σ1V1T,...,Xn=UnΣnVnT

  然后我们设置一个界限l,也就是要提取几个主成分,作为feature

U 1 = ( U 1 ( 1 ) , . . . . , U 1 ( l ) ) . . . U n = ( U n ( 1 ) , . . . . , U n ( l ) ) U_1 = (U_1(1),....,U_1(l)) \\ ... \\ U_n = (U_n(1),....,U_n(l)) U1=(U1(1),....,U1(l))...Un=(Un(1),....,Un(l))

  然后这个时候来了一个新数据,我们需要知道新数据在哪

在这里插入图片描述

  其实也就是要计算,把新数据投影到不同的基向量上,然后得到的特征大小是多少,选择最大的那个就是了。因为U都是正交的,我们这就是在计算在不同区域的投影长度。

X n e w ⇒ r i = ∑ k = 1 l ∣ X n e w T U i ( k ) ∣ r n e w = a r g m a x r i X_{new} \Rightarrow r_i = \sum_{k=1}^l |X_{new}^T U_i(k)| \\ r_{new} = argmax \quad r_i Xnewri=k=1lXnewTUi(k)rnew=argmaxri

  这个算法还有一个细节,数据在计算之前,必须要减去均值,如果不减去均值,效果会很差。这个算法在维基百科可以查到具体的例程,不过维基百科是用相关矩阵计算的

2. 整体最小二乘(TLS)与SVD

2.1 TLS思想

  TLS,Total Least Square,这种信号处理方法曾经非常火,因为最小二乘稍加改造就可以使用这种处理方法,这种处理方法比最小二乘运算量更低,并且能够得到精确解。

  先回忆一下最小二乘

m i n θ ∣ ∣ y − Z θ ∣ ∣ 2 2 y = Z θ + ξ min_\theta ||y-Z\theta||^2_2\\ y = Z \theta +\xi minθyZθ22y=Zθ+ξ

  我们就是要调整系数θ,让误差ξ尽最小。

y + y ^ = Z θ ( L S ) y + \widehat y = Z \theta \quad (LS) y+y =Zθ(LS)

  而整体最小二乘认为,数据本身也是有误差的

y + y ^ = ( Z + Z ^ ) θ ( T L S ) y + \widehat y = (Z + \widehat Z) \theta \quad (TLS) y+y =(Z+Z )θ(TLS)

Z ∈ R N ∗ n Z \in R^{N*n} ZRNn

  TLS要求,通过调整θ,使得误差矩阵最小。要求估计的扰动和数据的扰动都最小

m i n θ ∣ ∣ [ y ^ , Z ^ ] ∣ ∣ 2 min_\theta ||[\widehat y,\widehat Z]||^2 minθ[y ,Z ]2

2.2 需要解决的三个问题

2.2.1 矩阵的求模

  第一个问题,这是个矩阵求模,最小二乘求的是向量的模。矩阵求模有很多种方法,这里使用F范数的方法进行矩阵求模

∣ ∣ A ∣ ∣ F 2  Frobenius Norm ∣ ∣ A ∣ ∣ F 2 = T r ( A T A ) = ∑ i = 1 m ∑ j = 1 n ∣ A i j ∣ 2 A ∈ R m ∗ n ||A||^2_F \text{ Frobenius Norm} \\ ||A||^2_F = Tr(A^T A) = \sum_{i=1}^m \sum_{j=1}^n |A_{ij}|^2 \quad A \in R^{m*n} AF2 Frobenius NormAF2=Tr(ATA)=i=1mj=1nAij2ARmn

  F范数就是把矩阵拉直以后,算欧式模的平方

2.2.2 低秩逼近

  在这里我们要引入一个引理

  接下来,我们分析一下矩阵的秩。由于数据是N行n列,我们假设N>n,并且假设数据Z是列满秩的,那么Z的秩就是n

r a n k ( Z ) = n rank(Z) = n rank(Z)=n
  再加上一个y,矩阵的秩是多少呢?

  通常来说这个秩是n+1,因为y通常不会落入数据域的子空间,不然的话,最小二乘解就是个非常精确的结果了。也就是等价于AX=B本身就是可以解的。

r a n k [ Z , y ] = n + 1 rank[Z,y] = n+1 rank[Z,y]=n+1

  引入了偏差之后的矩阵的秩又是多少呢?

r a n k [ Z + Z ^ , y + y ^ ] rank[Z+ \widehat Z,y + \widehat y] rank[Z+Z ,y+y ]

  我们来看TLS的约束

y + y ^ = ( Z + Z ^ ) θ ( Z + Z ^ ) θ − ( y + y ^ ) = 0 ( Z + Z ^ y + y ^ ) ∗ ( θ − 1 ) = 0 y + \widehat y = (Z + \widehat Z) \theta \\ (Z + \widehat Z)\theta - (y + \widehat y) = 0 \\ \begin{pmatrix} Z + \widehat Z & y+\widehat y \end{pmatrix}* \begin{pmatrix} \theta \\ -1 \end{pmatrix} = 0 y+y =(Z+Z )θ(Z+Z )θ(y+y )=0(Z+Z y+y )(θ1)=0

  相当于这个矩阵乘以一个非零值,最后得到了一个零值。说明这个矩阵一定是缺秩的,这个秩最多是n

r a n k [ Z + Z ^ , y + y ^ ] = n rank[Z+ \widehat Z,y + \widehat y] =n rank[Z+Z ,y+y ]=n

  这个时候就引出我们的第二个问题了。

  我们原来的矩阵是满秩的,但是加入扰动的矩阵是缺秩的,相当于我们要用缺秩的矩阵去估计满秩的矩阵。我们要从这些扰动中找到一个让F范数最小的扰动,也就是能够得到最好的估计θ

  我们怎么用低秩的矩阵做逼近呢?

m i n A n ∣ ∣ A − A n ∣ ∣ F 2 , s . t . r a n k ( A n ) = n min_{A_n} ||A - A_n||_F^2, \quad s.t. \quad rank(A_n) = n minAnAAnF2,s.t.rank(An)=n

  这个问题叫做低秩逼近(Low-Rank Approximation),就是在秩为n的矩阵中,找到距离我目标最近的那个。这件事已经得到了完美解决了。schmidt解决了(格拉姆施密特正交化的那个人)。但是成果被归功为了Eckart-Young身上。

  我们可以假设一个更加一般的情况,就是使用秩为k的矩阵取逼近(列)满秩矩阵

m i n A k ∣ ∣ A − A k ∣ ∣ F 2 , s . t . r a n k ( A k ) = k min_{A_k} ||A - A_k||_F^2, \quad s.t. \quad rank(A_k) = k minAkAAkF2,s.t.rank(Ak)=k

  这个定理用到了奇异值分解,我们对A做SVD

A = ∑ i = 1 k σ i u i v i T A k = ( u 1 . . . u n ) ∗ ( σ 1 . . . σ n ) ∗ ( v 1 T . . . v n T ) A = \sum_{i=1}^k \sigma_i u_i v_i^T \\ A_k = \begin{pmatrix} u_1 & ... & u_n \end{pmatrix}* \begin{pmatrix} \sigma_1 & \\ &...\\ &&\sigma_n\\ \end{pmatrix} *\begin{pmatrix} v_1^T \\ ... \\ v_n^T \end{pmatrix} A=i=1kσiuiviTAk=(u1...un)σ1...σnv1T...vnT

σ 1 > . . . > σ n \sigma_1 > ... >\sigma_n σ1>...>σn

  最优的逼近Ak就是,把A的前k项拿出来加起来。

A k = ∑ i = 1 k σ i u i v i T A k = ( u 1 . . . u n ) ∗ ( σ 1 . . . σ k 0 . . . 0 ) ∗ ( v 1 T . . . v n T ) A_k = \sum_{i=1}^k \sigma_i u_i v_i^T \\ A_k = \begin{pmatrix} u_1 & ... & u_n \end{pmatrix}* \begin{pmatrix} \sigma_1 & \\ &...\\ &&\sigma_k\\ &&& 0 \\ &&&& ... \\ &&&&& 0 \end{pmatrix} *\begin{pmatrix} v_1^T \\ ... \\ v_n^T \end{pmatrix} Ak=i=1kσiuiviTAk=(u1...un)σ1...σk0...0v1T...vnT

2.2.3 TLS问题

  解决了前面两个问题之后,才能开始解决TLS问题

  我们要解决的问题就是,如果利用缺秩的加了扰动的矩阵去逼近原矩阵

[ Z + Z ^ , y + y ^ ] ⇒ [ Z , y ] [Z+ \widehat Z,y + \widehat y] \Rightarrow [Z,y] [Z+Z ,y+y ][Z,y]

  我们先写出原来矩阵的SVD

[ Z , y ] = ( U Z U y ) ∗ ( Σ Z σ y ) ∗ ( V Z Z V Z y V y Z T V y y ) [Z,y] = \begin{pmatrix} U_Z & U_y \end{pmatrix}* \begin{pmatrix} \Sigma_Z \\ &\sigma_y \end{pmatrix}* \begin{pmatrix} V_{ZZ} & V_{Zy} \\ V_{yZ}^T & V_{yy} \end{pmatrix} [Z,y]=(UZUy)(ΣZσy)(VZZVyZTVZyVyy)

  变形,同时利用V是正交矩阵的特性。其中Vyy是个数

[ Z , y ] ∗ ( V Z Z V Z y V y Z T V y y ) T = ( U Z U y ) ∗ ( Σ Z σ y ) [ Z , y ] ∗ ( V Z Z T V y Z V Z y T V y y ) = ( U Z U y ) ∗ ( Σ Z σ y ) ⇒ [ Z , y ] ∗ ( V Z Z T V y Z V Z y T V y y ) = ( U Z ∗ Σ Z U y ∗ σ y ) ⇒ ( [ Z , y ] ∗ ( V Z Z T V Z y T ) , [ Z , y ] ∗ ( V y Z V y y ) ) = ( U Z ∗ Σ Z U y ∗ σ y ) [Z,y]* \begin{pmatrix} V_{ZZ} & V_{Zy} \\ V_{yZ}^T & V_{yy} \end{pmatrix}^T = \begin{pmatrix} U_Z & U_y \end{pmatrix}* \begin{pmatrix} \Sigma_Z \\ &\sigma_y \end{pmatrix} \\ [Z,y]* \begin{pmatrix} V_{ZZ}^T & V_{yZ} \\ V_{Zy}^T & V_{yy} \end{pmatrix} = \begin{pmatrix} U_Z & U_y \end{pmatrix}* \begin{pmatrix} \Sigma_Z \\ &\sigma_y \end{pmatrix} \\ \Rightarrow [Z,y]* \begin{pmatrix} V_{ZZ}^T & V_{yZ} \\ V_{Zy}^T & V_{yy} \end{pmatrix} = \begin{pmatrix} U_Z *\Sigma_Z & U_y*\sigma_y \end{pmatrix} \\ \Rightarrow ([Z,y]* \begin{pmatrix} V_{ZZ}^T \\ V_{Zy}^T \end{pmatrix} ,[Z,y]*\begin{pmatrix} V_{yZ} \\ V_{yy} \end{pmatrix} )= \begin{pmatrix} U_Z *\Sigma_Z & U_y*\sigma_y \end{pmatrix} [Z,y](VZZVyZTVZyVyy)T=(UZUy)(ΣZσy)[Z,y](VZZTVZyTVyZVyy)=(UZUy)(ΣZσy)[Z,y](VZZTVZyTVyZVyy)=(UZΣZUyσy)([Z,y](VZZTVZyT),[Z,y](VyZVyy))=(UZΣZUyσy)

  我们可以求出如下的式子

U y ∗ σ y = [ Z , y ] ∗ ( V y Z V y y ) ( i ) U_y*\sigma_y =[Z,y]*\begin{pmatrix} V_{yZ} \\ V_{yy} \end{pmatrix} \quad\quad(i) Uyσy=[Z,y](VyZVyy)(i)

  我们用带有扰动的矩阵进行逼近

[ Z + Z ^ o p t , y + y ^ o p t ] = ( U Z U y ) ∗ ( Σ Z 0 ) ∗ ( V Z Z V Z y V y Z T V y y ) [Z+ \widehat Z_{opt},y + \widehat y_{opt}] = \begin{pmatrix} U_Z & U_y \end{pmatrix}* \begin{pmatrix} \Sigma_Z \\ &0 \end{pmatrix}* \begin{pmatrix} V_{ZZ} & V_{Zy} \\ V_{yZ}^T & V_{yy} \end{pmatrix} [Z+Z opt,y+y opt]=(UZUy)(ΣZ0)(VZZVyZTVZyVyy)

  我们可以通过做减法的方式得到最优逼近

[ Z ^ o p t , y ^ o p t ] = [ Z + Z ^ o p t , y + y ^ o p t ] − [ Z , y ] = ( U Z U y ) ∗ ( 0 − σ y ) ∗ ( V Z Z V Z y V y Z T V y y ) = ( 0 − σ y U y ) ∗ ( V Z Z V Z y V y Z T V y y ) = − σ y U y ∗ ( V y Z T V y y ) ( i i ) [\widehat Z_{opt},\widehat y_{opt}] = [Z+ \widehat Z_{opt},y + \widehat y_{opt}] - [Z,y] \\ =\begin{pmatrix} U_Z & U_y \end{pmatrix}* \begin{pmatrix} 0\\ & -\sigma_y \end{pmatrix}* \begin{pmatrix} V_{ZZ} & V_{Zy} \\ V_{yZ}^T & V_{yy} \end{pmatrix} \\ =\begin{pmatrix} 0 & -\sigma_y U_y \end{pmatrix}* \begin{pmatrix} V_{ZZ} & V_{Zy} \\ V_{yZ}^T & V_{yy} \end{pmatrix} \\ = -\sigma_y U_y *\begin{pmatrix} V_{yZ}^T & V_{yy} \end{pmatrix} \quad\quad(ii) [Z opt,y opt]=[Z+Z opt,y+y opt][Z,y]=(UZUy)(0σy)(VZZVyZTVZyVyy)=(0σyUy)(VZZVyZTVZyVyy)=σyUy(VyZTVyy)(ii)

  我们重新回去等式,并把(i)和(ii)代入

[ Z + Z ^ o p t , y + y ^ o p t ] = [ Z , y ] + [ Z ^ o p t , y ^ o p t ] = [ Z , y ] − σ y U y ∗ ( V y Z T V y y ) = [ Z , y ] − [ Z , y ] ∗ ( V y Z V y y ) ∗ ( V y Z T V y y ) ( i i i ) [Z+ \widehat Z_{opt},y + \widehat y_{opt}]=[Z,y] +[\widehat Z_{opt},\widehat y_{opt}] \\ = [Z,y]- \sigma_y U_y *\begin{pmatrix} V_{yZ}^T & V_{yy} \end{pmatrix} \\ = [Z,y]-[Z,y]*\begin{pmatrix} V_{yZ} \\ V_{yy} \end{pmatrix} *\begin{pmatrix} V_{yZ}^T & V_{yy} \end{pmatrix} \quad\quad(iii) [Z+Z opt,y+y opt]=[Z,y]+[Z opt,y opt]=[Z,y]σyUy(VyZTVyy)=[Z,y][Z,y](VyZVyy)(VyZTVyy)(iii)

  我们可以看出来,下面这个矢量是VT的最后一行,因此一定是一个标准化过的基向量,模为1

( V y Z T V y y ) \begin{pmatrix} V_{yZ}^T & V_{yy} \end{pmatrix} (VyZTVyy)

  我们给(iii)式子左右乘一个式子,得到下面的式子

[ Z + Z ^ o p t , y + y ^ o p t ] ∗ ( V y Z V y y ) = [ Z , y ] ∗ ( V y Z V y y ) − [ Z , y ] ∗ ( V y Z V y y ) = 0 ( i v ) [Z+ \widehat Z_{opt},y + \widehat y_{opt}]*\begin{pmatrix} V_{yZ} \\ V_{yy} \end{pmatrix} = [Z,y]* \begin{pmatrix} V_{yZ} \\ V_{yy} \end{pmatrix} -[Z,y]* \begin{pmatrix} V_{yZ} \\ V_{yy} \end{pmatrix} =0 \quad\quad(iv) [Z+Z opt,y+y opt](VyZVyy)=[Z,y](VyZVyy)[Z,y](VyZVyy)=0(iv)

  对比一下约束条件

( Z + Z ^ y + y ^ ) ∗ ( θ − 1 ) = 0 \begin{pmatrix} Z + \widehat Z & y+\widehat y \end{pmatrix}* \begin{pmatrix} \theta \\ -1 \end{pmatrix} = 0 (Z+Z y+y )(θ1)=0

  只要给(iv)式凑个数就行,也就是式子两边乘以Vyy的逆加负号即可

[ Z + Z ^ o p t , y + y ^ o p t ] ∗ ( V y Z V y y ) = 0 [ Z + Z ^ o p t , y + y ^ o p t ] ∗ ( − V y Z ∗ V y y − 1 − 1 ) = 0 [Z+ \widehat Z_{opt},y + \widehat y_{opt}]*\begin{pmatrix} V_{yZ} \\ V_{yy} \end{pmatrix} = 0 \\ [Z+ \widehat Z_{opt},y + \widehat y_{opt}]*\begin{pmatrix}- V_{yZ}*V_{yy}^{-1} \\ -1 \end{pmatrix} =0 [Z+Z opt,y+y opt](VyZVyy)=0[Z+Z opt,y+y opt](VyZVyy11)=0

  因此我们可以得到TLS的最优估计结果

θ = − V y Z ∗ V y y − 1 \theta = - V_{yZ}*V_{yy}^{-1} θ=VyZVyy1

2.3 TLS小结

  整体最小二乘有精确解。而且仅仅用到了最小的奇异值对应的右奇异矢量。解答更加简单。最小二乘通过伪逆的话,也有精确解,但是比这个麻烦。整体最小二乘重度依赖奇异值分解。

  其实我们的数据都是可以假定的有噪声的,就把最小二乘转换为整体最小二乘求解即可。

  整体最小二乘可以作为熟悉奇异值分解的一个很好的例子

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值