版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、Python數(shù)據(jù)挖掘實戰(zhàn):PCA算法PCA算法也叫主成分分析(principalcomponentsanalysis),主要是用于數(shù)據(jù)降維的。為什么要進行數(shù)據(jù)降維?因為實際情況中我們的訓練數(shù)據(jù)會存在特征過多或者是特征累贅的問題,比如:一個關于汽車的樣本數(shù)據(jù),一個特征是”km/h的最大速度特征",另一個是"英里每小時“的最大速度特征,很顯然這兩個特征具有很強的相關性拿到一個樣本,特征非常多,樣本缺很少,這樣的數(shù)據(jù)用回歸去你和將非常困難,很容易導致過度擬合PCA算法就是用來解決這種問題的,其核心思想就是將n維特征映射到k維上(k<n),這k維是全新的正交特征。我們將這k維
2、成為主元,是重新構造出來的k維特征,而不是簡單地從n維特征中取出其余n-k維特征。PCA的計算過程假設我們得到2維數(shù)據(jù)如下:Data=Xvitr2.52.40.50.777i»*2.91.9工23.13.0?7其中行代表樣例,列代表特征,這里有10個樣例,每個樣例有2個特征,我們假設這兩個特征是具有較強的相關性,需要我們對其進行降維的。第一步:分別求x和y的平均值,然后對所有的樣例都減去對應的均值這里求得x的均值為1.81,y的均值為1.91,減去均值后得到數(shù)據(jù)如下:xy.69.49-1.311.21.39.99.09.29DataAdjust=1.291.09.49.79.19.3
3、1-.81-81r«注意此時我們一般應該在對特征進行方差歸一化.目的是讓每個特征的權重都一樣,但是由于我們的數(shù)據(jù)的值都比較接近,所以歸一化這步可以忽略不做第一步的算法步驟如下:、9S9疋芮口66口空口9.0/廠66口空口9.09穆匚詞.0L啊iEeo寸ooew廠6OO6EEOO06寸0j1W期、(2§(aAsJAYMg(r¥s-K-s總。魚皿趙寸15、KJo');、s>sf(>R£e這里的特征值只有兩個,我們選擇最大的那個,為:1.28402771,其對應的特征向量為:匚0.677873399、,-0.735178656丿注意:mat
4、lab的eig函數(shù)求解協(xié)方差矩陣的時候,返回的特征值是一個特征第五步:將樣本點投影到選取的特征向量上假設樣本列數(shù)為m,特征數(shù)為n,減去均值后的樣本矩陣為DataAdjust(m*n),協(xié)方差矩陣為n*n,選取k個特征向量組成后的矩陣為EigenVectors(n*k),則投影后的數(shù)據(jù)FinalData為:FinalData(m*k)=DataAdjust(m*n)XEigenVectors(n*k)得到的結果是:TraiisfonnedData(Singleeigenvector)827970186L77758033-,992197494-.274210416-1.67580142-.9129
5、491030991094375144457216.4380461371,22382056這樣,我們就將n維特征降成了k維,這k維就是原始特征在k維上的投影。整個PCA的過程貌似很簡單,就是求協(xié)方差的特征值和特征向量,然后做數(shù)據(jù)轉換。但為什么協(xié)方差的特征向量就是最理想的k維向量?這個問題由PCA的理論基礎來解釋。PCA的理論基礎關于為什么協(xié)方差的特征向量就是k維理想特征,有3個理論,分別是:1. 最大方差理論2. 最小錯誤理論3. 坐標軸相關度理論這里簡單描述下最大方差理論:最大方差理論信號處理中認為信號具有較大的方差,噪聲有較小的方差,信噪比就是信號與噪聲的方差比,越大越好。因此我們認為,最好
6、的k為特征既是將n維樣本點轉換為k維后,每一維上的樣本方差都很大PCA處理圖解如下:-降維轉換后:上圖中的直線就是我們選取的特征向量,上面實例中PCA的過程就是將空間的2維的點投影到直線上。那么問題來了,兩幅圖都是PCA的結果,哪一幅圖比較好呢?根據(jù)最大方差理論,答案是左邊的圖,其實也就是樣本投影后間隔較大,容易區(qū)分。其實從另一個角度看,左邊的圖每個點直線上的距離絕對值之和比右邊的每個點到直線距離絕對值之和小,是不是有點曲線回歸的感覺?其實從這個角度看,這就是最小誤差理論:選擇投影后誤差最小的直線。再回到上面的左圖,也就是我們要求的最佳的u,前面說了,最佳的u也就是最佳的曲線,它能夠使投影后的
7、樣本方差最大或者是誤差最小。另外,由于我們前面PCA算法第一步的時候已經(jīng)執(zhí)行對樣本數(shù)據(jù)的每一維求均值,并讓每個數(shù)據(jù)減去均值的預處理了,所以每個特征現(xiàn)在的均值都為0,投影到特征向量上后,均值也為0因此方差為:丄工加(兀=VUTXXU(丄工加)Wm厶"1m厶J】m厶"二】最后的等式中中間的那部分其實就是樣本方差的協(xié)方差矩陣(Xi的均值為0)用;I來表示丄來表示=丄那么上式可以寫作:mJumJ'=u由于u是單位向量,得到上式兩邊痛乘以u,得到:=UU力ZZ工Z/于是我們得到2就是的特征宙,u就是特征向量最佳投影直線就是特征值入最大是對應的特征向量其次是入第二大對應的特征向
8、量(求解的到的特征向量都是正交的)。其中入就是我們的方差,也對應了我們前面的最大方差理論,也就是找到能夠使投影后方差最大的直線。Python實現(xiàn)1.代碼實現(xiàn)偽代碼如下(摘自機器學習實戰(zhàn)):去除平均值計算協(xié)方差矩陣計算協(xié)方差矩陣的特征值和特征向量將特征值從大到小排序保留最上面的N個特征向量將數(shù)據(jù)轉換到上述N個特征向量構建的新空間中'fromnumpyimport*importmatplotlib.pyplotaspltdefloadDataSet(fileName,delim='t'):fr=open(fileName)stringArr=line.strip().spl
9、it(delim)forlineinfr.readlines()datArr=map(float,line)forlineinstringArrreturnmat(dxcord3=;atArr)defpca(dataMat,topNfeat=9999999):meanVals=mean(dataMat,axis=0)meanRemoved=dataMat一meanVals#removemeancovMat=cov(meanRemoved,rowvar=0)eigVals,eigVects=linalg.eig(mat(covMat)eigValInd=argsort(eigVals)#sort
10、,sortgoessmallesttolargesteigValInd=eigValInd:-(topNfeat+1):-1#cutoffunwanteddimensionsredEigVects=eigVects:,eigValInd#reorganizeeigvectslargesttosmallestlowDDataMat=meanRemoved*redEigVects#transformdataintonewdimensionsreconMat=(lowDDataMat*redEigVects.T)+meanValsreturnlowDDataMat,reconMatdefplotBe
11、stFit(dataSet1,dataSet2):dataArrl=array(dataSetl)dataArr2=array(dataSet2)n=shape(dataArr1)0n1=shape(dataArr2)0xcordl=;ycordl=xcord2=;ycord2=ycord3=j=0foriinrange(n):xcord1.append(dataArr1i,0);ycord1.append(dataArr1i,1)xcord2.append(dataArr2i,0);ycord2.append(dataArr2i,1)fig=pltfigure()ax=fig.add_sub
12、plot(111)ax.scatter(xcord1,ycordl,s=30,c='red',marker='s')ax.scatter(xcord2,ycord2,s=30,c='green')plt.xlabel('XI');pltylabel('X2');plt.show()if_name='main':mata=loadDataSet('/Users/hakuri/Desktop/testSet.txt')a,b=pca(mata,2)下載地址:loadDataSet函數(shù)是導
13、入數(shù)據(jù)集。PCA輸入?yún)?shù):參數(shù)一是輸入的數(shù)據(jù)集,參數(shù)二是提取的維度。比如參數(shù)二設為1,那么就是返回了降到一維的矩陣。PCA返回參數(shù):參數(shù)一指的是返回的低維矩陣,對應于輸入?yún)?shù)二。參數(shù)二對應的是移動坐標軸后的矩陣。上一張圖,綠色為原始數(shù)據(jù),紅色是提取的2維特征。Matlab實現(xiàn)functionlowData,reconMat=PCA(data,K)row,col=size(data);meanValue=mean(data);%varData=var(data,1,1);normData=data-repmat(meanValue,row,1);covMat=cov(normData(:,1),
14、normData(:,2);%求取協(xié)方差矩陣eigVect,eigVal=eig(covMat);%求取特征值和特征向量sortMat,sortlX=sort(eigVal,'descend1);B,IX=sort(sortMat(1,:),'descend');len=min(K,length(IX);eigVect(:,IX(1:1:len);lowData=normData*eigVect(:,IX(1:1:len);reconMat=(lowData*eigVect(:,IX(1:1:len)')+repmat(meanValue,row,1);%將降維后的數(shù)據(jù)轉換到新空間end調用方式
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 沈陽理工大學《工廠供電》2021-2022學年期末試卷
- 固定總價合同規(guī)范要求
- 國藥器械銷售合同
- 合同保證金遺失聲明
- 合同法第三章42條
- 2024年興安客運從業(yè)資格證考試模板
- 2024融資合同股權股份轉讓協(xié)議
- 2024工傷勞動合同范文
- 2024小區(qū)綠化工程合同
- 英語閱讀記錄卡-20210813175455
- 《新媒體導論》(第二版)課件全套 -第1-9章 理解新媒體:多重屬性的復合-新媒體文化:流動的亞文化
- 工程變更申請單(ECR)
- 高考理解性默備考指導(基本題型+考查內(nèi)容+考查形式+應對策略)
- 重大版小學英語五年級上冊全冊教案
- 第五單元《簡易方程》大單元教學解讀五年級數(shù)學上冊人教版
- 電梯安裝危險源與危險評價表
- 凱里市舟溪鎮(zhèn)3.19較大爆炸事故
- 醫(yī)院信息化建設項目驗收方案
- 結構加固施工方案說明范本
- 愛心助學基金會章程樣本
- 藥物性肝損傷的藥物治療
評論
0/150
提交評論