【AI白身境】深度学习中的数据可视化
今天是新專欄《AI白身境》的第八篇,所謂白身,就是什么都不會,還沒有進入角色。
上一節我們已經講述了如何用爬蟲爬取數據,那爬取完數據之后就應該是進行處理了,一個很常用的手段是數據可視化。
通過數據可視化,可以更加直觀地表征數據,在深度學習項目中,常需要的數據可視化操作包括原始圖片數據的可視化,損失和精度的可視化等。
作者 | 言有三 臧小滿?
編輯 | 言有三 臧小滿?
01
什么是數據可視化?
每每提到數據可視化,大家腦中可能會浮現很各種圖表、西裝革履的分析師、科幻大片中酷炫的儀表。
其實不用那么復雜,數據可視化早就融合進你我的生活,地鐵線路圖、公交時刻表,天氣預報中的氣象地圖等都是很常見的。
為什么要進行可視化?
因為人是視覺動物,對于圖像的敏感度要比對純數字的敏感度高的多。
人類對圖像的處理速度比文本快6萬倍,同時人類右腦記憶圖像的速度比左腦記憶抽象文字快100萬倍。數據可視化正是利用人類天生技能來增強數據處理和組織效率。
舉個簡單的例子,計劃買一套房產作為投資, 想要了解“去年上海房價哪里漲幅最大”,現以圖作答, 把去年的增長率體現在圖上,以20%作為分界, 增長超過20%的標紅色, 超過越多則越大, 不足的標記成藍色, 如下圖,可以很快get到哪個區域的大幅度漲幅。
可視化將數字抽象成了更方便我們觀察和感受的圖表,因此需要熟悉使用。
02
低維數據可視化
數據有不同的維度,我們最常接觸的就是一維,二維的數據,在機器學習任務中,包括損失函數等統計指標。
2.1 散點圖
散點圖,常用于分析離散數據的分布。比如我們有一個數據集,里面的圖片有不同的大小,我們可以利用x,y軸分別對應圖片的寬高,從而畫出圖片尺度的空間分布情況。越密集的地方,說明該尺度類型的圖越多,如下圖所示。
2.2 折線圖
折線圖是用于分析變量隨另一個變量的變化關系,我們平常接觸最多的loss曲線圖,accuracy曲線圖就是這一種,可以看指標隨著訓練過程的變化判斷收斂情況,從而推測模型訓練的好壞,折線圖被廣泛應用于各類分析,如下圖所示。
2.3 直方圖,餅狀圖
這兩種圖,都常用于統計數據的分布比例以及響應幅度,比如一幅圖片的亮度分布情況,不同網絡層的參數量,計算時間代價。
這幾種圖,適合對有時序變化的一維向量,有統計分布的一維向量,或者二維圖像的尺度等信息進行可視化。
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個樣本,數據的分布在物理空間上具有一定的聚類特性。
還可以用不同的顏色查看全體數據的分布,從這里可以更好的看出不同類的分布規律。
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可視化結果圖,可以看出,數字都有很明顯的聚類效果。
在進行一個機器學習任務之前,通過可視化來對數據集進行更深刻的認識,有助于預估任務的難度,在遇到困難后也會更加容易找到解決方案。
04
python數據可視化項目
考慮到python是第一大機器學習編程語言,同時開源項目居多,所以我們只關心python相關的工具,而且python也基本可以滿足需求。
可視化的項目太多了,下面基于python和GitHub的數據,隨便推薦幾款。
1. tensorboard和tensorboardX,想必不需要多做介紹,后者大家可能不熟悉,被開發用來支持chainer, mxnet, numpy,4000+star。
https://github.com/lanpa/tensorboardX
2. visdom,支持numpy和torch的工具,常用于pytorch數據可視化,很強大,5000+star。
https://github.com/facebookresearch/visdom
3. seaborn:一款基于matplotlib的工具,簡單來說,就是有更高的API,畫出的圖也好看,5000+star,主要處理低維數據。
https://github.com/mwaskom/seaborn
4. holoviews:很酷炫的工具,與season差不多,1000+star。
https://github.com/ioam/holoviews
5. missingno:一款缺失數據可視化工具,非常適合分析數據集的完整性,1000+star。
https://github.com/ResidentMario/missingno
就這么多,以后再集中講可視化工具。
總結
數據可視化抽象了數據本身真正的價值,熟練掌握可視化對于分析數據的特征和深度學習模型的性能是必要的技能。
下期預告:下一期我們講入行AI必備的數學基礎,如果你有建議,歡迎留言,我們會及時采納的。
轉載文章請后臺聯系
侵權必究
更多請關注知乎專欄《有三AI學院》
往期AI白身境
【AI白身境】只會用Python?g++,CMake和Makefile了解一下
【AI白身境】學深度學習你不得不知的爬蟲基礎
【AI白身境】搞計算機視覺必備的OpenCV入門基礎
【AI白身境】深度學習必備圖像基礎
【AI白身境】學AI必備的python基礎
【AI白身境】Linux干活三板斧,shell、vim和git
【AI白身境】深度學習從棄用windows開始
想要變身”AI專家“,就戳戳手指關注我們吧
別忘了點“好看”支持作者噢? ?????
總結
以上是生活随笔為你收集整理的【AI白身境】深度学习中的数据可视化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【模型解读】深度学习网络只能有一个输入吗
- 下一篇: 【研究院】滴滴研究院,都在做什么