您的位置:首页 > 其它

【机器学习】主成分分析PCA

2016-04-25 16:31 218 查看



主成分分析PCA

降维的必要性

1.多重共线性--预测变量之间相互关联。多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯。
2.高维空间本身具有稀疏性。一维正态分布有68%的值落于正负标准差之间,而在十维空间上只有0.02%。
3.过多的变量会妨碍查找规律的建立。
4.仅在变量层面上分析可能会忽略变量之间的潜在联系。例如几个预测变量可能落入仅反映数据某一方面特征的一个组内。
降维的目的:
1.减少预测变量的个数
2.确保这些变量是相互独立的
3.提供一个框架来解释结果
降维的方法有:主成分分析、因子分析、用户自定义复合等。

PCA(Principal Component Analysis)不仅仅是对高维数据进行降维,更重要的是经过降维去除了噪声,发现了数据中的模式。
PCA把原先的n个特征用数目更少的m个特征取代,新特征是旧特征的线性组合,这些线性组合最大化样本方差,尽量使新的m个特征互不相关。从旧特征到新特征的映射捕获数据中的固有变异性。
预备知识
样本X和样本Y的协方差(Covariance):



协方差为正时说明X和Y是正相关关系,协方差为负时X和Y是负相关关系,协方差为0时X和Y相互独立。
Cov(X,X)就是X的方差(Variance).
当样本是n维数据时,它们的协方差实际上是协方差矩阵(对称方阵),方阵的边长是

。比如对于3维数据(x,y,z),计算它的协方差就是:





,则称

是A的特征值,X是对应的特征向量。实际上可以这样理解:矩阵A作用在它的特征向量X上,仅仅使得X的长度发生了变化,缩放比例就是相应的特征值


当A是n阶可逆矩阵时,A与P-1Ap相似,相似矩阵具有相同的特征值。
特别地,当A是对称矩阵时,A的奇异值等于A的特征值,存在正交矩阵Q(Q-1=QT),使得:



对A进行奇异值分解就能求出所有特征值和Q矩阵。


D是由特征值组成的对角矩阵
由特征值和特征向量的定义知,Q的列向量就是A的特征向量。
Jama包
Jama包是用于基本线性代数运算的java包,提供矩阵的cholesky分解、LUD分解、QR分解、奇异值分解,以及PCA中要用到的特征值分解,此外可以计算矩阵的乘除法、矩阵的范数和条件数、解线性方程组等。
PCA过程
1.特征中心化。即每一维的数据都减去该维的均值。这里的“维”指的就是一个特征(或属性),变换之后每一维的均值都变成了0。
很多数据挖掘的教材上都会讲到鹫尾花的例子,本文就拿它来做计算。原始数据是150×4的矩阵A:

