matlab pca和逆pca函数,matlab_PCA,训练集与测试集分开,原理和用法
該樓層疑似違規(guī)已被系統(tǒng)折疊?隱藏此樓查看此樓
PCA基本流程:
1、訓(xùn)練集矩陣算協(xié)方差矩陣A;
2、算協(xié)方差矩陣特征值與特征向量;
3、按特征值的大小排列特征矩陣,得B,對應(yīng)的特征值(按從大到小排列)組成向量a;
4、A*B得到去關(guān)聯(lián)的新矩陣C,A與C的對應(yīng)位置物理意義相同(指樣本維度和樣本數(shù)),但是去掉了關(guān)聯(lián),并且按特征貢獻度大小排列;
5、選貢獻度百分比或降維后的維度。例如百分之90,則是取滿足sum(a(1:n))/sum(a)>90%的最小的n;如果直接定降維后的維度,則直接設(shè)置個n。
6、任一樣本的降維公式相同,對于樣本x:x*B(1:n,:)。
原理說明:步驟3,4本質(zhì)上是基變換原理。4可以去關(guān)聯(lián)的原理與馬氏距離相仿。貢獻度的原理與協(xié)方差矩陣的數(shù)學(xué)意義相關(guān)。轉(zhuǎn)換矩陣相關(guān)的計算必須在訓(xùn)練集上完成是因為協(xié)方差矩陣的計算需要一個樣本集,如將測試集樣本加入這個樣本集,則訓(xùn)練集中已經(jīng)包含了測試集信息(例如某一維特征的均值)。
matlab函數(shù)說明:
[COEFF, SCORE, LATENT] = pca(X);
COEFF:步驟3算出來的矩陣B,本質(zhì)上是一個基變換矩陣。數(shù)學(xué)意義是協(xié)方差矩陣按特征值的大小排列的特征矩陣。
SCORE:步驟4算出來的矩陣C,與A同維同物理意義。
LATENT:步驟3算出來的向量a,存儲了貢獻度,數(shù)學(xué)意義是協(xié)方差矩陣特征值從大到小排列。
用途:根據(jù)LATENT計算滿足某貢獻度所需的樣本維度,或直接定一個樣本維度,然后
x*COEFF(1:n,:)降維。
把訓(xùn)練集中所有樣本計算x*COEFF就是SCORE,當(dāng)然,x*COEFF(1:n,:)這個式子更大的用途是計算測試集中的樣本。
以上全是廢話,這里是關(guān)鍵的:
pca內(nèi)建函數(shù)在算協(xié)方差的時候先減了個樣本均值,所以這里x*COEFF不是SCORE
需要先算
x0 = bsxfun(@minus,train_data,mean(train_data,1));
x0 = bsxfun(@minus,test_data,mean(test_data,1));
然后x0*x*COEFF才是SCORE
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的matlab pca和逆pca函数,matlab_PCA,训练集与测试集分开,原理和用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: V社回应Steam Deck SSD配置
- 下一篇: matlab cd参数,MATLAB变量