我接觸princomp函數,主要是因為實驗室的項目需要,所以我一接觸的時候就希望快點學會怎么用。
項目中需要利用PCA算法對大量數據進行降維。
簡介:主成分分析 ( Principal Component Analysis , PCA )或者主元分析。是一種掌握事物主要矛盾的統計分析方法,它可以從多元事物中解析出主要影響因素,揭示事物的本質,簡化復雜的問題。計算主成分的目的是將高維數據投影到較低維空間。
對於銀行后台存儲的大量數據進行分析,並不一件易事,由於每個人的信息屬性眾多,辨別起來頗為費力,我們可以利用PCA降維的功能把決定每個人的最重要的一些屬性從眾多的屬性之中挑選出來作為基本指標建立模型,這個過程完全是通過機器學習的方法來挑選,避免人為主觀因素的影響,最后結構比較科學可靠。
下面是本算法的主要過程描述:
首先將數據庫里面整理好的數據導出為一個矩陣,然后按照同意和拒絕分為兩類加上標簽,用0代表拒絕,1代表同意(這一步會在后面的模型訓練中用到)。
然后先降維,利用princomp函數將導出的矩陣作為輸入,由於數據每個屬性大小差別頗大,我們會利用協方差進行相應的處理,這一步不會對后面的結果有影響,只是對數值進行處理,便於后面的降維操作。princomp函數會輸出4個參數其中latent是協方差矩陣的特征值,coef是輸入矩陣所對應的協方差矩陣的所有特征向量組成的矩陣,即變換矩陣,我們利用latent取出coef前約90%的主成分與輸入矩陣相乘所得到的的新的矩陣就是我們想要矩陣,這個過程也將原來的維數降低,同時將原有的坐標轉換到新的坐標下。
再訓練模型,首先我們將上面得到的新的數據和開始的時候提到的標簽,利用交叉檢驗的原理,平均分成五分,將其中四份用作訓練,一份作為測試交叉檢驗。訓練主要利用svmtrain函數將上面得到四份數據作為輸入,可以得到一個模型model。這個就是我們所要訓練的模型。
最后利用svmpredict函數將測試數據和相應的標簽作為輸出,得出最后的准確率。
上面是我自己的見解,有不正確的地方希望多多批評指正。
目前困惑之一:princomp函數的輸出有什么具體的規定,比如里面的數據大小(格式肯定是double的),應為看到網上有的是先對矩陣做一個處理,不知道這個處理的目的是什么,對最終的結果有什么影響,還有一般數據處理的過程是什么?