pca旨在找到資料中的主成分,並利用這些主成分表徵原始資料,從而達到降維的目的。舉乙個簡單的例子,在三維空間中有一系列資料點,這些點分布在乙個過原點的平面上。如果我們用自然座標系x,y,z三個軸來表示資料,就需要使用三個維度。而實際上,這些點只出現在乙個二維平面上,如果我們通過座標系旋轉變換使得資料所在平面與x,y平面重合,那麼我們就可以通過x』,y』兩個維度表達原始資料,並且沒有任何損失,這樣就完成了資料的降維。而x,y兩個軸所包含的資訊就是我們要找到的主成分。
但在高維空間中,我們往往不能像剛才這樣直觀地想象出資料的分布形式,也就更難精確地找到主成分對應的軸是哪些。不妨,我們先從最簡單的二維資料來看看pca究竟是如何工作的,如圖4.1所示。
圖4.1(a)是二維空間中經過中心化的一組資料,我們很容易看出主成分所在的軸(以下稱為主軸)的大致方向,即圖4.1(b)中黃線所處的軸。因為在黃線所處的軸上,資料分布得更為分散,這也意味著資料在這個方向上方差更大。在訊號處理領域,我們認為訊號具有較大方差,雜訊具有較小方差,訊號與雜訊之比稱為訊雜比。訊雜比越大意味著資料的質量越好,反之,訊雜比越小意味著資料的質量越差。由此我們不難引出pca的目標,即最大化投影方差,也就是讓資料在主軸上投影的方差最大。
對於給定的一組資料點,其中所有向量均為列向量,中心化後的表示為:,其中u=1
n\frac
n1∑i=
1nvi
\displaystyle\sum_^ v_i
i=1∑n
vi。我們知道,向量內積在幾何上表示乙個向量在另乙個向量上投影的長度。因此x
ix_i
xi在w上的投影座標可以表示為(x
ix_i
xi,w)=x
tx^t
xtw。所以目標是找到乙個投影方向w,使得(x
1x_1
x1,x
2x_2
x2,x
3x_3
x3,x
4x_4
x4,…x
ix_i
xi)在w上投影方差盡可能大。容易得知投影之後,均值為0,因為
這也是我們中心化的意義。投影後的方差表示為:
仔細一看,這其實就是樣本的協方差矩陣啊,我們將其寫作σ,另外由於w
tw^t
wtw=1,因此我們要求解乙個最大化問題,可表示為:
引入拉格朗日乘子,並對w求導使其為0,便可以推出σ,此時
熟悉線性代數的讀者馬上就會發現,原來,x投影後的方差就是協方差矩陣的特徵值。我們要找到最大的方差也就是協方差矩陣最大的特徵值,最佳投影方向就是最大特徵值所對應的特徵向量。次佳投影方向位於最佳投影方向的正交空間中,是第二大特徵值對應的特徵向量,以此類推。至此,我們得到以下幾種pca的求解方法。
(1)對樣本資料進行中心化處理。
(2)求樣本協方差矩陣。
(3)對協方差矩陣進行特徵值分解,將特徵值從大到小排列。
(4)取特徵值前d大對應的特徵向量(w
1w_1
w1,w
2w_2
w2,w
3w_3
w3,w
4w_4
w4,…w
dw_d
wd),通過以下對映將n維樣本對映到d維
新的x』的第d維就是x在第d個主成分au方向上的投影,通過選取最大的d個特徵值對應的特徵向量,我們將方差較小的特徵(雜訊)拋棄,使得每個n維列向量x被對映為d維列向量x,定義降維後的資訊佔比為
至此,我們從最大化投影方差的角度解釋了pca的原理、目標函式和求解方法。其實,pca還可以用其他思路進行分析,比如從最小回歸誤差的角度得到新的目標函式。但最終我們會發現其對應的原理和求解方法與本文中的是等價的。另外,由於pca是一種線性降維方法,雖然經典,但具有一定的侷限性。我們可以通過核對映對pca進行擴充套件得到核主成分分析(kpca),也可以通過流形對映的降維方法,比如等距對映、區域性線性嵌入、拉普拉斯特徵對映等,對一些pca效果不好的複雜資料集進行非線性降維操作。
SVM 4 目標函式的求解
svm 4 目標函式的求解 原優化問題 原優化問題是凸優化問題 上述的拉格朗日函式是凸函式 建立原優化問題的對偶問題 求拉格朗日對偶函式 w是乙個向量,求得的w是支援向量的線性組合,參考見第5課 svm svm求解例項 代入拉格朗日函式中得 注意 最終得到 約束條件 圖 建立對偶問題 可將轉變為對偶...
函式零點的求解方法
有了函式後,我們怎麼用呢?方程的分類 單個方程按其係數的性質分為線性方程和非線性方程。一元非線性方程求解 fzero roots fsolve 多元非線性方程求解 fsolve fzero fsolve 比較 解 fzero 函式,初值,options 解 fsolve 函式,初值,options ...
PHP unset函式原理及使用方法解析
unset 釋放給定的變數 說明unset mixed var mixed void unset 銷毀指定的變數。unset 在函式中的行為會依賴於想要銷毀的變數的型別而有所不同。如果在函式中unset 乙個全域性變數,則只是區域性變數被銷毀,而在呼叫環境中的變數將保持呼叫unset 之前一樣的值。...