5.1     3.5     1.4     0.2
4.9     3.0     1.4     0.2
4.7     3.2     1.3     0.2
4.6     3.1     1.5     0.2
5.0     3.6     1.4     0.2
5.4     3.9     1.7     0.4
4.6     3.4     1.4     0.3
5.0     3.4     1.5     0.2
4.4     2.9     1.4     0.2
4.9     3.1     1.5     0.1
5.4     3.7     1.5     0.2
4.8     3.4     1.6     0.2
4.8     3.0     1.4     0.1
4.3     3.0     1.1     0.1
5.8     4.0     1.2     0.2
5.7     4.4     1.5     0.4
5.4     3.9     1.3     0.4
5.1     3.5     1.4     0.3
5.7     3.8     1.7     0.3
5.1     3.8     1.5     0.3
5.4     3.4     1.7     0.2
5.1     3.7     1.5     0.4
4.6     3.6     1.0     0.2
5.1     3.3     1.7     0.5
4.8     3.4     1.9     0.2
5.0     3.0     1.6     0.2
5.0     3.4     1.6     0.4
5.2     3.5     1.5     0.2
5.2     3.4     1.4     0.2
4.7     3.2     1.6     0.2
4.8     3.1     1.6     0.2
5.4     3.4     1.5     0.4
5.2     4.1     1.5     0.1
5.5     4.2     1.4     0.2
4.9     3.1     1.5     0.1
5.0     3.2     1.2     0.2
5.5     3.5     1.3     0.2
4.9     3.1     1.5     0.1
4.4     3.0     1.3     0.2
5.1     3.4     1.5     0.2
5.0     3.5     1.3     0.3
4.5     2.3     1.3     0.3
4.4     3.2     1.3     0.2
5.0     3.5     1.6     0.6
5.1     3.8     1.9     0.4
4.8     3.0     1.4     0.3
5.1     3.8     1.6     0.2
4.6     3.2     1.4     0.2
5.3     3.7     1.5     0.2
5.0     3.3     1.4     0.2
7.0     3.2     4.7     1.4
6.4     3.2     4.5     1.5
6.9     3.1     4.9     1.5
5.5     2.3     4.0     1.3
6.5     2.8     4.6     1.5
5.7     2.8     4.5     1.3
6.3     3.3     4.7     1.6
4.9     2.4     3.3     1.0
6.6     2.9     4.6     1.3
5.2     2.7     3.9     1.4
5.0     2.0     3.5     1.0
5.9     3.0     4.2     1.5
6.0     2.2     4.0     1.0
6.1     2.9     4.7     1.4
5.6     2.9     3.6     1.3
6.7     3.1     4.4     1.4
5.6     3.0     4.5     1.5
5.8     2.7     4.1     1.0
6.2     2.2     4.5     1.5
5.6     2.5     3.9     1.1
5.9     3.2     4.8     1.8
6.1     2.8     4.0     1.3
6.3     2.5     4.9     1.5
6.1     2.8     4.7     1.2
6.4     2.9     4.3     1.3
6.6     3.0     4.4     1.4
6.8     2.8     4.8     1.4
6.7     3.0     5.0     1.7
6.0     2.9     4.5     1.5
5.7     2.6     3.5     1.0
5.5     2.4     3.8     1.1
5.5     2.4     3.7     1.0
5.8     2.7     3.9     1.2
6.0     2.7     5.1     1.6
5.4     3.0     4.5     1.5
6.0     3.4     4.5     1.6
6.7     3.1     4.7     1.5
6.3     2.3     4.4     1.3
5.6     3.0     4.1     1.3
5.5     2.5     4.0     1.3
5.5     2.6     4.4     1.2
6.1     3.0     4.6     1.4
5.8     2.6     4.0     1.2
5.0     2.3     3.3     1.0
5.6     2.7     4.2     1.3
5.7     3.0     4.2     1.2
5.7     2.9     4.2     1.3
6.2     2.9     4.3     1.3
5.1     2.5     3.0     1.1
5.7     2.8     4.1     1.3
6.3     3.3     6.0     2.5
5.8     2.7     5.1     1.9
7.1     3.0     5.9     2.1
6.3     2.9     5.6     1.8
6.5     3.0     5.8     2.2
7.6     3.0     6.6     2.1
4.9     2.5     4.5     1.7
7.3     2.9     6.3     1.8
6.7     2.5     5.8     1.8
7.2     3.6     6.1     2.5
6.5     3.2     5.1     2.0
6.4     2.7     5.3     1.9
6.8     3.0     5.5     2.1
5.7     2.5     5.0     2.0
5.8     2.8     5.1     2.4
6.4     3.2     5.3     2.3
6.5     3.0     5.5     1.8
7.7     3.8     6.7     2.2
7.7     2.6     6.9     2.3
6.0     2.2     5.0     1.5
6.9     3.2     5.7     2.3
5.6     2.8     4.9     2.0
7.7     2.8     6.7     2.0
6.3     2.7     4.9     1.8
6.7     3.3     5.7     2.1
7.2     3.2     6.0     1.8
6.2     2.8     4.8     1.8
6.1     3.0     4.9     1.8
6.4     2.8     5.6     2.1
7.2     3.0     5.8     1.6
7.4     2.8     6.1     1.9
7.9     3.8     6.4     2.0
6.4     2.8     5.6     2.2
6.3     2.8     5.1     1.5
6.1     2.6     5.6     1.4
7.7     3.0     6.1     2.3
6.3     3.4     5.6     2.4
6.4     3.1     5.5     1.8
6.0     3.0     4.8     1.8
6.9     3.1     5.4     2.1
6.7     3.1     5.6     2.4
6.9     3.1     5.1     2.3
5.8     2.7     5.1     1.9
6.8     3.2     5.9     2.3
6.7     3.3     5.7     2.5
6.7     3.0     5.2     2.3
6.3     2.5     5.0     1.9
6.5     3.0     5.2     2.0
6.2     3.4     5.4     2.3
5.9     3.0     5.1     1.8


每一列减去该列均值后,得到矩阵B:

