【机器学习】主成分分析(PCA)——利用奇异值分解(SVD)(理论+图解+公式推导)

简介: 【机器学习】主成分分析(PCA)——利用奇异值分解(SVD)(理论+图解+公式推导)

2021人工智能领域新星创作者,带你从入门到精通,该博客每天更新,逐渐完善机器学习各个知识体系的文章,帮助大家更高效学习。


一、概述

之前讲了一种方法叫做特征值分解,它是将我们的协方差矩阵进行分解,但是这时会有一定的约束条件才可以进行分解

  • 必须是方阵
  • 能够被对角化

这两个要求是相对来说较高的,对于协方差矩阵是方阵,而且是对称矩阵,实对称矩阵一定可以对角化,但是如果对于一般形状的矩阵能不能仍对其进行分解呢?

答案是肯定的,本文将讲解如何使用大杀器SVD对一般形式的矩阵进行分解。

对于之前讲的特征值分解,我们的目标就是找到一个映射矩阵P,然后将其与原数据A进行相乘,从而实现降维的效果,其实SVD也是这样,也是要找到一个映射矩阵,只不过是这两种方法找这个映射矩阵的方式不同,特征值分解是将协方差矩阵C进行分解,而我们的奇异值分解是直接分解原数据样本A。

接下来就具体讲解一下SVD是如何分解矩阵的。

二、SVD奇异值分解

1.A v = σ u Av=\sigma uAv=σu 公式

该公式非常重要,第一眼看起来它是不是有点像特征方程 A x = λ x Ax=\lambda xAx=λx ,其实特征多项式知识该式子的特殊情况,当 v = u v=uv=u 时,就变成了特征多项式。

为了讲述方便,这里先做一些约定:

  • 假设A的形状为(m,n)
  • 矩阵的秩为r
  • r<=n<=m

如果是这样,我们一定可以找到n组等式符合 A v = σ u Av=\sigma uAv=σu ,我们的矩阵A为m行n列,而且行数大于列数,所以矩阵A的作用就是将一个向量从n维映射到更高的m维度,为什么呢?

A为(m,n),如果此时向量x为(n,1),将Ax做乘法,得到的结果就是(m,1),这样x经过矩阵A的作用就从原来的n维升到了m维。

那么对应 A v = σ u Av=\sigma uAv=σu 这个式子,也就是经过A的作用,我们将n维向量v映射到了m维向量u,那么也就是说我一定可以在原来的n维空间内找到一组标准正交向量 v 1 , v 2 , . . . , v n v_1,v_2,...,v_nv1,v2,...,vn ,和在映射后的m维空间内找到一组标准正交向量 u 1 , u 2 , . . . , u m u_1,u_2,...,u_mu1,u2,...,um 使之满足 A v i = σ i u i Av_i=\sigma_i u_iAvi=σiui ,(其中i=1,2,…,n),共有n组方程。

那么这n组线性变换的结果就是将m维空间中的基向量 u i u_iui ,沿着自身的方向延长 σ i \sigma_iσi 倍。

我们可以将上面得到的结果写成:

A V = σ U A [ v 1 v 2 v 3 ⋯ v n ] = [ u 1 u 2 u 3 ⋯ u n ] [ σ 1 0 ⋯ 0 σ 2 ⋮ ⋯ σ n ] AV=\sigma U\\ A

[v1v2v3vn][v1v2v3⋯vn]

=

[u1u2u3un][u1u2u3⋯un]

σ100σ2σn[σ10⋯0σ2⋮⋯σn]

AV=σUA[v1v2v3vn]=[u1u2u3un]σ100σ2σn

但是我们上面说到m是大于n的,所以说 u n + 1 , . . . u m u_{n+1},...u_mun+1,...um 这些还没有添加进去,所以将这些添加到矩阵U的右侧,然后再 σ \sigmaσ 矩阵的下面全部补0,使维度符合要求,那么此时的 σ \sigmaσ 矩阵就变成了m*n,我们最终得到的就是:

A V = U Σ AV=U\SigmaAV=UΣ

因为我们之前讲过由于矩阵V的各列是标准正交的特征向量,所以满足等式 V − 1 = V T V^{-1}=V^TV1=VT ,所以上面的式子可以变成 :

A = U Σ V T A=U\Sigma V^TA=UΣVT

这就是我们最终需要的分解式子,任何形状的矩阵A都可以利用该式子进行分解。

  • A:m*n
  • U:m*m
  • Σ \SigmaΣ :m*n
  • V T V^TVT :n*n

其中U矩阵是对应m个m维的标准正交向量,而 V T V^TVT 则对应着 n个n维的标准正交向量,Σ \SigmaΣ 是一个m行n列的对角矩阵。

此时的问题就是,我们已经找到了一种方程形式进行矩阵A的分解,那么我们 U 、 V 、 Σ U、V、\SigmaUVΣ 分别对应什么呢?

接下来就讲讲如果获得等式右边的内容。

2.矩阵分解

对于该式子的结论非常好,同时也给我们指明了如何寻找其解,就是原n维空间找到n组标准正交向量,和目标m维空间找到m组标准正交向量,那具体怎么找呢?接下来进行讲解

A = U Σ V T A=U\Sigma V^TA=UΣVT

我们利用矩阵转置这条性质,将矩阵A进行转置,得到:

A T = ( U Σ V T ) T = V Σ T U T A^T=(U\Sigma V^T)^T=V\Sigma^TU^TAT=(UΣVT)T=VΣTUT

