为训练数据生成标签的数学算法

数据挖掘 机器学习 训练
2022-02-14 08:34:25

当我们需要训练模型但训练数据集真的很小时,有哪些可能的方法?(假设我们有很多数据,只是标注的数据不多)

我知道斯坦福的一个图书馆:https ://hazyresearch.github.io/snorkel/ ,它可以根据一些预先确定的专家规则生成训练标签。(附带问题,有人碰巧知道这个图书馆的数学/统计数据是什么?)

但是,我想知道在无法使用 snorkel 包的情况下,有哪些方法可以标记更多数据进行训练?最大似然估计器可以在这里使用吗?如何实现这样的算法来标记训练数据?

顺便说一句,我正在寻找一种数学方法,而不是像使用 Amazon Mechanical Turk 这样的蛮力方法。

谢谢!

2个回答

假设我们有很多数据,只是没有多少数据被标记。

尝试首先使用无监督方法解决问题,然后将学习到的特征用于任何下游任务。
请参阅深度生成模型

根据一些预先确定的专家规则生成训练标签

如果您有一些可以生成数据分布的函数,那么为什么还要费心寻找另一个近似于前者的函数。
您可以将此方法用于评估目的,例如比较关于正在解决的问题的不同模型。

标记更多数据进行训练的方法是什么

您可以聚合(平均)解决相同问题但使用不同数据集的不同模型。

可以在这里使用最大似然估计器。

正如我所说,我们可以最大化数据的可能性,为与训练数据非常相似的样本提供高概率对于利用内部结构(学习数据流形)非常有用,这可能会解开导致生成可能其中一部分的数据可能是用于预测您试图预测的目标 y 的直接信号。

当有少量标记数据和大量未标记数据时的一些方法:

半监督学习 https://en.wikipedia.org/wiki/Semi-supervised_learning - 对标记数据的监督算法和对未标记数据的无监督算法的混合。其中之一(标签传播)甚至在 scikit-learn http://scikit-learn.org/stable/modules/label_propagation.html中实现

主动学习 http://active-learning.net/ - 主动选择他们学习的数据的算法,因此他们可以使用较少标记的数据获得更好的性能。

这两种方法是互补的。因此,存在主动+半监督学习算法的组合。