【机器学习】主成分分析(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


目录
相关文章
|
6月前
|
人工智能
一键生成视频!用 PAI-EAS 部署 AI 视频生成模型 SVD 工作流(清晰的实例)
用 PAI-EAS 部署 AI 视频生成模型 SVD 工作流(清晰的实例)
240 2
|
6月前
|
机器学习/深度学习 数据可视化 计算机视觉
【视频】机器学习交叉验证CV原理及R语言主成分PCA回归分析犯罪率|数据共享
【视频】机器学习交叉验证CV原理及R语言主成分PCA回归分析犯罪率|数据共享
|
6月前
|
机器学习/深度学习 算法 数据可视化
JAMA | 机器学习中的可解释性:SHAP分析图像复刻与解读
JAMA | 机器学习中的可解释性:SHAP分析图像复刻与解读
1453 1
|
6月前
|
人工智能 编解码 对象存储
一键生成视频,用 PAI-EAS 部署 AI 视频生成模型 SVD 工作流
本教程将带领大家免费领取阿里云PAI-EAS的免费试用资源,并且带领大家在 ComfyUI 环境下使用 SVD的模型,根据任何图片生成一个小短视频。
|
6月前
|
机器学习/深度学习 算法 数据可视化
机器学习-生存分析:如何基于随机生存森林训练乳腺癌风险评估模型?
机器学习-生存分析:如何基于随机生存森林训练乳腺癌风险评估模型?
115 1
|
6月前
|
机器学习/深度学习 算法 数据可视化
机器学习——主成分分析(PCA)
机器学习——主成分分析(PCA)
87 0
|
4天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
19 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
25天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
1月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
55 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练

热门文章

最新文章