仅具有正数和未标记数据集的二进制半监督分类

Posted

技术标签:

【中文标题】仅具有正数和未标记数据集的二进制半监督分类【英文标题】:Binary semi-supervised classification with positive only and unlabeled data set 【发布时间】:2014-10-31 06:48:20 【问题描述】:

我的数据由 cmets(保存在文件中)组成,其中很少有被标记为正面的。我想使用半监督和PU 分类将这些 cmets 分为正类和负类。我想知道python(scikit-learn)中是否有半监督和PU实现的公共实现?

【问题讨论】:

【参考方案1】:

您可以尝试训练一类 SVM,看看会得到什么样的结果。我还没有听说过PU纸。我认为出于所有实际目的,你会更好地标记一些点,然后使用半监督方法。 如果很难找到负点,我会尝试使用启发式方法来找到推定的负点(我认为这类似于 PU 论文中的技术)。您可以对未标记和阳性进行分类,然后只查看未标记得分高的那些,或者学习一类 SVM 或类似的,然后在异常值中查找负点。

如果您对实际解决任务感兴趣,我宁愿花时间在手动标记上,也不愿实施花哨的方法。

【讨论】:

谢谢安德烈亚斯,手动标记将是最后的手段。我正在查看来自larsman 的github.com/larsmans/scikit-learn/tree/pu-learning 以及来自pemistahl 的一些贡献。 scikit-learn 有 onc-class SVM 实现吗? oneclasssvm: scikit-learn.org/stable/modules/generated/… 代码已经使用了三年,但你可以向 larsmans 询问。不过,他似乎没有跟进;)您在说什么规模?有多少标记/未标记?我认为手动标记应该是您的第一选择,而不是最后的选择。如果没有基本事实注释,您将如何评估获得的任何结果? "+1",谢谢,我的目标是 100k+ 测试数据。到目前为止,我的测试数据集包含 300 个文档,我手动将它们标记为正面和负面。虽然我的训练数据集包含每个正类和负类的 50 个文档。我没有基本事实,但可以可靠地标记正面文件。因此,我可以为 100k+ 测试数据集提供一类训练数据集,我认为一类 SVM 和 PU 可能是不错的选择。如果我要使用一类 SVM 或任何其他一类半监督学习,我需要多少个标签来训练?

以上是关于仅具有正数和未标记数据集的二进制半监督分类的主要内容,如果未能解决你的问题,请参考以下文章

聚类(Clustering)

概念:弱监督学习

如何绘制具有多个数据集的多个分类器的准确性 [关闭]

使用 sklearn 进行半监督学习

基于协同训练的半监督文本分类算法

GNN之节点分类任务—Cora数据集分类(半监督)