陳陟原:數據降維與可視化 | AI 研習社第 53 期猿桌會

相信大多數人都已經接觸過數據可視化——Excel 隨便畫一張表就是了。衆所周知,二維數據可視化很容易,條形圖、餅狀圖等等,我們在初中就已經學過了。那麼三維數據呢?可能有些接觸到音頻產品的朋友會說瀑布圖,很好。而 N 維數據呢?物理學告訴我們:低維空間只能觀察到高維空間在本維度的投影。既然我們本身的維度無法增加,那麼就只能想辦法把數據的維度降低了。

近日,在雷鋒網 AI 研習社公開課上,澳大利亞國立大學信息技術專業學生陳陟原就分享了數據降維與可視化的相關內容。公開課回放視頻網址:

http://www.mooc.ai/open/course/526

陳陟原:澳大利亞國立大學信息技術專業學生。現在在北京大學做國際暑期教學助理。曾加入雷鋒字幕組翻譯過 CS231n 斯坦福李飛飛計算機視覺課程和 CS224n 自然語言處理。

分享主題:

數據降維與可視化

分享大綱:

• 高維數據實例&高緯度空間模型

• 維數災難&降維爲什麼如此重要

• 常用的線性和非線性降維方法

雷鋒網 AI 研習社將其分享內容整理如下:

我是陳陟原,澳大利亞國立大學信息技術專業,目前方向是高性能計算。今天要跟大家分享的是流行學習:數據降維與可視化。

我前段時間去了一次上海,見了一下之前關係很好的學長以及一些澳國立的校友。

在和他們吃飯的時候我們討論了很多工作方面的問題。其中有一個在銀行工作的學長就跟我說起現在 BI 如何如何啊,數據可視化怎樣怎樣啊。

這也是爲什麼今天我想跟大家聊聊數據可視化。今天的講座不會很深,我只是跟大家淺顯的介紹一下。有什麼問題也歡迎大家課後與我聯繫,也可以在網上找一些更深入的資料。

我在這裏用了網上找的一張圖,題目是大家可能都會比較感興趣的——智能手機出貨量。

在這張圖當中,橫軸是月份(時間),縱軸就是出貨量。它是一個十分完美的數據可視化例子,這樣的圖相信大家兩分鐘能做一堆。

所以,我想也沒什麼要跟大家分享得了,本次講座到此圓滿結束,感謝大家的參與。希望大家能繼續支持雷鋒,繼續支持 AI 研習社。

--當然,這是不可能的。

子曰:「一個好的講座,應該從視頻開始」。雖然說現在講座已經開始 2 分鐘了,但也不算太晚。

視頻內容

這個視頻其實有五年的歷史了,是當時 IBM 爲了宣傳智慧星球製作的,可見他們這種全民機器學習開始的時間有多早。我很希望大家都聽懂了這個視頻,因爲我也沒有找到字幕。

該視頻主要介紹了 IBM 的機器學習如何提高這家麪包店的銷量——重點是,數據。

對於麪包店來說,影響銷量的因素有很多。比如說,外面的溫度、溼度、降雨量——僅僅是天氣就已經不止三個維度了,還有堵車情況(出門晚了來不及吃早飯),甚至世界盃的成績都會對它產生影響。所以,我們要畫一張怎麼樣的圖來把這麼多維度的東西都扔進去呢?

上面這張圖最左邊是零維,點。後面依次爲:一維,線;二維,面;三維,體。而最後的這個四維,叫正方……正方什麼來着?反正,它叫什麼不重要,重要的是它是四維的。我不知道有沒有人看過《三體》,它最後一本書中對四維有一些描述。這是個不存在於三維空間的角度,既然不存在,我們也不可能看得到而只能去想象

大家記住這點就夠了,有人讓你做個麪包店銷量的可視化,你就甩他一臉這種圖,說:你自個兒去想象吧。

說正經的,就爲了畫張表就搞一堆機器學習算法?北京六院要不要了解一下?

