PCA主成分分析原理的三种角度的理解

article/2025/9/10 21:14:05

主成分分析算是降维算法中的一个经典算法了。网上也有很多博客介绍了这个算法。这篇文章从三个不同的角度,对PCA方法做了详细的分析,不同的角度进行推导最后得到的也都是同一个结果,推导过程需要些数学基础,但总体是非常好理解的。

一、PCA算法

PCA算法的基本步骤如下:
在这里插入图片描述
对于我个人而言,我是先知道的这个步骤,由于现在在python里面用PCA非常方便,只要调个库就行。我在很长一段时间对于这个过程使比较懵逼的。
比如为啥这里要计算均值话后的协方差矩阵?为啥要进行特征分解对应前d’个特征向量?为啥得到这个W后就能够降维了呢?
如果你看了一些博客有类似的疑惑,或者第一次接触到PCA,那么这篇文章将能对你理解PCA有很大的帮助。
当然,这篇文章需要你有一些数学基础如下:(1) 拉格朗日乘子法。(2)最小化损失函数的思想。(3)各种线性代数矩阵相关的数学知识,比如什么是协方差矩阵,什么是特征分解,矩阵与矩阵转置运算等等。如果你有所缺漏,你可能在某一步的推导上会存在疑惑,但不会影响你对PCA有一个完整而准确的理解。

二、PCA进行降维的基本思想

为啥得到一个矩阵 W W W后就可以进行降维了呢?这其实是一个比较简单的问题,想想假设我们得到的 W W W是一个 m × d m \times d m×d的矩阵,其中 m m m是原样本空间的维度, d d d是新样本空间的维度,这样我们对于原来的一个样本 x x x(一个 m m m维向量),我们作线性变换 y = W T x y=W^Tx y=WTx,得到的就是一个 d d d维的向量,这个 y y y就是降维后的结果。
实际上直观地想,主成分分析PCA就是一种线性降维方法,将高维空间的样本进行线性变换,使其降维到一个低维空间中。
在这里插入图片描述
因此这个降维问题的关键在于怎么求得矩阵W,使得在新空间下的样本尽可能保留了原来样本的信息。

三、主成分分析——重构角度

有了上面对PCA的基本了解,知道了它的基本思想后,我们就可以从不同的角度来看待这个问题了。
可重构直观来说就是:样本到这个超平面的距离都足够近;我们首先从上一部分内容中推导。
在这里插入图片描述
这里的第一段话非常重要,我们将原样本投影到一个d维空间,那么这d个维度肯定需要是两两正交的,即当 i ≠ j i \neq j i=j时对应 w i w j = 0 w_iw_j = 0 wiwj=0,这里注意 w i w_i wi是一个列向量,因此从矩阵角度看,有 W T W = I W^TW=I WTW=I(这个非常重要!!),那么显然反过来是不对的,即没办法得到 W W T = I WW^T=I WWT=I
第二第三行是显然的,第四行需要再解释一下,已知空间中每一个维度的表示,且有样本在每一个维度下的坐标,我们如何在一个空间下表示一个向量?在这里插入图片描述
理解到 w j w_j wj是每一个维度的单位长, y i j y_{ij} yij是样本在这个维度下的坐标值,这样上面的求和得到的就是 x i ^ \hat{x_i} xi^这个向量。重构的思想就这样出来了,实际上我们是在新的空间下重构了这个向量,上面这个 x ^ \hat{x} x^就是在新空间下重构得到的。

由于我们原来就有一个 x i x_i xi,那么我们很自然希望这个原来的样本和重构得到的样本的误差和最小,即 ∑ i = 1 n ∣ ∣ x i − x i ^ ∣ ∣ 2 2 \sum_{i=1}^{n}||x_i-\hat{x_i}||_2^2 i=1nxixi^22这就是我们希望优化的目标函数,即重构误差,我们代入一下上面的公式计算一下这个误差。
在这里插入图片描述
在这里插入图片描述
这里的推导需要一定的数学基础,实际上每一步都是比较直观的。主要 x i x_i xi是一个已知值,转化后就是常数,最后这一步零均值话需要自己代入试一试就知道是对的了。

