1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > pca主成分分析_降维:主成分分析(PCA)

pca主成分分析_降维:主成分分析(PCA)

时间:2024-03-04 06:30:47

相关推荐

pca主成分分析_降维:主成分分析(PCA)

用于降维的PCA算法的设计原理及其从头开始在Python中的实现

介绍

借助高性能CPU和GPU的可用性,几乎可以使用机器学习和深度学习模型解决所有回归,分类,聚类和其他相关问题。但是,在开发此类模型时,仍有许多部分会导致性能瓶颈。数据集中的大量特征是影响训练时间以及机器学习模型准确性的主要因素之一。

维数的诅咒

在机器学习中,“维数”仅指数据集中特征(即输入变量)的数量。

尽管如果我们添加其他特征/维度,任何机器学习模型的性能都会提高,但在某些时候,进一步的增加会导致性能下降,即特征的数量与数据集中观测值的数量相当大时,会出现几种线性算法努力训练有效的模型。这被称为“维数诅咒”。

降维是一组技术,用于研究如何缩小数据大小,同时保留最重要的信息并进一步消除维数的诅咒。它在分类和聚类问题的执行中起着重要作用。

该图说明了将3-D特征空间划分为两个1-D特征空间,然后,如果发现存在关联,则可以进一步减少特征数量。

用于降维的各种技术包括:

主成分分析(PCA)线性判别分析(LDA)广义判别分析(GDA)多维缩放(MDS)局部线性嵌入(LLE)等度量映射(IsoMap)自动编码器(Autoencoders)

本文重点介绍PCA的设计原理及其在python中的实现。

主成分分析(PCA)

主成分分析(PCA)是最流行的线性降维算法之一。这是一种基于投影的方法,通过将数据投影到一组正交(垂直)轴上来转换数据。

“ PCA的工作条件是,将高维空间中的数据映射到低维空间中的数据,而低维空间中的数据的方差或散布应该最大。”

在下图中,数据在二维空间中沿红线具有最大方差。

让我们对PCA进行直观的了解。假设您希望根据食物的营养含量来区分它们。哪个变量是区分食物的好选择?如果您选择的变量从一种食品到另一种食品变化很大,则可以正确分离它们。如果所选变量在食品中的数量几乎相同,则您的工作将更加困难。如果数据没有一个变量可以正确隔离食品怎么办?我们可以通过线性组合原始变量来创建人工变量New_Var = 4*Var1 - 4*Var2 + 5*Var3。这实际上是PCA所做的,它找到了原始变量的最佳线性组合,因此沿新变量的方差或散布最大。

假设我们必须将数据点的二维表示转换为一维表示。因此,我们将尝试找到一条直线并在其上投影数据点。(一条直线是一维的),选择直线有很多可能性。

数据集

PCA运动

红色线将是我们的新维度。如果看到红线(连接蓝点在红色线上的投影),即每个数据点与直线的垂直距离就是投影误差。所有数据点的误差之和将成为总投影误差。我们的新数据点将是那些原始蓝色数据点的投影(红色点)。如我们所见,通过将它们投影到一维空间(即一条直线)上,我们已将二维数据点转换为一维数据点。那条红色的直线称为主轴。由于我们要投影到一个维度,因此只有一个主轴。我们应用相同的过程从残差中找到下一个主轴。除了是最大方差的方向外,下一个主轴必须与其他主轴正交(垂直或互不相关)。

一旦获得所有主轴,则将数据集投影到这些轴上。投影或转换后的数据集中的列称为主成分

主成分本质上是原始变量的线性组合,该组合中的权重向量实际上是找到的特征向量,而特征向量又满足最小二乘原理。

幸运的是,由于有了线性代数,我们不必为PCA花费太多精力。线性代数的特征值分解和奇异值分解(SVD)是PCA中用于减少维数的两个主要过程。

特征值分解

矩阵分解是将矩阵简化为其组成部分以简化一系列更为复杂的操作的过程。特征值分解是最常用的矩阵分解方法,它涉及将平方矩阵(n * n)分解为一组特征向量和特征值。

