「AI白身境」深度學習中的資料視覺化

dicksonjyl560101發表於2019-05-24

https://www.toutiao.com/a6694017372015034892/


今天是新專欄《AI白身境》的第八篇,所謂白身,就是什麼都不會,還沒有進入角色。

上一節我們已經講述瞭如何用爬蟲爬取資料,那爬取完資料之後就應該是進行處理了,一個很常用的手段是資料視覺化。

通過資料視覺化,可以更加直觀地表徵資料,在深度學習專案中,常需要的資料視覺化操作包括原始 圖片資料的視覺化,損失和精度的視覺化 等。

者 | 言有三 臧小滿

編輯 | 言有三


01 什麼是資料視覺化?

每每提到資料視覺化,大家腦中可能會浮現很各種圖表、西裝革履的分析師、科幻大片中酷炫的儀表。

「AI白身境」深度學習中的資料視覺化

其實不用那麼複雜,資料視覺化早就融合進你我的生活,地鐵線路圖、公交時刻表,天氣預報中的氣象地圖等都是很常見的。

為什麼要進行視覺化?

因為人是視覺動物,對於影像的敏感度要比對純數字的敏感度高的多。

人類對影像的處理速度比文字快6萬倍,同時人類右腦記憶影像的速度比左腦記憶抽象文字快100萬倍 。資料視覺化正是利用人類天生技能來增強資料處理和組織效率。

舉個簡單的例子,計劃買一套房產作為投資, 想要了解“去年上海房價哪裡漲幅最大”,現以圖作答, 把去年的增長率體現在圖上,以20%作為分界, 增長超過20%的標紅色, 超過越多則越大, 不足的標記成藍色, 如下圖,可以很快get到哪個區域的大幅度漲幅。

「AI白身境」深度學習中的資料視覺化

視覺化將數字抽象成了更方便我們觀察和感受的圖表,因此需要熟悉使用。

02 低維資料視覺化

資料有不同的維度,我們最常接觸的就是一維,二維的資料,在機器學習任務中,包括損失函式等統計指標。

2.1 散點圖

散點圖,常用於分析離散資料的分佈。比如我們有一個資料集,裡面的圖片有不同的大小,我們可以利用x,y軸分別對應圖片的寬高,從而畫出圖片尺度的空間分佈情況。越密集的地方,說明該尺度型別的圖越多,如下圖所示。

「AI白身境」深度學習中的資料視覺化

2.2 折線圖

折線圖是用於分析變數隨另一個變數的變化關係,我們平常接觸最多的loss曲線圖,accuracy曲線圖就是這一種,可以看指標隨著訓練過程的變化判斷收斂情況,從而推測模型訓練的好壞,折線圖被廣泛應用於各類分析,如下圖所示。

「AI白身境」深度學習中的資料視覺化

2.3 直方圖,餅狀圖

這兩種圖,都常用於統計資料的分佈比例以及響應幅度,比如一幅圖片的亮度分佈情況,不同網路層的引數量,計算時間代價。

「AI白身境」深度學習中的資料視覺化

「AI白身境」深度學習中的資料視覺化

這幾種圖,適合對有時序變化的一維向量,有統計分佈的一維向量,或者二維影像的尺度等資訊進行視覺化。

03 高維資料視覺化

在機器學習任務中,資料通常是用成百上千維的向量表示,而超過3維的向量,就已經超過了人類的視覺化認知,因此通常需要對資料進行降維。

資料降維方法可以分為線性方法和非線性方法。其中線性方法包括PCA和LDA,而非線性方法有保留區域性特徵、基於全域性特徵等方法,以t-SNE為代表。下面我們主要介紹PCA和t-SNE方法。

3.1 PCA降維

PCA,全稱是Principal components analysis,這是一種分析、簡化資料集的技術。PCA常用於減少資料集的維數,同時保持資料集中對方差貢獻最大的特徵,原理是 保留低階主成分,忽略高階主成分,因為低階成分保留了資料最多的資訊

