【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白身境】深度学习中的数据可视化相关推荐
- 【AI白身境】深度学习中的数据可视化
文章首发于微信公众号<有三AI> [AI白身境]深度学习中的数据可视化 今天是新专栏<AI白身境>的第八篇,所谓白身,就是什么都不会,还没有进入角色. 上一节我们已经讲述了如何 ...
- 对pca降维后的手写体数字图片数据分类_【AI白身境】深度学习中的数据可视化...
今天是新专栏<AI白身境>的第八篇,所谓白身,就是什么都不会,还没有进入角色. 上一节我们已经讲述了如何用爬虫爬取数据,那爬取完数据之后就应该是进行处理了,一个很常用的手段是数据可视化. ...
- 【AI白身境】学深度学习你不得不知的爬虫基础
文章首发于微信公众号<有三AI> [AI白身境]学深度学习你不得不知的爬虫基础 今天是新专栏<AI白身境>的第七篇,所谓白身,就是什么都不会,还没有进入角色. 对于深度学习,一 ...
- 【AI白身境】只会用Python?g++,CMake和Makefile了解一下
文章首发于微信公众号<有三AI> [AI白身境]只会用Python?g++,CMake和Makefile了解一下 今天是新专栏<AI白身境>的第六篇,所谓白身,就是什么都不会, ...
- 【AI白身境】搞计算机视觉必备的OpenCV入门基础
文章首发于微信公众号<有三AI> [AI白身境]搞计算机视觉必备的OpenCV入门基础 今天是新专栏<AI白身境>的第五篇. 曾经看过一个视频,树莓派自平衡机器人自动追着小球跑 ...
- 【AI白身境】学AI必备的python基础
文章首发于微信公众号<有三AI> [AI白身境]学AI必备的python基础 今天是新专栏<AI白身境>的第三篇,所谓白身,就是什么都不会,还没有进入角色. 上一篇给大家介绍了 ...
- 【AI白身境】Linux干活三板斧,shell、vim和git
文章首发于微信公众号<与有三学AI> [AI白身境]Linux干活三板斧,shell.vim和git 今天是专栏<AI白身境>的第二篇,所谓白身,就是什么都不会,还没有进入角色 ...
- 【AI白身境】计算机视觉都有哪些研究方向
文章首发于微信公众号<有三AI> [AI白身境]一文览尽计算机视觉研究方向 今天是新专栏<AI白身境>的第10篇,所谓白身,就是什么都不会,还没有进入角色. 相信看了前面的几篇 ...
- 【AI白身境】究竟谁是paper之王,全球前10的计算机科学家
文章首发于微信公众号<有三AI> [AI白身境]究竟谁是paper之王,全球前10的计算机科学家 今天是新专栏<AI白身境>的第十二篇,也是最后一篇了,作为最后一篇,我的想法是 ...
最新文章
- R语言ggplot2可视化(facet图)使得第一个子图的坐标轴范围一致
- 机器学习中的数据泄露是什么?构建模型中如何防止数据泄露?正确的方案是什么?如何使用pipeline防止数据泄露?
- elasticsearch-查询基础篇
- java中的线程安全是什么?
- Java线程的等待与唤醒代码示例
- NumPy之:使用genfromtxt导入数据
- Spring_AOP架构介绍与源码分析(含事务深度分析)
- 如何极速极速搭建个人博客?Copy攻城狮用的这一招很优秀!
- 如何使用dtls协议抵御重放攻击
- struts2.2 json配置
- 20200701:力扣194周周赛上
- koa2后端和php后端,vue+koa2+mongo前后端分离restful,配置和部署到云
- eclipse无线循环输出时,怎样关闭
- 冒泡排序(Bubble Sort)详解与代码
- 22考研在职跨考软件工程(专业课408)目前待录取——经验分享和感受
- Structs详细用法(一)
- 对话苏宁张桂平 商协社团·万祥军:全国工商联谋民企凝聚力
- haley解决中文字段名称字数不同时两端对齐的问题
- 查询大全,肯定有你需要的!
- xilinx ip xdc修改
热门文章
- JSP的7个动作include,forward,useBean。。。
- mysql取n条不重复_MySQL重复数据中限定操作n条
- (JavaWeb)会话跟踪技术Cookie和Session(重点)
- Android JNI的第一步——从HelloWorld开始
- C语言实现录入学生信息并按分数排序输出
- 一分钟明白各种SQL语句加的什么锁——《深究Mysql锁》
- python type help copyright_Python关于import的实验(8)__init__.py文件内部代码的执行以及内部的导入和内部的变量...
- tablestore换mysql_mysql数据迁移到tablestore
- mysql聚合函数count用法_MySQL中聚合函数count的使用和性能优化技巧
- 延期通知 RocketMQ Summit 议题