特征向量是单位向量,这意味着它们的长度或大小等于1.0。

特征值是应用于特征向量的系数,它们赋予向量其长度或大小。例如,负特征值可以反转特征向量的方向,作为缩放它的一部分。

从数学上讲,向量是A满足以下等式的任何n * n平方矩阵的特征向量:

Av =v

这称为特征值方程,其中A是我们要分解的n * n个父方矩阵,v是矩阵的特征向量, 表示特征值标量。

在简单的话,一个向量的线性变换vA具有由因子缩放向量的相同的效果。注意,对于具有m≠n的m*n非正方形矩阵AAv为m- D向量,v是n-D向量,即,未定义特征值和特征向量。

特征值分解

将这些组成矩阵相乘在一起,或将这些矩阵表示的转换组合在一起,将得到原始矩阵。

分解操作不会导致矩阵压缩。相反,它将其分解为组成部分,以使矩阵上的某些操作更易于执行。与其他矩阵分解方法一样,特征分解被用作一个成分来简化其他更复杂的矩阵运算的计算。

奇异值分解(SVD)

奇异值分解是一种将矩阵分解为其他三个矩阵的方法。

SVD

数学奇异值分解由下式给出:

A是一个m × n矩阵U是一个m × n 正交矩阵S是一个n × n 对角矩阵V是n × n正交矩阵

如图所示,SVD生成三个矩阵U、S和V。U和V正交矩阵,其列分别表示AAT和ATA的特征向量。矩阵S是对角矩阵,对角线值称为奇异值。每个奇异值都是相应特征值的平方根。

降维如何适合这些数学方程式?

一旦计算出特征值和特征向量,就选择重要的特征向量来形成一组主轴。

特征向量的选择

特征向量的重要性由相应特征值解释的总方差的百分比来衡量。假设V1&V2是两个特征向量,分别具有40%&10%的总方差及其方向。如果要求从这两个特征向量中选择一个,我们的选择将是V1,因为它为我们提供了有关数据的更多信息。所有特征向量根据其特征值以降序排列。现在,我们必须确定要保留多少个特征向量,为此,我们需要讨论两种解释总方差陡坡图方法。

总方差说明

总解释方差用于衡量模型与实际数据之间的差异。它是模型总方差的一部分,由存在的因素来解释。

假设我们有一个n特征值向量(e0,...,en)降序排列。取每个索引的特征值的累积和,直到该和大于95%总方差则拒绝该索引之后的所有特征值和特征向量。

陡坡图

从陡坡图中,我们可以在添加主成分时读出所解释数据的方差百分比。

它在y轴上显示特征值,在x轴上显示因子数。它始终显示向下的曲线。曲线的斜率趋于平稳的点(“肘部”)表示因素的数量。

陡坡图

例如,在上方的陡坡图中,急剧弯曲(弯头)为4。因此,主轴数应为4。

下面的示例定义一个小的3×2矩阵,将数据居中放置在矩阵中,计算中心数据的协方差矩阵,然后对协方差矩阵进行特征值分解。特征向量和特征值被当作主成分和奇异值,最终用于将原始数据投影到新轴上。

输出:原始矩阵:[[5 6] [8 10] [12 18]] 协方差矩阵:[[12.33333333 21.33333333] [21.33333333 37.33333333]] 特征向量:[[-0.86762506 -0.49721902] [0.49721902 -0.86762506]] 特征值:[0.10761573 49.55905094] 预计的数据:[[0.24024879 6.28473039] [-0.37375033 1.32257309] [0.13350154 -7.60730348]]

结论

尽管PCA具有所有功效,但是如果变量数量很大,则很难解释主成分。当变量之间具有线性关系时,PCA最合适。而且,PCA容易受到较大异常值的影响。

PCA是一种古老的方法,并且已经进行了充分的研究。基本PCA有许多扩展,可以解决其缺点,例如robust PCA,kernel PCA,incremental PCA。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。