日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7.4.5 鲁棒主成分分析 PCA

發布時間:2023/12/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7.4.5 鲁棒主成分分析 PCA 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

7.4.5 魯棒主成分分析 PCA

根據每個樣本點數據 ai\mathbf{a}_{i}ai? 在第一主方向 u1\mathbf{u}_1u1? 上的投影的方差最大,知樣本點在此方向最分散,為第一主方向。我們可以反過來思考,每個樣本點數據 ai\mathbf{a}_{i}ai? 在某個方向 α\mathbf{\alpha}α 上投影,計算其方差,方向不同時,方差是不同的,當方差最大時,此時方向就是第一主方向,所以第一主方向可如下定義:
u1=argmaxα∑ai∈A(aiTα)2=argmaxα(ATα)TATα==argmaxααT(AAT)α\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} u1?=argmaxα?ai?A?(aiT?α)2=argmaxα?(ATα)TATα==argmaxα?αT(AAT)α

該定義是計算方差,需進行平方運算,在最小二乘法章節指出,平方運算很容易受到異常點的影響,比如數據矩陣 AAA 中存在離群的樣本點,即使這樣的離群點數目很少,也會導致第一主方向極大地偏離理想方向。如果點云不存在離群點,即樣本點都是采樣于高斯分布,則上述計算得到的主方向就是最優主方向。

為了提高魯棒性即抗離群點能力,需要減弱離群點對方差的貢獻,采用一次函數就可達到目的,即使用絕對值,而不是平方,則第一主方向可如下定義:
u1=argmaxα∑ai∈A∣aiTα∣\mathbf{u}_1 = argmax_{\mathbf{\alpha}} \sum_{\mathbf{a}_{i} \in A} |\mathbf{a}^T_{i}\mathbf{\alpha}| u1?=argmaxα?ai?A?aiT?α

這是一種常用的魯棒PCA,原理簡單易懂,效果也較好,計算也方便。下面來求解 u1\mathbf{u}_1u1?

J1=∑ai∈A∣aiTα∣=∑ai∈A∣αTai∣=∑ai∈A+αTai?∑ai∈A?αTai=αT(∑ai∈A+ai?∑ai∈A?ai)=2αT∑ai∈A+aiJ_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} J1?=ai?A?aiT?α=ai?A?αTai?=ai?A+??αTai??ai?A???αTai?=αT(ai?A+??ai??ai?A???ai?)=2αTai?A+??ai?

其中集合 A+={ai∈A:αTai≥0}A_+ = \{\mathbf{a}_{i} \in A: \mathbf{\alpha}^T\mathbf{a}_{i} \ge 0\}A+?={ai?A:αTai?0} 即與向量 α\mathbf{\alpha}α 夾角小于等于 909090 度的樣本集 和 A?={ai∈A:αTai<0}A_- = \{\mathbf{a}_{i} \in A: \mathbf{\alpha}^T\mathbf{a}_{i} < 0\}A??={ai?A:αTai?<0}

因為樣本集進行了中心化,所以 ∑ai∈Aai=0\sum_{\mathbf{a}_{i} \in A} \mathbf{a}_{i} = \mathbf{0}ai?A?ai?=0 ,因此 ∑ai∈A+ai=?∑ai∈A?ai\sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}_{i} = - \sum_{\mathbf{a}_{i} \in A_-} \mathbf{a}_{i}ai?A+??ai?=?ai?A???ai?

要最大化 J1J_1J1? ,只需向量 α\mathbf{\alpha}α 與向量 ∑ai∈A+ai\sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}_{i}ai?A+??ai? 平行即可,所以
α=unit(∑ai∈A+ai)\mathbf{\alpha} = unit (\sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}_{i}) α=unit(ai?A+??ai?)
即單位化向量 ∑ai∈A+ai\sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}_{i}ai?A+??ai?

所以可以采用迭代法求解最優 u1\mathbf{u}_1u1? 。首先隨機生成單位向量 α\mathbf{\alpha}α

1、根據內積 αTai\mathbf{\alpha}^T\mathbf{a}_{i}αTai? 符號,劃分集合 A+A_+A+?

2、令 α=unit(∑ai∈A+ai)\mathbf{\alpha} = unit (\sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}_{i})α=unit(ai?A+??ai?) 最大化 J1J_1J1? ,得到新的單位向量 α\mathbf{\alpha}α

重復上面兩步,直到收斂即單位向量 α\mathbf{\alpha}α 改變很小,此時 u1=α\mathbf{u}_1=\mathbf{\alpha}u1?=α

可計算第一主方向上方差為 ∥ATu1∥2\|A^T\mathbf{u}_1\|^2ATu1?2 ,注意其不等于矩陣 AAA 奇異值 σ1\sigma_1σ1?

