1.2 数据获取【斯坦福21秋季:实用机器学习中文版】

数据的获取
- 这一讲主要讲在没有现成的数据情况下,
如何去找到数据集,并对各种现有的数据集有个大致的概念
以及实在找不到数据集的时候, 该用什么方法来生成数据.
什么时候需要考虑数据的获取?
- 如果你要开始机器学习项目
但是手头没有足够多现成数据.
你就要考虑获取数据

获取数据的途径
获取数据主要是两个途径:
1. 首先寻找 现有数据集
2. 如果没有现成的数据,那就要考虑 生成数据
这里的数据集(dataset)指的是, 已经被人整理过,能直接拿来用
寻找现有数据集
- 一般来说你需要寻找多个被人用过的公共数据集
- 对于不同目的来说,你选择数据集的标准也是会有所微调,
- 为了验证自己的一个想法,需要 **多个各有特点的小规模数据集**
- 如果是深度学习, 需要一些大规模的数据
- 收集新的数据
- 你的数据应该能够覆盖所有可能遇到的所有问题
常见数据集
- 维基百科中关于数据集的列表 https://en.wikipedia.org/wiki/List_of_datasets_for_machine-learning_research 其中收录了一系列的数据集
- MNIST: 手写数字数据集 http://yann.lecun.com/exdb/mnist/
- imageNet : 大规模图片数据集 https://www.image-net.org/
- AudioSet: 油管的声音片段数据 https://research.google.com/audioset/
- Kinetic : 油管人类动作视频片段 https://deepmind.com/research/open-source/kinetics
- KITTI : 无人驾驶数据集 http://www.cvlibs.net/datasets/kitti/
- Amazon Review: 亚马逊用户评价数据 https://s3.amazonaws.com/amazon-reviews-pds/readme.html
- SQuAD: 维基百科问答 https://rajpurkar.github.io/SQuAD-explorer/
- LibriSpeech : 有声书数据集 https://www.tensorflow.org/datasets/catalog/librispeech
去哪找数据集?
- Paperwithcodes 论文相关数据集 https://paperswithcode.com/
- 提供了学术论文和相关的数据,并且给出了这个论文在数据集上面的运行表现
- Kaggle https://www.kaggle.com/
- 除了竞赛数据集以外,很多用户也上传数据集, 这些用户上传的数据集质量鱼龙混杂.
- google 数据集搜索. https://datasetsearch.research.google.com/
- 这是谷歌的一个搜索入口. 可以搜到其他各种来源的数据.
- 开源工具自带的数据集
- 比如tensow flow深度学习软件, 往往会自带一些数据集
- 各种数据比赛的竞赛数据 往往质量比较高.
- 保存在云盘上的数据集,比如说 open data on AWS
- 公司本身的数据仓库或者数据湖(data lakes)
-
数据集的分类和比较
数据集和数据集是不一样的, 学术界的数据集(academic datasets)和工业界的原始数据(raw data)是两个极端
- 学术界的数据集是精心挑选且人工处理过的, 数据干净, 拿来就用,方便在上面测试算法.
但是这些数据集不仅数量少, 往往和真实数据差别很大
- 比如 UCL 数据集 https://archive.ics.uci.edu/ml/datasets.php
- 工业界的原始数据是最多样, 而且是真实的. 但往往需要消耗非常多的人力才能让这个数据变得"好用"
- 各种数据比赛的竞赛数据介于工业界和学术界之间.
数据融合
- 数据融合就是把多个表合并(join)成一个表.
- sql之类数据库中这个操作对应 join 命令
- R中常常使用merge 函数, 或者 tidyverse 中的 dplyr::*join 函数. 可以参考 https://www.jianshu.com/p/1f4c7bfed3d4
- 数据往往被存放在多个位置, 用的时候需要把他们合起来
- 比如说很多数据, 分属于不同的部门,或者说不同数据更新的频率不同, 分开存储会灵活.
- 为了方便数据融合, 你的数据要有一个 **不重复的主键(key)**
- 主键(key)往往表现为数据表的一列,往往是某种ID
- 在数据融合的时候,你可能会碰到重复的主键或者数据缺失, 或者不同表上记录相互冲突.
生成数据
- 实在找不到数据集的时候, 尝试生成数据, 就是自己制造一批数据
- GAN 生成图像
- 数据增强 Data augmentation
- 比如说以一张图片为蓝本, 生成一系列相似,但又有差别的图片
- 另一个例子, 使用翻译引擎,来回翻译一段话
-
- 小结 28:55
- 找数据很麻烦,而且还要区分这个数据是否合用.
- 学术界使用的数据和工业界使用的数据差异很大
- 很多时候,多个数据表要融合成一张表