主成分分析原理详解

article/2025/9/11 1:13:10

本博客前三节参考https://blog.csdn.net/program_developer/article/details/80632779

至于协方差矩阵的公式推导参考

http://blog.codinglabs.org/articles/pca-tutorial.html

 

1、背景

           在许多领域的研究与应用中,通常需要对含有多个变量的数据进行观测,收集大量数据后进行分析寻找规律。多变量大数据集无疑会为研究和应用提供丰富的信息,但是也在一定程度上增加了数据采集的工作量。更重要的是在很多情形下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性。如果分别对每个指标进行分析,分析往往是孤立的,不能完全利用数据中的信息,因此盲目减少指标会损失很多有用的信息,从而产生错误的结论。

 

           因此需要找到一种合理的方法,在减少需要分析的指标同时,尽量减少原指标包含信息的损失,以达到对所收集数据进行全面分析的目的。由于各变量之间存在一定的相关关系,因此可以考虑将关系紧密的变量变成尽可能少的新变量,使这些新变量是两两不相关的,那么就可以用较少的综合指标分别代表存在于各个变量中的各类信息。主成分分析与因子分析就属于这类降维算法。

2、数据降维

降维就是一种对高维度特征数据预处理方法。降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为应用非常广泛的数据预处理方法。

 

降维具有如下一些优点:

 

1) 使得数据集更易使用。

2) 降低算法的计算开销。

3) 去除噪声。

4) 使得结果容易理解。

降维的算法有很多,比如奇异值分解(SVD)、主成分分析(PCA)、因子分析(FA)、独立成分分析(ICA)。

 

3.PC原理讲解

3.1 PCA的概念

PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。

 

思考:我们如何得到这些包含最大差异性的主成分方向呢?

 

答案:事实上,通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值特征向量,选择特征值最大(即方差最大)的k个特征所对应的特征向量组成的矩阵。这样就可以将数据矩阵转换到新的空间当中,实现数据特征的降维。

 

由于得到协方差矩阵的特征值特征向量有两种方法:特征值分解协方差矩阵、奇异值分解协方差矩阵,所以PCA算法有两种实现方法:基于特征值分解协方差矩阵实现PCA算法、基于SVD分解协方差矩阵实现PCA算法。本文主要讲解基于特征值分解协方差矩阵实现PCA算法。

 

3.2协方差矩阵相关概念

 

样本均值:

样本方差:

样本X和样本Y的协方差:

 

由上面的公式,我们可以得到以下结论:

 

(1) 方差的计算公式是针对一维特征,即针对同一特征不同样本的取值来进行计算得到;而协方差则必须要求至少满足二维特征;方差是协方差的特殊情况。

 

(2) 方差和协方差的除数是n-1,这是为了得到方差和协方差的无偏估计。

 

协方差为正时,说明X和Y是正相关关系;协方差为负时,说明X和Y是负相关关系;协方差为0时,说明X和Y是相互独立。Cov(X,X)就是X的方差。当样本是n维数据时,它们的协方差实际上是协方差矩阵(对称方阵)。例如,对于3维数据(x,y,z),计算它的协方差就是:

4、算法的基本原理:

假设   表示一个特征向量,其中 【注:xi可能也是一个列向量】

4.1.计算均值向量 

4.2.计算协方差矩阵 S

4.3.计算S的特征值   和对应的特征向量,根据线性代数知识我们知道有公式:

4.4. 对特征值按照大小进行递减排序,特征向量的顺序和特征值是一致的。假设我们只需要保留K个维数(K<n),则我们会选取特征值最大的前K个特征向量,用这K个特征向量,来表示图像,这K个向量就是图像K个主成分分量。

对于被观测的向量,它的K个主成分量可以通过下面公式计算得到:

,其中

因为W是正交矩阵,所有有

 


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

相关文章

主成分分析原理及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…

英伟达CUDA 10终于开放下载了

栗子 发自 凹非寺量子位 出品 | 公众号 QbitAI 英伟达的CUDA 10工具包&#xff0c;终于可以下载了。 与9字头的前辈相比&#xff0c;10.0是第一次为图灵GPU定制的版本。 英伟达新近发布的GeForce RTX 20系列和Quadro RTX系列显卡&#xff0c;以及新一代GPU Tesla T4&#xff0c…

win10+cuda10+tensorflow-gpu最新安装教程

win10cuda10tensorflow-gpu最新安装教程 背景简介安装包准备安装过程总结 背景简介 作为刚入门深度学习的小白&#xff0c;新购置了一台机子&#xff0c;准备兴高采烈的开始用GPU跑深度学习算法&#xff0c;百度了一通win10下安装cuda和tensorflow-gpu的教程&#xff0c;十分繁…

30 系列显卡是新一代架构,新驱动不支持 cuda 9 以及 cuda 10,所以必须安装 cuda 11

30 系列显卡是新一代架构&#xff0c;新驱动不支持 cuda 9 以及 cuda 10&#xff0c;所以必须安装 cuda 11 最近在训练一个深度学习模型&#xff0c;要求的环境是python3.7 torch1.3, 而torch1.3支持的cuda版本为9.2或10.2 但是我所用的显卡为3090, 所以网上的解决办法都试遍…

在CUDA10的环境下安装支持gpu的tensorflow版本(亲测有效)

由于英伟达官方宣称CUDA10有着巨大的性能提升&#xff0c;我便迫不及待的想尝试用它来训练深度学习模型&#xff0c;然而现在Tensorflow的最新官方GPU版本1.12并不支持在CUDA10下的模型训练&#xff0c;因此便翻墙到国外论坛找材料&#xff0c;最终找到了可以完美适配CUDA10的t…

Ubuntu18 Cuda10升级Cuda11+Cudnn8+TensorRT7.1+Opencv3

文章目录 0 前沿1 显卡驱动和CUDA安装2 TensorRT3 Opencv3 0 前沿 目前TensorRT已经升级到TensorRT7.2版本&#xff0c;开始需要Cuda11cudnn8支持&#xff08;7.1版本也有10.2版本&#xff09;&#xff0c;这里简单记录以下安装流程及个别bug处理 1 显卡驱动和CUDA安装 下载…

【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&…

cuda9升级cuda10方法记录 ubuntu1604

由于最近的tensorflow2.0和pytorch都纷纷需要cuda10的支持&#xff0c;即使是使用conda安装&#xff0c;也要跟新driver 到410以上&#xff0c;以前的384版本的driver也不行了。索性就一起升级了,其中遇到很多坑&#xff0c;记录一下&#xff0c;希望能帮助大家&#xff0c;不过…

Win10 安装CUDA10(包括各种版本的CUDA和cuDNN下载链接)

我用的是Tensorflow1.15和keras2.3.1.环境是用Anaconda管理的 每个版本的Tensorflow-GPU与CUDA的关系。 https://tensorflow.google.cn/install/source_windows?hlen#gpu 首先是各种版本的DUDA的下载链接 https://developer.nvidia.com/cuda-toolkit-archive 网页打开之后是…

(三)cuda8和cuda10的切换

编辑bashrc文件 sudo gedit ~/.bashrcsource ~/.bashrc 第一种方法&#xff1a;把路径中的两个cuda-8.0 替换为cuda-10.0 然后source 第二种方法&#xff1a; 都改为cuda 然后source export PATH/usr/local/cuda/bin${PATH::${PATH}} export LD_LIBRARY_PATH/usr/local/…