那如何計算第二主方向呢?

第二主方向是垂直于第一主方向,最大方差方向即
u2=argmaxα∈⊥u1∑ai∈A∣αTai∣\mathbf{u}_2 = argmax_{\mathbf{\alpha} \in \perp \mathbf{u}_1} \sum_{\mathbf{a}_{i} \in A} |\mathbf{\alpha}^T\mathbf{a}_{i}| u2?=argmaxαu1??ai?A?αTai?

把每個樣本點沿第一主方向進行正交分解,即分解為第一主方向分量 ai∥\mathbf{a}^\parallel_{i}ai? 和垂直于第一主方向分量 ai⊥\mathbf{a}^\perp_{i}ai? ,則
ai=ai∥+ai⊥ai⊥=(E?u1u1T)aiai∥=u1u1Tai\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} \\ ai?=ai?+ai?ai?=(E?u1?u1T?)ai?ai?=u1?u1T?ai?


J=∑ai∈A∣αTai∣=∑ai∈A∣(ai∥+ai⊥)(αT∥+αT⊥)∣=∑ai∈A∣ai∥αT∥+ai⊥α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=ai?A?αTai?=ai?A?(ai?+ai?)(αT+αT)=ai?A?ai?αT+ai?αT

α∈⊥u1\mathbf{\alpha} \in \perp \mathbf{u}_1αu1? 時,即 α∥=0\mathbf{\alpha}^{\parallel} = \mathbf{0}α=0
J2=J=∑ai∈A∣ai⊥αT⊥∣J_2 = J = \sum_{\mathbf{a}_{i} \in A} |\mathbf{a}^{\perp}_{i}\mathbf{\alpha}^{T\perp}| J2?=J=ai?A?ai?αT

要使 J2J_2J2? 最大化,同樣可以采用使 J1J_1J1? 最大化的迭代法,只需保證 α\mathbf{\alpha}α 始終垂直于 u1\mathbf{u}_1u1? ,由于 ai⊥\mathbf{a}^{\perp}_{i}ai? 均垂直于 u1\mathbf{u}_1u1? ,故 ∑ai∈A+ai⊥\sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}^{\perp}_{i}ai?A+??ai? 垂直于 u1\mathbf{u}_1u1? ,其中集合 A+={ai∈A:ai⊥αT≥0}A_+ = \{\mathbf{a}_{i} \in A: \mathbf{a}^{\perp}_{i}\mathbf{\alpha}^T \ge 0\}A+?={ai?A:ai?αT0} 。所以只要初始化時 α\mathbf{\alpha}α 垂直于 u1\mathbf{u}_1u1? 即可,則令 α=uint((E?u1u1T)v)\mathbf{\alpha} = uint((E-\mathbf{u}_1\mathbf{u}^T_1)\mathbf{v})α=uint((E?u1?u1T?)v) 其中 v\mathbf{v}v 為單位隨機向量。

整理上面結論得到第二主方向的計算過程:

首先樣本點投影到垂直于第一主方向的子空間,即 (E?u1u1T)A(E-\mathbf{u}_1\mathbf{u}^T_1)A(E?u1?u1T?)A ,為了簡化記號,投影后的數據矩陣還是記為 AAA ,其次隨機生成單位向量 α=uint((E?u1u1T)v)\mathbf{\alpha} = uint((E-\mathbf{u}_1\mathbf{u}^T_1)\mathbf{v})α=uint((E?u1?u1T?)v) 其中 v\mathbf{v}v 為單位隨機向量,最后最大化 J2=2αT∑ai∈A+aiJ_2 = 2\mathbf{\alpha}^T \sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}_{i}J2?=2αTai?A+??ai? ,此時 u2=α\mathbf{u}_2 = \mathbf{\alpha}u2?=α

可計算第二主方向上方差為 ∥ATu2∥2\|A^T\mathbf{u}_2\|^2ATu2?2 ,注意其不等于矩陣 AAA 奇異值 σ2\sigma_2σ2?

k+1k+1k+1 個主方向的計算過程如下:

首先樣本點投影到垂直于前 kkk 個主方向的子空間,即 Ak+1=(E?ukukT)AkA_{k+1} = (E-\mathbf{u}_k\mathbf{u}^T_k)A_kAk+1?=(E?uk?ukT?)Ak? ,其中 A0=AA_0 = AA0?=A 為原數據矩陣,u0=0\mathbf{u}_0 = \mathbf{0}u0?=0 為零向量。為了簡化記號,投影后的數據矩陣還是記為 A=Ak+1A=A_{k+1}A=Ak+1? ,其次隨機生成單位向量 α=uint((E?(u1u1T+?+ukukT))v)\mathbf{\alpha} = uint((E-(\mathbf{u}_1\mathbf{u}^T_1+\cdots+\mathbf{u}_k\mathbf{u}^T_k))\mathbf{v})α=uint((E?(u1?u1T?+?+uk?ukT?))v) 其中 v\mathbf{v}v 為單位隨機向量,最后最大化 Jk+1=2αT∑ai∈A+aiJ_{k+1} = 2\mathbf{\alpha}^T \sum_{\mathbf{a}_{i} \in A_+} \mathbf{a}_{i}Jk+1?=2αTai?A+??ai? ,此時 uk+1=α\mathbf{u}_{k+1} = \mathbf{\alpha}uk+1?=α

據此可以獲得全部主方向 u1,?,ur\mathbf{u}_1,\cdots,\mathbf{u}_ru1?,?,ur? ,取前 kkk 個作為最后的主方向。

數據矩陣重構如果采用經典PCA重構方法,由于主方向計算方法不同,即使采用全部主方向,也不能使重構殘差為零。

異常點檢測

點云位于 mmm 維空間的 kkk 維子空間,在該子空間中可被超橢球緊致包圍,位于該橢球內的點認為是正常點,橢球外的點是異常點,越是遠離橢球,異常度越大。據此提出兩個定量指標衡量異常程度,一個是顯而易見的,異常點位于 kkk 維子空間外,其與 kkk 維子空間的垂直距離為 OD,距離越大,則越異常,樣本點 ai\mathbf{a}_{i}ai? 的垂直距離 ODiOD_iODi?
ODi=∥(E?∑j=1kujujT)ai∥OD_i = \|(E-\sum^k_{j=1} \mathbf{u}_j\mathbf{u}^T_j)\mathbf{a}_{i}\| ODi?=(E?j=1k?uj?ujT?)ai?

異常點雖然位于 kkk 維子空間,但遠離橢球中心,即異常點投影值 ujTai\mathbf{u}^T_j\mathbf{a}_{i}ujT?ai? 很大,對每個投影值用該主方向上方差的平方根 σj\sigma_jσj? 歸一化,得到投影距離 PD,距離越大,則越異常,樣本點 ai\mathbf{a}_{i}ai? 的投影距離 PDiPD_iPDi?

PDi=∑j=1k(ujTai/σj)2PD_i = \sqrt{\sum^k_{j=1}(\mathbf{u}^T_j\mathbf{a}_{i}/\sigma_j)^2} PDi?=j=1k?(ujT?ai?/σj?)2?

以三維作為例子直觀說明異常點,假設正常點云位于平面上橢圓內,則該平面內遠離橢圓的點投影距離 PD 大;該平面外的點距離該平面的距離為垂直距離 OD,距離越大,則越異常。

根據垂直距離和投影距離,可以把樣本點分為四類:
1、正常樣本點:兩個距離都小,在正常范圍內;
2、好杠桿點:投影距離大,垂直距離正常;
3、壞杠桿點:投影距離大,垂直距離大;
4、垂直外點:投影距離正常,垂直距離大。
后面三種都是異常點。

這樣可以獲得診斷圖,橫坐標為投影距離,縱坐標為垂直距離,繪制每個樣本點。聚集在原點附近的點為正常點,遠離原點的點為異常點。

當存在特別離群的點或離群點比例較高時,此時可以先去除這些離群點,然后利用剩下的正常點進行常規PCA,可以獲得更好的結果。利用此時的主方向和奇異值,重新繪制診斷圖。

上面介紹的僅是眾多魯棒主成分方法的一種,魯棒主成分方法的核心是獲得方差 u1=argmaxα∑ai∈A(αTai)2\mathbf{u}_1 = argmax_{\mathbf{\alpha}} \sum_{\mathbf{a}_{i} \in A} (\mathbf{\alpha}^T\mathbf{a}_{i})^2u1?=argmaxα?ai?A?(αTai?)2 的魯棒估計,采用絕對值只是一種比較直觀的方法。

采用中值估計方差是一個更魯棒的方法,但尋求最優解很困難。令投影為 zi=αTaiz_i = \mathbf{\alpha}^T\mathbf{a}_{i}zi?=αTai? ,則基于中值的方差估計公式為

S=1.483med(∣zi?z?∣)S = 1.483 med(|z_i - z^*|) S=1.483med(zi??z?)

其中 z?z^*z? 是投影 ziz_izi? 的中值,系數 1.483 是為了使方差估計值與高斯分布一致,SSS 為方差的平方根,稱為標準差。具體如何獲得最優解,由于很復雜,不打算展開。

總結

以上是生活随笔為你收集整理的7.4.5 鲁棒主成分分析 PCA的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。