PCA分析方式.docx

上传人:b****8 文档编号:28365556 上传时间:2023-07-10 格式:DOCX 页数:9 大小:29.21KB
下载 相关 举报
PCA分析方式.docx_第1页
第1页 / 共9页
PCA分析方式.docx_第2页
第2页 / 共9页
PCA分析方式.docx_第3页
第3页 / 共9页
PCA分析方式.docx_第4页
第4页 / 共9页
PCA分析方式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

PCA分析方式.docx

《PCA分析方式.docx》由会员分享,可在线阅读,更多相关《PCA分析方式.docx(9页珍藏版)》请在冰豆网上搜索。

PCA分析方式.docx

PCA分析方式

主成份分析

主成份分析(PrincipalComponentAnalysis,PCA)或主元分析。

是一种把握事物要紧矛盾的统计分析方式,它能够从多元事物中解析出要紧阻碍因素,揭露事物的本质,简化复杂的问题。

计算主成份的目的是将数据投影到较低。

给定n个变量的m个观看值,形成一个n′m的数据,n通常比较大。

关于一个由多个变量描述的复杂事物,人们难以熟悉,那么是不是能够抓住事物要紧方面进行重点分析呢若是事物的要紧方面恰好体此刻几个要紧变量上,咱们只需要将这几个变量分离出来,进行详细分析。

可是,在一样情形下,并非能直接找出如此的关键变量。

这时咱们能够用原有变量的来表示事物的要紧方面,PCA确实是如此一种分析方式。

PCA要紧用于数据降维,关于一系列例子的特点组成的多维向量,多维向量里的某些元素本身没有区分性,比如某个元素在所有的例子中都为1,或与1差距不大,那么那个元素本身就没有区分性,用它做特点来区分,奉献会超级小。

因此咱们的目的是找那些转变大的元素,即大的那些维,而去除掉那些转变不大的维,从而使特点留下的都是“精品”,而且计算量也变小了。

关于一个k维的特点来讲,相当于它的每特点与其他维都是的(相当于在多维中,坐标轴都是垂直的),那么咱们能够转变这些维的坐标系,从而使那个特点在某些维上方差大,而在某些维上方差很小。

例如,一个45度倾斜的椭圆,在第一坐标系,若是依照x,y坐标来投影,这些点的x和y的属性很难用于区分他们,因为他们在x,y轴上坐标转变的都差不多,咱们无法依照那个点的某个x属性来判定那个点是哪个,而若是将坐标轴旋转,以椭圆为x轴,那么椭圆在长轴上的散布比较长,方差大,而在短轴上的散布短,方差小,因此能够考虑只保留这些点的长轴属性,来区分椭圆上的点,如此,区分性比x,y轴的方式要好!

因此咱们的做法确实是求得一个k维特点的投影矩阵,那个投影矩阵能够将特点从高维降到低维。

投影矩阵也能够叫做。

新的低维特点必需每一个维都,都是正交的。

通过求样本矩阵的协方差矩阵,然后求出协方差矩阵的,这些就能够够组成那个投影矩阵了。

的选择取决于协方差矩阵的的大小。

举例:

关于一个训练集,100个对象模板,特点是10维,那么它能够成立一个100*10的矩阵,作为样本。

求那个样本的协方差矩阵,取得一个10*10的协方差矩阵,然后求出那个协方差矩阵的和特点向量,应该有10个特点值和特点向量,咱们依照特点值的大小,取前四个特点值所对应的特点向量,组成一个10*4的矩阵,那个矩阵确实是咱们要求的特点矩阵,100*10的样本矩阵乘以那个10*4的特点矩阵,就取得了一个100*4的新的降维以后的样本矩阵,每一个特点的下降了。

当给定一个测试的特点集以后,比如1*10维的特点,乘以上面取得的10*4的特点矩阵,即能够取得一个1*4的特点,用那个特点去分类。

因此做PCA事实上是求得那个投影矩阵,用高维的特点乘以那个投影矩阵,即能够将高维特点的维数下降到指定的维数。