-0.743333       0.446       -2.35867        -0.998667
-0.943333       -0.054      -2.35867        -0.998667
-1.14333        0.146       -2.45867        -0.998667
-1.24333        0.046       -2.25867        -0.998667
-0.843333       0.546       -2.35867        -0.998667
-0.443333       0.846       -2.05867        -0.798667
-1.24333        0.346       -2.35867        -0.898667
-0.843333       0.346       -2.25867        -0.998667
-1.44333        -0.154      -2.35867        -0.998667
-0.943333       0.046       -2.25867        -1.09867
-0.443333       0.646       -2.25867        -0.998667
-1.04333        0.346       -2.15867        -0.998667
-1.04333        -0.054      -2.35867        -1.09867
-1.54333        -0.054      -2.65867        -1.09867
-0.0433333      0.946       -2.55867        -0.998667
-0.143333       1.346       -2.25867        -0.798667
-0.443333       0.846       -2.45867        -0.798667
-0.743333       0.446       -2.35867        -0.898667
-0.143333       0.746       -2.05867        -0.898667
-0.743333       0.746       -2.25867        -0.898667
-0.443333       0.346       -2.05867        -0.998667
-0.743333       0.646       -2.25867        -0.798667
-1.24333        0.546       -2.75867        -0.998667
-0.743333       0.246       -2.05867        -0.698667
-1.04333        0.346       -1.85867        -0.998667
-0.843333       -0.054      -2.15867        -0.998667
-0.843333       0.346       -2.15867        -0.798667
-0.643333       0.446       -2.25867        -0.998667
-0.643333       0.346       -2.35867        -0.998667
-1.14333        0.146       -2.15867        -0.998667
-1.04333        0.046       -2.15867        -0.998667
-0.443333       0.346       -2.25867        -0.798667
-0.643333       1.046       -2.25867        -1.09867
-0.343333       1.146       -2.35867        -0.998667
-0.943333       0.046       -2.25867        -1.09867
-0.843333       0.146       -2.55867        -0.998667
-0.343333       0.446       -2.45867        -0.998667
-0.943333       0.046       -2.25867        -1.09867
-1.44333        -0.054      -2.45867        -0.998667
-0.743333       0.346       -2.25867        -0.998667
-0.843333       0.446       -2.45867        -0.898667
-1.34333        -0.754      -2.45867        -0.898667
-1.44333        0.146       -2.45867        -0.998667
-0.843333       0.446       -2.15867        -0.598667
-0.743333       0.746       -1.85867        -0.798667
-1.04333        -0.054      -2.35867        -0.898667
-0.743333       0.746       -2.15867        -0.998667
-1.24333        0.146       -2.35867        -0.998667
-0.543333       0.646       -2.25867        -0.998667
-0.843333       0.246       -2.35867        -0.998667
1.15667     0.146       0.941333        0.201333
0.556667        0.146       0.741333        0.301333
1.05667     0.046       1.14133     0.301333
-0.343333       -0.754      0.241333        0.101333
0.656667        -0.254      0.841333        0.301333
-0.143333       -0.254      0.741333        0.101333
0.456667        0.246       0.941333        0.401333
-0.943333       -0.654      -0.458667       -0.198667
0.756667        -0.154      0.841333        0.101333
-0.643333       -0.354      0.141333        0.201333
-0.843333       -1.054      -0.258667       -0.198667
0.0566667       -0.054      0.441333        0.301333
0.156667        -0.854      0.241333        -0.198667
0.256667        -0.154      0.941333        0.201333
-0.243333       -0.154      -0.158667       0.101333
0.856667        0.046       0.641333        0.201333
-0.243333       -0.054      0.741333        0.301333
-0.0433333      -0.354      0.341333        -0.198667
0.356667        -0.854      0.741333        0.301333
-0.243333       -0.554      0.141333        -0.0986667
0.0566667       0.146       1.04133     0.601333
0.256667        -0.254      0.241333        0.101333
0.456667        -0.554      1.14133     0.301333
0.256667        -0.254      0.941333        0.00133333
0.556667        -0.154      0.541333        0.101333
0.756667        -0.054      0.641333        0.201333
0.956667        -0.254      1.04133     0.201333
0.856667        -0.054      1.24133     0.501333
0.156667        -0.154      0.741333        0.301333
-0.143333       -0.454      -0.258667       -0.198667
-0.343333       -0.654      0.0413333       -0.0986667
-0.343333       -0.654      -0.0586667      -0.198667
-0.0433333      -0.354      0.141333        0.00133333
0.156667        -0.354      1.34133     0.401333
-0.443333       -0.054      0.741333        0.301333
0.156667        0.346       0.741333        0.401333
0.856667        0.046       0.941333        0.301333
0.456667        -0.754      0.641333        0.101333
-0.243333       -0.054      0.341333        0.101333
-0.343333       -0.554      0.241333        0.101333
-0.343333       -0.454      0.641333        0.00133333
0.256667        -0.054      0.841333        0.201333
-0.0433333      -0.454      0.241333        0.00133333
-0.843333       -0.754      -0.458667       -0.198667
-0.243333       -0.354      0.441333        0.101333
-0.143333       -0.054      0.441333        0.00133333
-0.143333       -0.154      0.441333        0.101333
0.356667        -0.154      0.541333        0.101333
-0.743333       -0.554      -0.758667       -0.0986667
-0.143333       -0.254      0.341333        0.101333
0.456667        0.246       2.24133     1.30133
-0.0433333      -0.354      1.34133     0.701333
1.25667     -0.054      2.14133     0.901333
0.456667        -0.154      1.84133     0.601333
0.656667        -0.054      2.04133     1.00133
1.75667     -0.054      2.84133     0.901333
-0.943333       -0.554      0.741333        0.501333
1.45667     -0.154      2.54133     0.601333
0.856667        -0.554      2.04133     0.601333
1.35667     0.546       2.34133     1.30133
0.656667        0.146       1.34133     0.801333
0.556667        -0.354      1.54133     0.701333
0.956667        -0.054      1.74133     0.901333
-0.143333       -0.554      1.24133     0.801333
-0.0433333      -0.254      1.34133     1.20133
0.556667        0.146       1.54133     1.10133
0.656667        -0.054      1.74133     0.601333
1.85667     0.746       2.94133     1.00133
1.85667     -0.454      3.14133     1.10133
0.156667        -0.854      1.24133     0.301333
1.05667     0.146       1.94133     1.10133
-0.243333       -0.254      1.14133     0.801333
1.85667     -0.254      2.94133     0.801333
0.456667        -0.354      1.14133     0.601333
0.856667        0.246       1.94133     0.901333
1.35667     0.146       2.24133     0.601333
0.356667        -0.254      1.04133     0.601333
0.256667        -0.054      1.14133     0.601333
0.556667        -0.254      1.84133     0.901333
1.35667     -0.054      2.04133     0.401333
1.55667     -0.254      2.34133     0.701333
2.05667     0.746       2.64133     0.801333
0.556667        -0.254      1.84133     1.00133
0.456667        -0.254      1.34133     0.301333
0.256667        -0.454      1.84133     0.201333
1.85667     -0.054      2.34133     1.10133
0.456667        0.346       1.84133     1.20133
0.556667        0.046       1.74133     0.601333
0.156667        -0.054      1.04133     0.601333
1.05667     0.046       1.64133     0.901333
0.856667        0.046       1.84133     1.20133
1.05667     0.046       1.34133     1.10133
-0.0433333      -0.354      1.34133     0.701333
0.956667        0.146       2.14133     1.10133
0.856667        0.246       1.94133     1.30133
0.856667        -0.054      1.44133     1.10133
0.456667        -0.554      1.24133     0.701333
0.656667        -0.054      1.44133     0.801333
0.356667        0.346       1.64133     1.10133
0.0566667       -0.054      1.34133     0.601333


