‘壹’ 数据降维是什么意思
数据降维是将数据进行降维处理的意思。
降维,通过单幅图像数据的高维化,将单幅图像转化为高维空间中的数据集合,对其进行非线性降维。寻求其高维数据流形本征结构的一维表示向量,将其作为图像数据的特征表达向量。降维处理是将高维数据化为低维度数据的操作。一般来说,化学过程大都是一个多变量的变化过程,一般的化学数据也都是多变量数据。
(1)常用的降维的方法扩展阅读:
数据降维运用:
通过单幅图像数据的高维化,将单幅图像转化为高维空间中的数据集合,对其进行非线性降维,寻求其高维数据流形本征结构的一维表示向量,将其作为图像数据的特征表达向量。从而将高维图像识别问题转化为特征表达向量的识别问题,大大降低了计算的复杂程度,减少了冗余信息所造成的识别误差,提高了识别的精度。
通过指纹图像的实例说明,将非线性降维方法(如Laplacian Eigenmap方法)应用于图像数据识别问题,在实际中是可行的,在计算上是简单的,可大大改善常用方法(如K-近邻方法)的效能,获得更好的识别效果。此外,该方法对于图像数据是否配准是不敏感的,可对不同大小的图像进行识别,这大大简化了识别的过程。
‘贰’ 三种常用降维方法的思想总结
LDA降维和PCA的不同是LDA是有监督的降维,其原理是将特征映射到低维上,原始数据的类别也能清晰的反应在低维的数据上,也就是低维的数据也可以用来判别分类。
我们先看看二维的情况,我们希望找到一个向量,使得数据点映射到这个向量上后,两个类间的距离尽可能,两个类内的样本的距离尽可能小。这样就得到了一个目标函数,分子是投影后两个类间均值的差的平方,我们希望这个值尽可能大,分母是投影后的类的散列值的和,是少除以样本数量的方差,进一步化简分子得到投影向量的转置乘以投影前的类均值差向量的外积再乘以投影向量,分母是投影向量的转置乘以投影前的类间散列矩阵的和再乘以投影向量,此时我们需要求使得目标函数最小的投影向量,由于投影向量扩大或缩小多少倍,目标函数值不变,那么我们可以让分母的模长为1,此时可以使用拉格朗日乘子法,最后求得:当类间散列矩阵的和存在逆矩阵时,投影向量就是类间散列矩阵的和的逆矩阵和投影前的类均值差向量的外积的特征向量。进一步的,我们化简等式左边得到类间散列矩阵的逆矩阵乘以投影前类间均值向量的差乘以一个常数,那么由于投影向量可以放缩常数倍不影响结果,我们约掉两边的常数,得到投影向量等于投影前类均值向量的差左乘散列矩阵的逆矩阵,这就是fisher提出的判别分析
PCA是将原始样本投影到低维的空间上,使得样本的绝大部分信息得以保留,并且特征的维度降低使得模型不易过拟合。思想是:对于原始空间中的m维向量而言,找到k个投影向量使得这m维向量投影到这k个投影向量上的方差最大,保留原始的样本信息最多,我们首先可以看看找第一个向量,使得在这个方向上的投影方差最大。步骤如下:
1.在投影之前,我们对数据做中心化处理,使得原始数据均值为0
2.计算中心化后的样本的协方差矩阵,这是个m*m维的矩阵,m表示原始特征的数目。第i行第j列的元素表示数据中第i列和第j列的协方差
3.计算协方差矩阵的特征值和特征向量,特征向量是单位向量,模长为1,
4.选择带有最大特征值的k个特征向量
5.计算k个最大特征值对应的k个特征,对于每一个特征,都是用原数据矩阵(n行m列)乘以对应的特征向量(m行1列,m是原始变量的数目):因此最后的特征有n行一列,表示每个样本一个特征值
对数据进行中心化和归一化,然后将其投影到某个向量上,计算这一维上的数据点的方差,经过化简就是投影向量的转置乘以原始数据的协方差矩阵再乘以投影向量,前提是这个投影向量是单位向量,然后我们令这个方差λ最大,得到最大方差时对应的那个投影向量就是第一个主成分,那么这个向量如何求解呢?因为这个投影向量是单位向量,那么等式两边左乘以投影向量,得到了λu=Σu,则说明这个投影向量u的方向其实就是这个协方差矩阵的特征向量,那么最大方差λ对应的就是Σ的最大特征值对应的特征向量的方向,就是第一主成分的方向,第二大特征值对应的特征向量就是第二主成分的方向
数据的中心化并不是必要的,但是却方便了表示和计算,PCA是计算样本协方差矩阵的,因此中心化或者中心化并不改变特征向量的方向或者特征值的大小,因此即使不中心化,PCA一样的起作用,然而如果你中心化数据了,那么样本的协方差矩阵的数学表示就会得以简化,如果你的数据点就是你的数据矩阵的列,那么协方差矩阵就表示为xx',多么简便啊!技术上,PCA是包括数据中心化这一步的,但是那只是为了计算协方差矩阵,然后对协方差矩阵做特征值分解,得到各个特征值和特征向量
数据的归一化也不是必须的,如果某些变量有很大或者很小的方差,那么PCA将会倾向于这些大的方差的变量,例如如果你增加了一个变量的方差,也许这个变量对第一个主成分会从很小的影响到起主导性的作用,因此如果你想要PCA独立于这样的变化,归一化可以做到,当然,如果你的变量在那个规模上很重要,那么你可以不归一化,归一化在PCA中是很重要的,因为PCA是一个方差最大化的实验,它就是投影你的原始数据到方差最大化的方向上
(1)如果原始的特征是高度相关的,PCA的结果是不稳定的;
(2)新的特征是原始特征的线性组合,所以缺乏解释性。
(3)原始数据不一定要是多元高斯分布的,除非你使用这个技术来预测性的建模去计算置信区间
矩阵乘法的作用是线性变换,对一个向量乘以一个矩阵,可以使得这个向量发生伸缩、切变和旋转。我们都知道对称矩阵的特征向量是相互正交的,给定一个对称矩阵M,可以找到一些这样的正交向量v,使得Mv=λv,即这个矩阵M对向量做了拉伸变换,λ是拉伸的倍数。那么对于普通的矩阵呢,才能让一个原来就是相互垂直的网格平面(orthogonal grid), 线性变换成另外一个网格平面同样垂直呢?
对于一个正交矩阵,其对应的变换叫做正交变换,这个变换的作用是不改变向量的尺寸和向量间的夹角。正交变换中的旋转变换只是将变换向量用另一组正交基表示,在这个过程中并没有对向量做拉伸,也不改变向量的空间位置,只是将原坐标系旋转得到新的坐标系,那么这个旋转矩阵怎么求呢?对于二维空间中的某个向量而言,其经过旋转变换的结果就是从用一组坐标系表示到用另外一组坐标系表示,新的坐标系下的坐标各个分量相当于是原坐标系下的坐标的各个分量在新的坐标系的两个正交基下的投影,或者是相当于将原来的二维向量经过旋转到了新的坐标,因此相当于对向量左乘一个旋转矩阵,求出这个矩阵就是旋转变换的矩阵。刚刚说正交变换不改变向量的空间位置是绝对的,但是坐标是相对的,从原来的坐标系的基向量位置看这个二维向量,到从新的坐标系下看这个向量的坐标是变化的
矩阵乘以一个向量的结果仍是同维数的一个向量。因此,矩阵乘法对应了一个变换,把一个向量变成同维数的另一个向量。
对特定的向量,经过一种方阵变换,经过该变换后,向量的方向不变(或只是反向),而只是进行伸缩变化(伸缩值可以是负值,相当于向量的方向反向)?这就是相当于特征向量的定义
特征向量的几何含义是:特征向量通过方阵A变换只进行伸缩,而保持特征向量的方向不变。特征值表示的是这个特征到底有多重要,类似于权重,而特征向量在几何上就是一个点,从原点到该点的方向表示向量的方向。
一个变换(或者说矩阵)的特征向量就是这样一种向量,它经过这种特定的变换后保持方向不变,只是进行长度上的伸缩而已。特征值分解则是对旋转和缩放两种效应的归并。因为特征值分解中的A为方阵,显然是不存在投影效应的。或者说,我们找到了一组基(特征向量们),在这组基下,矩阵的作用效果仅仅是缩放。即矩阵A将一个向量从x这组基的空间旋转到x这组基的空间上,并在每个方向进行了缩放,由于前后两组基都是x,即没有进行旋转和投影。
详细分析特征值分解的过程:首先由于特征向量是正交的,特征向量组成的矩阵是正交方阵,两边同时右乘以这个方阵的逆矩阵,可以得到矩阵A的表达式为A=UΛU',两边同时右乘一个向量,相当于对这个向量左乘矩阵A,对向量做旋转或拉伸的变换。这个变换的过程分为三个映射:第一个是将向量x进行了旋转,它将x用新的坐标系来表示;第二个变换是拉伸变化,对x的每一维分量都进行了特征值大小的拉伸或缩小变换;第三个是对x做第一个变换的逆变换,因为是第一个矩阵的逆矩阵,也是旋转变换。在第二个拉伸变换中,可以看出,如果矩阵A不是满秩的,即有的特征值为0,那么这里相当于将x映射到了m维空间的子空间(m是矩阵A的维数m*m),此时矩阵A是一个正交投影矩阵,它将m维向量x映射到了它的列空间。如果A是二维的,那么可以在二维平面上可以找到一个矩形,使得这个矩形经过A变换后还是矩形
在特征值分解中,矩阵A要求是方阵,那么对于一个任意的矩阵m*n,能否找到一组正交基使得经过它变换后还是正交基?这就是SVD的精髓所在
A=UΣU',我们来分析矩阵A的作用: 首先是旋转 ,U的列向量是一组标准正交基,V也是,这表示我们找到了两组基。A的作用是将一个向量从V这组正交基向量空间旋转到U这组正交基向量空间; 其次是缩放 ,当V对向量x做了旋转以后,相当于把向量x旋转使其用V这组正交基表示坐标,然后Σ对向量x的每个分量做了缩放,缩放的程度就是Σ的主对角线上的元素,是奇异值; 最后是投影 ,如果U的维数小于V的维数,那么这个过程还包含了投影
现在的目的是找一组正交基,使得经过A矩阵变换后仍然是一组正交基,假设已经找到这样一组正交基,那么对这组正交基经过A变换,如何使其仍然是一组正交基呢?只要使得原来的正交基是A'A的特征向量即可,|AVi|就是A'A的特征值的开方,也就是奇异值,然后我们求AVi的单位向量Ui,这些Ui也都是正交的,那么我们就找到了两组正交基使得从V这组正交基变换到U这组正交基,V称作右奇异向量,U称作左奇异向量,AVi的模是奇异值,我们对V1,...,Vk进行扩充Vk+1,..,Vn(Vk+1,..,Vn是Ax=0的零空间)使得V1,...,Vn是n维空间中的一组正交基,对U1,...,Uk进行扩充Uk+1,...,Um,使得U1,..,Um是m维空间中的一组正交基,这个k值是矩阵A的秩,当A是满秩时,分解后的矩阵相乘等于A,k越接近于n,则分解后的矩阵相乘结果越接近于A
对矩阵A的映射过程分析:如果在n维空间中找到一个超矩形,使其都落在A'A的特征向量的方向上,那么经过A变换后的形状仍为超矩形。Vi是A'A的特征向量,Ui是AA'的特征向量,也是AVi的单位向量,σ是A'A的特征值的开方,根据这个公式可以计算出矩阵A的奇异值分解矩阵
SVD是将一个相互垂直的网格变换到另外一个相互垂直的网格,按照上面的对于U,V的定位,可以实现用矩阵A将一个向量变换的过程,首先将向量x写成用V这组正交基表示的形式,然后用矩阵A左乘向量x,并带入AVi=σiUi,最后可以得到A的分解式,不是矩阵分解式,而是向量分解式,可以看出,如果有的奇异值很小甚至为0,那么本来有n项相加,就最后只有奇异值不为0的项相加了,假如有k项相加,那么k越接近于n最后A分解的结果越接近于A
(1)可以用来减少元素的存储
(2)可以用来降噪:去掉奇异值小的项,奇异值小的我们认为是含有样本重要信息很少,都是噪声,因此就把这些信息少的给去掉了
(3)数据分析:比如说我们有一些样本点用于建模,我们通过SVD将数据里面的奇异值小的都去掉了,最后得到了分解后的数据,用来做分析,更加准确
我们知道PCA里面,我们对变量进行降维实际上就相当于对数据矩阵Am*n右乘一个矩阵Pn*r,就得到了Am*r,表示每个样本的特征向量只有r维的,和这个矩阵P代表了r个列向量是数据矩阵A的协方差矩阵n*n的最大的r的特征值对应r个特征向量,都是n维的。和SVD相比,将SVD的表达式两边同时右乘一个Vn*r,这样等式右边就Vr*n和Vn*r相乘是单位向量,因为Vn*r是A'A的r个特征向量,是前r个不为0的特征值对应的特征向量,且由于A'A是对称的,那么各个特征向量之间是正交的,这样就得到了刚刚PCA推导出来的公式
同理,对数据矩阵Am*n左乘一个矩阵Pr*m,就得到了Ar*n,表示每个特征对应的样本只有r个,矩阵P代表了r个m维向量,每个向量是让每个特征对应的样本向量所要投影的方向向量。和SVD相比,将SVD两边同时左乘以一个矩阵Ur*m,就得到了Ar*n,即在行方向上进行了降维,等式右边是Ur*m和Um*r相乘为单位向量,因为Um*r是AA'的特征向量,是AA'的前r个不为0的特征值对应的特征向量,是m维的,由于AA'是对称矩阵,那么各个特征向量之间是正交的,这样就得到了刚刚PCA推导出来的公式
可以看出:
--PCA几乎可以说是对SVD的一个包装,如果我们实现了SVD,那也就实现了PCA了
--而且更好的地方是,有了SVD,我们就可以得到两个方向的PCA,如果我们对A’A进行特征值的分解,只能得到一个方向的PCA。
‘叁’ 机器学习中的降维算法和梯度下降法
机器学习中有很多算法都是十分经典的,比如说降维算法以及梯度下降法,这些方法都能够帮助大家解决很多问题,因此学习机器学习一定要掌握这些算法,而且这些算法都是比较受大家欢迎的。在这篇文章中我们就给大家重点介绍一下降维算法和梯度下降法。
降维算法
首先,来说一说降维算法,降维算法是一种无监督学习算法,其主要特征是将数据从高维降低到低维层次。在这里,维度其实表示的是数据的特征量的大小,当特征量大的话,那么就给计算机带来了很大的压力,所以我们可以通过降维计算,把维度高的特征量降到维度低的特征量,比如说从4维的数据压缩到2维。类似这样将数据从高维降低到低维有两个好处,第一就是利于表示,第二就是在计算上也能带来加速。
当然,有很多降维过程中减少的维度属于肉眼可视的层次,同时压缩也不会带来信息的损失。但是如果肉眼不可视,或者没有冗余的特征,这怎么办呢?其实这样的方式降维算法也能工作,不过这样会带来一些信息的损失。不过,降维算法可以从数学上证明,从高维压缩到的低维中最大程度地保留了数据的信息。所以说,降维算法还是有很多好处的。
那么降维算法的主要作用是什么呢?具体就是压缩数据与提升机器学习其他算法的效率。通过降维算法,可以将具有几千个特征的数据压缩至若干个特征。另外,降维算法的另一个好处是数据的可视化。这个优点一直别广泛应用。
梯度下降法
下面我们给大家介绍一下梯度下降法,所谓梯度下降法就是一个最优化算法,通常也称为最速下降法。最速下降法是求解无约束优化问题最简单和最古老的方法之一,虽然现在已经不具有实用性,但是许多有效算法都是以它为基础进行改进和修正而得到的。最速下降法是用负梯度方向为搜索方向的,最速下降法越接近目标值,步长越小,前进越慢。好比将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;当然解决问题的方法有很多,梯度下降只是其中一个,还有很多种方法。
在这篇文章中我们给大家介绍了关于机器算法中的降维算法以及梯度下降法,这两种方法是机器学习中十分常用的算法,降维算法和梯度下降法都是十分实用的,大家在进行学习机器学习的时候一定要好好学习这两种算法,希望这篇文章能够帮助大家理解这两种算法。
‘肆’ 降维是什么意思
意思如下:
维,在几何学上指空间独立而互相正交的方位数,通常的空间有三维,平面或曲面有二维,直线或曲线只有一维。
在商业领域,企业的竞争力可以体现在若干个维度的累加上,这些维度包括核心技术、成本优势、管理优势、人才优势、地域优势等多个方面。
降维就是把竞争对手拉入到一个更低维度的竞争模式中,让对手因为失去原有的竞争力而无所适从。
降维方法
降维方法分为线性和非线性降维,非线性降维又分为基于核函数和基于特征值的方法。
1、线性降维方法:PCA 、ICA LDA、LFA、LPP(LE的线性表示)
2、非线性降维方法:
(1)基于核函数的非线性降维方法:KPCA 、KICA、KDA
(2)基于特征值的非线性降维方法(流型学习):ISOMAP、LLE、LE、LPP、LTSA、MVU
方法介绍
1、LLE(Locally Linear Embedding)算法(局部线性嵌入):
每一个数据点都可以由其近邻点的线性加权组合构造得到。
算法的主要步骤分为三步:
(1)寻找每个样本点的k个近邻点(k是一个预先给定的值);
(2)由每个样本点的近邻点计算出该样本点的局部重建权值矩阵;
(3)由该样本点的局部重建权值矩阵和其近邻点计算出该样本点的输出值,定义一个误差函数。
‘伍’ 现有矩阵降维常用方法
降维方法分为线性核非线性降维,非线性降维又分为基于核函数和基于特征值的方法。
线性降维方法:PCA ICALDA LFA LPP(LE的线性表示)
于核函数的非线性降维方法:KPCA KICAKDA
基于特征值的非线性降维方法(流型学习):ISOMAP LLE LE LPP LTSA MVU
‘陆’ 数据分析 常用的降维方法之主成分分析
数据分析:常用的降维方法之主成分分析
主成分分析(Principal Component Analysis,PCA)也称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。
在统计学中,主成分分析是一种简化数据集的技术。它是一个线性变换。这个变换把数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。主成分分析经常用减少数据集的维数,同时保持数据集的对方差贡献最大的特征。这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面。但是,这也不是一定的,要视具体应用而定。
主成分分析的主要作用
1.主成分分析能降低所研究的数据空间的维数。即用研究m维的Y空间代替p维的X空间(m<p),而低维的Y空间代替 高维的x空间所损失的信息很少。即:使只有一个主成分Yl(即 m=1)时,这个Yl仍是使用全部X变量(p个)得到的。例如要计算Yl的均值也得使用全部x的均值。在所选的前m个主成分中,如果某个Xi的系数全部近似于零的话,就可以把这个Xi删除,这也是一种删除多余变量的方法。
2.有时可通过因子负荷aij的结论,弄清X变量间的某些关系。
3.多维数据的一种图形表示方法。我们知道当维数大于3时便不能画出几何图形,多元统计研究的问题大都多于3个变量。要把研究的问题用图形表示出来是不可能的。然而,经过主成分分析后,我们可以选取前两个主成分或其中某两个主成分,根据主成分的得分,画出n个样品在二维平面上的分布况,由图形可直观地看出各样品在主分量中的地位,进而还可以对样本进行分类处理,可以由图形发现远离大多数样本点的离群点。
4.由主成分分析法构造回归模型。即把各主成分作为新自变量代替原来自变量x做回归分析。
5.用主成分分析筛选回归变量。回归变量的选择有着重的实际意义,为了使模型本身易于做结构分析、控制和预报,好从原始变量所构成的子集合中选择最佳变量,构成最佳变量集合。用主成分分析筛选变量,可以用较少的计算量来选择量,获得选择最佳变量子集合的效果。
主成分分析法的计算步骤
1、原始指标数据的标准化采集p 维随机向量x = (x1,X2,...,Xp)T)n 个样品xi = (xi1,xi2,...,xip)T ,i=1,2,…,n,
n>p,构造样本阵,对样本阵元进行如下标准化变换:
Z_{ij}=frac{x_{ij}-bar{x}_j}{s_j},i=1,2,...,n; j=1,2,...,p
其中bar{x}_j=frac{sum^{n}_{i=1}x_{ij}}{n},s^2_j=frac{sum^n_{i=1}(x_{ij}-bar{x}_j)^2}{n-1},得标准化阵Z。
2、对标准化阵Z 求相关系数矩阵
R=left[r_{ij}right]_pxp=frac{Z^T Z}{n-1}
其中,r_{ij}=frac{sum z_{kj}cdot z_{kj}}{n-1},i,j=1,2,...,p 。
3、解样本相关矩阵R 的特征方程left|R-lambda I_pright|=0得p 个特征根,确定主成分
按frac{sum^m_{j=1}lambda_j}{sum^p_{j=1}lambda_j}ge 0.85 确定m 值,使信息的利用率达85%以上,对每个λj, j=1,2,...,m, 解方程组Rb = λjb得单位特征向量b^o_j 。
4、将标准化后的指标变量转换为主成分
U_{ij}=z^{T}_{i}b^{o}_{j},j=1,2,...,m
U1称为第一主成分,U2 称为第二主成分,…,Up 称为第p 主成分。
5 、对m 个主成分进行综合评价
对m 个主成分进行加权求和,即得最终评价值,权数为每个主成分的方差贡献率。
因子分析
因子分析法是指从研究指标相关矩阵内部的依赖关系出发,把一些信息重叠、具有错综复杂关系的变量归结为少数几个不相关的综合因子的一种多元统计分析方法。基本思想是:根据相关性大小把变量分组,使得同组内的变量之间相关性较高,但不同组的变量不相关或相关性较低,每组变量代表一个基本结构一即公共因子。
因子分析法的步骤
(1)对数据样本进行标准化处理。
(2)计算样本的相关矩阵R。
(3)求相关矩阵R的特征根和特征向量。
(4)根据系统要求的累积贡献率确定主因子的个数。
(5)计算因子载荷矩阵A。
(6)确定因子模型。
(7)根据上述计算结果,对系统进行分析。
以上是小编为大家分享的关于数据分析 常用的降维方法之主成分分析的相关内容,更多信息可以关注环球青藤分享更多干货
‘柒’ 常用降维方法之PCA 和 LDA
PCA本质上是将方差最大的方向作为主要特征,并且在各个正交方向上将数据“离相关”,也就是让它们在不同正交方向上没有相关性。而方差最大的那个维度是主成分。
PCA是比较常见的线性降维方法,通过线性投影将高维数据映射到低维数据中,所期望的是在投影的维度上,新特征自身的方差尽量大,方差越大特征越有效,尽量使产生的新特征间的相关性越小。
PCA算法的具体操作为对所有的样本进行中心化操作,计算样本的协方差矩阵,然后对协方差矩阵做特征值分解,取最大的n个特征值对应的特征向量构造投影矩阵。
再举个栗子:
下面举一个简单的例子,说明PCA的过程。
假设我们的数据集有10个二维数据(2.5,2.4), (0.5,0.7), (2.2,2.9), (1.9,2.2), (3.1,3.0), (2.3, 2.7), (2, 1.6), (1, 1.1), (1.5, 1.6), (1.1, 0.9),需要用PCA降到1维特征。
首先我们对样本中心化,这里样本的均值为(1.81, 1.91),所有的样本减去这个均值向量后,即中心化后的数据集为(0.69, 0.49), (-1.31, -1.21), (0.39, 0.99), (0.09, 0.29), (1.29, 1.09), (0.49, 0.79), (0.19, -0.31), (-0.81, -0.81), (-0.31, -0.31), (-0.71, -1.01)。
现在我们开始求样本的协方差矩阵,由于我们是二维的,则协方差矩阵为:
对于我们的数据,求出协方差矩阵为:
求出特征值为(0.0490833989, 1.28402771),对应的特征向量分别为:
由于最大的k=1个特征值为1.28402771,对于的k=1个特征向量为 则我们的W=
我们对所有的数据集进行投影 得到PCA降维后的10个一维数据集为:(-0.827970186, 1.77758033, -0.992197494, -0.274210416, -1.67580142, -0.912949103, 0.0991094375, 1.14457216, 0.438046137, 1.22382056)
在上面的PCA算法中,我们假设存在一个线性的超平面,可以让我们对数据进行投影。但是有些时候,数据不是线性的,不能直接进行PCA降维。这里就需要用到和支持向量机一样的核函数的思想,先把数据集从n维映射到线性可分的高维N>n,然后再从N维降维到一个低维度n', 这里的维度之间满足n'<n<N。
使用了核函数的主成分分析一般称之为核主成分分析(Kernelized PCA, 以下简称KPCA。假设高维空间的数据是由n维空间的数据通过映射ϕ产生。
则对于n维空间的特征分解:
映射为:
通过在高维空间进行协方差矩阵的特征值分解,然后用和PCA一样的方法进行降维。一般来说,映射ϕ不用显式的计算,而是在需要计算的时候通过核函数完成。由于KPCA需要核函数的运算,因此它的计算量要比PCA大很多。
这里对PCA算法做一个总结。作为一个非监督学习的降维方法,它只需要特征值分解,就可以对数据进行压缩,去噪。因此在实际场景应用很广泛。为了克服PCA的一些缺点,出现了很多PCA的变种,比如第六节的为解决非线性降维的KPCA,还有解决内存限制的增量PCA方法Incremental PCA,以及解决稀疏数据降维的PCA方法Sparse PCA等。
PCA算法的主要优点有:
LDA(线性判别分析,Linear Discriminant Analysis)是另一种常用的降维方法,它是有监督的。LDA在模式识别领域(比如人脸识别,舰艇识别等图形图像识别领域)中有非常广泛的应用,因此我们有必要了解下它的算法原理。这里需要注意的是,此处的LDA与文本主题模型中的LDA(隐含狄利克雷分布,Latent Dirichlet Allocation)并不相同,他是一种处理文档的主题模型。
LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。
LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”。
什么意思呢? 我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。
可能还是有点抽象,我们先看看最简单的情况。假设我们有两类数据 分别为红色和蓝色,如下图所示,这些数据特征是二维的,我们希望将这些数据投影到一维的一条直线,让每一种类别数据的投影点尽可能的接近,而红色和蓝色数据中心之间的距离尽可能的大。
以上就是使用LDA进行降维的算法流程。实际上LDA除了可以用于降维以外,还可以用于分类。一个常见的LDA分类基本思想是假设各个类别的样本数据符合高斯分布,这样利用LDA进行投影后,可以利用极大似然估计计算各个类别投影数据的均值和方差,进而得到该类别高斯分布的概率密度函数。当一个新的样本到来后,我们可以将它投影,然后将投影后的样本特征分别带入各个类别的高斯分布概率密度函数,计算它属于这个类别的概率,最大的概率对应的类别即为预测类别。
LDA用于降维,和PCA有很多相同,也有很多不同的地方,因此值得好好的比较一下两者的降维异同点。
这点可以从下图形象的看出,在某些数据分布下LDA比PCA降维较优。
当然,某些某些数据分布下PCA比LDA降维较优,如下图所示:
LDA算法既可以用来降维,又可以用来分类,但是目前来说,主要还是用于降维。在我们进行图像识别图像识别相关的数据分析时,LDA是一个有力的工具。下面总结下LDA算法的优缺点。
LDA算法的主要优点有:
参考文章: 刘建平老师的博客园
‘捌’ 降维的方法主要有
在分析高维数据时,降维(Dimensionality rection,DR)方法是我们不可或缺的好帮手。
作为数据去噪简化的一种方法,它对处理大多数现代生物数据很有帮助。在这些数据集中,经常存在着为单个样本同时收集数百甚至数百万个测量值的情况。
由于“维度灾难”(curse of dimensionality)的存在,很多统计方法难以应用到高维数据上。虽然收集到的数据点很多,但是它们会散布在一个庞大的、几乎不可能进行彻底探索的高维空间中。
通过降低数据的维度,你可以把这个复杂棘手的问题变得简单轻松。除去噪音但保存了所关注信息的低维度数据,对理解其隐含的结构和模式很有帮助。原始的高维度数据通常包含了许多无关或冗余变量的观测值。降维可以被看作是一种潜在特征提取的方法。它也经常用于数据压缩、数据探索以及数据可视化。
虽然在标准的数据分析流程中已经开发并实现了许多降维方法,但它们很容易被误用,并且其结果在实践中也常被误解。
本文为从业者提供了一套有用的指南,指导其如何正确进行降维,解释其输出并传达结果。
技巧1:选择一个合适的方法
当你想从现有的降维方法中选择一种进行分析时,可用的降维方法的数量似乎令人生畏。事实上,你不必拘泥于一种方法;但是,你应该意识到哪些方法适合你当前的工作。
降维方法的选择取决于输入数据的性质。比如说,对于连续数据、分类数据、计数数据、距离数据,它们会需要用到不同的降维方法。你也应该用你的直觉和相关的领域知识来考虑收集到的数据。通常情况下,观测可以充分捕获临近(或类似)数据点之间的小规模关系,但并不能捕获远距离观测之间的长期相互作用。对数据的性质和分辨率的考虑是十分重要的,因为降维方法可以还原数据的整体或局部结构。一般来说,线性方法如主成分分析(Principal Component Analysis, PCA)、对应分析(Correspondence Analysis, CA)、多重对应分析(Multiple Correspondence Analysis, MCA)、经典多维尺度分析(classical multidimensional scaling, cMDS)也被称为主坐标分析(Principal Coordinate Analysis, PCoA) 等方法,常用于保留数据的整体结构;而非线性方法,如核主成分分析(Kernel Principal Component Analysis, Kernel PCA)、非度量多维尺度分析(Nonmetric Multidimensional Scaling, NMDS)、等度量映射(Isomap)、扩散映射(Diffusion Maps)、以及一些包括t分布随机嵌入(t-Distributed Stochastic Neighbor Embedding, t-SNE)在内的邻近嵌入技术,更适合于表达数据局部的相互作用关系。NE技术不会保留数据点之间的长期相互作用关系,其可视化报告中的非临近观测组的排列并没有参考价值。因此,NE的图表不应该被用于数据的大规模结构的推测
‘玖’ 机器学习数据降维方法 PCA主成分分析
PCA在机器学习中很常用,是一种无参数的数据降维方法。PCA步骤:
将原始数据按列组成n行m列矩阵X将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值求出协方差矩阵求出协方差矩阵的特征值及对应的特征向量将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵PY=PX即为降维到k维后的数据1. PCA的推导
PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。
我们知道PCA是一种数据降维的方法,在降低维度的过程中,我们当然想要保留更多的特征,PCA就是经过数学推导,保留最多特征同时降维的方法。
在推导之前要先知道几个基础知识:
内积与投影
两个维数相同的向量的内积被定义为:
假设A和B是两个n维向量,我们知道n维向量可以等价表示为n维空间中的一条从原点发射的有向线段,为了简单起见我们假设A和B均为二维向量,则A=(x1,y1),B=(x2,y2)。则在二维平面上A和B可以用两条发自原点的有向线段表示,见下图:
现在我们从A点向B所在直线引一条垂线。我们知道垂线与B的交点叫做A在B上的投影,再设A与B的夹角是a,则投影的矢量长度为|A|cos(a),其中|A|是向量A的模,也就是A线段的标量长度。
到这里还是看不出内积和这东西有什么关系,不过如果我们将内积表示为另一种我们熟悉的形式:
现在事情似乎是有点眉目了:A与B的内积等于A到B的投影长度乘以B的模。再进一步,如果我们假设B的模为1,即让|B|=1,那么就变成了:
也就是说,设向量B的模为1,则A与B的内积值等于A向B所在直线投影的矢量长度!这就是内积的一种几何解释,也是我们得到的第一个重要结论。在后面的推导中,将反复使用这个结论。
基
下面我们继续在二维空间内讨论向量。上文说过,一个二维向量可以对应二维笛卡尔直角坐标系中从原点出发的一个有向线段。例如下面这个向量:
在代数表示方面,我们经常用线段终点的点坐标表示向量,例如上面的向量可以表示为(3,2),这是我们再熟悉不过的向量表示。
我们列举的例子中基是正交的(即内积为0,或直观说相互垂直),但可以成为一组基的唯一要求就是线性无关,非正交的基也是可以的。不过因为正交基有较好的性质,所以一般使用的基都是正交的。
3. 基变换的矩阵表示
一般的,如果我们有M个N维向量,想将其变换为由R个N维向量表示的新空间中,那么首先将R个基按行组成矩阵A,然后将向量按列组成矩阵B,那么两矩阵的乘积AB就是变换结果,其中AB的第m列为A中第m列变换后的结果。(新基按行,向量按列)
特别要注意的是,这里R可以小于N,而R决定了变换后数据的维数。也就是说,我们可以将一N维数据变换到更低维度的空间中去,变换后的维度取决于基的数量。因此这种矩阵相乘的表示也可以表示降维变换。
最后,上述分析同时给矩阵相乘找到了一种物理解释:两个矩阵相乘的意义是将右边矩阵中的每一列列向量变换到左边矩阵中每一行行向量为基所表示的空间中去。更抽象的说,一个矩阵可以表示一种线性变换。很多同学在学线性代数时对矩阵相乘的方法感到奇怪,但是如果明白了矩阵相乘的物理意义,其合理性就一目了然了。
4. 协方差矩阵与优化目标
我们从上面的矩阵乘法与基变换可以看出,当新基的维数小于原来的维数时可以做到数据的降维,但是究竟如何选择新基就是我们现在面临的问题,我们想要选择一个维数更小的新基,同时新基保留有更多的信息。我们知道矩阵向新基投影的形式,也就是PCA是将一组N维的特征投影到K维(K<n)同时保留更多的特征。 p=""></n)同时保留更多的特征。>
那么怎么衡量更多的特征,也就是投影后尽量少的重叠,投影值尽可能分散。
协方差
从二维到一维的降维,只需要找到一个一维基使得方差最大,但是三维降到二维呢?我们需要找到两个基让这个三维数据投影到两个基上,如果我们找方差最大的两个基,会发现他们完全一样或者线性相关,这和一个基没什么区别,不能表达更多的信息,所以我们需要添加限制条件,我们希望这两个基彼此线性无关,扩展到K个基也是一样。
当协方差为0时,表示两个字段完全独立。为了让协方差为0,我们选择第二个基时只能在与第一个基正交的方向上选择。因此最终选择的两个方向一定是正交的。
至此,我们得到了降维问题的优化目标:将一组N维向量降为K维(K大于0,小于N),其目标是选择K个单位(模为1)正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0,而字段的方差则尽可能大(在正交的约束下,取最大的K个方差)。
关于PCA的贡献率与K的选择
在我的文章特征值和特征向量中说过,特征值反映了矩阵对于特征向量的拉伸程度,只有拉伸而没有旋转,也就是在特征向量方向上的作用程度,所以在PCA中我们选取前K个特征向量组成新基进行投影,就是因为原特征在前K个特征向量有最大的作用程度。
投影过后可以保留更多的信息,作用程度是用特征值表示的,所以我们可以使用下面的式子表示贡献率,贡献率是表示投影后信息的保留程度的变量,也就是特征值的总和比上前K个特征值,一般来说贡献率要大于85%。
‘拾’ 第十五章 降维
第二种类型的无监督学习问题,叫做降维。
这里有一些,你想要使用降维的原因:
① 数据压缩
数据压缩不仅能对数据进行压缩,使得数据占用较小的内存或硬盘空间。它还能对学习算法进行加速
② 可视化数据
但首先,让我们谈论降维是什么。举个例子,假设我们收集了一个数据集,它有很多很多的特征,我只在这里绘制两个特征。
假如,对我们来说,这两个特征,x_1 是某物体的厘米长度,另一个特征x_2 是同一物体的英寸长度。这实际上是一种高度冗余的表示。
对于这两个单独的特征 x_1 和 x_2,它们表示的都是基本长度。或许我们想做的是,把数据减少到一维。只有一个数字来测量某物体的长度。
这个例子可能有点牵强,这与我在行业中所见的完全是两回事。
如果你有几百个或成千上万的特征,你很容易就会迷失,自己到底有哪些特征。有时可能有几个不同的工程团队,也许一个工程队给你二百个特征,第二工程队给你另外三百个的特征,第三工程队给你五百个特征。最后加起来你就有一千多个特征,这时就很难去了解某个特征是从哪个小组得到的,这时就比较容易产生这与高度冗余的特征。
并且,如果这里的 厘米 和 英寸 长度都被四舍五入了,这就是这个例子为什么不是完美地落在一条直线上。
👆另一个例子:如果你想要调查或做这些不同飞行员的测试——你可能有两个特征:x_1 是他们的技能(直升机飞行员);x_2 表示他们是否喜欢飞行。也许这两个特征将高度相关。你真正关心的可能是这条红线的方向。它是一个不同的特征,用来真正测量飞行员能力的特征。
还是那句话,如果特征高度冗余,那么你可能真的需要降低维数
如果我们将数据从二维(2D)降到一维(1D),究竟意味着什么?
现在我把不同的样本,用不同的颜色标出。在这时,通过降维,我的意思是我想找出这条看起来大多数样本所在的直线(绿色)。所有数据都投影到这条直线上,通过这种做法,我能够测量出每个样本在线上的位置,现在我能做的是建立新特征 z_1。我们只需要一个数,就能确定z_1所在的位置,也就是说z_1是一个全新的特征。它能够指定绿线上每一个点位置。
之前的样本 x_1,它是一个二维向量。在降维后,我们可用一维向量(即,实数)z_1表示第一个样本。
总结一下:
如果我们允许一个近似于原始数据集的数据集, 该数据集通过投射原始样本数据到这个绿色线上而得到。那么,我们只需要一个实数,就能指定点在直线上的位置。所以,我能够只用一个数字表示样本的位置,通过把这些原始样本都投射到绿线上(这是对原始数据集的一种近似,因为我将这些样本都投射到了同一条直线上)。这样(样本从用二维表示,变为用一个实数表示)就能把内存/数据空间的需求减半。
另外,更有趣也更重要的是。在之前的视频中,我们将能够了解到,这么做能够让学习算法运行得更快。
另一个例子,将数据从 3D 降到 2D。
降维的第二个应用:可视化数据
在许多及其学习问题中,如果我们能将数据可视化,我们便能寻找到一个更好的解决方案,降维可以帮助我们。
假使我们有关于许多不同国家的数据,每一个特征向量都有50个特征(如GDP,人均GDP,平均寿命等)。如果要将这个50维的数据可视化是不可能的。使用降维的方法将其降至2维,我们便可以将其可视化了。
比如,你可能发现,横轴(z_1)大致相当于国家的总体规模或者国家的总体经济活跃程度,所以横轴代表的是GDP、一个国家的经济规模。而纵轴大致对应于人均GDP。你可能会发现,这50个 特征,实际上只偏离为两个主要维度。(这样做的问题在于,降维的算法只负责减少维数,新产生的特征的意义就必须由我们自己去发现了)
一个特殊的算法:PAC,也叫做“主成分分析”。它可以用来做降维操作,可以用来实现我们之前所提到的压缩数据。
主成分分析(PCA)是最常见的降维算法。
在PCA中,我们要做的是找到一个方向向量(Vector direction),当我们把所有的数据都投射到该向量上时,我们希望投射平均均方误差能尽可能地小。方向向量是一个经过原点的向量,而投射误差是从特征向量向该方向向量作垂线的长度。
PCA 问题的公式描述。换句话说,我们会试着用公式准确地表述PCA的用途。
所以,正式的说,PCA做的就是,它会找到一个低维平面(该例子中,是条直线),然后将数据投影在上面,使这些蓝色小线段(即,点到平面的距离)长度平方最小。这个蓝色小线段的距离,有时也称投影误差。
所以,PCA 所做的就是,它会试图寻找一个投影平面对数据进行投影,使得能最小化这个距离。
另外在应用PCA 之前,常规的做法是,先进行 均值归一化,使得特征量 x_1 和 x_2 其均值为0。并且其数值在可比较的范围之内。(本例中,我们已经处理过了)
后面会详细讲,PCA背景下的均值归一化问题的细节。
PCA做的就是,如果想将数据从二维降到一维。我们要试着找一个方向向量,使得向量 u^(i) ∈ R^n (本例中, n = 2,即,u^(i) ∈ R^2)投影到这个方向向量上的投影误差最小。
更通常的情况是:我们会有N维数据,并且我们想其降到K维,这种情况下,我们不只是想找单个向量来对数据进行投影,而是想寻找K个方向来对数据进行投影,来最小化投影误差。(我们要做的是,将数据投影到这 k 个向量展开的线性子空间上)
u^(1) 和 u^(2) 两个向量一起定义了一个二维平面。我们将我们的数据投影到上面。
因此,PCA做的是其视图找出一条直线,或一个平面,或其他维的空间,然后对数据进行投影,以最小化平方投影。90度投影,或正交投影的误差。
事实上,PCA不是线性回归,尽管看上去有一些相似,但是它们确实是两种不同的算法。
上图中,左边的是线性回归的误差(垂直于横轴投影),右边则是主要成分分析的误差(垂直于红线投影)。
主成分分析最小化的是投射误差(Projected Error),而线性回归尝试的是最小化预测误差。线性回归的目的是预测结果,而主成分分析不作任何预测。
PCA将n个特征降维到k个,可以用来进行数据压缩,如果100维的向量最后可以用10维来表示,那么压缩率为90%。同样图像处理领域的KL变换使用PCA做图像压缩。但PCA 要保证降维后数据的特性损失最小。
PCA技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。
PCA技术的一个很大的优点是,它是完全无参数限制的。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。
但是,这一点同时也可以看作是缺点。如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。
主成分分析算法
在使用PCA之前,首先要做的是,进行数据的预处理。
给定一个交易例子的集合,
预处理:
① 一定要做的一个事情是:执行均值归一化。
② 依据于你的数据,可能也要进行特征缩放。
这两个过程,即在我们有监督学习中,均值标准化过程 与 特征缩放的过程 是相似的。实际上,确实是相同的过程,除了我们现在是对未标记数据 x^(1) 到 x^(m) 做 均值标准化过程 与 特征缩放过程。
接下来,如果不同的特征有非常不相同的缩放,例如 x_1 是房子的尺寸, x_2 是卧室的数量。我们缩放每一个特征,一个相对的价值范围。
相对于之前的监督学习:x_j^(i) = ( (x_j^(i) - u_j) / s_j )。 s_j = x_j 预测的最大值 - 最小值。更普遍的,s_j 是特征 j 的标准偏差。
做完这一系列的数据预处理之后,我们来看PCA算法
我们能从先前的视频看到,PCA所做的就是,它尝试着找到一个 低维 子空间,对数据进行投影,我们希望找到一个向量 u^(k) (比如,从 N 维将到 K 维),是的数据到这个向量的投影误差平方和最小。
给个提示,是什么减少了数据平均值的维度??
对于左边的例子,我们给定的样本 x^(i) 在 R^2 中(即,两个维度,x_1^(i), x_2^(i))。我们要做的就是在 R 中(一维)找到一个数据集 z^(i) 来代表我们原始的样本数据。所以,我们的均值从 2维 降到 1维。
所以,PCA要做的就是,要想出一个方法计算两个东西:
① 计算向量 u^(k)
② 计算 z^(i)
1,首先,我们要做的是计算这个“协方差(covariance matrix)”,通常用希腊字母 Σ。
① 希腊字母 Σ ,表示矩阵
② 累加和标记
‘ [U, S, V] = svd(Sigma); ’:计算 矩阵U = S 和 V 协方差矩阵sigma。
再补充一些细节:这个 协方差矩阵sigma,将会是一个 n*n 的矩阵。
矩阵U 的每一列就是 u^(i) ,即,u ∈ R^(n*n) 。所以,我们想减少数据的维度从 n 维 到 k 维,我们需要做的是提取前 k 个向量。u^1, … , u^k ,这给了我们 k 个方向(构成了一个 k维度的 子空间),即,我们想要投影数据的方向。
有了 u^k 后,我们要做的就是:x ∈ R^n ——> z ∈R^k
我们称 矩阵U 为 U_rece(n*k 矩阵)。这是 矩阵U 被降维的版本,我们将用它来对我们的数据进行降维。
z = (U_rece)^T * x
(U_rece)^T : k * n 矩阵
x 是 “n 维度向量(即,n * 1)”
所以,z 是 “k 维度向量”
在PCA算法中,我们将N维特征减少为K维特征。这个数字 K 是PCA算法的一个参数。这个数 K 也被称为 主成分的数字。或者,我们保留的主成分的数字。
在一般情况下,如何考虑选取这个参数 K ?
我们希望在平均均方误差与训练集方差的比例尽可能小的情况下选择尽可能小的k值。
如果我们希望这个比例小于1%,就意味着原本数据的方差有99%都保留下来了,如果我们选择保留95%的方差,便能非常显着地降低模型中特征的维度了。
99%、95%、90% 都是一些具有代表性的范围。
对于许多数据集,你会惊讶,为了保留99%的方差,你可以减少维度,但仍然保留大部分的方差。因为对于真实世界的数据来说,许多特征都是高度相关的。因此,结果证明:对数据进行很多压缩,仍然可以保留99%的方差。
那么该如何实现了?
但是,👆这个方法非常低效。
在以前的视频中,我谈论PCA作为压缩算法。在那里你可能需要把1000维的数据压缩100维特征,或具有三维数据压缩到一二维表示。所以,如果这是一个压缩算法,应该能回到这个压缩表示,回到你原有的高维数据的一种近似。
所以,给定的z (i),这可能100维,怎么回到你原来的表示x (i),这可能是1000维的数组?
我们可以把👆这个过程叫做:原始数据的重构。
我们常常使用PCA算法对监督学习算法进行加速。
假使我们正在针对一张 100×100像素的图片进行某个计算机视觉的机器学习,即总共有10000 个特征。
最后要注意的一点是,PCA所做的是定义一个从 x 到 z 的映射。这个从 x 到 z 的映射只能通过在训练集上运行PCA来得到。这个映射(注意,这里说的是映射,而不是PCA算法)也能够被应用在 交叉校验 和 测试集 上的其他样本中。(即,如果我们有交叉验证集合测试集,也采用对训练集学习而来的U_rece。 )
总结一下:当在运行PCA时,仅仅在训练集中的数据上运行,不能用在交叉验证和测试集上。但,当你定义了 x 到 z 的映射后,你可以应用这个映射到你的交叉验证集和你的测试集。
顺便说一下,实际上,在许多问题中我们确实能减少数据的维度,大概可以减少到 1/5 或者 1/10,而且仍然保留大部分的方差,几乎不影响性能。而且使用较低的维度数据,我们的学习算法通常可以运行的更快。
错误的主要成分分析情况:一个常见错误使用主要成分分析的情况是,将其用于减少过拟合(减少了特征的数量)。这样做非常不好,不如尝试正则化处理。原因在于PCA不需要使用标签y,它仅仅使用输入的 x^(i) ,使用它去寻找低纬数据,来近似你的数据。因此PCA会舍掉一些信息,它扔掉或减少数据的维度,不关心 y 值是什么。所以如果99%的方差信息被保留,你保留了大部分的方差,那么这样使用PCA是可以的。但是它也可能会丢掉一些有价值的信息。
事实证明,只使用正则化来防止过拟合常常会给你带来更好的结果。因为,当你应用 线性回归 或者 logistic回归 或其他的一些方法,进行正则化时,这个最小化问题,实际上是知道 y 的值的,所以不太可能损失掉一些有价值的信息。而PCA不使用标签,更有可能丢失一些有价值的信息。
因此,总结一下,使用PCA比较好的方式,是用它来提高学习算法的速度。但是使用PCA来防止过拟合,这不是PCA的一个好的运用。要使用正则化来防止过拟合。
另一个常见的错误是,默认地将主要成分分析作为学习过程中的一部分,这虽然很多时候有效果,最好还是从所有原始特征开始,只在有必要的时候(算法运行太慢或者占用太多内存)才考虑采用主要成分分析。