7.4.5 魯棒主成分分析 PCA
根據每個樣本點數據 a i \mathbf{a}_{i} a i 在第一主方向 u 1 \mathbf{u}_1 u 1 上的投影的方差最大,知樣本點在此方向最分散,爲第一主方向。我們可以反過來思考,每個樣本點數據 a i \mathbf{a}_{i} a i 在某個方向 α \mathbf{\alpha} α 上投影,計算其方差,方向不同時,方差是不同的,當方差最大時,此時方向就是第一主方向,所以第一主方向可如下定義:
u 1 = a r g m a x α ∑ a i ∈ A ( a i T α ) 2 = a r g m a x α ( A T α ) T A T α = = a r g m a x α α T ( A A T ) α
\mathbf{u}_1= argmax_{\mathbf{\alpha}} \sum_{\mathbf{a}_{i} \in A} (\mathbf{a}^T_{i}\mathbf{\alpha})^2\\
= argmax_{\mathbf{\alpha}} (A^T\mathbf{\alpha})^TA^T\mathbf{\alpha}== argmax_{\mathbf{\alpha}} \mathbf{\alpha}^T(AA^T)\mathbf{\alpha}
u 1 = a r g m a x α a i ∈ A ∑ ( a i T α ) 2 = a r g m a x α ( A T α ) T A T α = = a r g m a x α α T ( A A T ) α
該定義是計算方差,需進行平方運算,在最小二乘法章節指出,平方運算很容易受到異常點的影響,比如數據矩陣 A A A 中存在離羣的樣本點,即使這樣的離羣點數目很少,也會導致第一主方向極大地偏離理想方向。如果點雲不存在離羣點,即樣本點都是採樣於高斯分佈,則上述計算得到的主方向就是最優主方向。
爲了提高魯棒性即抗離羣點能力,需要減弱離羣點對方差的貢獻,採用一次函數就可達到目的,即使用絕對值,而不是平方,則第一主方向可如下定義:
u 1 = a r g m a x α ∑ a i ∈ A ∣ a i T α ∣
\mathbf{u}_1 = argmax_{\mathbf{\alpha}} \sum_{\mathbf{a}_{i} \in A} |\mathbf{a}^T_{i}\mathbf{\alpha}|
u 1 = a r g m a x α a i ∈ A ∑ ∣ a i T α ∣
這是一種常用的魯棒PCA,原理簡單易懂,效果也較好,計算也方便。下面來求解 u 1 \mathbf{u}_1 u 1 。
J 1 = ∑ a i ∈ A ∣ a i T α ∣ = ∑ a i ∈ A ∣ α T a i ∣ = ∑ a i ∈ A + α T a i − ∑ a i ∈ A − α T a i = α T ( ∑ a i ∈ A + a i − ∑ a i ∈ A − a i ) = 2 α T ∑ a i ∈ A + a i
J_1 = \sum_{\mathbf{a}_{i} \in A} |\mathbf{a}^T_{i}\mathbf{\alpha}|= \sum_{\mathbf{a}_{i} \in A} |\mathbf{\alpha}^T\mathbf{a}_{i}|\\
= \sum_{\mathbf{a}_{i} \in A_+} \mathbf{\alpha}^T\mathbf{a}_{i} - \sum_{\mathbf{a}_{i} \in A_-} \mathbf{\alpha}^T\mathbf{a}_{i} \\
= \mathbf{\alpha}^T (\sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}_{i} - \sum_{\mathbf{a}_{i} \in A_-} \mathbf{a}_{i}) \\
= 2\mathbf{\alpha}^T \sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}_{i}
J 1 = a i ∈ A ∑ ∣ a i T α ∣ = a i ∈ A ∑ ∣ α T a i ∣ = a i ∈ A + ∑ α T a i − a i ∈ A − ∑ α T a i = α T ( a i ∈ A + ∑ a i − a i ∈ A − ∑ a i ) = 2 α T a i ∈ A + ∑ a i
其中集合 A + = { a i ∈ A : α T a i ≥ 0 } A_+ = \{\mathbf{a}_{i} \in A: \mathbf{\alpha}^T\mathbf{a}_{i} \ge 0\} A + = { a i ∈ A : α T a i ≥ 0 } 即與向量 α \mathbf{\alpha} α 夾角小於等於 90 90 9 0 度的樣本集 和 A − = { a i ∈ A : α T a i < 0 } A_- = \{\mathbf{a}_{i} \in A: \mathbf{\alpha}^T\mathbf{a}_{i} < 0\} A − = { a i ∈ A : α T a i < 0 } 。
因爲樣本集進行了中心化,所以 ∑ a i ∈ A a i = 0 \sum_{\mathbf{a}_{i} \in A} \mathbf{a}_{i} = \mathbf{0} ∑ a i ∈ A a i = 0 ,因此 ∑ a i ∈ A + a i = − ∑ a i ∈ A − a i \sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}_{i} = - \sum_{\mathbf{a}_{i} \in A_-} \mathbf{a}_{i} ∑ a i ∈ A + a i = − ∑ a i ∈ A − a i 。
要最大化 J 1 J_1 J 1 ,只需向量 α \mathbf{\alpha} α 與向量 ∑ a i ∈ A + a i \sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}_{i} ∑ a i ∈ A + a i 平行即可,所以
α = u n i t ( ∑ a i ∈ A + a i )
\mathbf{\alpha} = unit (\sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}_{i})
α = u n i t ( a i ∈ A + ∑ a i )
即單位化向量 ∑ a i ∈ A + a i \sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}_{i} ∑ a i ∈ A + a i 。
所以可以採用迭代法求解最優 u 1 \mathbf{u}_1 u 1 。首先隨機生成單位向量 α \mathbf{\alpha} α 。
1、根據內積 α T a i \mathbf{\alpha}^T\mathbf{a}_{i} α T a i 符號,劃分集合 A + A_+ A + ;
2、令 α = u n i t ( ∑ a i ∈ A + a i ) \mathbf{\alpha} = unit (\sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}_{i}) α = u n i t ( ∑ a i ∈ A + a i ) 最大化 J 1 J_1 J 1 ,得到新的單位向量 α \mathbf{\alpha} α 。
重複上面兩步,直到收斂即單位向量 α \mathbf{\alpha} α 改變很小,此時 u 1 = α \mathbf{u}_1=\mathbf{\alpha} u 1 = α 。
可計算第一主方向上方差爲 ∥ A T u 1 ∥ 2 \|A^T\mathbf{u}_1\|^2 ∥ A T u 1 ∥ 2 ,注意其不等於矩陣 A A A 奇異值 σ 1 \sigma_1 σ 1 。
那如何計算第二主方向呢?
第二主方向是垂直於第一主方向,最大方差方向即
u 2 = a r g m a x α ∈ ⊥ u 1 ∑ a i ∈ A ∣ α T a i ∣
\mathbf{u}_2 = argmax_{\mathbf{\alpha} \in \perp \mathbf{u}_1} \sum_{\mathbf{a}_{i} \in A} |\mathbf{\alpha}^T\mathbf{a}_{i}|
u 2 = a r g m a x α ∈ ⊥ u 1 a i ∈ A ∑ ∣ α T a i ∣
把每個樣本點沿第一主方向進行正交分解,即分解爲第一主方向分量 a i ∥ \mathbf{a}^\parallel_{i} a i ∥ 和垂直於第一主方向分量 a i ⊥ \mathbf{a}^\perp_{i} a i ⊥ ,則
a i = a i ∥ + a i ⊥ a i ⊥ = ( E − u 1 u 1 T ) a i a i ∥ = u 1 u 1 T a i
\mathbf{a}_{i} = \mathbf{a}^\parallel_{i} + \mathbf{a}^\perp_{i} \\
\mathbf{a}^\perp_{i} = (E-\mathbf{u}_1\mathbf{u}^T_1)\mathbf{a}_{i} \\
\mathbf{a}^\parallel_{i} = \mathbf{u}_1\mathbf{u}^T_1\mathbf{a}_{i} \\
a i = a i ∥ + a i ⊥ a i ⊥ = ( E − u 1 u 1 T ) a i a i ∥ = u 1 u 1 T a i
令
J = ∑ a i ∈ A ∣ α T a i ∣ = ∑ a i ∈ A ∣ ( a i ∥ + a i ⊥ ) ( α T ∥ + α T ⊥ ) ∣ = ∑ a i ∈ A ∣ a i ∥ α T ∥ + a i ⊥ α T ⊥ ∣
J = \sum_{\mathbf{a}_{i} \in A} |\mathbf{\alpha}^T\mathbf{a}_{i}| \\
= \sum_{\mathbf{a}_{i} \in A} |(\mathbf{a}^{\parallel}_{i} + \mathbf{a}^{\perp}_{i}) (\mathbf{\alpha}^{T\parallel} + \mathbf{\alpha}^{T\perp})|\\
= \sum_{\mathbf{a}_{i} \in A} |\mathbf{a}^{\parallel}_{i}\mathbf{\alpha}^{T\parallel} + \mathbf{a}^{\perp}_{i}\mathbf{\alpha}^{T\perp}| \\
J = a i ∈ A ∑ ∣ α T a i ∣ = a i ∈ A ∑ ∣ ( a i ∥ + a i ⊥ ) ( α T ∥ + α T ⊥ ) ∣ = a i ∈ A ∑ ∣ a i ∥ α T ∥ + a i ⊥ α T ⊥ ∣
當 α ∈ ⊥ u 1 \mathbf{\alpha} \in \perp \mathbf{u}_1 α ∈ ⊥ u 1 時,即 α ∥ = 0 \mathbf{\alpha}^{\parallel} = \mathbf{0} α ∥ = 0 ,
J 2 = J = ∑ a i ∈ A ∣ a i ⊥ α T ⊥ ∣
J_2 = J = \sum_{\mathbf{a}_{i} \in A} |\mathbf{a}^{\perp}_{i}\mathbf{\alpha}^{T\perp}|
J 2 = J = a i ∈ A ∑ ∣ a i ⊥ α T ⊥ ∣
要使 J 2 J_2 J 2 最大化,同樣可以採用使 J 1 J_1 J 1 最大化的迭代法,只需保證 α \mathbf{\alpha} α 始終垂直於 u 1 \mathbf{u}_1 u 1 ,由於 a i ⊥ \mathbf{a}^{\perp}_{i} a i ⊥ 均垂直於 u 1 \mathbf{u}_1 u 1 ,故 ∑ a i ∈ A + a i ⊥ \sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}^{\perp}_{i} ∑ a i ∈ A + a i ⊥ 垂直於 u 1 \mathbf{u}_1 u 1 ,其中集合 A + = { a i ∈ A : a i ⊥ α T ≥ 0 } A_+ = \{\mathbf{a}_{i} \in A: \mathbf{a}^{\perp}_{i}\mathbf{\alpha}^T \ge 0\} A + = { a i ∈ A : a i ⊥ α T ≥ 0 } 。所以只要初始化時 α \mathbf{\alpha} α 垂直於 u 1 \mathbf{u}_1 u 1 即可,則令 α = u i n t ( ( E − u 1 u 1 T ) v ) \mathbf{\alpha} = uint((E-\mathbf{u}_1\mathbf{u}^T_1)\mathbf{v}) α = u i n t ( ( E − u 1 u 1 T ) v ) 其中 v \mathbf{v} v 爲單位隨機向量。
整理上面結論得到第二主方向的計算過程:
首先樣本點投影到垂直於第一主方向的子空間,即 ( E − u 1 u 1 T ) A (E-\mathbf{u}_1\mathbf{u}^T_1)A ( E − u 1 u 1 T ) A ,爲了簡化記號,投影后的數據矩陣還是記爲 A A A ,其次隨機生成單位向量 α = u i n t ( ( E − u 1 u 1 T ) v ) \mathbf{\alpha} = uint((E-\mathbf{u}_1\mathbf{u}^T_1)\mathbf{v}) α = u i n t ( ( E − u 1 u 1 T ) v ) 其中 v \mathbf{v} v 爲單位隨機向量,最後最大化 J 2 = 2 α T ∑ a i ∈ A + a i J_2 = 2\mathbf{\alpha}^T \sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}_{i} J 2 = 2 α T ∑ a i ∈ A + a i ,此時 u 2 = α \mathbf{u}_2 = \mathbf{\alpha} u 2 = α 。
可計算第二主方向上方差爲 ∥ A T u 2 ∥ 2 \|A^T\mathbf{u}_2\|^2 ∥ A T u 2 ∥ 2 ,注意其不等於矩陣 A A A 奇異值 σ 2 \sigma_2 σ 2 。
第 k + 1 k+1 k + 1 個主方向的計算過程如下:
首先樣本點投影到垂直於前 k k k 個主方向的子空間,即 A k + 1 = ( E − u k u k T ) A k A_{k+1} = (E-\mathbf{u}_k\mathbf{u}^T_k)A_k A k + 1 = ( E − u k u k T ) A k ,其中 A 0 = A A_0 = A A 0 = A 爲原數據矩陣,u 0 = 0 \mathbf{u}_0 = \mathbf{0} u 0 = 0 爲零向量。爲了簡化記號,投影后的數據矩陣還是記爲 A = A k + 1 A=A_{k+1} A = A k + 1 ,其次隨機生成單位向量 α = u i n t ( ( E − ( u 1 u 1 T + ⋯ + u k u k T ) ) v ) \mathbf{\alpha} = uint((E-(\mathbf{u}_1\mathbf{u}^T_1+\cdots+\mathbf{u}_k\mathbf{u}^T_k))\mathbf{v}) α = u i n t ( ( E − ( u 1 u 1 T + ⋯ + u k u k T ) ) v ) 其中 v \mathbf{v} v 爲單位隨機向量,最後最大化 J k + 1 = 2 α T ∑ a i ∈ A + a i J_{k+1} = 2\mathbf{\alpha}^T \sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}_{i} J k + 1 = 2 α T ∑ a i ∈ A + a i ,此時 u k + 1 = α \mathbf{u}_{k+1} = \mathbf{\alpha} u k + 1 = α 。
據此可以獲得全部主方向 u 1 , ⋯ , u r \mathbf{u}_1,\cdots,\mathbf{u}_r u 1 , ⋯ , u r ,取前 k k k 個作爲最後的主方向。
數據矩陣重構如果採用經典PCA重構方法,由於主方向計算方法不同,即使採用全部主方向,也不能使重構殘差爲零。
異常點檢測
點雲位於 m m m 維空間的 k k k 維子空間,在該子空間中可被超橢球緊緻包圍,位於該橢球內的點認爲是正常點,橢球外的點是異常點,越是遠離橢球,異常度越大。據此提出兩個定量指標衡量異常程度,一個是顯而易見的,異常點位於 k k k 維子空間外,其與 k k k 維子空間的垂直距離爲 OD,距離越大,則越異常,樣本點 a i \mathbf{a}_{i} a i 的垂直距離 O D i OD_i O D i 爲
O D i = ∥ ( E − ∑ j = 1 k u j u j T ) a i ∥
OD_i = \|(E-\sum^k_{j=1} \mathbf{u}_j\mathbf{u}^T_j)\mathbf{a}_{i}\|
O D i = ∥ ( E − j = 1 ∑ k u j u j T ) a i ∥
異常點雖然位於 k k k 維子空間,但遠離橢球中心,即異常點投影值 u j T a i \mathbf{u}^T_j\mathbf{a}_{i} u j T a i 很大,對每個投影值用該主方向上方差的平方根 σ j \sigma_j σ j 歸一化,得到投影距離 PD,距離越大,則越異常,樣本點 a i \mathbf{a}_{i} a i 的投影距離 P D i PD_i P D i 爲
P D i = ∑ j = 1 k ( u j T a i / σ j ) 2
PD_i = \sqrt{\sum^k_{j=1}(\mathbf{u}^T_j\mathbf{a}_{i}/\sigma_j)^2}
P D i = j = 1 ∑ k ( u j T a i / σ j ) 2
以三維作爲例子直觀說明異常點,假設正常點雲位於平面上橢圓內,則該平面內遠離橢圓的點投影距離 PD 大;該平面外的點距離該平面的距離爲垂直距離 OD,距離越大,則越異常。
根據垂直距離和投影距離,可以把樣本點分爲四類:
1、正常樣本點:兩個距離都小,在正常範圍內;
2、好槓桿點:投影距離大,垂直距離正常;
3、壞槓桿點:投影距離大,垂直距離大;
4、垂直外點:投影距離正常,垂直距離大。
後面三種都是異常點。
這樣可以獲得診斷圖,橫座標爲投影距離,縱座標爲垂直距離,繪製每個樣本點。聚集在原點附近的點爲正常點,遠離原點的點爲異常點。
當存在特別離羣的點或離羣點比例較高時,此時可以先去除這些離羣點,然後利用剩下的正常點進行常規PCA,可以獲得更好的結果。利用此時的主方向和奇異值,重新繪製診斷圖。
上面介紹的僅是衆多魯棒主成分方法的一種,魯棒主成分方法的核心是獲得方差 u 1 = a r g m a x α ∑ a i ∈ A ( α T a i ) 2 \mathbf{u}_1 = argmax_{\mathbf{\alpha}} \sum_{\mathbf{a}_{i} \in A} (\mathbf{\alpha}^T\mathbf{a}_{i})^2 u 1 = a r g m a x α ∑ a i ∈ A ( α T a i ) 2 的魯棒估計,採用絕對值只是一種比較直觀的方法。
採用中值估計方差是一個更魯棒的方法,但尋求最優解很困難。令投影爲 z i = α T a i z_i = \mathbf{\alpha}^T\mathbf{a}_{i} z i = α T a i ,則基於中值的方差估計公式爲
S = 1.483 m e d ( ∣ z i − z ∗ ∣ )
S = 1.483 med(|z_i - z^*|)
S = 1 . 4 8 3 m e d ( ∣ z i − z ∗ ∣ )
其中 z ∗ z^* z ∗ 是投影 z i z_i z i 的中值,係數 1.483 是爲了使方差估計值與高斯分佈一致,S S S 爲方差的平方根,稱爲標準差。具體如何獲得最優解,由於很複雜,不打算展開。