机器学习与高维信息检索 - Note 7 - 核主成分分析(Kernel Principal Component Analysis,K-PCA)
Note 7 - 核主成分分析(Kernel Principal Component Analysis)
核主成分分析
- Note 7 - 核主成分分析(Kernel Principal Component Analysis)
- 7.1 用內(nèi)積表示的線性PCA(Linear PCA expressed with inner products)
- 7.2 向核PCA過渡 (Transition to Kernel PCA)
- Definition 7.1 正定核 (Positive Definite Kernel)
標(biāo)準(zhǔn)PCA通過將觀察到的數(shù)據(jù)投射到一個線性子空間來降低其維度。選擇投影的方式是使以平方的標(biāo)準(zhǔn)歐氏準(zhǔn)則衡量的誤差最小,這也可以解釋為減少白高斯噪聲的一種方式。一個非常重要的應(yīng)用是將PCA作為分類的預(yù)處理,因為分類器在減少噪聲的特征空間中表現(xiàn)更好。
標(biāo)準(zhǔn)PCA的主要缺點是,它嚴(yán)重依賴數(shù)據(jù)的近似線性結(jié)構(gòu)。在許多應(yīng)用中,這是一個過于嚴(yán)格的假設(shè)。核PCA(K-PCA)是標(biāo)準(zhǔn)PCA的一個擴展,它沒有這些缺點。K-PCA的關(guān)鍵思想是,它隱含地假設(shè)存在一個非線性映射
?:Rp→H,(7.1)\phi: \mathbb{R}^{p} \rightarrow \mathcal{H}, \tag{7.1} ?:Rp→H,(7.1)
其中H\mathcal{H}H是一個非常高維的向量空間(甚至可能是無限維的),其內(nèi)積為1??,??{ }^{1}\langle\cdot, \cdot\rangle1??,??。我們無妨把H\mathcal{H}H看作是一些RP\mathbb{R}^{P}RP,有非常大的PPP。作為一個初步的步驟,我們重新表述眾所周知的標(biāo)準(zhǔn)PCA,使其只涉及我們數(shù)據(jù)的內(nèi)積。
1{ }^{1}1 形式上,希爾伯特空間H\mathcal{H}H是一個實數(shù)或復(fù)數(shù)內(nèi)積空間,就內(nèi)積所引導(dǎo)的距離函數(shù)而言,它也是一個完整的公制空間。
7.1 用內(nèi)積表示的線性PCA(Linear PCA expressed with inner products)
讓X∈Rp×n\mathbf{X} \in \mathbb{R}^{p \times n}X∈Rp×n為居中的數(shù)據(jù)矩陣(這將是下面推導(dǎo)的一個關(guān)鍵假設(shè)),讓K:=X?X\mathbf{K}:=\mathbf{X}^{\top} \mathbf{X}K:=X?X為(n×n)(n \times n)(n×n)矩陣,由數(shù)據(jù)的所有內(nèi)積組成。更確切地說,(i,j)(i, j)(i,j)項是K\mathbf{K}K第iii和第jjj觀測值的內(nèi)積xi?xj\mathbf{x}_{i}^{\top} \mathbf{x}_{j}xi??xj?。
回顧一下,如果X=UΣV?\mathbf{X}=\mathbf{U} \boldsymbol{\Sigma} \mathbf{V}^{\top}X=UΣV?是數(shù)據(jù)矩陣的SVD。那么數(shù)據(jù)向量y∈Rp\mathbf{y} \in \mathbb{R}^{p}y∈Rp的前kkk主分量是由Uk?\mathbf{U}_{k}^{\top}Uk??給出的。在目前的情況下,只給出了內(nèi)積,因此不可能直接得到Uk\mathbf{U}_{k}Uk?。然而,K\mathbf{K}K的特征值分解允許對這個問題有一個優(yōu)雅的解決方案。記住,我們有 K:=X?X\mathbf{K}:=\mathbf{X}^{\top} \mathbf{X}K:=X?X 并用它的SVD代替X\mathbf{X}X。我們得到
K=VΣ?ΣV?.?(7.2)\mathbf{K}=\mathbf{V} \boldsymbol{\Sigma}^{\top} \boldsymbol{\Sigma} \mathbf{V}^{\top} \text {. }\tag{7.2} K=VΣ?ΣV?.?(7.2)
記住,V\mathbf{V}V是正交的,Σ?Σ\boldsymbol{\Sigma}^{\top} \boldsymbol{\Sigma}Σ?Σ是對角的。因此,方程(7.2)是K\mathbf{K}K的特征值分解(EVD),由于EVD的唯一性,通過計算K\mathbf{K}K的kkk最大特征值與它們各自的特征向量,我們得到σ12,?,σk2\sigma_{1}^{2}, \cdots, \sigma_{k}^{2}σ12?,?,σk2?和Vk\mathbf{V}_{k}Vk?。我們將假設(shè)σk>0\sigma_{k}>0σk?>0,否則我們可以減少目標(biāo)子空間的維度而不損失任何數(shù)據(jù)信息。為了簡單起見,我們定義對角矩陣Σk=diag?(σ1,…,σk)\Sigma_{k}=\operatorname{diag}\left(\sigma_{1}, \ldots, \sigma_{k}\right)Σk?=diag(σ1?,…,σk?)。
這使我們能夠?qū)τ谝粋€給定的觀測值 y\mathbf{y}y只需使用內(nèi)積就可以計算出 Uk?y\mathbf{U}_{k}^{\top} \mathbf{y}Uk??y的主成分。對于一個新的測量值y\mathbf{y}y,我們有
Vk?X?y=Vk?VΣU?y=[Ik∣0]ΣU?y=[Σk∣0]U?y=ΣkUk?y.(7.3)\begin{aligned} \mathbf{V}_{k}^{\top} \mathbf{X}^{\top} \mathbf{y} &=\mathbf{V}_{k}^{\top} \mathbf{V} \boldsymbol{\Sigma} \mathbf{U}^{\top} \mathbf{y} \\ &=\left[I_{k} \mid 0\right] \boldsymbol{\Sigma} \mathbf{U}^{\top} \mathbf{y} \\ &=\left[\boldsymbol{\Sigma}_{k} \mid 0\right] \mathbf{U}^{\top} \mathbf{y} \\ &=\boldsymbol{\Sigma}_{k} \mathbf{U}_{k}^{\top} \mathbf{y} . \end{aligned} \tag{7.3}Vk??X?y?=Vk??VΣU?y=[Ik?∣0]ΣU?y=[Σk?∣0]U?y=Σk?Uk??y.?(7.3)
將此方程與Σk?1\Sigma_{k}^{-1}Σk?1?相乘,我們可以得到
Uk?y=Σk?1Vk?X?y=Σk?1Vk?[x1?y?xn?y].(7.4)\mathbf{U}_{k}^{\top} \mathbf{y}=\boldsymbol{\Sigma}_{k}^{-1} \mathbf{V}_{k}^{\top} \mathbf{X}^{\top} \mathbf{y}=\boldsymbol{\Sigma}_{k}^{-1} \mathbf{V}_{k}^{\top}\left[\begin{array}{c} \mathbf{x}_{1}^{\top} \mathbf{y} \\ \vdots \\ \mathbf{x}_{n}^{\top} \mathbf{y} \end{array}\right] . \tag{7.4}Uk??y=Σk?1?Vk??X?y=Σk?1?Vk??????x1??y?xn??y?????.(7.4)
注意,這個方程的右邊可以通過只涉及數(shù)據(jù)的內(nèi)積的數(shù)據(jù)來計算,即Gram-matrix K\mathbf{K}K和內(nèi)積xn?y\mathbf{x}_{n}^{\top} \mathbf{y}xn??y。
使數(shù)據(jù)居中
到目前為止,我們已經(jīng)假定數(shù)據(jù)是居中的,也就是說,Gram-matrix K\mathbf{K}K來自居中化的數(shù)據(jù)。這個假設(shè)很關(guān)鍵,因為否則方程(7.4)的推導(dǎo)將不成立。現(xiàn)在讓我們假設(shè),我們沒有可用的居中數(shù)據(jù),而Gram-matrix K\mathbf{K}K是由非居中數(shù)據(jù)建立的。好消息是,可以通過以下公式直接從K\mathbf{K}K推導(dǎo)出對應(yīng)于中心數(shù)據(jù)的格拉姆矩陣,例如K~\tilde{\mathbf{K}}K~,即
K~=HKH,(7.5)\tilde{\mathbf{K}}=\mathbf{H K H}, \tag{7.5}K~=HKH,(7.5)
其中H=(In?1n1n1n?)\mathbf{H}=\left(\mathbf{I}_{n}-\frac{1}{n} \mathbb{1}_{n} \mathbb{1}_{n}^{\top}\right)H=(In??n1?1n?1n??).
證明:
從方程(1.3)中可以看出,如果X\mathbf{X}X表示非居中的數(shù)據(jù)矩陣,那么居中的矩陣由以下公式給出
X ̄=X?μ^1n?,(7.6)\overline{\mathbf{X}}=\mathbf{X}-\hat{\mu} \mathbb{1}_{n}^{\top}, \tag{7.6}X=X?μ^?1n??,(7.6)
有μ^=1nX1n\hat{\mu}=\frac{1}{n} \mathbf{X} \mathbb{1}_{n}μ^?=n1?X1n?。 由此,可以看出
X ̄=X?1nX1n1n?=X(In?1n1n1n?).(7.7)\overline{\mathbf{X}}=\mathbf{X}-\frac{1}{n} \mathbf{X} \mathbb{1}_{n} \mathbb{1}_{n}^{\top}=\mathbf{X}\left(\mathbf{I}_{n}-\frac{1}{n} \mathbb{1}_{n} \mathbb{1}_{n}^{\top}\right) . \tag{7.7}X=X?n1?X1n?1n??=X(In??n1?1n?1n??).(7.7)
用對稱矩陣的速記符號來表示 H:=In?1n1n1n?\mathbf{H}:=\mathbf{I}_{n}-\frac{1}{n} \mathbb{1}_{n} \mathbb{1}_{n}^{\top}H:=In??n1?1n?1n??。我們可以得到
K~=X ̄?X ̄=HX?XH=HKH.(7.8)\tilde{\mathbf{K}}=\overline{\mathbf{X}}^{\top} \overline{\mathbf{X}}=\mathbf{H X}^{\top} \mathbf{X} \mathbf{H}=\mathbf{H K H} . \tag{7.8}K~=X?X=HX?XH=HKH.(7.8)
因此,如果我們有來自非中心數(shù)據(jù)的Gram-matrix,我們可以很容易地計算出對應(yīng)于中心數(shù)據(jù)的Gram-matrix(無需明確地將X\mathbf{X}X居中)。由此,我們可以–如上所述–計算Vk\mathbf{V}_{k}Vk?和Σk\boldsymbol{\Sigma}_{k}Σk?。為了計算新數(shù)據(jù)樣本y\mathbf{y}y的主成分,我們首先要根據(jù)訓(xùn)練樣本把y\mathbf{y}y居中處理。具體來說,這意味著我們必須從y\mathbf{y}y減去訓(xùn)練數(shù)據(jù)的經(jīng)驗平均值μ^=1n∑ixi=1nX1n\hat{\mu}=\frac{1}{n} \sum_{i} \mathbf{x}_{i}=\frac{1}{n} \mathbf{X} \mathbb{1}_{n}μ^?=n1?∑i?xi?=n1?X1n?。然后我們必須用X ̄=XH\overline{\mathbf{X}}=\mathbf{X H}X=XH替換公式(7.3)和(7.4)中的X\mathbf{X}X。這就得到了
Uk?(y?1nX1n)=Σk?1Vk?(XH)?(y?1nX1n)=Σk?1Vk?ky(7.9)\mathbf{U}_{k}^{\top}\left(\mathbf{y}-\frac{1}{n} \mathbf{X} \mathbb{1}_{n}\right)=\boldsymbol{\Sigma}_{k}^{-1} \mathbf{V}_{k}^{\top}(\mathbf{X} \mathbf{H})^{\top}\left(\mathbf{y}-\frac{1}{n} \mathbf{X} \mathbb{1}_{n}\right)=\boldsymbol{\Sigma}_{k}^{-1} \mathbf{V}_{k}^{\top} \mathbf{k}_{y} \tag{7.9}Uk??(y?n1?X1n?)=Σk?1?Vk??(XH)?(y?n1?X1n?)=Σk?1?Vk??ky?(7.9)
其中
ky=H[x1?y?xn?y]?1nHK1n\mathbf{k}_{y}=\mathbf{H}\left[\begin{array}{c} \mathbf{x}_{1}^{\top} \mathbf{y} \\ \vdots \\ \mathbf{x}_{n}^{\top} \mathbf{y} \end{array}\right]-\frac{1}{n} \mathbf{H K} \mathbb{1}_{n} ky?=H????x1??y?xn??y??????n1?HK1n?
7.2 向核PCA過渡 (Transition to Kernel PCA)
現(xiàn)在,通過簡單地將內(nèi)積 x?y\mathbf{x}^{\top} \mathbf{y}x?y替換為??(x),?(y)?\langle\phi(\mathbf{x}), \phi(\mathbf{y})\rangle??(x),?(y)?來擴展經(jīng)典的PCA是很簡單的。K-PCA的實際成功是由于計算??(x),?(y)?\langle\phi(\mathbf{x}), \phi(\mathbf{y})\rangle??(x),?(y)?時,既不需要?\phi?也不需要??,??\langle\cdot, \cdot\rangle??,?? 的內(nèi)積。相反,只需要有一個函數(shù)
κ:Rp×Rp→R,(x,y)?κ(x,y)(7.10)\kappa: \mathbb{R}^{p} \times \mathbb{R}^{p} \rightarrow \mathbb{R}, \quad(\mathbf{x}, \mathbf{y}) \mapsto \kappa(\mathbf{x}, \mathbf{y}) \tag{7.10} κ:Rp×Rp→R,(x,y)?κ(x,y)(7.10)
這反映了??(x),?(y)?\langle\phi(\mathbf{x}), \phi(\mathbf{y})\rangle??(x),?(y)?的屬性,即對于所有x∈Rp\mathbf{x} \in \mathbb{R}^{p}x∈Rp來說是對稱的,并且滿足κ(x,x)≥0\kappa(\mathbf{x}, \mathbf{x}) \geq 0κ(x,x)≥0 的正定屬性。用κ(x,y)\kappa(\mathbf{x}, \mathbf{y})κ(x,y)代替??(x),?(y)?\langle\phi(\mathbf{x}), \phi(\mathbf{y})\rangle??(x),?(y)?,因此不需要知道特征映射?\phi?,稱為核技巧(Kernel trick)。
Definition 7.1 正定核 (Positive Definite Kernel)
-
令S:={x1,…,xn}?RpS:=\left\{\mathbf{x}_{1}, \ldots, \mathbf{x}_{n}\right\} \subset \mathbb{R}^{p}S:={x1?,…,xn?}?Rp 與κ(?)\kappa(\cdot)κ(?)如上定義. 帶有(i,j)(i, j)(i,j) 項kij=κ(xi,xj)k_{i j}=\kappa\left(\mathbf{x}_{i}, \mathbf{x}_{j}\right)kij?=κ(xi?,xj?)的 (n×n)(n \times n)(n×n)-矩陣K\mathbf{K}K 被稱為SSS的Gram-或Kernel-矩陣,相對于κ\kappaκ。
-
如果對于所有有限的、非空的集合 S?RpS \subset \mathbb{R}^{p}S?Rp來說,相應(yīng)的Gram-matrix是正半定的(正定的),那么這個函數(shù)κ(?)\kappa(\cdot)κ(?)被稱為核(正定的核)。
在上一小節(jié)中,我們討論了在潛在的希爾伯特空間中的數(shù)據(jù)居中問題。我們在這里也面臨同樣的問題。當(dāng)一個新的數(shù)據(jù)點出現(xiàn)時,直接計算新數(shù)據(jù)點的非中心化內(nèi)積向量與訓(xùn)練數(shù)據(jù)的關(guān)系是很簡單的。我們將把它稱為
knew?=[??(x1),?(y)????(xn),?(y)?].\mathbf{k}^{\text {new }}=\left[\begin{array}{c} \left\langle\phi\left(\mathbf{x}_{1}\right), \phi(\mathbf{y})\right\rangle \\ \vdots \\ \left\langle\phi\left(\mathbf{x}_{n}\right), \phi(\mathbf{y})\right\rangle \end{array}\right] . knew?=??????(x1?),?(y)????(xn?),?(y)??????.
那么,中心化數(shù)據(jù)的第jjj條是
(kcentnew)j=??(xj)?1n∑i?(xi),?(y)?1n∑i?(xi)?\left(\mathbf{k}_{c e n t}^{n e w}\right)_{j}=\left\langle\phi\left(\mathbf{x}_{j}\right)-\frac{1}{n} \sum_{i} \phi\left(\mathbf{x}_{i}\right), \phi(\mathbf{y})-\frac{1}{n} \sum_{i} \phi\left(\mathbf{x}_{i}\right)\right\rangle (kcentnew?)j?=??(xj?)?n1?i∑??(xi?),?(y)?n1?i∑??(xi?)?
為了找到一個更簡潔的表達方式,我們利用標(biāo)量乘積的線性來得到
??(xj)?1n∑i?(xi),?(y)?1n∑i?(xi)?=??(xj),?(y)??1n?∑i?(xi),?(y)??1n??(xj),∑i?(xi)?+1n2?∑i?(xi),∑i?(xi)?,\begin{gathered} \left\langle\phi\left(\mathbf{x}_{j}\right)-\frac{1}{n} \sum_{i} \phi\left(\mathbf{x}_{i}\right), \phi(\mathbf{y})-\frac{1}{n} \sum_{i} \phi\left(\mathbf{x}_{i}\right)\right\rangle \\ =\left\langle\phi\left(\mathbf{x}_{j}\right), \phi(\mathbf{y})\right\rangle-\frac{1}{n}\left\langle\sum_{i} \phi\left(\mathbf{x}_{i}\right), \phi(\mathbf{y})\right\rangle \\ -\frac{1}{n}\left\langle\phi\left(\mathbf{x}_{j}\right), \sum_{i} \phi\left(\mathbf{x}_{i}\right)\right\rangle+\frac{1}{n^{2}}\left\langle\sum_{i} \phi\left(\mathbf{x}_{i}\right), \sum_{i} \phi\left(\mathbf{x}_{i}\right)\right\rangle, \end{gathered} ??(xj?)?n1?i∑??(xi?),?(y)?n1?i∑??(xi?)?=??(xj?),?(y)??n1??i∑??(xi?),?(y)??n1???(xj?),i∑??(xi?)?+n21??i∑??(xi?),i∑??(xi?)?,?
而且很容易看出,
kcent?new?=knew??1n1n1n?knew??1nK1n+1n21n1n?K1n=Hknew??1nHK1n.\begin{gathered} \mathbf{k}_{\text {cent }}^{\text {new }}=\mathbf{k}^{\text {new }}-\frac{1}{n} \mathbb{1}_{n} \mathbb{1}_{n}^{\top} \mathbf{k}^{\text {new }}-\frac{1}{n} \mathbf{K} \mathbb{1}_{n}+\frac{1}{n^{2}} \mathbb{1}_{n} \mathbb{1}_{n}^{\top} \mathbf{K} \mathbb{1}_{n} \\ =\mathbf{H k}^{\text {new }}-\frac{1}{n} \mathbf{H} \mathbf{K} \mathbb{1}_{n} . \end{gathered} kcent?new??=knew??n1?1n?1n??knew??n1?K1n?+n21?1n?1n??K1n?=Hknew??n1?HK1n?.?
總之,對于一個訓(xùn)練集X=[x1,…xn],xi∈Rp\mathbf{X}=\left[\mathbf{x}_{1}, \ldots \mathbf{x}_{n}\right], \mathbf{x}_{i} \in \mathbb{R}^{p}X=[x1?,…xn?],xi?∈Rp 的K-PCA包括以下步驟。
- 找到一個合適的內(nèi)核函數(shù) κ(?)\kappa(\cdot)κ(?) 并計算Gram-matrix
K=[κ(x1,x1)κ(x1,x2)…κ(x1,xn)κ(x2,x1)κ(x2,x2)κ(x2,xn)????κ(xn,x1)κ(xn,x2)…κ(xn,xn)]\mathbf{K}=\left[\begin{array}{cccc} \kappa\left(\mathbf{x}_{1}, \mathbf{x}_{1}\right) & \kappa\left(\mathbf{x}_{1}, \mathbf{x}_{2}\right) & \ldots & \kappa\left(\mathbf{x}_{1}, \mathbf{x}_{n}\right) \\ \kappa\left(\mathbf{x}_{2}, \mathbf{x}_{1}\right) & \kappa\left(\mathbf{x}_{2}, \mathbf{x}_{2}\right) & & \kappa\left(\mathbf{x}_{2}, \mathbf{x}_{n}\right) \\ \vdots & \vdots & \ddots & \vdots \\ \kappa\left(\mathbf{x}_{n}, \mathbf{x}_{1}\right) & \kappa\left(\mathbf{x}_{n}, \mathbf{x}_{2}\right) & \ldots & \kappa\left(\mathbf{x}_{n}, \mathbf{x}_{n}\right) \end{array}\right] K=??????κ(x1?,x1?)κ(x2?,x1?)?κ(xn?,x1?)?κ(x1?,x2?)κ(x2?,x2?)?κ(xn?,x2?)?…?…?κ(x1?,xn?)κ(x2?,xn?)?κ(xn?,xn?)???????
-
計算Gram-matrix K~=HKH\tilde{\mathbf{K}}=\mathbf{H K H}K~=HKH,其中H=In?1n1n1n?\mathbf{H}=\mathbf{I}_{n}-\frac{1}{n} \mathbb{1}_{n} \mathbb{1}_{n}^{\top}H=In??n1?1n?1n??是居中化的數(shù)據(jù)。
-
計算特征值分解K~=VΛV?\tilde{\mathbf{K}}=\mathbf{V} \boldsymbol{\Lambda} \mathbf{V}^{\top}K~=VΛV?。由于核函數(shù)的定義,矩陣K\mathbf{K}K是半正定的,因此Λ\boldsymbol{\Lambda}Λ的對角線項是非負的。因此,我們可以寫成 Λ=Σ2=diag?(σ12,…,σn2)\boldsymbol{\Lambda}=\boldsymbol{\Sigma}^{2}=\operatorname{diag}\left(\sigma_{1}^{2}, \ldots, \sigma_{n}^{2}\right)Λ=Σ2=diag(σ12?,…,σn2?).
-
定義縮減矩陣 Σk=diag?(σ1,…,σk)∈Rk×k\boldsymbol{\Sigma}_{k}=\operatorname{diag}\left(\sigma_{1}, \ldots, \sigma_{k}\right) \in \mathbb{R}^{k \times k}Σk?=diag(σ1?,…,σk?)∈Rk×k 與Vk∈Rn×k\mathbf{V}_{k} \in \mathbb{R}^{n \times k}Vk?∈Rn×k.
-
縮減后的訓(xùn)練數(shù)據(jù)由以下公式得出
S=ΣkVk?(7.11)\mathbf{S}=\boldsymbol{\Sigma}_{k} \mathbf{V}_{k}^{\top} \tag{7.11} S=Σk?Vk??(7.11)
- 對于一個新的數(shù)據(jù)點y∈Rp\mathbf{y} \in \mathbb{R}^{p}y∈Rp ,kkk核主成分的計算方法是
snew?:=Σk?1Vk?kcent?new?(7.12)\mathbf{s}_{\text {new }}:=\mathbf{\Sigma}_{k}^{-1} \mathbf{V}_{k}^{\top} \mathbf{k}_{\text {cent }}^{\text {new }} \tag{7.12} snew??:=Σk?1?Vk??kcent?new??(7.12)
其中
kcent?new?=H(knew??1nK1n)where?knew?=[κ(x1,y),…,κ(xn,y)]?.\begin{aligned} \mathbf{k}_{\text {cent }}^{\text {new }} &=\mathbf{H}\left(\mathbf{k}^{\text {new }}-\frac{1}{n} \mathbf{K} \mathbb{1}_{n}\right) \\ \text { where } \mathbf{k}^{\text {new }} &=\left[\kappa\left(\mathbf{x}_{1}, \mathbf{y}\right), \ldots, \kappa\left(\mathbf{x}_{n}, \mathbf{y}\right)\right]^{\top} . \end{aligned} kcent?new???where?knew??=H(knew??n1?K1n?)=[κ(x1?,y),…,κ(xn?,y)]?.?
總結(jié)
以上是生活随笔為你收集整理的机器学习与高维信息检索 - Note 7 - 核主成分分析(Kernel Principal Component Analysis,K-PCA)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习与高维信息检索 - Note 6
- 下一篇: 投票(爬虫语言)