主成分分析(PCA)

简介: 主成分分析(PCA)

方差

方差是指一组数据中的各个数减去这组数据的平均数的平方和的平均数。

例:(1,2,3,4,5)

平均数=3

各个数与平均数差的平方和=10

方差=2

方差用于测算数值型数据的离散程度。


协方差

协方差用于度量各个维度偏离其均值的程度。

协方差的计算方法(以二维为例子):

cov(X,Y)=E(x−x¯)(y−y¯)cov(X,Y)=E(x−x¯)(y−y¯)

其中x¯x¯,y¯y¯表示均值。

协方差的结果有三种解释方式

当cov(X,Y)>0时,表明X和Y正相关;

image.png

当cov(X,Y)<0时,表明X和Y负相关;

image.png

当cov(X,Y)=0时,表明X和Y不相关。

image.png

协方差为0,两个随机变量不一定相互独立,而两个随机变量相互独立,协方差一定为0。


维度灾难

简单的说就是变量的个数多,如果变量个数增加,随之需要估计的参数个数也在增加


主成分分析(PCA)

PCA是一种降维方法,常用于对高维数据集作降维,它会将一个大的变量集合转化为更少的变量集合,同时保留大的变量集合中的大部分信息。


主成分分析的几个步骤如下:


一、标准化

为了让每一个维度对分析的结果造成同样的影响,我们需要对连续的初始变量的范围作标准化。


具体一点说就是因为我们后续的结果对数据的方差十分敏感,取值范围较大的维度会比相对较小的维度造成更大的影响(例如一个在1-100之间变化的维度对结果的影响,比一个0-1的更大),会导致一个偏差较大的结果,所以,将数据转化到相似的范围可以预防这个问题。


数据标准化的方法如下

image.png

二、计算协方差矩阵

这一步是为了理解数据集中的变量是如何从平均值变化过来的,同时可以查看不同的特征之间又有什么关系,此时我们要计算协方差矩阵。


协方差矩阵是一个P*P的对称矩阵(P是维度的数量)它涵盖了数据集中所有元组对初始值的协方差,例如一个拥有三个变量x,y,z和三个维度的数据集,协方差矩阵将是一个3*3的矩阵(协方差的计算方法及含义见上文):

image.png

由于变量与自身的协方差等于他的方差,在主对角线上我们已将计算出了各个变量初始值的方差。协方差矩阵的每一个元组关于主对角线对称,这意味着上三角部分和下三角部分是相等的。


三、计算出主成分

主成分是什么


主成分是一个新的变量,他是初始变量的线性组合。新的变量之间是不相关的,第一个主成分中包含了初始变量的大部分信息,是初始变量的压缩和提取。


例如:虽然在一个 10 维的数据集中我们算出了 10 个主成分,但大部分的信息都会被压缩在第一主成分中,剩下的大部分信息又被压缩到第二主成分中,以此类推,我们得到了下面这张图:

image.png

从理论方面来说,主成分代表着蕴含 最大方差的方向。对于主成分来说,变量的方差越大,空间中点就越分散,空间中的点越分散,那么它包含的信息就越多。简单的讲,主成分就是一条更好的阐述数据信息的新坐标轴,因此我们更容易从中观测到差异。


怎么计算主成分


有多少个变量就有多少个主成分,对于第一主成分来说沿着对应的坐标轴变化意味着有最大的方差,例如用下列的散点图表示:

你能直接猜测出主成分应该是沿着哪一个方向吗,大致是图中紫色线的方向。(因为它穿过了原点,而且数据映射在这条线上后,有着最大方差(各点与原点距离的均方))


第二个主成分也是这样计算的,它与第一主成分不相关(即为互相垂直)表示了下一个最大方差的方向。


重复上面的步骤,直到我们从原始数据中计算出所有的主成分。


特征值和特征向量

特征值和特征向量通常成对出现,每一个特征向量对应一个特征值,他们各自的数量相等,等于原始数据的维度,例如有三个变量就会有三个特征向量与三个特征值。


