如何训练只有正面和中性数据的分类器?

时间:2012-12-18 16:50:49

标签: machine-learning nlp recommendation-engine

我的问题:如何训练只有正面和中性数据的分类器?

我正在建立一个用于教育目的的个性化文章推荐系统。我使用的数据来自Instapaper。

数据集

我只有正数据: - 无论读/未读状态如何,我已经阅读过的文章和#34;喜欢"

中性数据(因为我已表示对它感兴趣,但我以后可能不喜欢它): - 未读的文章 - 我读过并标记为已阅读的文章,但我没有"喜欢"它

我没有的数据是负面数据: - 我没有发送给Instapaper以便稍后阅读的文章(我不感兴趣,虽然我浏览了那篇文章/文章) - 我可能没有点击过的文章,但我可能已经或可能没有将其归档。

我的问题

在这样的问题中,基本上缺少负面数据。我已经想到了以下解决方案,但还没有解决它们:

1)将一些负数据输入分类器 优点:立即负面数据,以教授分类器 缺点:随着我喜欢的文章数量的增加,对分类器的负面数据影响变暗

2)转动"中立"数据转化为负数据 优点:现在我拥有了我需要的所有正面和(新)负面数据 缺点:尽管中性数据对我来说很感兴趣,但我仍然希望得到有关此类文章的建议,但也许是一个价值较低的类别。

7 个答案:

答案 0 :(得分:17)

Spy EM algorithm解决了这个问题。

  

S-EM是一个文本学习或分类系统,它从一组正面和未标记的例子中学习(没有反面例子)。它基于“间谍”技术,朴素贝叶斯和EM算法。

基本的想法是将你的积极集合与一大堆随机文档相结合,其中一些是你提出来的。您最初将所有随机文档视为否定类,并在该集合上学习一个朴素的贝叶斯分类器。现在,其中一些已抓取的文档实际上是正面的,您可以保守地重新标记任何得分高于最低得分的文档。然后你迭代这个过程,直到它稳定。

答案 1 :(得分:9)

如果您有不同用户的大量积极反馈,那么您就有了一个相当典型的协作过滤方案。

以下是一些CF解决方案:

存在这些算法的公开可用实现,例如

顺便说一下,如果你使用分类器来解决这些问题,请看一下有关积极学习的文献,例如: http://users.csc.tntech.edu/~weberle/Fall2008/CSC6910/Papers/posonly.pdf

答案 2 :(得分:1)

这显然是一个老帖子,但我有一个类似的问题,希望你可以节省一些时间,我发现自己使用以下技术:

答案 3 :(得分:1)

正如here所述,您可以使用LibSvm,特别是选项一类SVM。

希望它有所帮助!

答案 4 :(得分:0)

你想要做的更多的是recommender system而不是我认为的分类器。

现有技术是使用每篇文章的内容并创建bag of words。从这里您可以计算不同文章的距离。具有密切相似性的文章(使用像Pearson,Tanimoto这样的聚类或相似性)将是您更可能想要阅读的文章。这是快速获取内容的最简单方法。

当然有更复杂和准确的方法。

答案 5 :(得分:0)

制作两个二元分类器。

1 -> "liked" or not
2 -> "neutral" or not

您还可以选择将它们链接在一起,以避免出现“喜欢”和“中立”的情况。这将允许您对内容进行分类。

正如@ThierryS提出的另一个答案所示,另一种选择是建立一个推荐器,允许你推荐其他类似用户已经识别为“喜欢”或“中立”的内容。社会方面的优势。

答案 6 :(得分:0)

如果您想远离机器学习示例:TF-IDF可以为您提供与您喜欢(或查看过)的文章相似的文章的加权肯定推荐,并且对于此用例非常常见。

更复杂的非学习方法包括用于确定文档相似性的LSA,但实现起来并非易事,并且LSA“空间”的构建在没有大量处理能力的情况下不会超过数百或数千个文档。

这两个都在计算语言学领域。

祝你好运!