实际上没有自己推导这个步骤,也不会影响理解。
这样,我们希望最小化这个损失,那么主成分分析的最优化模型为:在这里插入图片描述
到这一步,我们就可以利用拉格朗日乘子法去求解这个最优化过程为:
在这里插入图片描述
这一步是拉格朗日乘子法里的通用步骤,引入 λ \lambda λ再对 W W W求导即可。(没懂的需要自行看拉格朗日乘子法的内容)。
这里怎么求这个 W W W呢,一定要注意我们对W是有限制的,即W是一个 m × d m\times d m×d的矩阵,因此W对应的解为:
在这里插入图片描述
这样,我们就对应到PCA算法的描述了,也就知道为啥要计算协方差矩阵,为啥要进行特征分解了。(实际上是最小化误差以及拉格朗日求解的过程)

四、主成分分析——可区分角度

这个角度其实是我们说的最多的角度,也是很多文章默认的推导角度。

可区分角度直观的思路如下:
在这里插入图片描述
那么,我们接下来计算一下样本的(协)方差即可。
在这里插入图片描述
这里的最后一步是方差的计算公式,省略掉了 − 0 -0 0,这样我们的最优化过程希望最大化方差,即在这里插入图片描述
可以看到,这里是和前面可重构角度一致的,因此后面也可以用拉格朗日乘子法计算。

五、主成分分析——Minimum Error Formulation

这个角度相较于上面两个角度推导稍微复杂一些,也没那么常看到。这其中的推导还得自己手动拿笔算算才能够对应的上。

这里的核心思想是通过旋转坐标系从而最小化误差,直接看这句话是很难理解的,我们上公式:
在这里插入图片描述
!!!注意:这里的公式与可重构角度是不太一样的,在维度的选择上选择了m维,故这里的理解是将原m维空间维度进行旋转(旋转坐标系),得到的还是个m维空间,我们的降维过程实际上是在这个新的m维空间中选择d维,使得抛弃的信息最少。
在这里插入图片描述
这一步的推导注意第二行,去掉求和符号用到了 y i j y_{ij} yij是一个值,这样我们就可以用正交基的性质消掉不同下标的 w i w_i wi了(都是很基本的线性代数,需要好好再看看)
在这里插入图片描述

这一步理解很关键。注意到我们新投影后仍然是m维空间,我们将其非常我们需要降维得到的d维和其他维。注意为啥要区分成 z i j z_{ij} zij b j b_j bj两种不同的值,这是由我们降维到d维空间这个目标决定的。

接下来最小化误差就和重构角度类似,但求解不太一样在这里插入图片描述
这里对 b j b_j bj求导并令其为0,需要自己手动算一下,最后会得到上面的结果。
接下来对 z i j z_{ij} zij求导在这里插入图片描述
代回原式 J J J
在这里插入图片描述
在这里插入图片描述
上面的推导需要自己试着推一推,都不难,但不自己推也不影响最后理解。因此最后的最优化目标就可以写成在这里插入图片描述
这里看起来和前面两种角度不一致,但我们首先考虑0均值化,那么S就可以化简成 X X T XX^T XXT,接着这里是最小化d+1至m,求的是最小特征值,那么实际上对应着最大化1至d,求的是最大的d个特征值,这样和前面两种角度的公式就是完全一致的了。

求解还是利用拉格朗日乘子,这里不再赘述。

六、总结

这里的内容主要参考的是周志华老师的西瓜书《机器学习》,对其中的内容和推导有一定的细化和扩展。对我自己来说,这些推导对帮助我完整理解PCA有很大帮助,理解了之后,也就不用再去背PCA的算法步骤,而是能通过一个角度完整把算法步骤进行还原。文章很长,有很多数学推导,希望对大家有参考价值。