這裏雖然我已經假設大家都有機器學習背景,但考慮到現在全民機器學習,這裏應該也還有非計算機、數學專業的聽衆,他們沒有足夠的基礎,所以我還是要簡單介紹一下維數災難,想要更深入地學習的同學,也可以進一步在網上搜尋相關資料。

我們知道維數越高精確度越高,比如天氣預報會包括溫度、溼度以及風向、風力、降雨量……至少經驗告訴我們,這樣的天氣預報精度是會更高的。那麼是不是可以進行延展,認爲對於所有情況來說,維數都越高越好呢?

首先我們看一下圖,圖上是一堆汪和喵,我們該怎麼把它們分類出來呢?看上去不太好分類。

那我們稍稍做一下擴展,多加一個維度,圖就有了兩個特徵,即兩個維度。

雖然這樣看起來分類效果也算不錯了,但還可以更好嗎?

那麼再多加一個特徵呢?

嗯,完美。雖然可能看上去有些不是很直觀哈。聽我口令,變

嗯,非常不錯,完美的將喵和汪們分開了。

看到上面這張圖,Hmmmm 這似乎有些不對啊。嗯你沒猜錯,過擬合了。我相信大家都知道什麼是過擬合,也都清楚爲什麼我們那麼討厭過擬合,這裏不再贅述。

而除此之外,我們還有一個更加令人難受的東西,如果你學過 kNN 的話那你肯定知道——維度災難。

很多算法都基於一個重要的基本假設:任意樣本附近任意小的距離內總能找到一個訓練樣本,即訓練樣本的採樣密度足夠大,也稱爲「密採樣」,才能保證分類性。

我們知道,維度增長是指數級的。10x10 的正方形用一百個樣本就能填滿,10x10x10x10 的四維體就需要一萬個。2009 年的 KDD Challenge 就找了 15000 個維度,你有再大的樣本量也是十分稀疏的。

除了上面兩點之外,還有一點極其重要,那麼就是距離。我們知道,在高維空間下不同樣本對之間的距離的差別與我們熟知的三維空間有很大的不同。這裏我們做一個簡單的證明:

在一個 d 維空間當中,超球體的體積是這樣的:

,超正方體的體積則是這樣的:

。當我們有無窮多個維度時,也即 d 趨近於無窮時,超球體與超正方體的體積比會很不幸:

這個故事告訴我們,高維空間當中幾乎所有數據都會遠離中心,兩個關聯很強的數據對之間的距離可能比你想象當中要大很多,在此情況之下,距離函數失去了意義。

所以,我們的目標是—降低維度。

該怎麼降低維度呢?

相信看過《三體》的人都清楚:流形學習。在繼續進行到數據降維的操作之前,這裏我先簡單介紹一下流行。

這張圖上,有一個碗、一個杯子和一個甜甜圈。

我們首先引入一個「同胚」的概念。什麼樣的東西是同胚的呢?

通過連續變換(拉伸、彎曲、撕裂或者粘合)之後能變成一樣的兩個或多個物體,這些物體就是同胚的。在這個例子當中,杯子和甜甜圈中間都有一個圈,所以它們是同胚的。

然後我們再引入一個「虧格」的概念,以實的閉曲面爲例,虧格 g 就是曲面上洞眼的個數,虧格數相同的物體就是同胚的。在這個例子中,碗的虧格爲 0,而杯子和甜甜圈的虧格都爲 1,所以杯子和甜甜圈是同胚的。

這裏我們爲什麼提到流形呢?它是指我們可以假設這些東西都是隨意變化的。比如說,要把玻璃、塑料碗揉成一個杯子的形狀,也是有困難的。

所以說這跟降維有什麼關係?我們再來看一張圖。

這個是地球。而我們都知道一個歐式空間當中的球體,是三維的。

這個則是地圖,就是把球體鋪平後的樣子。

所以說,球面是幾維的呢?看這個圖就知道——二維。原本表達我們的位置需要三個變量,這麼一來就只需要兩個了,即我們成功將維度降低爲兩個。

