构建一个可以处理它从未见过的类的多类分类器?

数据挖掘 机器学习 分类 词嵌入
2022-03-01 02:29:09

我得到了一个数据集,其中包含自由格式的文本和与之关联的类别。有 100 个不同的类别,每个类别有 3000 条记录。目标是建立一个多类分类模型。我创建了一个包含 10,000 个输入特征/单词的简单神经网络,结果相当好(~88%)。

我面临的问题是我拥有一个未标记的数据集,它缺少类别标签。这个数据集非常大,有超过 100 个类别。我只对能够对我拥有的 100 个类别的未标记数据进行分类感兴趣,但我不知道如何处理这个问题。

我的一个想法是为标记数据建立一个词嵌入模型。该模型可用于计算未标记数据的文档向量,并从标记数据集中找到相似的文档。这将允许我为未标记数据集中的一些数据分配标签。有没有更好的方法来解决这个问题?

3个回答

您基本上希望您的模型说-我不知道。

对于从带有标签的原始数据集创建的测试集,绘制预测类概率的直方图。它们通常高于某个阈值,例如 0.2 吗?如果是这样,请尝试使用它作为阈值来标记未标记数据集中的项目以进行手动检查。希望概率很低,因为模型不确定。

对这些标记项目的手动审查将允许您验证这种方法是否有效。如果有效,则将其用作“我不知道”类别的标签策略,并与这个新标签一起重新训练。

如果您一定要预测未标记产品的类别,那么您可以使用TF-IDF Vectorization与您的想法相似的类别。使用余弦相似度,您可以找到前 5 个最相似的文档,并根据它们的大部分类别,您可以预测测试文档的类别。

一种常见的方法是使用整体不确定性

训练模型的几个版本(比如 5 个版本),在其中使用不同的种子初始化每个训练过程。对于任何新数据点,您使用所有 5 个经过训练的模型对其进行评估,然后查看它们的一致程度——如果不一致,您可以说我不知道​​。您可以使用模型输出的概率分布之间的 KL 散度来定量测量一致性。