将新的未标记数据合并到基于一小组标记数据训练的分类器中

机器算法验证 分类 聚类 半监督学习 贴标签
2022-03-22 14:12:17

我有一组 400 个标记样本(8 个数字特征),我在这些样本上训练了一个二元分类器。

我面临的问题是,一旦将分类器发送给用户,我将获得额外的样本,但这些样本不会被标记。我正在研究合并未标记数据的常用方法,以提高未来的分类准确性。在我看来,我有 4 个选项:

  1. 忘记现有的二元分类器,使用 S3VM 等半监督学习算法

  2. 保留现有的二元分类器,使用转导学习算法,例如标签传播,并使用新的(但可能是错误的)标记数据重新训练二元分类器;重复这个过程。

  3. 保留现有的二元分类器,使用(监督?)聚类算法标记新数据,并使用新(但可能错误)标记的数据重新训练二元分类器;重复这个过程。也许是一些期望最大化的混合模型?

  4. 另类的想法?

虽然 3) 似乎有相当大的缺陷,因为通常的聚类算法会优化与标签不同的标准,但我不确定如何考虑 1) 和 2)。在 2) 中我不喜欢的是,在我们使用标签传播算法之后,我们假设这些标签是正确的,并且基于这组新样本,我们想要选择新特征并重新训练我们的分类器。但是现在错误分类率的变化可能源于错误的特征选择,也可能源于新标签错误的事实。对我来说,1)似乎最能反映这种情况。我是否正确理解了情况,即 1) 是否优于 2) 和 2) 是否优于 3)?

还是我完全错过了这一点,而另一种方法比这三种方法中的任何一种都更合适?

2个回答

(3) 如果您对集群的外观有一些先验知识,那不一定是坏事,但是您不会以最佳方式使用标记的数据。正如您所指出的,您可以根据自己的输出迭代训练分类器。

(2) 与 (3) 并没有什么不同,这取决于你的指标有多好

(1) 是我推荐的,尽管它不一定是 S3VM。贝叶斯模型会将所有缺失标签视为潜在变量,并学习缺失标签和分类器参数的后验分布。

我会坚持方法 1,然后使用您预留的数据来测试新规则是否比原始规则更好。情况并非如此。很可能,您将使用与原始分类器使用的不同类别的函数进行建模,这可能会使结果变得更糟(也可能变得更好)。

方法 2 和 3 似乎值得怀疑,因为您可能通过使用原始分类器中的错误标签来添加噪声。不过,这取决于原始分类器的准确性。

方法 2 和 3 使用新的未标记数据和不同方法对原始分类器进行建模。来自分类器的标签预计不如原始训练数据可靠。所以,我看不出这些方法如何让你更接近真正的标签。