所謂流形學習,就是假設在歐式空間當中存在這樣一個流形,它可以把維度降低下來。這裏再提一下,一個 d 維的流形,即任意點處局部同胚於歐氏空間,對於地球上的任意一點,我們在地面看到的都是平的,我們就可以認爲它局部同胚於歐式空間,這是一個二維的東西。

接下來,我們正式討論流行學習算法。

首先是線性流行學習算法。這裏我們一共會討論兩種算法:無監督的 PCA,與監督的 LDA。

第一種算法是 PCA,即主成分學習(Principal Component Analysis),它藉助於一個正交變換,將其分量相關的原隨機向量轉化成其分量不相關的新隨機向量,這在代數上表現爲將原隨機向量的協方差陣變換成對角形陣,在幾何上表現爲將原座標系變換成新的正交座標系,使之指向樣本點散佈最開的 p 個正交方向,然後對多維變量系統進行降維處理,使之能以一個較高的精度轉換成低維變量系統,再通過構造適當的價值函數,進一步把低維繫統轉化成一維繫統。

簡單來說,就是通過正交變換將一組可能存在相關性的變量轉換爲一組線性不相關的變量,轉換後的這組變量叫主成分。PCA 則是指找出數據裏最主要的方面,用數據裏最主要的方面來代替原始數據。而 PCA 算法則主要從線性的協方差角度去找較好的投影方式。

另外一個常用的算法是 LDA,即線性判別分析(Linear Discriminant Analysis)。和 PCA 不同,LDA 是根據類別的標註關注分類能力。所以說 LDA 降維是直接和類別的個數 k 相關的,也不保證投影到的座標系是正交的。

假設我們的原始數據是 d 維的,一共有 k 個類別。PCA 可以選擇的維度範圍是 1--d,而 LDA 跟維度關係不大,監督學習主要關注標籤,它可選擇降到的維度範圍是 1--k-1(類別數-1)。這給 LDA 造成了使用方面的限制,比如說類別爲 3,那就無法讓它降到 3 維,類比爲 10,最多是能讓它降到 9 維。但是在大多數情況下,LDA 的降維效率要比 PCA 稍微高一些。

剛剛講到維數災難的時候,第三點(距離問題)沒有仔細提。

在降維的時候,我們通常通過投影方式降維,然而很多數據在獲取低維度的投影過程中,會丟失很多數據,尤其是距離信息,即原始距離的數據,在降維以後會產生新的變化。比如歐氏空間的原本距離爲 10,降維之後,就變成 8 了,而在另一個維數中的數據還可能變成 2 了,這就會導致降維後的結果不夠收斂,因而分類效果也降低——這是由於線性降維的線性原理所導致的。

因此我們就只能通過非線性流形學習來解決這個問題。關於非線性流形學習,我只會簡要介紹 T-SNE(t-distributed Stochastic Neighbor Embedding)算法。

T-SNE 算法將數據點之間的相似度轉換爲概率,它通過原始空間和嵌入空間的聯合概率的 Kullback-Leibler(KL)散度來評估可視化效果的好壞,也就是說用有關 KL 散度的函數作爲 loss 函數,然後通過梯度下降最小化 loss 函數,最終獲得收斂結果。

簡單來說,就是原始空間中的相似度由高斯聯合概率表示,嵌入空間的相似度由「學生 t 分佈」表示。至於爲什麼我們願意使用 T-SNE?就是因爲它的表現效果特別好——它主要關注數據的局部結構,同時,這也會導致它的時間和空間複雜度都非常高。

接下來,我們對線性降維和非線性降維做一個簡要的對比。

上圖爲四種算法降維出來的效果。右下角這個 fa,是因子分析(剛剛我們沒有講到),它也是一種線性降維。

從整張對比圖,我們可以看到,線性降維和非線性降維的區別是非常大的,其中,T-SNE 的降維效果要好很多。

一般我們都會先通過線性降維(如 PCA)降一下,降完以後再用 T-SNE,這樣就能平衡一下時間、空間複雜度的消耗以及降維效果。

使用 LDA 降維實際上也是這樣,先使用 PCA 降維,再使用 LDA 降維,因爲(我們這裏也可以看到)LDA 的降維效果確實要比 PCA 好一些。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章