数值实验03:奇异值分解与主成分分析
主成分分析,也简称为PCA。它是一种对数据进行分析的技术,属于多元统计分析的范畴,最重要的应用是对原有数据进行简化。这种方法可以有效的找出数据中最“主要”的元素和结构,去除噪音和冗余,将原有的复杂数据降维,揭示隐藏在复杂数据背后的简单结构。它的优点是简单,而且无参数限制,可以方便地应用于许多实际课题。
基本问题
1、从代数的角度来看,PCA的目标就是使用另一组基去重新描述得到的数据空间,或者说它是线性变换Z=PX,而新的基要怎样揭示原有的数据间的关系?PCA适用的前提条件是什么? 答:
主成分分析在统计学中指的是一种简化数据集的技术,是一个线性变换。它把数据变换到一个新的坐标系中,使得任何数据投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。主成分分析经常用减少数据集的维数,同时保持数据集的对方差贡献最大的特征。这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能保留住数据的最重要方面。
PCA适用的前提条件为尽量不改变数据特性:
(1) 满足线性要求。由于PCA的目标是使用另一组新的基去重新描述得到的数
据空间,它是线性变换Z=PX,这使得它能进行的主元分析之间的关系也是线性的。
(2) 符合正态分布或指数分布。如果数据不满足正态分布或指数分布,方差和
协方差就不能很好地反映噪声和冗余,PCA将失效。
(3) 本身具有较高的信噪比。在进行数据处理时把具有较高方差的一维向量当
作主元,方差较小的当作噪声,这样可以很方便的取出数据中的主要成分,去除次要部分的噪声。主要成分能够很好的还原数据的信息。
(4) 主元正交。主元正交能够使用一系列的线性变换对数据进行处理,提高
PCA的性能及效率。
2、对于一组具有m个观测变量,n个采样点的数据X,将每个观测变量的采样值
T
写为行向量,可以得到一个m n的矩阵X (x1,x2,L,xm),这m个观测变量的
协方差矩阵如下:
CX
1
XXT
n 1
证明协方差矩阵是m阶的对称半正定矩阵。为什么该矩阵对角线上的元素对应的是观测变量的方差?
CX
1
XXT
n 1,而
答: 因为 ,
所以,CX为对称矩阵。对CX求特征值,由于X矩阵和它的转置矩阵的特征值相等,设为λ。所以CX矩阵的特征值为λ2≥0。所以该矩阵为半正定矩阵。综上所述,矩阵CX为对称半正定矩阵,主对角元素是观测变量的方差。
3、对于新定义的Z=PX,推导该变量的协方差矩阵CZ与CX的关系。 答:寻找一组正交基组成矩阵P,Z=PX,使得CZ为对角矩阵。则有
所以,
实验问题
4、对矩阵X进行奇异值分解结果如何?它与CX的特征值分解有何关系?讨论数据的中心化与归一化对计算结果的影响。
答:对矩阵X进行奇异值分解,将X分解成三个矩阵:
其中U是m*m 的矩阵,V是n*n矩阵,Λ是m*n 矩阵。U是矩阵XXT的特征值矩阵,V是矩阵XTX的特征值矩阵。Λ是伪对角矩阵,对角线上的值就是奇异值。 CX矩阵的特征值乘上(n-1)等于X矩阵特征值的平方。CX矩阵的特征向量和X矩阵分解出来的U矩阵的列向量线性相关。
。
中心化与归一化:
中心化:每个维度数据都减去该维度数据的平均值; 归一化:每个维度数据都除以该维度数据的标准差。
中心化和归一化也称为数据的标准化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。原始数据通过标准化处理后,它们之间的可比性增强、影响因素减少,从而更利于分析。
5、随机生成若干个的矩阵X,分别计算矩阵X的奇异值分解与矩阵CX的特征值分解,它们有何关系?分析和关注数据的中心化与归一化对计算结果产生的差异。 答:
设矩阵X为原矩阵,矩阵B为PCA分解后得到的酉矩阵,矩阵C为PCA分解后得到的对角矩阵,矩阵U为SVD分解后的左矩阵,矩阵V为SVD分解后的右矩阵,矩阵S为SVD分解后中间的对角矩阵。 第一组数据:
X = [6 5 0 3
CX=[23.3333333333333 22.3333333333333 21 22.3333333333333
34
26.6666666666667
2 8 3 5
2 6 3 7
7 7 5 1]
32 30 32.6666666666667 26 26
41.3333333333333]
-0.131199743636058 -0.723724827132701 0.644444068601329 0.209047469025914]
21 32 26.6666666666667
30
B = [0.411786479069834 -0.292084005692979 0.527131772735593 0.496300895026332 0.553398058746110
0.377376098777818 0.578830945694059 -0.661232901477611
-0.853173755189085 0.236520081252328 -0.0577234817691189 0.461325041888468
C = [113.069669593525 0 0 0 0
0 0
13.2313125606574 0 0 0 0
4.14370201271079
0 0.888649166440631] 0.709285491919851
-0.434563467763495 0.144429504118997
0.316989759644773 -0.683377711458733
U = [-0.455616259277181
-0.712772491544327 -0.0639562125133900 -0.316940292388088 0.0694478842926790 -0.428856678438048 V = [-0.411786479069834
-0.527131772735593 -0.496300895026332 -0.553398058746110
-0.698570458293384 0.292084005692980 -0.377376098777818 -0.578830945694059 0.661232901477611
0.806351256010587 0.494493169172612 -0.374289143250851 -0.853173755189086 0.236520081252327 -0.0577234817691196 0.461325041888469
0.433576869082519] -0.131199743636058 -0.723724827132702 0.644444068601329 0.209047469025914]
S = [18.4176276642942 0 0 0
0 0 0
6.3003125066914 0
0 3.52577736650123 0 0 0
1.63277294787790]
第二组数据:
X = [8
9 1 4
3 8 4 9
2 3 1 1
9 6 5 1]
45
CX=[54 45.3333333333333 1 6
45.3333333333333 56.6666666666667 14.3333333333333 34.6666666666667 16 45
14.3333333333333 34.6666666666667
5 14
14 47.6666666666667]
0.171698006102394 0.0605203628197950 -0.979869814255297
0.0819281849909620]
B = [0.601930126094515 -0.163445607070299
0.569938091298097 0.762538231413244 0.184814534018447 -0.0338032706290575 0.527915034264861 C = [141.303160749497 0
0.762551933660735 -0.300072163662018 0.0674986964438112
-0.625042652990468 0
-0.569135459309869
0 0 0
17.8985212561070 0 0 0
3.99109403326986 0 0
0.140557294459576]
-0.0615497909027829 0.512439637536504 U = [0.565645950568921 0.643165530580008 0.665344032683325 -0.106121556794377 -0.361267518502523 0.277140947041834 0.0371614916508057 0.929390004265275 0.400692990019077
-0.757426787878249
0.0439502364799512 V = [0.601930126094514 0.163445607070298 -0.762551933660735 0.569938091298097 -0.762538231413244 0.300072163662019 0.184814534018447 0.0338032706290577 -0.0674986964438131 0.527915034264861
0.625042652990468
0.569135459309869
S = [20.5890621993448 0 0 0
0 7.32772568866501 0 0
0 0 3.46024306946920 0 0
0.649362674765566]
第三组数据:
X = [5 7 8 5
3 2 1 4 7 4 9 4 2
6
8
3]
CX=[29 27 40.6666666666667 23.6666666666667 27
35
47.3333333333333 25.6666666666667
40.6666666666667 47.3333333333333 70
34.6666666666667
23.6666666666667 25.6666666666667 34.6666666666667 22] B = [0.418586401553023 -0.701149405212854 -0.348165609222619 0.474791093544868 0.358215772578395 0.582307075647928 0.681683945801254 0.422652352034504 -0.487595313404137 0.366968445458451
-0.448816177477403
0.549499762103063
C = [146.600794041188 0 0 0
5.84130488024606 0
-0.644624940125075 -0.240927663382256 0.513632325177618] 0.171698006102396 0.0605203628197945 -0.979869814255297 0.0819281849909608]
0.460386407878421 0.554232214344214 -0.344851848919005 -0.601621318040724]
0.115401392950555]
0.367824900549653 0.569609399743436 -0.715166553126011 0.169666660099798 -0.348165609222615 0.582307075647929 -0.487595313404139 0.549499762103062
0.704694722571942 -0.444795024727492 -0.119849179412505 -0.539628490862994] 0.460386407878421 0.554232214344212 -0.344851848919001 -0.601621318040727]
U = [0.605812846608045 0.0331811000352337 0.207658307698303 0.592819716874282 0.488296636701124
-0.659227233164309 -0.350339490735921 0.664515395522088
V = [0.418586401553023 -0.701149405212855 0.474791093544868 0.681683945801255 0.366968445458451
0.358215772578396 0.422652352034503 -0.448816177477400
0 0
S = [20.9714659030685 0
0 0 0 备用 一、 6 6 2 3
5 2 8 2
2 2 2 4
3 9 4 2
4.18615750309734 0 0 0
3.21364264610210 0 0
0.588391178427778]
28.3333333333333 21.3333333333333 13.3333333333333 28.6666666666667 21.3333333333333 32.3333333333333 12.6666666666667 23
13.3333333333333 12.6666666666667 9.33333333333333 13.3333333333333 28.6666666666667 23 0.537587183261060 0.518640628679522 0.277015262857704 0.604379403041026 88.0137240422176 0 0
13.3333333333333 36.6666666666667 -0.278098401412728 0.823965609752008 0.0648326287445351 -0.489426892730425 0
0 0
0.552391174163078 -0.201379705542234 0.565951746447693 -0.577934966579514
0.573171257332275 0.107418743358104 -0.773794478583788 -0.247341925796557
12.4679761649677 0
1.96053776434238
0.181923632772101 -0.702407403864479 0.687961359340669 0.0153882711667754
0.479092200368461 -0.325263458735088 -0.473627121171319 0.663590005989213
-0.695408176343655 0.0493984301215078 0.219059613417383 0.682627386753088
0.503767727886078 0.631179306148087 0.504380217608238 0.305665431340190
0.537587183261060 0.518640628679522 0.277015262857704 0.604379403041026
16.2493437444917 0 0 0 0 二、 3 3 4 5
1 3 8 0
9 7 5 6
2 5 10 5
-0.278098401412728 0.823965609752009 0.0648326287445356 -0.489426892730425
0.552391174163079 -0.201379705542234 0.565951746447692 -0.577934966579515
-0.573171257332273 -0.107418743358104 0.773794478583789 0.247341925796555
0 0 0
6.11587512093756 0 0 0
3.55995591060018 0 0
2.42520376319746
19.6666666666667 14.6666666666667 32.6666666666667 28.6666666666667 14.6666666666667 24.6666666666667 23.3333333333333 32.3333333333333 32.6666666666667 23.3333333333333 63.6666666666667 44.3333333333333 28.6666666666667 32.3333333333333 44.3333333333333 51.3333333333333 0.365051935559367 0.349728670495592 0.633293734641686 0.585974391113922
-0.142722919391760 0.589132569223871 -0.657340657371482 0.447723401584506
0.573990962306015 -0.597617667972004 -0.380649531338749 0.410479515213987
0.718958710786418 0.416492251837618 -0.148149384479332 -0.536362131606955
136.403156902038 0 0 0 0
0 0
19.6511093435658 0 0 0
3.23342699806239 0 0
0.0456400896668650
0.632923618270513 0.133306117788165 -0.694533113861771 0.315057020466268
0.475363140944451 0.219304302115233 0.0910025701171173 -0.847144639089014
0.452127775953530 -0.844541432235589 0.279451257682395 0.0650940706093969
0.411118051024402 0.469983905332361 0.656695729056676 0.422904003633402
0.365051935559367 0.349728670495592 0.633293734641686 0.585974391113923 20.2289265831412 0 0 0 0 三、 1 3 3 7
1 7 1 7
5 8 7 9
9 3 7 2
0.142722919391759 -0.589132569223872 0.657340657371483 -0.447723401584506 0
0 0
-0.573990962306017 0.597617667972003 0.380649531338749 -0.410479515213986
0.718958710786417 0.416492251837620 -0.148149384479331 -0.536362131606956
7.67810706038261 0 0 0
3.11452741105086 0 0
0.370027389527544
22.6666666666667 24.6666666666667 37.6666666666667 17.6666666666667 24.6666666666667 33.3333333333333 43.6666666666667 17 37.6666666666667 43.6666666666667 73 17.6666666666667 17
45.3333333333333
45.3333333333333 47.6666666666667
0.358690161733358 0.414508565378319 0.702456020732014 0.453959861707013
147.297012629784 0 0 0 0
0.287131956314902 0.512762152761915 0.0716307125494299 -0.805915166365173
0.763925655113692 -0.630381610928482 0.0616645539349394 -0.123426499789682
-0.453116101013406 -0.409727529617166 0.705423321662256 -0.359426053217087
0 0 0
26.5268732511105 0 0 0
2.49814686655876 0 0
0.344633919213220
-0.683256081382107 0.292129854443466 -0.422140884934977 0.519247868232044
-0.244364505993554 -0.729784896689548 0.448956316683290 0.454024469037215
-0.561129146160856 0.332085184979511 0.642111412049503 -0.403170492176334
-0.398222546817333 -0.521338261231409 -0.455991484012894 -0.601412493294117
-0.358690161733358 -0.414508565378319 -0.702456020732014 -0.453959861707013 21.0212044823638 0 0 0 0
0.287131956314902 0.512762152761915 0.0716307125494297 -0.805915166365173 0
0 0
0.763925655113692 -0.630381610928483 0.0616645539349400 -0.123426499789683
-0.453116101013407 -0.409727529617165 0.705423321662256 -0.359426053217087
8.92079703576601 0 0 0
2.73759759637466 0 0
1.01680959753517
从上面的数据可以看出,PCA对角矩阵中的特征值乘上4-1=3之后得到的值等于SVD对角矩阵中的特征值的平方。 并且矩阵B和矩阵V为相似矩阵。
矩阵归一化和中心化的影响: 原矩阵:
X = [9 0
7
10 7
1 1
5
5 2
5 5
0 1
8 8]
归一化矩阵:
Z = [0.562500000000000 0.370370370370370 0
0.259259259259259
0.111111111111111
0.227272727272727
0.777777777777778
0.0454545454545455 0.363636363636364
0.363636363636364]
0.0956439393939394
0.312500000000000 0.125000000000000
0.185185185185185 0.185185185185185
0.111111111111111
归一化后的CX=[0.143229166666667 0.0964506172839506 0.0964506172839506 0.0254629629629630 0.0956439393939394
0.0909922267946959 0.0877914951989026 0.0768799102132435
0.0254629629629630
0.0877914951989026 0.209876543209877 0.0336700336700337 0.553317066856917 0.148132736643049 0.00276914240291637 -0.819688506513207
0.0768799102132435 0.0336700336700337 0.106060606060606] 0.429744219686356 -0.847064112113163 0.280658843640978 0.137959809735346]
B =[ 0.514769293294659 0.494138344850853 0.508800135373878 0.530521136734373 0.441228195384782
0.0407615572335510 -0.799856405121901 0.338224071859802
0 0
0 0 0
C =[ 0.346783518742218 0 0 0 0
0.175434410671070 0 0
0.0274904027369602 0
0.000450210581596442]
0.627205641789769 0.0114911045768552 -0.340294080608135 -0.700486242638464 0.553317066856916 0.148132736643051 0.00276914240291566 -0.819688506513207
-0.257340537294896 0.134742067266268 0.750961639464783 -0.593023641371865] 0.429744219686359 -0.847064112113165 0.280658843640978 0.137959809735344]
U = [0.624748326118918 0.387399612523643 0.553537196455310 0.407396217831006 0.370559607686803
-0.821771928192253 0.392791135913755 0.142574758633152
V = [0.514769293294658 0.494138344850854 0.508800135373877 0.530521136734373 0.441228195384781
0.0407615572335516 -0.799856405121901 0.338224071859802
0 0
0 0 0
S = [1.01997576256824 0 0 0
0.725467595426019 0
0.287178007881663
0 0 0 0.0367509420939013]
中心化矩阵:
W = [1.27688479613812 1.37542395092427 -0.390434404721515 -1.02150783691050 0.255376959227625 -0.510753918455249
0.105801842378790 -0.740612896651528 -0.740612896651528
-0.150755672288882
1.48365073794176 -1.35680105059994 -0.702781928498727 -0.390434404721515
0.753778361444409 0.753778361444409]
中心化后的CX=[1 0.612438663180517 0.612438663180517 -0.664719673704188 0.333662551520575
-0.664719673704188 0.333662551520575 -0.489140321567980
1.00000000000000 0.143203421738355 0.143203421738355 -0.489140321567980
1
-0.926067165051089
1]
-0.305245695825801 0.00635155467284332 -0.748711403323762 -0.588401187512417]
-0.926067165051089 0.622058593382312 -0.635462636141867
B =[ 0.441169483587765 -0.570296114601832 -0.0907633347870455 -0.656320328393392 0.605289294756507
-0.766752184789324
-0.00556407373986936 0.0929725881858221 0.294656528646947
0 0
0 0
-0.447868778006324
C =[ 2.32068162301378 0 0 0 0
1.64453233185427 0 0 0
0.0347860451319498 0
6.22137586349007e-16]
-0.821666212745942
-0.150178127314304
-0.500000000000000
U =[ -0.228716341585181 0.854731692166080 -0.415903156039946 -0.210112194540952
0.0420466326566360 0.291847116835248 0.487772463254058
0.132912810101771 0.701320059025097 -0.684054741812564 0.622058593382313 -0.635462636141867
-0.500000000000000 -0.500000000000000 -0.500000000000000] -0.305245695825799 0.00635155467284059 -0.748711403323762 -0.588401187512419]
V =[-0.441169483587764 -0.570296114601833 0.0907633347870462 0.656320328393392 -0.605289294756507
-0.766752184789324
-0.00556407373986871 0.0929725881858253 0.294656528646947
-0.447868778006321
S =[2.63856871599762 0
0 0 0
0 0
2.22117018608723 0 0 0 0
0.323045098083611 0 0 1.82687214552364e-16]
备用:
矩阵归一化和中心化的影响: 原矩阵:
X = [0
10 2 1
4 2 5 3
10 9 1 7
3 4 5 9]
归一化矩阵:
Z = [0
0.285714285714286
0.370370370370370
0.142857142857143
0.190476190476190 0.238095238095238 0.428571428571429
0.0720390720390721
0.769230769230769 0.153846153846154 0.0769230769230769
0.142857142857143 0.357142857142857 0.214285714285714
0.333333333333333 0.0370370370370370 0.259259259259259
归一化后的CX=[0.207100591715976 0.0604395604395604 0.0604395604395604 0.0940170940170940 0.0720390720390721
0.0918367346938775 0.0740740740740741 0.0816326530612245
0.0940170940170940
0.0740740740740741 0.105624142661180 0.0787771898883010 0.187380805787408 0.310308507947312 -0.853126039258663 0.375197314298491
0.0816326530612245 0.0787771898883010 0.0990173847316704] 0.0515936174583926 0.716131607526661 -0.0339435824154490 -0.695227626430109]
B =[ 0.641533338425768 -0.742065703255654 0.403830552351369 0.481336096407498 0.440081154982884
0.477268305656663 0.198341515187375 0.426865435260911
0 0
0 0 0
C =[ 0.365103604281979 0 0 0 0
0.101659295904895 0 0
0.0233856443810694 0
0.0134303092347603]
0.655840248291623 0.0922723634773249 -0.745220554634226 -0.0774964812733327 -0.187380805787408
-0.461918737288268 0.00870302725375953 -0.482803474843370 0.743946330146066] -0.0515936174583929
U = [0.340656801970749 0.490364754171685 0.760051278024566 0.349265488626523 0.429288500310410
-0.643220120198483 0.299267018036235 0.506210960720618
V = [0.641533338425768 -0.742065703255654
0.403830552351369 0.481336096407497 0.440081154982884
0.477268305656663 0.198341515187374 0.426865435260912
0 0
0 0 0
-0.310308507947311 0.853126039258663 -0.375197314298491
-0.716131607526662 0.0339435824154503 0.695227626430108]
S = [1.04657097840803 0 0 0 0
0.552248030974023 0 0
0.264871540832926 0
0.200726001565021]
中心化矩阵:
W = [-0.710619504152029
0.387298334620742
0.806225774829855
-0.855527738208045
1.47590204708498 -1.16189500386223 -0.273315193904626 -0.491967349028327
0.558156305651438 -0.475293187893358 -0.0950586375786717
1.42587956368008]
1.16189500386223 -1.42639944777590 -0.387298334620742
0.0620173672946042
中心化后的CX=[1 -0.705696796172046 -0.705696796172046 0.203403465210950 -0.256345570292959
1
0.203403465210950 -0.256345570292959
-0.672538245981366 -0.147264208102145
-0.672538245981366 -0.147264208102145
1.00000000000000 -0.243671839571301 -0.243671839571301
1.00000000000000]
-0.476833317500088
B =[ -0.540317202831573 0.641074597585313 -0.522604592295199 0.154806720677959
0.0755458199212945 0.689188027129422
0.349477215060613 0.0748446964757021 -0.930890313976548
0 0
0 0
-0.00843003586488852 -0.683240785506562 -0.724512734678981
-0.443129787770370
-0.00548589507340027 -0.330829272484802]
C =[2.10747518049160 0 0 0 0
1.09568137636810 0 0 0
0.796843443140303 0
0]
U =[ -0.0312070382081416 0.758653098618863 -0.645576459596182 -0.0818696008145394
0.517595749718580 -0.693628690755751 -0.500000000000000
0.104611746730827 0.202501128115206 -0.824708624564613
0.404353630380540 0.540577772320809 -0.251302711945598 0.689188027129421
-0.500000000000000 -0.500000000000000 -0.500000000000000] -0.476833317500088
V =[0.540317202831573 0.0755458199212939 -0.641074597585312
0.349477215060614
-0.00843003586488825 -0.683240785506563
0.522604592295200 -0.154806720677959
0.0748446964757020 -0.930890313976548
0 0
-0.724512734678981 -0.443129787770369
-0.00548589507340045 -0.330829272484801]
S =[2.51444338601504 0 0 0 0
1.81302071943602 0 0 0
1.54613399465276 0 0
4.89603409147001e-16]
分析数据可得:
1、 矩阵归一化后,PCA的特征值和SVD的奇异值都明显减小。 2、 中心化对奇异值的影响较小,但对特征向量影响较大。
选作问题:
6. 假设数据源是一系列的图像,每幅图像都是一个矩阵。分别用经典的主成分 分析方法和奇异值分解方法计算特征脸。注意数据的中心化与归一化处理的 影响。
分析:选取9 张人脸图像作为数据源,大小为100×100(这里的人脸图像要 求大小相同,人眼部位尽可能对齐),把图像存储为[100×100, 9]的矩阵,每 列表示一张图像,每行代表同一个位置的像素,因此一共有100×100 个维度。 中心化时各自减去每个维度的均值,由于图像数据的量纲一样,所以不需要 归一化。9 张人脸为:(matlab 保存后得到的图像效果比matlab 中显示的差)
a. 采取 PCA 计算特征脸。因为X 是 10000×9 的矩阵,直接计算XXT会内
存泄露,所以改为对X T X 进行特征值分解,取前8个特征值。(pca_face.m)
b. 采取SVD 计算特征脸,取前8 个特征值,(svd_face.m)