在過去23天內我們學習到了各神經網路模型的架構與原理,並且藉由小專案的方式來使用這些模型,但在AI的技術中除了要運用這些模型,還要學習如何輸入乾淨的的資料,所以在剩下的幾天之內,我會來補充一些實用的資料前處理技巧。
當我們在運算維度較高的資料時,運算就會需要花費較多的時間與資源,若今天有一個方式能夠將這些資料縮小,卻能保持原始的特性,那豈不是能夠完美的解決問題?所以今天要來說說降維究竟是什麼
降為可以幫我們縮小資料的維度,從而加快程式的運算速度,但降維不只能做到以上兩件事情,它還能夠幫助我們將資料視覺化(我們基本上只看得懂2維與3維),還能夠解決維數災難(curse of dimensionality)
的問題。
維度災難的意思是,當一個資料維度太高空間的體積太大時,因而可用數據變得很稀疏(太多雜訊),導致資料沒有麼用處,但降維可以通過特徵抽取的方式來投影出更小的維度,所以能夠使用降維的方法來處理維度災難的發生。
也因為是一整特徵提取的方式,所以我們常常都會在機器學習的領域中看見這一技巧,了解降維能解決的問題後,我們開始進入今天的主題,我們來看看兩個最常見的降維方式PCA
與t-SNE
。
主成份分析(Principal component analysis)
簡稱PCA,也被稱為最簡單的降為方式,其主要方式就是提取高維度的資料特徵投影到一個低維度的空間,來達到化繁為簡效果,這種方式能夠讓我們的原始資料在沒有什麼損失的情況下,用更精簡的方式來表達原始資料。
為了知道PCA是如何達成資料降維的動作,我們來看看PCA的實際操作,不過這些操作牽扯到了太多線性代數公式,所以我在這邊舉一個簡單的例子來幫助你了解PCA的構造。
假設我們今天想要買一台筆電但卻不知道該如何挑選,所以找了一些懂電腦的朋友幫助你挑選筆電,他們跟你說買筆電需要看,CPU、顯示卡、電池容量、記憶體大小、螢幕大小,但這兩個人判斷的結果不相同,效能派的朋友認為選擇筆電的優先順序是顯卡>CPU>記憶體>螢幕大小>電池容量,耐久派的朋友認為電池容量>CPU>記憶體>螢幕大小>顯卡,這時候如你是效能派就會在挑選筆電時,用效能派意見為主,耐久派的意見為輔,找到你最想要的筆電。
接下來我們把剛剛提到的例子轉換到PCA的概念上
最想要的筆電是最終目標
懂電腦的朋友是主成份分析
CPU、顯示卡、電池容量、記憶體大小、螢幕大小是擷取的特徵
效能派與耐久派分別代表為第一主成份
與第二主成份
簡單來說PCA就是設立一個想要的目標,找出資料特徵,並且通過演算法計算第一主成份與第二主成份(這個主成份代表著資料維度),最後通過這些主成份來完成一個更低維度的資料。
t-隨機鄰近嵌入法(t-distributed stochastic neighbor embedding)
簡稱t-SNE,這個演算法與PCA相同,都是為了將高維度的空間投影到低維度,不過t-SNE與PCA不相同地方的是,PCA在降維時空間結構會崩塌。
我們可以想像PCA處理降維的動作就是,對一個麵包大槌一揮把它打扁,硬生生的將高維空間扁成低維,這樣子會導致高維平面上的資料重疊。t-SNE則會將麵包分成好幾塊並且將小塊的麵包丟到更遠的地方,不過這解說起來比較複雜,所以我們先看看以下的例子。
假設我們在新生入學的演講現場,校長要求在附近的同學開始溝通,社交能力強的人附近就會有較多人,而沒有社交能力的人附近的人就會較稀少,這時校長根據人數給予各組彈力不同的彈簧,並要求每一組必須在固定的範圍內移動,若在範圍內遇見其他人就需要將他彈走,最後範圍內沒有人能夠彈的時,校長就在這些組別的蓋了一間教室當作它們的班級。
接下來我們把這了例子轉換到t-SNE上
附近的同學代表的是歐式距離(Euclidean distances)
社交能力強代表的是高斯分布(Gaussian distribution)又稱常態分布
社交能力弱代表的是 t分布
範圍代表的是困惑度(Perplexity)
結合例子與實際的應用t-SNE實際在做的事情就是,計算各點之間的歐式距離,若密度較高的群組使用高斯分佈計算,密度較低則用t分布計算,並且通過設定困惑度,將密度較低的點彈到更遠的地方或不見(因為不重要),密度適中得點會稍微移動,最後將這些群組或點保留在設定的平面上。通過這的方式排除無意義的資料,保留相似的資料並且還能保有一定的距離關係。但這樣的作法也有些缺點,就是t-SNE無法接受新的資料,需要重新訓練才行。