我们此时将两个矩阵进行乘法操作,会得到两个式子:

A A T = U Σ V T ( V Σ T U T ) = U Σ 2 U T AA^T=U\Sigma V^T(V\Sigma^TU^T)=U\Sigma^2U^TAAT=UΣVT(VΣTUT)=UΣ2UT

A T A = ( V Σ T U T ) U Σ V T = V Σ 2 V T A^TA=(V\Sigma^TU^T)U\Sigma V^T=V\Sigma^2V^TATA=(VΣTUT)UΣVT=VΣ2VT

由于任何矩阵乘以自身的转置之后得到的都是对称矩阵,所以可以对角化进行分解,那么就可以轻松的获得矩阵 U 和 V U和VUV ,它们分别对应着两个对称矩阵的分解特征向量,而且 Σ \SigmaΣ 对角线上的元素就是我们对应特征值的开根号,由于矩阵的秩为r,所以 Σ \SigmaΣ 对角线上的非0特征值分别为:λ 1 , λ 2 , . . . , λ r \sqrt{\lambda_1},\sqrt{\lambda_2},...,\sqrt{\lambda_r}λ1,λ2,...,λr

3.将结果进行降维

我们现在已经可以将原来的矩阵进行分解,那么如果进行降维操作呢?

SVD对应的降维方式主要有三种:

  • 行压缩数据降维
  • 列压缩数据降维
  • 矩阵整体压缩数据降维

下面分别讲述下三种降维方式:

3.1 行压缩数据降维

从矩阵分解的式子出发,将式子两端分别左乘 U T U^TUT ,就变成了 U T A = Σ V T U^TA=\Sigma V^TUTA=ΣVT,那么就会得到下方的式子:

我们之前讲过特征值分解,是将原矩阵A左乘P,得到了行之间线性无关的特征,那么此时的U和当时的P的求法是一样的,所以我们此时的行与行之间也是线性无关的。

那么此时如果将行看作特征,列看作样本,那么就可以从矩阵U中按照要求提取k个特征向量,变成k行m列,然后做成原数据Am行n列,就会得到结果k行n列,从而实现降维的效果,这里m代表特征,n代表样本数。

3.2 列压缩数据降维

其实列压缩和行数据压缩同理,将上式右乘矩阵V得到:A V = U Σ AV=U\SigmaAV=UΣ ,进而得到下式:

它与行压缩相反,此时得到的是列与列线性无关,此时的m代表样本数,n代表特征,那么我们将V矩阵提取k个向量,形成k行n列,左乘原数据样本n行m列,得到结果k行m列,进而达到降维效果。

3.3 矩阵整体压缩数据降维

对数据总体进行压缩,是从一个新的角度去看待,可以理解为贡献率的问题,我们可以将原来的A分解为多个相同形状的矩阵,然后进行按照权重进行叠加。

将其进行展开获得:

A = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + . . . + σ r u r v r T A=\sigma_1u_1v_1^T+\sigma_2u_2v_2^T+...+\sigma_ru_rv_r^TA=σ1u1v1T+σ2u2v2T+...+σrurvrT

其中 σ 1 u 1 v 1 T \sigma_1u_1v_1^Tσ1u1v1T 为一个m行n列的矩阵,前面的 σ \sigmaσ 代表每个矩阵的权重,我们会从r个这样的矩阵中挑去权重大的矩阵进行叠加。

这样就可以理解为每个矩阵片段的重要性,按照 σ 1 > σ 2 > σ 3 \sigma_1>\sigma_2>\sigma_3σ1>σ2>σ3 的方式选取对应权重大的矩阵片段。

那么A就可以近似为:

A ≈ σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + . . . + σ k u k v k T A\approx\sigma_1u_1v_1^T+\sigma_2u_2v_2^T+...+\sigma_ku_kv_k^TAσ1u1v1T+σ2u2v2T+...+σkukvkT


目录
打赏
0
0
0
0
20
分享
相关文章
机器学习模型中特征贡献度分析:预测贡献与错误贡献
本文将探讨特征重要性与特征有效性之间的关系,并引入两个关键概念:预测贡献度和错误贡献度。
619 3
机器学习与大数据分析的结合:智能决策的新引擎
机器学习与大数据分析的结合:智能决策的新引擎
255 15
机器学习在运维中的实时分析应用:新时代的智能运维
机器学习在运维中的实时分析应用:新时代的智能运维
102 12
【大数据分析&机器学习】分布式机器学习
本文主要介绍分布式机器学习基础知识,并介绍主流的分布式机器学习框架,结合实例介绍一些机器学习算法。
543 5
机器学习中空间和时间自相关的分析:从理论基础到实践应用
空间和时间自相关是数据分析中的重要概念,揭示了现象在空间和时间维度上的相互依赖关系。本文探讨了这些概念的理论基础,并通过野火风险预测的实际案例,展示了如何利用随机森林模型捕捉时空依赖性,提高预测准确性。
196 0
机器学习中空间和时间自相关的分析:从理论基础到实践应用
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
这篇文章介绍了数据清洗、分析、可视化、模型搭建、训练和预测的全过程,包括缺失值处理、异常值处理、特征选择、数据归一化等关键步骤,并展示了模型融合技术。
515 1
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
【Python篇】从零到精通:全面分析Scikit-Learn在机器学习中的绝妙应用
【Python篇】从零到精通:全面分析Scikit-Learn在机器学习中的绝妙应用
70 2
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
85 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等