动机
普通 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 一致。
相关笔记