协方差矩阵的特征向量其实就是一些列的坐标轴,将数据映射到这些坐标轴之后,我们将会得到最大的方差(这意味着更多的信息),他们就是我们要求的主成分,特征值其实就是特征向量的系数,它代表了每个特征向量包含了多少信息量。


四、主成分向量

主成分向量仅仅是一个矩阵,里面有那些我们决定保留的特征向量。这是数据降维的第一步,我们只是要在n个变量中保留p个特征向量(成分)我们把数据映射到新的坐标轴上时,最后数据将只有p个维度。


五、将数据映射到新的主成分坐标系中

我们将使用那些从协方差矩阵中算出来的特征向量形成主成分矩阵,并将原始数据映射到主成分矩阵对应的坐标轴上 —— 这就叫做主成分分析。具体的做法便是用原数据矩阵的转置乘以主成分矩阵的转置。


PCA的步骤

1)将原始数据按列组成n行m列矩阵X

2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值

3)求出协方差矩阵

4)求出协方差矩阵的特征值及对应的特征向量

5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P

6)Y=PX即为降维到k维后的数据

相关文章
|
开发工具 开发者 git
2023 Visual Studio Code 插件推荐:18 个提高开发效率的常用插件
Visual Studio Code (简称VSCode) 是一款强大的开源代码编辑器,它拥有众多功能强大的扩展插件,使得开发者可以根据自己的需求来定制编辑器的功能和外观。在本文中,我们将分享一些非常实用的 VSCode 插件,这些插件将提高您的开发效率,使编码变得更加愉快。
1447 2
|
机器学习/深度学习 人工智能 网络协议
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
552 4
|
算法 Ubuntu Linux
Linux Qt cannot find -lGL错误完美解决方案(亲测有效)
Linux Qt cannot find -lGL错误完美解决方案(亲测有效)
1740 1
|
API 开发者
微信native支付对接案例详解
本文详细介绍了微信Native支付的对接流程,包括效果展示、产品介绍、接入前准备、开发指引、API列表、支付通知等,并强调了只有通过微信认证的服务号才能对接微信支付。每年需支付300元认证费用。
577 3
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】PCA 主成分分析算法过程及原理讲解
主成分分析(PCA)的原理和算法过程。
1578 0
|
TensorFlow 算法框架/工具 Python
【Mac 系统】解决VSCode用Conda成功安装TensorFlow但程序报错显示红色波浪线Unable to import ‘tensorflow‘ pylint(import-error)
本文解决在Mac系统上使用VSCode时遇到的TensorFlow无法导入问题,原因是Python解析器未正确设置为Conda环境下的版本。通过在VSCode左下角选择正确的Python解析器,即可解决import TensorFlow时报错和显示红色波浪线的问题。
924 9
|
机器学习/深度学习 算法 数据挖掘
数据分析案例-基于PCA主成分分析法对葡萄酒数据进行分析
数据分析案例-基于PCA主成分分析法对葡萄酒数据进行分析
1046 0
|
机器学习/深度学习 数据可视化 Swift
Florence-2,小模型推进视觉任务的统一表征
Florence-2是一种新颖的视觉基础模型,具有统一的、基于提示的表示,可用于各种计算机视觉和视觉语言任务。
|
人工智能 自然语言处理 搜索推荐
AI之HCI:人机交互Human-Computer Interaction的简介、发展历史、案例应用之详细攻略(一)
AI之HCI:人机交互Human-Computer Interaction的简介、发展历史、案例应用之详细攻略(二)
AI之HCI:人机交互Human-Computer Interaction的简介、发展历史、案例应用之详细攻略(一)
|
机器学习/深度学习 算法 数据可视化
分类算法入门:以鸢尾花数据集为例(下)
分类算法入门:以鸢尾花数据集为例(下)
1358 2

热门文章

最新文章