PCA的目标是寻觅r(r

每一个新变量是原有变量的,表现原有变量的综合成效,具有必然的实际含义。

这r个新变量称为“主成份”,它们能够在专门大程度上反映原先n个变量的阻碍,而且这些新变量是互不相关的,也是的。

通过,紧缩数据空间,将多元数据的特点在低里直观地表示出来。

例如,将多个、多个实验条件下的数据(N维)表示为3中的一个点,即将数据的维数从RN降到R3。

在进行基因表达数据分析时,一个重要问题是确信每一个实验数据是不是是独立的,若是每次实验数据之间不是独立的,那么会阻碍基因表达数据分析结果的准确性。

关于利用基因芯片所检测到的基因表达数据,若是用PCA方式进行分析,能够将各个基因作为变量,也能够将实验条件作为变量。

当将基因作为变量时,通过度析确信一组“要紧基因元素”,它们能够专门好地说明基因的特点,说明实验现象;当将实验条件作为变量时,通过度析确信一组“要紧实验因素”,它们能够专门好地刻画实验条件的特点,说明基因的行为。

下面着重考虑以实验条件作为变量的PCA分析方式。

假设将数据的维数从RN降到R3,具体的PCA分析步骤如下:

(1)第一步计算矩阵X的样本的S:

(2)第二步计算协方差矩阵S的本征向量e1,e2,…,eN的本征值,i=1,2,…,N。

本征值按大到小排序:

(3)第三步投影数据到本征矢的空间当中,这些本征矢相应的本征值为。

数据能够在中展现为云状的点集。

关于PCA,确信新变量的个数r是一个两难的问题。

咱们的目标是减小r,若是r小,那么数据的低,便于分析,同时也降低了噪声,但可能丢失一些有效的信息。

究竟如何确信r呢这需要进一步分析每一个对信息的奉献。

奉献率表示所概念的主成份在整个数据分析中承担的要紧意义占多大的比重,当取前r个主成份来代替原先全数变量时,累计奉献率的大小反映了这种取代的靠得住性,累计奉献率越大,靠得住性越大;反之,那么靠得住性越小。

一样要求累计奉献率达到70%以上。

通过PCA分析,一个多变量的复杂问题被简化为低维空间的简单问题。

能够利用这种简化方式进行作图,形象地表示和分析复杂问题。

在分析基因表达数据时,能够针对,也能够针对实验条件作图。

前者称为Q分析,后者称为R分析。

PCA在matlab中的实现举例

以下资料来自matlab的help,翻译和注解部份由笔者添加:

(重点部份添加了翻译!

函数名称

Principalcomponentanalysis(PCA)ondata

Syntax------函数挪用语法

[COEFF,SCORE]=princomp(X)

[COEFF,SCORE,latent]=princomp(X)

[COEFF,SCORE,latent,tsquare]=princomp(X)

[...]=princomp(X,'econ')

函数描述

COEFF=princomp(X)performsprincipalcomponentsanalysis(PCA)onthen-by-pdatamatrixX,andreturnstheprincipalcomponentcoefficients,alsoknownasloadings.RowsofXcorrespondtoobservations,columnstovariables.COEFFisap-by-pmatrix,eachcolumncontainingcoefficientsforoneprincipalcomponent.Thecolumnsareinorderofdecreasingcomponentvariance.

在n行p列的数据集X上做主成份分析。

返回主成份系数。

X的每行表示一个样本的观测值,每一列表示特点变量。

COEFF是一个p行p列的矩阵,每一列包括一个主成份的系数,列是按主成份变量递减顺序排列。

(依照那个翻译很难明白得,其实COEFF是X矩阵所对应的阵V的所有组成的矩阵,即或称投影矩阵,COEFF每列对应一个的特点向量,列的排列顺序是按特点值的大小递减排序,后面有具体例子说明,见说明1)

princompcentersXbysubtractingoffcolumnmeans,butdoesnotrescalethecolumnsofX.Toperformprincipalcomponentsanalysiswithstandardizedvariables,thatis,basedoncorrelations,useprincomp(zscore(X)).Toperformprincipalcomponentsanalysisdirectlyonacovarianceorcorrelationmatrix,usepcacov.

计算PCA的时候,MATLAB自动对列进行了去均值的操作,可是并非对数据进行规格化,若是要规格化的话,用princomp(zscore(X))。

另外,若是直接有现成的阵,用函数pcacov来计算。

[COEFF,SCORE]=princomp(X)returnsSCORE,theprincipalcomponentscores;thatis,therepresentationofXintheprincipalcomponentspace.RowsofSCOREcorrespondtoobservations,columnstocomponents.

返回的SCORE是对主分的打分,也确实是说原X矩阵在主成份空间的表示。

SCORE每行对应样本观测值,每列对应一个主成份(变量),它的行和列的数量和X的行列数量相同。

[COEFF,SCORE,latent]=princomp(X)returnslatent,avectorcontainingtheeigenvaluesofthecovariancematrixofX.

返回的latent是一个向量,它是X所对应的协方差矩阵的特点值向量。

[COEFF,SCORE,latent,tsquare]=princomp(X)returnstsquare,whichcontainsHotelling'sT2statisticforeachdatapoint.

返回的tsquare,是表示对每一个样本点Hotelling的T方统计量(我也不很清楚是什么东东)。

Thescoresarethedataformedbytransformingtheoriginaldataintothespaceoftheprincipalcomponents.ThevaluesofthevectorlatentarethevarianceofthecolumnsofSCORE.Hotelling'sT2isameasureofthemultivariatedistanceofeachobservationfromthecenterofthedataset.

所得的分(scores)表示由原数据X转变到主成份空间所取得的数据。

latent向量的值表示SCORE矩阵每列的方差(见说明2)。

Hotelling的T方是用来衡量多变量间的距离,那个距离是指样本观测值到数据集中心的距离。

Whenn<=p,SCORE(:

n:

p)andlatent(n:

p)arenecessarilyzero,andthecolumnsofCOEFF(:

n:

p)definedirectionsthatareorthogonaltoX.

[...]=princomp(X,'econ')returnsonlytheelementsoflatentthatarenotnecessarilyzero,andthecorrespondingcolumnsofCOEFFandSCORE,thatis,whenn<=p,onlythefirstn-1.Thiscanbesignificantlyfasterwhenpismuchlargerthann.

当维数p超过样本个数n的时候,用[...]=princomp(X,'econ')来计算,如此会显著提高计算速度

举例

(下面样本数据集为ingredients,matlab自带)

ComputeprincipalcomponentsfortheingredientsdataintheHalddataset,andthevarianceaccountedforbyeachcomponent.

loadhald;载入matlab内部数据

[pc,score,latent,tsquare]=princomp(ingredients);挪用pca分析函数

ingredients,score,pc,latent,tsquare显示取得的结果

ingredients=

726660

1291552

1156820

1131847

752633

1155922

371176

1312244

2541822

2147426

1402334

1166912

1068812

score=

pc=

latent=

 

tsquare=

 

验证

计算ingredients协方差矩阵:

cov_ingredients=cov(ingredients)

cov_ingredients=

下面为计算ingredients所对应的协方差矩阵(也确实是cov_ingredients矩阵)的特点值和特点向量,下面的矩阵V为特点向量,D为特点值(对照上面的latent)组成的对角线矩阵

[V,D]=eig(cov_ingredients)

V=

D=

000

000

000

000

说明1:

对照矩阵V和矩阵pc,易明白什么缘故COEFF是按列递减顺序排列的。

下面再验证说明2

diag(cov(score))

ans=

 

说明2:

以上结果显示latent确实表示SCORE矩阵每列的方差,表示第一列方差

下面做图表示结果:

咱们要的是由函数[pc,score,latent,tsquare]=princomp(ingredients)所产生的pc和latent。

由latent能够算出降维后的空间所能表示原空间的程度,只要那个积存的值大于95%。

Thefollowingcommandandplotshowthattwocomponentsaccountfor98%ofthevariance:

cumsum(latent)./sum(latent)

ans=

 

1

%由以上ans值能够看出前两个主成份就能够表示原空间的%,因此取pc中的前两列可

%做主成份变换矩阵tranMatrix=pc(:

1:

2)。

那么从原先的4降到2维空间。

对任意一个

%原空间样本,例如a=(7,26,6,60)变到低维空间的表达式为a1=a*tranMatrix。

(固然你也可

%以取pc中的前三列,由原先的4维空间变到3维空间)

biplot(pc(:

1:

2),'Scores',score(:

1:

2),'VarLabels',...

{'X1''X2''X3''X4'})

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1