2.计算B的协方差矩阵C:

3.计算协方差矩阵C的特征值和特征向量。
C=V*S*V-1
S=

4.2248414     0       0       0

0          0.24224437  0        0

0          0       0.078524387 0

0          0       0        0.023681839
V=
0.36158919   0.65654382   -0.58100304   0.3172364

-0.082268924    0.72970845    0.596429220    -0.3240827

0.85657212  -0.17576972 0.  072535217    -0.47971643

0.35884438    -0.074704743    0.54904125    0.75113489

4.选取大的特征值对应的特征向量,得到新的数据集。
特征值是由大到小排列的,前两个特征值的和已经超过了所有特征值之和的97%。我们取前两个特征值对应的特征向量,得到一个4×2的矩阵M。令A'150×2=A150×4M4×2,这样我们就把150×4的数据A集映射成了150×2的数据集A',特征由4个减到了2个。
A'=

每个样本正好是二维的,画在平面坐标系中如图:



鹫尾花数据集共分为3类花(前50个样本为一类,中间50个样本为一类,后50个样本为一类),从上图可以看到把数据集映射到2维后分类会更容易进行,直观上看已经是线性可分的了,下面我们用自组织映射网络对其进行聚类。
当然我们已知了有3类,所以在设计SOFM网络时,我把竞争层节点数设为3,此时的聚类结果是前50个样本聚为一类,后100个样本聚为一类。当把竞争层节点数改为4时,仅第2类中的3个样本被误分到了第3类中,整体精度达98%!

输出聚类结果:

转自:博客园(华夏35度)http://www.cnblogs.com/zhangchaoyang
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习