2015年1月16日 星期五

[機器學習] 將高維度資料壓縮(Data Compression)與視覺化(Visualization)

資料壓縮


為何要將資料壓縮?主要有兩大好處:

  • 減少硬碟與記憶體空間的使用
  • 加快演算法速度

如果我們現在有個data set具有非常非常多特徵,例如50個特徵,我們隨便取兩個特徵出來,假設特徵${ x }_{ 1 }$是某樣東西用公分表示的長度,特徵${ x }_{ 2 }$是同樣東西用英寸表示的長度。

明明是針對同一樣東西,卻用兩個特徵來表示它的長度,看似有一個特徵是多餘的。因此,我們可以嘗試將data set從二維轉到一維,看能不能只用一個特徵值來代表這樣東西的長度就好。

現在,假設我們有如下圖二維的data set,想將它們降到一維,我們可以將這些data投影(projection)到那條綠色的回歸線上,投影後我們要做的就只是測量每個data在這條直線上的位置,透過建立一個新的特徵假設叫做${ z }_{ 1 }$,只需要一個值就可以記錄每個data在這條線上的位置了。


因此,過去每一個樣本都要用兩個值來表示,現在只要用一個值就可以了。經過降維,我用來儲存資料的硬碟或記憶體空間可能就只有過去的一半而已,但更有感的可能是加快演算法的速度。

同樣的,我們也可以將三維的資料降成二維,而在實際操作上,你還可能會遇到要將1000維的資料降成100維這種例子。



左圖中,你可以發現這群data約略是圍繞在一個平面周圍的感覺,我們試著將這些data投影到一個二維平面,如中間那個圖,投影後,所有data都在一個二維平面上了,所以我們要用兩個值來表示每一個data對吧?

這兩個值分別就是用圖中兩條綠色軸${ z }_{ 1 }$與${ z }_{ 2 }$上的值來表示,將這兩個軸獨立出來後,就變成了右圖,用${ z }_{ 1 }$軸與${ z }_{ 2 }$軸來表示這些data。

以下分別為上圖中對應的圖,第一張圖為data在三維空間時的散佈樣子,第二張圖則是將這些三維data投影到一個二維平面時的樣子,知道這個二維平面的兩個軸${ z }_{ 1 }$與${ z }_{ 2 }$後,第三張圖就是以${ z }_{ 1 }$與${ z }_{ 2 }$來表示這些data的位置。




視覺化

現在,假設我們有一些國家的資料作為它們的特徵,假設有50個特徵好了,我們要怎麼視覺化這50維的data呢?首先,辦不到,與其用一個50維的特徵向量${ x }^{ (i) }$表示每一個國家,不如嘗試用一個二維的特徵向量來表示,也就是使用之前所說的兩個特徵${ z }_{ 1 }$與${ z }_{ 2 }$來表示,而這就要用到降維了。

要注意的是,降維後的結果只能粗略代表這50個特徵,也就是結果多少會與原始資料有些許出入。




我們將上表畫出來,${ z }_{ 1 }$軸與${ z }_{ 2 }$軸可能就各代表一群特徵的綜合值。


勘誤:上圖左下角應該是${ z }^{ (i) }\in { R }^{ 2 }$

沒有留言:

張貼留言