1. 课程介绍
-
机器学习流程
2. 数据收集
2.1 数据获取
数据获取的流
数据是否可用
- 找存在的数据集(科研场景)
- 找benchmark数据集衡量新的方法(科研和应用场景)
- 例如:对于超参数的微调算法为准备的不同的中小规模数据集
- 例如:对于特别大的深层神经网络而准备的大规模数据集
- 收集新数据(应用)
- 例如:不同景的视频
ML数据集
- MNIST
- ImageNet
- AudioSet: Youtube声音的切片
- Kinetics: Youtube视频的切片
- KITTI:无人驾驶的数据集
- Amazon Review: Amazon用户评论
- SQuAD:维基百科中的问题-答案对
- LibriSpeech: 1000个小时的语音文字对
- Paperswithcodes Datasets: 学术界数据集
- Kaggle Datasets: 数据科学家上传的ML数据集
- Google Dataset search: 在网页上搜索数据集
- 机器学习会议或者竞赛
- 大量机器学习工具
- AWS的公开数据
- 数据湖
数据集的比较
数据集 | 优点 | 缺点 |
---|---|---|
学术界数据集 | 干净、难度适中 | 有限的选择(常见的ML任务),太简化、通常规模较小 |
竞赛数据集 | 更接近真实的ML应用数据集 | 仍做了数据预处理、专注于热门的领域 |
原生数据集 | 极大的灵活性 | 需要大量花费时间预处理 |
- 在工业界需要处理原始数据
- 数据处理需要多个部门参与:数据pipeline,存储、法律问题、隐私问题等等
数据融合
- 把不同源的数据放入同一个数据集(例如:把数据库的表关联起来)
- 通过键来连接表
- 键的问题:唯一的IDs,缺少的行,冗余的列,值冲突。
生成数据集
- 使用GANs
- 数据增强
小结
- 找到合适的数据是具有挑战的事情
- 从多源数据集融合数据
- 数据增强
- 数据生成
2.2 网页数据抓取
- 网页爬取vs网页数据获取
- 爬取:索引网络上的所有网页
- 获取:获取网页的特定数据
- 网页获取工具
from selenium import webdriver
- 使用一个headless browser
- 通过云获取IP
- 案例学习
- 查询斯坦福周围的房价
- 从页面索引获取house IDs
- 通过ID获取房子具体信息
- 从HTML元素中查找
- 抽取数据,组成一个字典
- 爬取图片
- 获取所有图片的URLs
- 下载、存储图片
2.3 数据标注
-
数据标注流程图
-
半监督学习
-
场景:少量有标注数据和大量未标注数据
-
对于未标注数据做出如下假设:
- 连续型假设:如果样本的特征相似,标号是一样的
- 聚类假设:数据是按类分布,同一类的数据,标号相同
- 流形假设:数据依赖于一个低维度空间相较于输入空间
-
自训练:
-
通过SSL方法自训练
-
使用复杂的模型
- 深度神经网络,模型融合
-
-
通过众包来标注
- 例如:ImageNet,通过Amazon Mechanical Turk
- 挑战:
- 简化用户交互
- 设计简单的任务,清晰的指导、易用的接口
- 对于某项复杂任务,需要大量的人
- 花费:
- 降低 时 间 × 任 务 时间×任务 时间×任务成本
- 任务:选择自训练中特别不确定的伪标签数据,对它们进行标注(最不确信样本);模型投票出不确定的模型(复杂模型)
- 质量控制
- 简化用户交互
-
主动学习+自训练
-
质量控制
- 多个标注工,标注结果进行投票
-
弱监督学习
- 半自动生成标号
- 数据编程:启发式编程去标注
- 关键词搜索、模式匹配、第三方模型
- 通过多条规则(分类器)去投票,来进行标注
-
小结:
- 获取标注的方法:
- 自训练
- 众包
- 数据编程
- 获取标注的方法:
-