
數(shù)據(jù)挖掘實(shí)戰(zhàn):PCA算法
為什么要進(jìn)行數(shù)據(jù)降維?因?yàn)閷?shí)際情況中我們的訓(xùn)練數(shù)據(jù)會存在特征過多或者是特征累贅的問題,比如:
一個(gè)關(guān)于汽車的樣本數(shù)據(jù),一個(gè)特征是”km/h的最大速度特征“,另一個(gè)是”英里每小時(shí)“的最大速度特征,很顯然這兩個(gè)特征具有很強(qiáng)的相關(guān)性
拿到一個(gè)樣本,特征非常多,樣本缺很少,這樣的數(shù)據(jù)用回歸去你和將非常困難,很容易導(dǎo)致過度擬合
PCA算法就是用來解決這種問題的,其核心思想就是將 n 維特征映射到 k 維上(k < n),這="" k="" 維是全新的正交特征。我們將這="" k="" 維成為主元,是重新構(gòu)造出來的="" k="" 維特征,而不是簡單地從="" n="" 維特征中取出其余="" n-k="">
PCA 的計(jì)算過程
假設(shè)我們得到 2 維數(shù)據(jù)如下:
其中行代表樣例,列代表特征,這里有10個(gè)樣例,每個(gè)樣例有2個(gè)特征,我們假設(shè)這兩個(gè)特征是具有較強(qiáng)的相關(guān)性,需要我們對其進(jìn)行降維的。
第一步:分別求 x 和 y 的平均值,然后對所有的樣例都減去對應(yīng)的均值
這里求得 x 的均值為 1.81 , y 的均值為 1.91,減去均值后得到數(shù)據(jù)如下:
注意,此時(shí)我們一般應(yīng)該在對特征進(jìn)行方差歸一化,目的是讓每個(gè)特征的權(quán)重都一樣,但是由于我們的數(shù)據(jù)的值都比較接近,所以歸一化這步可以忽略不做
第一步的算法步驟如下:
第四步:將特征值從大到小進(jìn)行排序,選擇其中最大的 k 個(gè),然后將其對應(yīng)的 k 個(gè)特征向量分別作為列向量組成特征矩陣
這里的特征值只有兩個(gè),我們選擇最大的那個(gè),為: 1.28402771 ,其對應(yīng)的特征向量為:
注意:matlab 的 eig 函數(shù)求解協(xié)方差矩陣的時(shí)候,返回的特征值是一個(gè)特征值分布在對角線的對角矩陣,第 i 個(gè)特征值對應(yīng)于第 i 列的特征向量
第五步: 將樣本點(diǎn)投影到選取的特征向量上
假設(shè)樣本列數(shù)為 m ,特征數(shù)為 n ,減去均值后的樣本矩陣為 DataAdjust(m*n),協(xié)方差矩陣為 n*n ,選取 k 個(gè)特征向量組成后的矩陣為 EigenVectors(n*k),則投影后的數(shù)據(jù) FinalData 為:
FinalData (m*k) = DataAdjust(m*n) X EigenVectors(n*k)
得到的結(jié)果是:
這樣,我們就將 n 維特征降成了 k 維,這 k 維就是原始特征在 k 維上的投影。
整個(gè)PCA的過程貌似很簡單,就是求協(xié)方差的特征值和特征向量,然后做數(shù)據(jù)轉(zhuǎn)換。但為什么協(xié)方差的特征向量就是最理想的 k 維向量?這個(gè)問題由PCA的理論基礎(chǔ)來解釋。
PCA 的理論基礎(chǔ)
關(guān)于為什么協(xié)方差的特征向量就是 k 維理想特征,有3個(gè)理論,分別是:
最大方差理論
最小錯(cuò)誤理論
坐標(biāo)軸相關(guān)度理論
這里簡單描述下最大方差理論:
最大方差理論
信號處理中認(rèn)為信號具有較大的方差,噪聲有較小的方差,信噪比就是信號與噪聲的方差比,越大越好。因此我們認(rèn)為,最好的 k 為特征既是將 n 維樣本點(diǎn)轉(zhuǎn)換為 k 維后,每一維上的樣本方差都很大
PCA 處理圖解如下:
降維轉(zhuǎn)換后:
上圖中的直線就是我們選取的特征向量,上面實(shí)例中PCA的過程就是將空間的2維的點(diǎn)投影到直線上。
那么問題來了,兩幅圖都是PCA的結(jié)果,哪一幅圖比較好呢?
根據(jù)最大方差理論,答案是左邊的圖,其實(shí)也就是樣本投影后間隔較大,容易區(qū)分。
其實(shí)從另一個(gè)角度看,左邊的圖每個(gè)點(diǎn)直線上的距離絕對值之和比右邊的每個(gè)點(diǎn)到直線距離絕對值之和小,是不是有點(diǎn)曲線回歸的感覺?其實(shí)從這個(gè)角度看,這就是最小誤差理論:選擇投影后誤差最小的直線。
再回到上面的左圖,也就是我們要求的最佳的 u ,前面說了,最佳的 u 也就是最佳的曲線,它能夠使投影后的樣本方差最大或者是誤差最小。
另外,由于我們前面PCA算法第一步的時(shí)候已經(jīng)執(zhí)行對樣本數(shù)據(jù)的每一維求均值,并讓每個(gè)數(shù)據(jù)減去均值的預(yù)處理了,所以每個(gè)特征現(xiàn)在的均值都為0,投影到特征向量上后,均值也為0.因此方差為:
最佳投影直線就是特征值 λ 最大是對應(yīng)的特征向量,其次是 λ 第二大對應(yīng)的特征向量(求解的到的特征向量都是正交的)。其中 λ 就是我們的方差,也對應(yīng)了我們前面的最大方差理論,也就是找到能夠使投影后方差最大的直線。
Python實(shí)現(xiàn)
1.代碼實(shí)現(xiàn)
偽代碼如下(摘自機(jī)器學(xué)習(xí)實(shí)戰(zhàn)):
2.代碼下載
下載地址: https://github.com/jimenbian/PCA
loadDataSet函數(shù)是導(dǎo)入數(shù)據(jù)集。
PCA輸入?yún)?shù):參數(shù)一是輸入的數(shù)據(jù)集,參數(shù)二是提取的維度。比如參數(shù)二設(shè)為1,那么就是返回了降到一維的矩陣。
PCA返回參數(shù):參數(shù)一指的是返回的低維矩陣,對應(yīng)于輸入?yún)?shù)二。參數(shù)二對應(yīng)的是移動坐標(biāo)軸后的矩陣。
上一張圖,綠色為原始數(shù)據(jù),紅色是提取的2維特征。
Matlab 實(shí)現(xiàn)
function [lowData,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),normData(:,2));%求取協(xié)方差矩陣[eigVect,eigVal] = eig(covMat);%求取特征值和特征向量[sortMat, sortIX] = sort(eigVal,'descend');[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ù)轉(zhuǎn)換到新空間end
調(diào)用方式
function testPCA%%clcclearclose all%%filename = 'testSet.txt';K = 1;data = load(filename);[lowData,reconMat] = PCA(data,K);figurescatter(data(:,1),data(:,2),5,'r')hold onscatter(reconMat(:,1),reconMat(:,2),5)hold offend
效果圖
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時(shí)代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03