主成分分析法(principal component analysis,PCA)和奇異值分析法(singular value decomposition,SVD)都是資料降維常用的方法。一般資料降維用於輸入資料的預處理階段,降低資料的維度、除去資料中包含的噪聲。
PCA和SVD均應用於資料降維過程,這是兩者最大的聯絡。而兩者最大的區別在於各自應用的理論基礎和實現過程上的不同。PCA是保證對映後的方差最大(丟失的資訊最少),而SVD是透過奇異值分解的數學理論實現降維。兩者的實現過程敘述如下。
給定樣本資料D={x1,x2,...,xm};低維空間維數d。
(1)求解待降維資料各個維度上的均值(或稱為中心化);
(2)計算資料的協方差矩陣;
(3)計算協方差矩陣的特徵值和特徵向量(稱為特徵值分解);
(4)取最大的d個特徵值所對應的特徵向量v1,v2,...,vd構成投影矩陣V={v1,v2,...,vd}。
(5)降維後的資料D’=D*V。
(1)對給定資料D進行奇異值分解,D=u*Σ*V^T(V^T為V的轉置),如圖所示,矩形下方標識的為矩陣的維數。
矩陣進行奇異值分解的數學基礎較複雜,總的來說就是透過一系列的數學變換對矩陣實現上圖所示的分解,而奇異值分解在程式上實現較為簡便,用U,Sigma,VT=np.linalg.svd(Data)這一個語句(Python實現)就可實現資料的奇異值分解。
需要說明的是Σ矩陣是一個對角矩陣,,該矩陣的對角元素是從大到小排列的。這些對角元素稱為奇異值。對應的就是原始資料集矩陣的奇異值。
(2)降維後的資料D’=D*V。
PCA做的事情是對協方差矩陣對角化,即,而SVD是透過奇異值分解實現X=u*Σ*V^T。透過數學變換可以得到:
SVD中的矩陣u相當於PCA中的矩陣P,不過僅保留了的非零特徵值對應的那些特徵向量,而(也只保留了非零特徵值)。SVD中的u代表了X中資料形成的正態分佈的軸的方向(一組單位正交基),Σ/sqrt(n)代表了這些軸的長度(分佈的標準差)。
主成分分析法(principal component analysis,PCA)和奇異值分析法(singular value decomposition,SVD)都是資料降維常用的方法。一般資料降維用於輸入資料的預處理階段,降低資料的維度、除去資料中包含的噪聲。
PCA和SVD均應用於資料降維過程,這是兩者最大的聯絡。而兩者最大的區別在於各自應用的理論基礎和實現過程上的不同。PCA是保證對映後的方差最大(丟失的資訊最少),而SVD是透過奇異值分解的數學理論實現降維。兩者的實現過程敘述如下。
1、PCA的實現過程給定樣本資料D={x1,x2,...,xm};低維空間維數d。
(1)求解待降維資料各個維度上的均值(或稱為中心化);
(2)計算資料的協方差矩陣;
(3)計算協方差矩陣的特徵值和特徵向量(稱為特徵值分解);
(4)取最大的d個特徵值所對應的特徵向量v1,v2,...,vd構成投影矩陣V={v1,v2,...,vd}。
(5)降維後的資料D’=D*V。
2、SVD實現過程(1)對給定資料D進行奇異值分解,D=u*Σ*V^T(V^T為V的轉置),如圖所示,矩形下方標識的為矩陣的維數。
矩陣進行奇異值分解的數學基礎較複雜,總的來說就是透過一系列的數學變換對矩陣實現上圖所示的分解,而奇異值分解在程式上實現較為簡便,用U,Sigma,VT=np.linalg.svd(Data)這一個語句(Python實現)就可實現資料的奇異值分解。
需要說明的是Σ矩陣是一個對角矩陣,,該矩陣的對角元素是從大到小排列的。這些對角元素稱為奇異值。對應的就是原始資料集矩陣的奇異值。
(2)降維後的資料D’=D*V。
3、PCA和SVD在數學上的聯絡PCA做的事情是對協方差矩陣對角化,即,而SVD是透過奇異值分解實現X=u*Σ*V^T。透過數學變換可以得到:
SVD中的矩陣u相當於PCA中的矩陣P,不過僅保留了的非零特徵值對應的那些特徵向量,而(也只保留了非零特徵值)。SVD中的u代表了X中資料形成的正態分佈的軸的方向(一組單位正交基),Σ/sqrt(n)代表了這些軸的長度(分佈的標準差)。