簡述降維方法MDS 與 Isomap

1、 多維縮放(Multidimensional Scaling)

1. 核心思想

使得原始空間中的樣本距離在低維空間中得以保持算法

2. 問題描述

假定m個樣本在原始空間中的距離矩陣爲\(\bf {D} \in \mathbb R_{m\,x\,m}\),其第i行j列的元素\(dist_{ij}\)爲樣本\(\bf x_i\)\(\bf x_j\)的距離.咱們的目標是得到樣本在 \(d^{'}\) 維空間的表示 \(\bf {Z} \in \mathbb {R}^{d^{'}\,\times\,m}\),\(d^{'} \le d\),
且任意兩個樣本在\(d^{'}\)維空間中的歐氏距離等於原始空間中的距離,即\(\parallel {\bf z_i-z_j} \parallel \,=\,dist_{ij}\).機器學習

3. 算法推導

MDS接收的輸入是一個距離矩陣D.
若是隻知道這些點的距離(假設是歐式距離),那麼就會丟失一些信息:
a.咱們對點作平移,點之間的距離是不變的
b.咱們對點作旋轉,翻轉,點之間的距離是不變的.學習

因此想要從距離矩陣D精確還原到低維矩陣Z是不可能的,由於只給了距離信息以後自己就丟掉了不少東西.spa

設Z是高維矩陣X所對應的低維矩陣,矩陣\({\bf B}=Z^TZ\),M是一組正交基,則有.net

\[\begin{split}\bf B =&Z^TZ\\=&(ZM)^T(ZM)\\=&M^TZZM\\=&Z^TZ\end{split} \]

能夠看到咱們經過M對Z作正交變換並不會影響B的值,而正交變換就是對矩陣作旋轉,翻轉,平移等操做的.
因此,若是咱們想經過B反退出Z,確定是沒法獲得真正的Z,而是Z的任意一種正交變換後的結果.rest

\({\bf B\,=\,Z^TZ}\,\in\,{\mathbb R}^{m\,\times\,m}\),B爲降維後樣本的內積矩陣,\(b_{ij}\,=\,{\bf z_i^Tz_j}\),則有blog

\[\begin{split}dist_{ij}^2=&\,{\parallel {\bf z_i} \parallel}^2+{\parallel {\bf z_j} \parallel}^2-2{\bf z_i^Tz_j}\\=&\,b_{ii}+b_{jj}-2b_{ij} \qquad (1) \end{split} \]

因而,咱們發現,若是能經過D計算出B,那麼再由B不就能夠計算出Z了嗎?
因此思路是:D->B->Z
如今咱們要對Z加一些限制條件,由前面的討論可知,品牌故意變換全部點不會對矩陣矩陣D形成影響,因而咱們能夠把數據的中心點平移到原點,對Z進行去中心化:get

\[\begin{split}\sum_{i=1}^m{\bf z}_i=&\,{\bf 0} \\ \sum_{i=1}^m z_{ki}=&0\end{split}\]

其中\({\bf 0}\in{\mathbb R}^{d^{'}}\)爲全零矩陣.
顯然,矩陣B行與列的和均爲0:it

\[\begin{split}\sum_{j=1}^m b_{ij}\,&=\,\sum_{j=1}^m \sum_{k=1}^{d_{'}} z_{ki}z_{kj} \,=\,\sum_{k=1}^{d_{'}} z_{ki} \left (\sum_{j=1}^m z_{kj} \right) \,=\,0 \\ \sum_{i=1}^m b_{ij}\,&=\,\sum_{i=1}^m \sum_{k=1}^{d_{'}} z_{ki}z_{kj} \,=\,\sum_{k=1}^{d_{'}} z_{kj} \left (\sum_{i=1}^m z_{ki} \right) \,=\,0 \end{split}\]

矩陣B的跡$tr(B),=,\sum_{i=1}^m b_{ii} $,易知io

\[\begin{split} &\sum_{i=1}^m dist_{ij}^2\,=\,tr(B)+mb_{jj}, \qquad (2)\\ &\sum_{j=1}^m dist_{ij}^2\,=\,tr(B)+mb_{ii} ,\qquad (3)\\ &\sum_{i=1}^m\sum_{j=1}^m dist_{ij}^2\,=\,2m\,tr(B) \qquad (4) \end{split} \]

咱們令

\[\begin{split} dist_{i\cdot}^2\,&=\,{1\over m}\sum_{j=1}^m dist_{ij}^2 , \qquad (5)\\ dist_{\cdot j}^2\,&=\,{1\over m}\sum_{i=1}^m dist_{ij}^2 , \qquad (6)\\ dist_{\cdot \cdot}^2\,&=\,{1 \over {m^2}}\sum_{i=1}^m \sum_{j=1}^m dist_{ij}^2 \qquad (7) \end{split} \]

由式 (1)到 式(7) 可得

\[b_{ij}\,=\, -{ {1 \over 2} (dist_{ij}^2 - dist_{i \cdot}^2 - dist_{\cdot j}^2 + dist_{\cdot \cdot}^2 ) } \qquad (8) \]

由式(8)便可經過降維先後保持不變的距離矩陣D求取內積矩陣B.
對矩陣B做特徵分解(eigenvalue decomposition),\(\bf B\,=\,V\Lambda V^T\),其中\({\bf \Lambda}\,=\,diag(\lambda_1,\lambda_2,\cdots,\lambda_d)\)爲特徵值構成的對角矩陣,\(\lambda_1\ge\lambda_2\ge\cdots\ge\lambda_d\).
\(\Lambda\)爲特徵向量矩陣.假定其中有\(d^*\)個非零矩陣,它們構成對角矩陣\({\bf \Lambda}_*\,=\,diag(\lambda_1,\lambda_2,\cdots,\lambda_{d^*})\).令\(V_*\)表示相應的特徵向量矩陣 ,則Z可表示爲

\[{\bf Z\,=\, \Lambda_*^{1 \over 2} V_*^T} \,\in\,{\mathbb R}^{d^*\times m} \]

現實使用中,爲了達到降維的目的,每每選擇\(d^{'}\lt\lt d\)個最大的特徵值構成的對角矩陣\(\Lambda\)和相應的特徵向量矩陣\(V\)

4. 算法步驟

輸入:距離矩陣\({\bf D}\,\in\,{\mathbb R}^{m\times m}\),其元素\(dist_{ij}\)爲樣本\(x_i\)到樣本\(x_j\)的距離;低維空間維數\(d^{'}\).

過程:

  1. 根據式(5)~(7)計算\(dist_{i \cdot}^2,dist_{\cdot j}^2,dist_{\cdot \cdot}^2\);
  2. 根據式(8)計算矩陣B;
  3. 對矩陣B做特徵值分解;
  4. \(\Lambda\)\(d^{'}\)個最大特徵值所構成的對角矩陣,\(V\)爲相應的特徵向量矩陣.

輸出:
低維數據矩陣\({\bf Z\,=\,\Lambda^{1 \over 2}V^T} \,\in\,{\mathbb R}^{m\times d^{'}}\).每行是一個樣本的低維座標.

2、等度量映射(Isomap)

1. 算法思想

  1. 經過kNN(k-Nearest Neighbor)找到點的k個最近鄰,將它們鏈接起來構造一張圖)
  2. 經過計算圖中各點之間的最短路徑,做爲點之間的距離\(d_{ij}\)放入距離矩陣D
  3. 將D傳給經典的MDS算法,獲得降維後的結果

2. 算法步驟

輸入:
樣本集\(D=\{ x_1,x_2,\cdots,x_m\}\);近鄰參數k;低維空間的維數\(d^{'}\).
過程:

  1. for i = 1,2,...,m do
    經過kNN算法肯定\(x_i\)的k近鄰;
    \(x_i\)與k近鄰點之間的距離設置爲歐氏距離,與其它點的距離設置爲無窮大.
    endfor
  2. 使用Floyd或Dijkstra算法計算任意兩點之間的最短路徑距離\(dist(x_i,x_j)\);
  3. \(dist(x_i,x_j)\)做爲MDS算法的輸入;
  4. 獲取MDS算法的輸出

輸出:
樣本集D在低維空間的投影\(Z=\{ z_1,z_2,\cdots ,z_m \}\)

3.算法討論

ISOMAP自己的核心就在構造點之間的距離ISOMAP自己的核心就在構造點之間的距離.ISOMAP效果,能夠看到選取的最短路徑比較好地還原了指望的藍色實線,用這個數據進行降維會使流形得以保持:

Reference

1.《機器學習》(周志華)

2. 維度打擊,機器學習中的降維算法:ISOMAP & MDS

相關文章
相關標籤/搜索