http://chatgpt.dhexx.cn/article/WkUOhDph.shtml

相关文章

主成分分析(PCA)原理总结

主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA,下面我们就对PCA的原理做一个总结。 1. PCA…

PCA主成分分析原理及分析实践详细介绍

自己的博客在Github上&#xff0c;访问不多。这篇文章竟然被别人发了出来&#xff0c;还是贴到CSDN上&#xff0c;更方便检索吧。 原文&#xff1a;<http://blog.genesino.com/2016/10/PCA/> This is generated by R knitr, please check https://github.com/Tong-Chen/…

PCA(主成分分析)原理详解

PCA概念 PCA(Principal Component Analysis)&#xff0c;即主成分分析方法&#xff0c;是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上&#xff0c;这k维是全新的正交特征也被称为主成分&#xff0c;是在原有n维特征的基础上重新构造出来的k维特征。PC…

python主成分分析代码_PCA主成分分析 原理讲解 python代码实现

1. 用途&#xff1a; 通俗来说&#xff1a; 考察一个人的智力情况&#xff0c;就直接看数学成绩就行(存在&#xff1a;数学、语文、英语成绩) 。就是找出一个最主要的特征&#xff0c;然后进行分析。 数据压缩 &#xff08;Data Compression&#xff09; &#xff0c;将高维数…

主成分分析法原理与MATLAB实现

1&#xff1a;主成分分析原理&#xff1a; 主成分分析法是利用降维的思想&#xff0c;把多指标转化为少数几个综合指标&#xff08;即主成分&#xff09;&#xff0c;其中每个主成分都能够反映原始变量的大部分信息&#xff0c;且所含信息互不重复。这种方法在引进多方面变量的…

主成分分析(PCA)原理及应用

在进行统计学分析中往往面临着比较难以抉择的权衡。以农学研究为例&#xff0c;在实验设计时&#xff0c;考虑到研究结论更能反应作物真实状态下的农艺性状&#xff0c;研究人员会尽可能的纳入较多的指标&#xff0c;但是&#xff0c;随着而来的是铺天盖地的数据让人难以下手&a…

PCA主成分分析原理与基础知识

笔记的主要内容是 PCA&#xff08;主成分分析&#xff09; 原理和基本知识&#xff0c;相关数学原理和核心概念。 什么是PCA分析&#xff1f; 主成分分析(PCA, principal component analysis)是一种数学降维方法,利用正交变换把一系列可能线性相关的变量转换为一组线性不相关的…

【机器学习】五、主成分分析原理

主成分分析(Principal Component Analysis)&#xff0c;简称PCA&#xff0c;是机器学习中一种常用来进行数据降维操作的方法。PCA通过矩阵变换&#xff0c;将高维数据变换到低维。本文主要分享PCA的数学原理&#xff0c;帮助大家了解PCA降维的理论基础。码字不易&#xff0c;喜…

主成分分析原理详解

本博客前三节参考https://blog.csdn.net/program_developer/article/details/80632779 至于协方差矩阵的公式推导参考 http://blog.codinglabs.org/articles/pca-tutorial.html 1、背景 在许多领域的研究与应用中&#xff0c;通常需要对含有多个变量的数据进行观测&#xff0…

主成分分析原理及Python实现

主成分分析&#xff08;Principal Components Analysis, PCA&#xff09;是一种常用的数据分析手段&#xff0c;是图像处理过程中常用到的降维方法。对于一组不同维度之间可能存在线性相关关系的数据&#xff0c;PCA能够把这组数据通过正交变换变成各个维度之间线性无关的数据&…

主成分分析原理以及SPSS和Python实现

