25

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

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

数据集

我只有正面数据: - 我已阅读并“喜欢”的文章,无论已读/未读状态如何

和中性数据(因为我已经表达了对它的兴趣,但我以后可能不喜欢它): - 未读的文章 - 我已阅读并标记为已读但我没有“喜欢”它的文章

我没有的数据是负面数据: - 我没有发送到 Instapaper 稍后阅读的文章(我不感兴趣,虽然我浏览过那个页面/文章) - 我什至可能没有点击过的文章,但是我可能有也可能没有存档。

我的问题

在这样的问题中,负数据基本上是缺失的。我想到了以下解决方案,但尚未解决:

1)给分类器喂一些负数数据优点:直接负数数据教分类器缺点:随着我喜欢的文章数量增加,负数数据对分类器的影响减弱

2)将“中性”数据转换为负面数据 优点:现在我拥有我需要的所有正面和(新)负面数据 缺点:尽管我对中性数据感兴趣,但我仍然希望获得有关此类的建议文章,但也许​​作为一个价值较低的类别。

4

7 回答 7

17

Spy EM 算法正好解决了这个问题。

S-EM 是一种文本学习或分类系统,它从一组正样本和未标记样本(无负样本)中学习。它基于“间谍”技术、朴素贝叶斯和 EM 算法。

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

于 2012-12-18T22:45:42.870 回答
9

如果你有很多来自不同用户的积极反馈,那么你就有了一个相当典型的协同过滤场景。

以下是一些 CF 解决方案:

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

顺便说一句,如果您对此类问题使用分类器,请查看有关仅积极学习的文献,例如http://users.csc.tntech.edu/~weberle/Fall2008/CSC6910/Papers/posonly.pdf

于 2013-02-15T00:32:48.330 回答
1

这显然是一篇旧帖子,但我有一个类似的问题,希望您可以使用以下技术找到自己的信息来节省一些时间:

于 2014-06-27T20:37:18.253 回答
1

正如这里所解释的,您可以使用LibSvm,特别是选项 one-class SVM。

希望能帮助到你!

于 2014-11-13T14:41:17.343 回答
0

你想要做的更多的是推荐系统而不是我认为的分类器。

最先进的是使用每篇文章的内容并创建一个词袋。从这里您可以计算不同文章的距离。具有相似性的文章(使用聚类或相似性,如 Pearson、Tanimoto)将是您更可能想要阅读的文章。这是快速获得东西的最简单方法。

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

于 2012-12-18T17:06:53.697 回答
0

制作两个二元分类器。

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

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

正如@ThierryS 的另一个答案所表明的那样,另一种选择是创建一个推荐器,允许您推荐其他类似用户已识别为“喜欢”或“中立”的内容,从而利用社交方面的优势。

于 2012-12-19T15:44:13.380 回答
0

如果您想摆脱机器学习示例:TF-IDF 可以为您提供与您喜欢(或查看)的文章相似的文章的加权正面推荐,并且在此用例中非常常见。

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

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

祝你好运!

于 2012-12-31T04:02:18.563 回答