動機
普通 PCA 在已量度的特徵中尋找線性方向。經過非線性特徵映射,一個彎曲模式可能更容易描述:例如,一項純量量度可以同時提供原值和平方值。對這些特徵作 PCA,所得座標便是原量度的非線性函數。核主成分分析(Kernel PCA)透過內積完成同一計算,不必明確儲存所有變換後的特徵。
關鍵是三個數學轉變。中心化現在發生在特徵空間;觀測與觀測之間的 Gram 矩陣,其特徵向量本身並不是特徵空間中的單位主方向;而新觀測亦須使用相同的訓練特徵均值。推導這三點,就能得到完整投影規則,包括歸一化和每一個均值項。
定義
設 x1,…,xn∈Rd 為訓練觀測,n≥2。與普通 PCA 一樣,觀測按行排列。特徵映射 ϕ 把觀測送到一個內積空間。若該空間維數是有限的 D,便寫成 F∈Rn×D,第 i 行為 ϕ(xi)T。以下以有限和表示的特徵向量公式,亦適用於無限維特徵空間。
定義
核函數與 Gram 矩陣
核函數計算特徵內積:
k(x,y)=⟨ϕ(x),ϕ(y)⟩,Kij=k(xi,xj).有限維時,K=FFT∈Rn×n。半正定核是一個對稱函數,要求任何有限觀測集所得的 Gram 矩陣,對所有實係數向量 c 都滿足 cTKc≥0。
K 比較觀測,FTF 則作用於特徵方向。兩個矩陣不同,但正特徵值相同。特徵空間遠大於觀測數目時,使用 K 尤其方便。它的各項由所選特徵幾何決定,並非任意的相似程度評分。
兩種常用核及保持半正定的參數條件是高斯徑向基核與多項式核:
kRBF(x,y)=exp(−γ∥x−y∥22),γ>0,kpoly(x,y)=(xTy+c)q,c≥0,q∈{1,2,…}.
展開多項式後,可把它寫成各種單項式特徵內積的和,權重非負。高斯核則可分解為依賴 x 的正因子、依賴 y 的正因子,以及 exp(2γxTy)。指數級數是多項式內積核的非負加權和。這解釋了平方距離及參數符號的作用。半正定描述的是二次型,不是要求每項核值都非負;普通線性內積亦可以取負值。
定義
中心化特徵與中心化核
定義訓練特徵均值和中心化矩陣:
ϕˉ=n1i=1∑nϕ(xi),ϕ(x)=ϕ(x)−ϕˉ,H=In−n111T.中心化 Gram 矩陣的各項為 Kij=⟨ϕ(xi),ϕ(xj)⟩。此處 ϕ(x) 一律減去訓練均值,即使 x 是新觀測亦然。
非線性映射下,把原始觀測中心化,通常不會令特徵也中心化。例如,平方的平均值不等於平均值的平方。因此,即使原來每個特徵欄的均值已是零,仍須對核矩陣作特徵空間的中心化。
定理/命題
定理
特徵中心化產生半正定的中心化 Gram 矩陣
中心化 Gram 矩陣為
K=HKH=K−n111TK−n1K11T+n2111TK11T.它對稱、半正定,並滿足 K1=0、rank(K)≤n−1。
若 F=HF,便有 K=FFT。相應的特徵空間樣本協方差是 FTF/(n−1)。正 Gram 特徵值若為 μj,對應協方差特徵值便是 μj/(n−1)。因此,解釋方差比例直接使用正 μj 的比例。這些特徵值本身已等於奇異值的平方,再平方一次便會改變方差準則。
定理
單位主方向與投影得分
設 Kaj=μjaj,其中 μj>0、ajTaj=1,並把 aj 選成正交歸一。則
αj=μjaj,vj=i=1∑nαjiϕ(xi)給出特徵空間中的正交歸一主方向。訓練觀測在第 j 個方向的得分為
zij=⟨ϕ(xi),vj⟩=μjaji.對新觀測 x∗,令 k∗=(⟨ϕ(xi),ϕ(x∗)⟩)i,其得分為 z∗j=αjTk∗。
主方向 vj、Gram 特徵向量 aj 和係數向量 αj 的意義不同。後兩者雖然都有 n 項,歸一化卻不同。aj 的歐氏範數為一,還要除以 μj,才能使 vj 在特徵空間的範數為一。
非線性特徵的有限特徵值問題
主方向仍解決同一個最大方差問題,只是現在位於特徵空間:
∥v∥=1maxn−11i=1∑n⟨ϕ(xi),v⟩2.
與中心化訓練特徵張成空間垂直的方向,在每個訓練觀測上的得分都是零,故沒有訓練方差。所有正方差方向都可在該張成空間內找到,而它的維數最多是 n−1。所以,即使特徵映射是無限維,有限 Gram 矩陣仍足夠:特徵值問題只需描述訓練觀測支持的那部分空間。非線性映射改變幾何,PCA 則仍是該空間中的正交線性投影。
若保留 s 個主成分,中心化訓練特徵的總平方重建誤差為
i∑ϕ(xi)−j=1∑szijvj2=tr(K)−j=1∑sμj.
跡數合計中心化特徵向量的平方長度,保留特徵值則合計正交投影捕捉的能量。除以 n−1 便轉成樣本方差;比例不需這一步,因為分子、分母的因子相同。保留全部正主成分,可精確重現訓練特徵,即使映射本身有更多座標。
重建結論發生在特徵空間。投影後的向量不一定等於任何原輸入 x 的 ϕ(x),因為非線性映射的像未必是線性子空間。核 PCA 提供座標及最優特徵空間投影;把投影變回原量度是另一個問題。其重建誤差應在核的幾何下解讀,不能自動當成原變量的平方誤差。
核 PCA 也決定一種距離幾何。兩個特徵向量的距離,可由兩個 Gram 對角項及成對內積求出。減去共同均值不改變兩兩之差,所以中心化只改變座標原點,不改變特徵空間的成對距離。非線性幾何來自核的選擇;中心化把該幾何放到訓練均值周圍,再由投影選取主要方向。
證明思路
證明
推導中心化與歸一化
展開 ⟨ϕ(xi)−ϕˉ,ϕ(xj)−ϕˉ⟩,四項分別是原核值、兩個訓練平均值及訓練總平均值。寫成矩陣便得到 HKH。亦可由 F=HF 直接得到 FFT=HFFTH。對任意 c,有 cTKc=∥∑iciϕ(xi)∥2≥0。再用 H1=0 及 H 的秩為 n−1,便得零向量及秩的結論。
其次,
⟨vj,vℓ⟩=μjμℓajTKaℓ=μjμℓμℓajTaℓ.在 j=ℓ 時為一,其餘為零。計算 Kαj 得到 μjaj,即訓練得分公式。協方差算子作用在 vj 上,結果是 μjvj/(n−1),故它們正是特徵空間的 PCA 方向。
為了投影新觀測,定義固定的訓練行均值、總平均值和原核向量:
mi=n1ℓ=1∑nKiℓ,m=n21i,ℓ=1∑nKiℓ,k∗i=k(xi,x∗).
展開中心化特徵內積,便有
k∗i=k∗i−mi−n1ℓ=1∑nk∗ℓ+m.
新核向量的平均值計算的是 ⟨ϕˉ,ϕ(x∗)⟩,仍使用原訓練均值;它沒有把新觀測加入訓練集,也沒有重算均值。保存訓練觀測、mi、m 及歸一化係數向量,就足以對後續觀測使用同一投影。
正特徵值的特徵向量之和為零:1TKaj=μj1Taj=0,所以 1Taj=0。因此,與 αj 作內積時,不隨訓練索引改變的常數項會消失。投影也可寫成
z∗j=αjT(k∗−mrow),mrow=(m1,…,mn)T.
訓練行均值仍然不可省略。它通常隨觀測改變,零和係數不會把它消去。完整四項公式則更清楚交代中心化核向量本身的構造和意義。
例題
例題
1. 原始中心化不等於非線性特徵中心化
取純量觀測 x1=−1、x2=0、x3=1,並令 ϕ(x)=(x,x2)T。原始均值是零,但
F=−101101,ϕˉ=[02/3],F=−1011/3−2/31/3.核函數是 k(x,y)=xy+(xy)2。不儲存特徵而直接計算核,得到
K=200000002,K=9110−2−8−24−2−8−210.K 每行總和為零;直接相乘 FFT 亦得到相同各項。若因原始純量均值為零而不再處理,平方特徵的均值仍為 2/3,解的便是未中心化的特徵空間問題。
這映射區分了兩種變化:第一特徵保留純量的正負,第二特徵記錄平方大小。負一與一在第二特徵相同,在第一特徵卻不同。核 PCA 只用上列成對核值,便能找出這兩個特徵方向的變化。
例題
2. 特徵值、歸一化係數與訓練得分
上述中心化矩陣可選取以下正交歸一特徵向量:
μ1=2,a1=21(−1,0,1)T,μ2=32,a2=61(1,−2,1)T.餘下特徵值是零,特徵向量為 1/3。除以正特徵值的平方根,得到
α1=21(−1,0,1)T,α2=21(1,−2,1)T,Z=−1011/3−2/31/3.Z 的兩欄是 μ1a1 和 μ2a2。明確寫出特徵時,有 FTα1=(1,0)T、FTα2=(0,1)T,確認了單位方向。因 n−1=2,樣本得分方差是 1 和 1/3。首主成分解釋 2/(2+2/3)=3/4 的特徵空間變異,捨棄的平方重建誤差為 2/3。
中心化 Gram 特徵值本身已是非負能量,對應中心化特徵表 SVD 的 σj2。因此,普通 PCA 的「奇異值平方比例」變成「Gram 特徵值比例」。只要使用相同明確特徵和相同中心化,兩種方法便完全一致。
例題
3. 沿用訓練均值投影新觀測
保留同一批三個訓練觀測,考慮 x∗=2。原核向量、已儲存行均值及總平均值為
k∗=(2,0,6)T,(m1,m2,m3)T=(2/3,0,2/3)T,m=4/9.新核向量的平均值為 8/3,故
k∗=(−8/9,−20/9,28/9)T,(z∗1,z∗2)=(2,10/3).例如 α1Tk∗=(8/9+28/9)/2=2。直接中心化特徵也有 ϕ(2)−ϕˉ=(2,4−2/3)T=(2,10/3)T,獨立核對了兩個座標。若把新點加入後重算均值,便會改變所有觀測已擬合的特徵空間座標。
計算投影
以下程式只使用核公式,並把新得分的大小與精確例子比較。特徵值程式可反轉特徵向量符號,相應座標也會同時反轉。
import numpy as np
def kernel(x, y):
t = x * y
return t + t**2
train = np.array([-1., 0., 1.])
K = kernel(train[:, None], train[None, :])
row_mean = K.mean(axis=1)
grand_mean = K.mean()
Kc = K - row_mean[:, None] - row_mean[None, :] + grand_mean
mu, a = np.linalg.eigh(Kc)
order = np.argsort(mu)[::-1]
mu, a = mu[order], a[:, order]
tol = 1e-12 * np.linalg.norm(Kc, ord=2)
assert mu.min() >= -tol
positive = mu > tol
mu, a = mu[positive], a[:, positive]
alpha = a / np.sqrt(mu)
training_scores = Kc @ alpha
raw_new = kernel(train, 2.)
centered_new = raw_new - row_mean - raw_new.mean() + grand_mean
new_scores = centered_new @ alpha
print(mu) # [2., 0.66666667]
print(np.abs(new_scores)) # [2., 3.33333333]
精確的零特徵值代表中心化特徵向量的某個線性組合為零,不能透過除法產生單位特徵方向,故把它略去。浮點運算中,接近零的特徵值可能帶有微小負號,應相對矩陣尺度判別。顯著負值的意義不同:在該精度下,矩陣並非半正定。取其絕對值會改變幾何,而非替同一個 PCA 歸一化。
核的選擇決定哪些非線性變化具有較大的特徵範數。RBF 的 γ 越大,相似度便在越短的原空間距離內衰減;多項式的次數和輸入尺度則改變各次方的相對貢獻。這些參數定義特徵度量,單靠最大化方差不會替我們選取參數,也不會最優化已標記類別的分離。
高斯參數也直接受單位影響。把每個輸入座標乘以純量 b=0,平方距離便乘以 b2;同時把 γ 改成 γ/b2,即可得到完全相同的 Gram 矩陣。若保持 γ 不變,選取的相似幾何便不同。這等式有助區分換量度單位和刻意改變模型長度尺度。
常見錯誤
常見錯誤
混淆 Gram 特徵向量與特徵空間方向
直接用 aj 作係數向量,所得特徵方向的平方範數是 μj,並非一;正確係數是 aj/μj。同樣地,只減去新核向量自己的平均值,會漏掉訓練行均值和總平均值。中心化核的四項,都來自同一個特徵空間內積。
總結
核提供半正定的觀測 Gram 矩陣,特徵中心化後得到 HKH。正特徵對給出歸一化係數 aj/μj,以及訓練得分 μjaj。新觀測的核值沿用原訓練特徵均值中心化。所得座標描述原數據的非線性特徵;方差和重建誤差亦在該特徵空間中量度。
練習
思考檢查
1. 三個觀測的 Gram 矩陣為 K=I。求中心化 Gram 矩陣及其特徵值。一個主成分保留多少特徵空間變異?
思考檢查
2. 六個訓練觀測的中心化 Gram 矩陣,其正特徵值是 9 和 4。設 a 是對應 9 的單位特徵向量,求歸一化係數、訓練得分向量及樣本得分方差。
思考檢查
3. 在多項式例子中,沿用固定訓練均值,把新觀測 x=−2 投影到兩個已列出的主方向。求原核向量、中心化核向量及得分。
解答
解答 · 1. 中心化單位 Gram 矩陣
由 H2=H,有 HKH=H=I3−11T/3。特徵值是 1,1,0:它保留所有零和向量,並把常數向量映成零。一個主成分保留 1/(1+1)=1/2 的變異。正特徵值重複,所以首方向不唯一。
解答 · 2. 三種歸一化
係數向量是 α=a/3,訓練得分向量是 3a,樣本方差為 9/(6−1)=9/5。另一成分的方差是 4/5。Gram 特徵值除以 n−1 才是樣本方差;首成分的解釋比例則為 9/13。
解答 · 3. 另一側的新觀測
原核向量是 (6,0,2)T,平均值為 8/3。減去訓練行均值,再加 4/9,得到 k∗=(28/9,−20/9,−8/9)T。與兩個係數向量作內積,得分為 (−2,10/3),與 ϕ(−2)−ϕˉ=(−2,4−2/3)T 一致。
相關筆記