目录 [ 0 ] 一句话定义[ 1 ] 使用目的和使用条件[ 2 ] 基本思想和直观理解[ 3 ] 具体计算步骤[ 4 ] 求各个成分的累计贡献率[ 5 ] 主成分分析的SPSS和Python实现SPSS实现相关设置结果分析 Python实现 [ 6 ] 总结 [ 0 ] 一句话定义 主成分分析(principal component analysis,PCA…

主成分分析原理

文章目录 一、主成分操作步骤二、spss里面的设置三、一些概念的解释 一、主成分操作步骤 1、为消除量纲的影响&#xff0c;先对数据进行标准化处理&#xff1b; 2、计算相关系数&#xff1a;一般认为各变量之间的相关系数大于0.3较好&#xff1b; 3、KMO检验和Barlett&#…

PCA: Principal Components Analysis,主成分分析法原理

PCA&#xff1a; Principal Components Analysis&#xff0c;主成分分析法原理 1、引入 PCA算法是无监督学习专门用来对高维数据进行降维而设计&#xff0c;通过将高维数据降维后得到的低维数能加快模型的训练速度&#xff0c;并且低维度的特征具有更好的可视化性质。另外&…

【数据处理方法】主成分分析(PCA)原理分析

笔者最近在学习的过程需要使用一些数据分析和处理的方法&#xff0c;而PCA就是其中常用的一种手段。但在自学的过程中&#xff0c;由于笔者水平有限&#xff0c;对一些博客中的公式不是能很好理解&#xff08;数学不好的辛酸Ծ‸Ծ&#xff09;&#xff0c;导致总是对整个方法的…

主成分分析法原理简单理解及技术实现

主成分分析法 主成分分析是利用降维的思想,在损失很少信息的前提下,把多个指标转化为几个综合指标的多元统计方法。通常把转化生成的综合指标称为主成分,其中每个主成分都是原始变量的线性组合,且各个主成分之间互不相关,使得主成分比原始变量具有某些更优越的性能…

win10+tensorflow1.14+cuda10安装踩坑

tensorflow1.14安装记录 需要python3.7&#xff0c;cuda10&#xff0c;cudnn7.6&#xff0c;visual studio 2017 可以用visual studio 2017 community 版本 &#xff0c;win10 sdk要加上&#xff0c;build tools要装上 cuda10.0安装不上报错visual studio integration faile…

Win10 下载torch以及CUDA配置

下载torch以及CUDA配置 下载torch和torchvision安装torch和torchvision安装CUDA检查是否成功 下载torch和torchvision 进入该网站&#xff0c;下载对应的torch和torchvision版本。 https://download.pytorch.org/whl/torch_stable.html以该图为例&#xff0c;cu102代表CUDA10…

Ubuntu 18.10 下安装CUDA10/CUDA10.1

GPU&#xff1a;GeForce840M 显卡驱动&#xff1a;预装&#xff0c;版本390 笔记本 1.降级gcc 使用gcc5 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install gcc-5 g-5 sudo update-alternatives --install /usr/bin/gcc gcc /us…

查看CUDA和cuDNN的版本号 | Win10安装CUDA10和cuDNN

文章目录 &#x1f514; Linux下查看CUDA和cuDNN的版本&#x1f499; Win10安装CUDA10和cuDNN&#xff0c;感谢原作者&#xff0c;链接如下&#x1f680;&#x1f680; 文末专栏推荐部分 &#x1f680;&#x1f680;❤️ 当生成器和判别器趋于平衡&#xff0c;那便是爱情 &…

【NVIDIA】Win10 + CUDA10 + cuDNN 安装教程(转载)

目录 一、前言 二、官方安装教程及软件包 1、官方教程 2、CUDA Toolkit 10.0 Download 3、cuDNN Download 三、Win10安装CUDA10及cuDNN 1、CUDA安装 2、cuDNN配置 3、万事大吉&#xff0c;只欠重启 四、一些后事 问题1&#xff1a;安装过程中电脑自动重启。 问题2&a…