仅使用正数和未标记的数据构建二进制分类器


11

我有2个数据集,一个具有要检测的阳性实例,另一个具有未标记的实例。我可以使用哪些方法?

作为示例,假设我们想了解基于一些结构化电子邮件特征的检测垃圾邮件。我们有10000个垃圾邮件的数据集,还有一个100000电子邮件的数据集,而我们不知道它们是否为垃圾邮件。

我们如何解决这个问题(不手动标记任何未标记的数据)?

如果我们有关于垃圾邮件在未标记数据中所占比例的其他信息,该怎么办(即,如果我们估计100000未标记电子邮件中有20-40%是垃圾邮件,该怎么办)?


1
该帖子应添加半监督和pu学习标签。这些标签仍然不存在,目前我无法创建它们。
DaL

@DanLevin是的,[标签:半监督学习]很有道理。补充:)我不确定pu学习部分(至少我不知道),所以其他人可以做到!
Dawny33

1
PU学习是半监督学习的一种特殊情况。这个问题是PU(标有标签的数据集只是正数)的情况不那么普遍(在Google处为7K,在半监督下(在Google中为29.8万))。虽然在学院中讨论了该主题(例如,cs.uic.edu/~liub/NSF/PSC-IIS-0307239.html),但很可能这个问题将在很长一段时间内一直与该标记一起使用。
DaL 2015年

Answers:


7

我的建议是尝试在未标记的数据上建立某种程度上近似于标记数据集的聚类。基本原理如下:

  • 您有一些用于表示文档的特征向量
  • 基于该特征向量,您可以使用模糊,粗糙或基于类的聚类方法提出许多不同的聚类
  • 知道正面示例的样子后,您可以快速评估群集与正面群集的整体相似性
  • 知道实际上应该只有两个集群,您可以调整集群方法中的超参数,以使上述两个指标越来越接近满意度
  • 在这两个聚类中,您大概拥有一个标记数据集的近似值,然后可以将其用作银标准的各种语料库来实际训练模型

希望这是有道理的,如果您专门寻找集群算法,那么我个人喜欢的一些示例可能是FLAMEtsne。或者,查看python中壮观的gensim库将使您走很长的路要走。

希望有帮助并且有意义,如果您有任何疑问,请发表评论。


感谢您的回答。我是否理解正确:您的出发点是合并两个数据集?
nassimhddd 2014年

@ cafe876当然,这是开始的一种方法,然后尝试基本上重新创建一个非常接近原始聚类的聚类。
印度,2014年

3

您的问题属于PU学习的框架(仅是肯定的,很多是未标记的)。

它也接近于半监督学习的更常见框架 (正面和负面很少,很多没有标签)。

您可以在现场查阅许多调查文件。

联合培训在本领域中,一种经典方法(也已针对垃圾邮件进行了测试)是联合培训。在联合培训中,您建立了两个独立的学习者(例如,一个基于邮件内容,一个基于发送方案),并且您使用结果之一训练另一个,反之亦然。


2

训练2个生成模型,每个数据集一个模型(仅垃圾邮件,垃圾邮件和火腿),这将使您有可能从训练数据的相同概率分布中提取数据点。根据哪种模型使您从用于培训文档的培训数据中获得文档的可能性最高,将电子邮件分配为垃圾邮件或垃圾邮件。示例性生成模型是RBM的自动编码器(在这种情况下,哪种模型的重建误差最低)。可能还有一些贝叶斯生成模型,这些模型将根据一些训练数据将概率分配给数据点。

最好的选择是花一些时间来整理仅包含火腿的第二个数据集。这样可以提高分类精度。假设垃圾邮件占火腿邮件的比例较低,这应该不太困难。如果您没有时间或资源(或者实习生\毕业生或其他廉价劳动力),甚至可以使用Mechanical Turk。


感谢您的回答。这是判别模型无法执行的生成模型可以做的一个很好的例子。
nassimhddd 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.