0%

实用ML_2.数据获取

机器学习-数据

当使用机器学习技术解决实际问题时,最先要考虑模型输入数据问题,如何获取数据,对数据进行标注、清理以及变换等,以满足模型的输入要求。

数据获取

主要有两个获取手段

  1. 寻找已有的数据集(MNIST ImageNet等等)
  2. 根据任务,收集,形成自己的数据集
  3. 生成数据

三种不同的数据集类型

  1. 学术数据集
    • 定义清晰,但是局限于某个小问题
  2. 竞赛数据集
    • 接近于真实的机器学习应用
  3. 原始数据
    • 需要消耗大量的精力预处理

当收集到的数据来源不同,我们需要对数据进行集成(integrate)

  • 类似于数据库中不同表的join,寻找合并key,处理重复项、冲突以及确实

当找不到可用的数据,或者收集到的数据量过小时,可通过人造(synthetic)数据增加数据量

  1. 使用GANs 生成数据
  2. 数据增强(augmentation)
    • 图像反转、拉伸等
    • 文本的反复翻译,改变语序

总结

网页数据抓取(Scraping)

网页数据抓取是获取数据的有效手段,包括ImageNet在内的很多数据集通过这种方式获取生成,其优缺点包括

  1. 数据较为原始,包含的无关信息较多
  2. 数据量大

常用的网页抓取工具

  1. linux的curl命令(通常会被反爬虫屏蔽)

  2. 使用模拟浏览器

  3. 不断更换ip,防止短时间大量相同ip访问导致的屏蔽

数据标注

在完成数据收集后,需要考虑数据的标注问题,根据标签的多少,选取不同的策略

  1. 标签充足-监督/半监督学习
  2. 标签不足-人工标注
  3. 标签+经费均不足-弱监督学习

半监督学习(Semi-supervised learning SSL)- 简单理解

Semi-supervised learning is a class of machine learning tasks and techniques that also make use of unlabeled data for training – typically a small amount of labeled data with a large amount of unlabeled data.

李宏毅机器学习视频中有详细讲解

半监督训练主要针对训练数据只有少部分已标注,大部分均未标注的情况,假设训练数据满足以下条件

  1. 一致性假设(Continuity assumption) 具有相同特征的样本标签相同
  2. 聚类/簇假设(Cluster assumption) 若数据存在簇结构(即可以聚类),一个簇具有一个标签
  3. 流形假设(manifold assumption) 高维数据大致会分布在一个低维的流形上,邻近的样本拥有相似的输出,邻近的程度常用“相似”程度来刻画

半监督算法之一:自学习

首先用带标签的数据训练一个模型,在未标注数据上进行预测,获得预测标签,也就是所谓的伪标签(Pseudo-labeled),根据置信度选择部分伪标签数据与标签数据合并训练一个新模型(自学习),不断循环训练,直到模型满足任务要求。

半监督学习算法之二:主动学习(active learning)

与自学训练过程类似,但是每次预测结果最典型的未标记样本,由人工标记

  • uncertainty sampling 选取最不确定的样本作为最典型(概率为1/N)

Label through Crowdsourcing(众包)

花钱找人标注

弱监督学习(Weak Supervision)

半自动生成标号,虽然比人工标注差,但是足够训练使用,常用手段

Data programming

人工总结一些规律,设计一些规则(规则匹配),通过程序半自动生成标签

总结