【AI白身境】深度学习中的数据可视化
文章首發(fā)于微信公眾號《有三AI》
【AI白身境】深度學習中的數(shù)據(jù)可視化
今天是新專欄《AI白身境》的第八篇,所謂白身,就是什么都不會,還沒有進入角色。
上一節(jié)我們已經(jīng)講述了如何用爬蟲爬取數(shù)據(jù),那爬取完數(shù)據(jù)之后就應該是進行處理了,一個很常用的手段是數(shù)據(jù)可視化。
通過數(shù)據(jù)可視化,可以更加直觀地表征數(shù)據(jù),在深度學習項目中,常需要的數(shù)據(jù)可視化操作包括原始圖片數(shù)據(jù)的可視化,損失和精度的可視化等。
作者?|?言有三?臧小滿?
編輯?|?言有三?臧小滿?
?
01?什么是數(shù)據(jù)可視化?
每每提到數(shù)據(jù)可視化,大家腦中可能會浮現(xiàn)很各種圖表、西裝革履的分析師、科幻大片中酷炫的儀表。
其實不用那么復雜,數(shù)據(jù)可視化早就融合進你我的生活,地鐵線路圖、公交時刻表,天氣預報中的氣象地圖等都是很常見的。
為什么要進行可視化?
因為人是視覺動物,對于圖像的敏感度要比對純數(shù)字的敏感度高的多。
人類對圖像的處理速度比文本快6萬倍,同時人類右腦記憶圖像的速度比左腦記憶抽象文字快100萬倍。數(shù)據(jù)可視化正是利用人類天生技能來增強數(shù)據(jù)處理和組織效率。
舉個簡單的例子,計劃買一套房產(chǎn)作為投資,?想要了解“去年上海房價哪里漲幅最大”,現(xiàn)以圖作答,?把去年的增長率體現(xiàn)在圖上,以20%作為分界,?增長超過20%的標紅色,?超過越多則越大,?不足的標記成藍色,?如下圖,可以很快get到哪個區(qū)域的大幅度漲幅。
可視化將數(shù)字抽象成了更方便我們觀察和感受的圖表,因此需要熟悉使用。
?
02?低維數(shù)據(jù)可視化
數(shù)據(jù)有不同的維度,我們最常接觸的就是一維,二維的數(shù)據(jù),在機器學習任務中,包括損失函數(shù)等統(tǒng)計指標。
2.1?散點圖
散點圖,常用于分析離散數(shù)據(jù)的分布。比如我們有一個數(shù)據(jù)集,里面的圖片有不同的大小,我們可以利用x,y軸分別對應圖片的寬高,從而畫出圖片尺度的空間分布情況。越密集的地方,說明該尺度類型的圖越多,如下圖所示。
2.2?折線圖
折線圖是用于分析變量隨另一個變量的變化關(guān)系,我們平常接觸最多的loss曲線圖,accuracy曲線圖就是這一種,可以看指標隨著訓練過程的變化判斷收斂情況,從而推測模型訓練的好壞,折線圖被廣泛應用于各類分析,如下圖所示。
2.3?直方圖,餅狀圖
這兩種圖,都常用于統(tǒng)計數(shù)據(jù)的分布比例以及響應幅度,比如一幅圖片的亮度分布情況,不同網(wǎng)絡層的參數(shù)量,計算時間代價。
這幾種圖,適合對有時序變化的一維向量,有統(tǒng)計分布的一維向量,或者二維圖像的尺度等信息進行可視化。
?
03?高維數(shù)據(jù)可視化
在機器學習任務中,數(shù)據(jù)通常是用成百上千維的向量表示,而超過3維的向量,就已經(jīng)超過了人類的可視化認知,因此通常需要對數(shù)據(jù)進行降維。
數(shù)據(jù)降維方法可以分為線性方法和非線性方法。其中線性方法包括PCA和LDA,而非線性方法有保留局部特征、基于全局特征等方法,以t-SNE為代表。下面我們主要介紹PCA和t-SNE方法。
3.1??PCA降維
PCA,全稱是Principal?components?analysis,這是一種分析、簡化數(shù)據(jù)集的技術(shù)。PCA常用于減少數(shù)據(jù)集的維數(shù),同時保持數(shù)據(jù)集中對方差貢獻最大的特征,原理是保留低階主成分,忽略高階主成分,因為低階成分保留了數(shù)據(jù)最多的信息。
假定X是原始數(shù)據(jù),Y是降維后的數(shù)據(jù),W是變換矩陣,Y=XW。假如我們需要降到3?維以便于我們可視化,那就取Y的前三個主成分作為原始屬性X的代表。
我們采用Google開源的網(wǎng)頁版數(shù)據(jù)可視化工具Embedding?Projector來進行可視化,鏈接如下:
http://projector.tensorflow.org/
選擇MNIST作為可視化例子,它的原始維度為10000×784,即10000張28×28的圖像。
利用這個工具我們進行PCA的可視化,降低到3個維度后,我們可以選擇某個數(shù)字進行可視化。下圖就是數(shù)字9的分布,可以看到,總共有1009個樣本,數(shù)據(jù)的分布在物理空間上具有一定的聚類特性。
還可以用不同的顏色查看全體數(shù)據(jù)的分布,從這里可以更好的看出不同類的分布規(guī)律。
?
3.2??t-SNE降維
SNE全稱是Stochastic?Neighbor?Embedding,它將數(shù)據(jù)點之間高維的歐氏距離轉(zhuǎn)換為表示相似度的條件概率,目標是將高維數(shù)據(jù)映射到低維后,盡量保持數(shù)據(jù)點之間的空間結(jié)構(gòu),從而那些在高維空間里距離較遠的點,在低維空間中依然保持較遠的距離。
t-SNE即t-distributed?stochastic?neighbor?embedding,t-SNE用聯(lián)合概率分布替代了SNE中的條件概率分布,解決了SNE的不對稱問題。通過引入t分布,解決了同類別之間簇的擁擠問題。
t-SNE方法實質(zhì)上是一種聚類的方法,對于一個空間中的點,周圍的其他點都是它的“鄰居”,方法就是要試圖使所有點具有相同數(shù)量的“鄰居”。
t-SNE經(jīng)過學習收斂后,通過投影到2維或者3維的空間中可以判斷一個數(shù)據(jù)集有沒有很好的可分性,即是否同類之間間隔小,異類之間間隔大。如果在低維空間中具有可分性,則數(shù)據(jù)是可分的,如果不具有可分性,可能是數(shù)據(jù)不可分,也可能僅僅是因為不能投影到低維空間。
下圖是t-SNE可視化結(jié)果圖,可以看出,數(shù)字都有很明顯的聚類效果。
在進行一個機器學習任務之前,通過可視化來對數(shù)據(jù)集進行更深刻的認識,有助于預估任務的難度,在遇到困難后也會更加容易找到解決方案。
?
04?python數(shù)據(jù)可視化項目
考慮到python是第一大機器學習編程語言,同時開源項目居多,所以我們只關(guān)心python相關(guān)的工具,而且python也基本可以滿足需求。
可視化的項目太多了,下面基于python和GitHub的數(shù)據(jù),隨便推薦幾款。
1.?tensorboard和tensorboardX,想必不需要多做介紹,后者大家可能不熟悉,被開發(fā)用來支持chainer,?mxnet,numpy,4000+star。
https://github.com/lanpa/tensorboardX
2.?visdom,支持numpy和torch的工具,常用于pytorch數(shù)據(jù)可視化,很強大,5000+star。
https://github.com/facebookresearch/visdom
3.?seaborn:一款基于matplotlib的工具,簡單來說,就是有更高的API,畫出的圖也好看,5000+star,主要處理低維數(shù)據(jù)。
https://github.com/mwaskom/seaborn
4.?holoviews:很酷炫的工具,與season差不多,1000+star。
https://github.com/ioam/holoviews
5.?missingno:一款缺失數(shù)據(jù)可視化工具,非常適合分析數(shù)據(jù)集的完整性,1000+star。
https://github.com/ResidentMario/missingno
就這么多,以后再集中講可視化工具。
?
總結(jié)
數(shù)據(jù)可視化抽象了數(shù)據(jù)本身真正的價值,熟練掌握可視化對于分析數(shù)據(jù)的特征和深度學習模型的性能是必要的技能。
下期預告:下一期我們講入行AI必備的數(shù)學基礎,如果你有建議,歡迎留言,我們會及時采納的。
?
轉(zhuǎn)載文章請后臺聯(lián)系
侵權(quán)必究
AI白身境系列完整閱讀:
第一期:【AI白身境】深度學習從棄用windows開始
第二期:【AI白身境】Linux干活三板斧,shell、vim和git
第三期:【AI白身境】學AI必備的python基礎
第四期:【AI白身境】深度學習必備圖像基礎
第五期:【AI白身境】搞計算機視覺必備的OpenCV入門基礎
第六期:【AI白身境】只會用Python?g++,CMake和Makefile了解一下
第七期:【AI白身境】學深度學習你不得不知的爬蟲基礎
第八期:?【AI白身境】深度學習中的數(shù)據(jù)可視化
第九期:【AI白身境】入行AI需要什么數(shù)學基礎:左手矩陣論,右手微積分
第十期:【AI白身境】一文覽盡計算機視覺研究方向
第十一期:【AI白身境】AI+,都加在哪些應用領域了
第十二期:【AI白身境】究竟誰是paper之王,全球前10的計算機科學家
AI初識境系列完整閱讀
第一期:【AI初識境】從3次人工智能潮起潮落說起
第二期:【AI初識境】從頭理解神經(jīng)網(wǎng)絡-內(nèi)行與外行的分水嶺
第三期:【AI初識境】近20年深度學習在圖像領域的重要進展節(jié)點
第四期:【AI初識境】激活函數(shù):從人工設計到自動搜索
第五期:【AI初識境】什么是深度學習成功的開始?參數(shù)初始化
第六期:【AI初識境】深度學習模型中的Normalization,你懂了多少?
第七期:【AI初識境】為了圍剿SGD大家這些年想過的那十幾招
第八期:【AI初識境】被Hinton,DeepMind和斯坦福嫌棄的池化,到底是什么?
第九期:【AI初識境】如何增加深度學習模型的泛化能力
第十期:【AI初識境】深度學習模型評估,從圖像分類到生成模型
第十一期:【AI初識境】深度學習中常用的損失函數(shù)有哪些?
第十二期:【AI初識境】給深度學習新手開始項目時的10條建議
感謝各位看官的耐心閱讀,不足之處希望多多指教。后續(xù)內(nèi)容將會不定期奉上,歡迎大家關(guān)注有三公眾號 有三AI!
?
總結(jié)
以上是生活随笔為你收集整理的【AI白身境】深度学习中的数据可视化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【AI白身境】学深度学习你不得不知的爬虫
- 下一篇: 【模型解读】深度学习网络之Siamese