李沐《机器学习》——1.4数据标注

数据标注:

  1. 当已经有一部分标注,可以使用半监督学习
  2. 如果你的标志不够多, 但你有钱, 可以花钱去众包, 找人来标注.
  3. 如果你的标注不够, 但你又没钱,可以自己从数据中提取出来弱一点的标准,进行弱监督学习
  4. 再不行还可以选择无监督的算法

半监督学习:
想对有标注的数据和没有标注的数据一起使用的话,针对两者的数据分布之间有一些假设:

  1. 连续性假设。 如果一个样本的特征和另一个样本相似的话,那么很有可能两者是同一标号。
  2. 聚类的假设。如果数据在内在有聚类的结构,而不是随机在整个空间里面均匀分布,那么可以假设同一类中的数据会有相同的标号。
  3. 流型假设。虽然收集到的数据很有可能是高维的特征,但实际上你的数据是以在一个低维的流型上分布的,也就是数据内在的复杂性远远低于看到的维度,这样就可以通过降维来获取更干净的数据。

经常用到的一个半监督学习的算法——自学习:

  1. 用已经有标注的小部分数据训练一个模型
  2. 用训练好的模型对没有标注的数据进行预测。这样我们会拿到对这些数据的伪标号(机器标注的,跟人标注的有差距)。我们可以选择的数据加入下一轮的训练中(确信的数据:假设做三分类任务,类一的概率0.98,那么就可以认为是置信的数据;如果类一0.3,类二0.4,类三0.3就认为是不置信的数据)
  3. 把原始的有标号的数据和伪标号的数据合并起来,再训练一个新的模型。
  4. 然后再进行预测,不断循环

如果标注任务比较简单的话,其实可以不需要人工标注的(比如众包,有成本),可以用主动学习(Active Learning):
主动学习也是有一小部分已经标注的数据和一部分未标注的数据,但是和半监督学习的区别在于,他使用人工进行干预。它把最重要/最有趣的数据交给人工去标注。评判有趣的数据的两个算法:

  • 第一个Uncertainty sampling 不确信的采样。简单说就是一直挑战最难的样本。用有标签的数据训练好模型后,对没有标注的数据进行预测,选择出特别不置信的样本交给人去标注(自监督学习是选出最置信的样本加入到下一轮的训练中)。这种方法使得模型能去标好它觉得很难的样本,使得下一次它能用这些难的样本去进行训练新的模型,然后再去看哪些样本比较难。
  • 第二个Query-by-committee 投票委员会算法。训练多个模型,然后进行投票,如果绝大部分模型觉得这个样本比较难,就是不确信的数据。

主动学习+自训练的结合:

  1. 用已经有标注的数据训练模型
  2. 用训练好的模型对未标注的数据进行预测。选出最置信的数据加入有标注的数据集中,进行下一轮的模型训练。选出最不置信的数据交给标注工去标注,同样加入有标注的训练集中,进行下一轮模型的训练
  3. 重复

弱监督学习:
半自动地生成标号,也就是标注的比人工要差,但是好像也可以用来训练一个也还不错的模型。最常用的方法:

  • 数据编程(Data programming),即用一些启发性的方法对数据进行标注。比如下面的例子:
    李沐《机器学习》——1.4数据标注_第1张图片
    假设要判断yutobe的一条评论是恶意刷屏(spam)还是真实的人写的。比如说设置一条规则,如果评论里有“check out”,基本上就是广告,那么可以认为这条评论是一个spam。再比如用一个情绪分析的模型来分析评论,如果90%的置信度认为它是一个正面的情绪,那么可以认为这条评论是一个好的评论。再再比如,如果评论的字数少于5个词的话,可以认为是人写的。
    也就是设定很多规则,来对数据进行标注。

你可能感兴趣的:(李沐—机器学习,机器学习)