假定X是原始資料,Y是降維後的資料,W是變換矩陣,Y=XW。假如我們需要降到3 維以便於我們視覺化,那就取Y的前三個主成分作為原始屬性X的代表。

我們採用Google開源的網頁版資料視覺化工具Embedding Projector來進行視覺化,連結如下:

http://projector.tensorflow.org/

選擇MNIST作為視覺化例子,它的原始維度為10000×784,即10000張28×28的影像。

利用這個工具我們進行PCA的視覺化,降低到3個維度後,我們可以選擇某個數字進行視覺化。下圖就是數字9的分佈,可以看到,總共有1009個樣本,資料的分佈在物理空間上具有一定的聚類特性。

「AI白身境」深度學習中的資料視覺化

還可以用不同的顏色檢視全體資料的分佈,從這裡可以更好的看出不同類的分佈規律。

「AI白身境」深度學習中的資料視覺化

3.2 t-SNE降維

SNE全稱是Stochastic Neighbor Embedding,它將資料點之間高維的歐氏距離轉換為表示相似度的條件概率,目標是將高維資料對映到低維後,儘量保持資料點之間的空間結構,從而那些在高維空間裡距離較遠的點,在低維空間中依然保持較遠的距離。

t-SNE即t-distributed stochastic neighbor embedding,t-SNE用聯合概率分佈替代了SNE中的條件概率分佈,解決了SNE的不對稱問題。通過引入t分佈,解決了同類別之間簇的擁擠問題。

t-SNE方法實質上是一種聚類的方法,對於一個空間中的點,周圍的其他點都是它的“鄰居”,方法就是要試圖使所有點具有相同數量的“鄰居”。

t-SNE經過學習收斂後,通過投影到2維或者3維的空間中可以判斷一個資料集有沒有很好的可分性,即是否同類之間間隔小,異類之間間隔大。如果在低維空間中具有可分性,則資料是可分的,如果不具有可分性,可能是資料不可分,也可能僅僅是因為不能投影到低維空間。

下圖是t-SNE視覺化結果圖,可以看出,數字都有很明顯的聚類效果。

「AI白身境」深度學習中的資料視覺化

在進行一個機器學習任務之前,通過視覺化來對資料集進行更深刻的認識,有助於預估任務的難度,在遇到困難後也會更加容易找到解決方案。

04 python資料視覺化專案

考慮到python是第一大機器學習程式語言,同時開源專案居多,所以我們只關心python相關的工具,而且python也基本可以滿足需求。

「AI白身境」深度學習中的資料視覺化

視覺化的專案太多了,下面基於python和GitHub的資料,隨便推薦幾款。

1. tensorboard和tensorboardX,想必不需要多做介紹,後者大家可能不熟悉,被開發用來支援chainer, mxnet, numpy,4000+star。

https://github.com/lanpa/tensorboardX

「AI白身境」深度學習中的資料視覺化

2. visdom,支援numpy和torch的工具,常用於pytorch資料視覺化,很強大,5000+star。

https://github.com/facebookresearch/visdom

「AI白身境」深度學習中的資料視覺化

3. seaborn:一款基於matplotlib的工具,簡單來說,就是有更高的API,畫出的圖也好看,5000+star,主要處理低維資料。

https://github.com/mwaskom/seaborn

「AI白身境」深度學習中的資料視覺化

4. holoviews:很酷炫的工具,與season差不多,1000+star。

https://github.com/ioam/holoviews

「AI白身境」深度學習中的資料視覺化

5. missingno:一款缺失資料視覺化工具,非常適合分析資料集的完整性,1000+star。

https://github.com/ResidentMario/missingno

「AI白身境」深度學習中的資料視覺化

就這麼多,以後再集中講視覺化工具。

總結

資料視覺化抽象了資料本身真正的價值,熟練掌握視覺化對於分析資料的特徵和深度學習模型的效能是必要的技能。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2645377/,如需轉載,請註明出處,否則將追究法律責任。

相關文章