Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning 如何训练一个只有正数据和中性数据的分类器?_Machine Learning_Nlp_Recommendation Engine - Fatal编程技术网

Machine learning 如何训练一个只有正数据和中性数据的分类器?

Machine learning 如何训练一个只有正数据和中性数据的分类器?,machine-learning,nlp,recommendation-engine,Machine Learning,Nlp,Recommendation Engine,我的问题是:如何训练一个只有正面和中性数据的分类器 我正在为教育目的建立一个个性化的文章推荐系统。我使用的数据来自Instapaper 数据集 我只有正面数据: -无论阅读/未阅读状态如何,我已阅读并“喜欢”的文章 和中性数据(因为我对它表示了兴趣,但我以后可能不喜欢它): -未读的文章 -我读过并标记为已读但我不“喜欢”的文章 我没有的数据是负面数据: -我没有发送到Instapaper以后阅读的文章(我不感兴趣,尽管我已经浏览了该页面/文章) -我甚至可能没有点击进入的文章,但我可能有或没有

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

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

数据集

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

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

我没有的数据是负面数据: -我没有发送到Instapaper以后阅读的文章(我不感兴趣,尽管我已经浏览了该页面/文章) -我甚至可能没有点击进入的文章,但我可能有或没有存档它

我的问题

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

1) 将大量负面数据输入分类器 优点:立即将负面数据教给分类器 缺点:随着我喜欢的文章数量的增加,负面数据对分类器的影响逐渐减弱

2) 将“中性”数据转换为负面数据 优点:现在我有了我需要的所有正面和(新的)负面数据
缺点:尽管我对中性数据有点兴趣,但我仍然希望得到关于这类文章的建议,但可能是作为一个价值较低的类。

我认为,你试图做的更多的是一个分类器

最先进的技术是使用每篇文章的内容并创建一个。从这里你可以计算不同物品之间的距离。相似性很强的文章(使用聚类或相似性,如Pearson,Tanimoto)将是你更想阅读的文章。这是最简单的快速获得东西的方法

当然还有更复杂、更精确的方法。

正是这种方法解决了这个问题

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


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

制作两个二进制分类器

1 -> "liked" or not
2 -> "neutral" or not
您还可以选择将它们链接在一起,以避免出现既“喜欢”又“中立”的情况。这将允许您对内容进行分类


正如@ThierryS的另一个答案所指出的,另一个选择是制作一个推荐者,允许您推荐其他类似用户认为“喜欢”或“中立”的内容因此,要充分利用社交方面。

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

更复杂的非学习方法包括用于确定文档相似性的LSA,但它的实现并不简单,并且LSA“空间”的构造在没有大量处理能力的情况下无法扩展到数百或数千个文档之上

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


祝你好运

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

以下是一些CF解决方案:

  • kNN(基于用户或基于项目),例如使用余弦相似性
  • 一种矩阵分解方法(两篇论文的观点相似)
    • 胡耀明,科伦,沃林斯基:隐式反馈数据集的协同过滤。ICDM 2008
    • 潘国荣,周耀荣,曹斌,刘新新,卢科泽,舒尔茨,杨问:一类协同过滤,ICDM 2008
    • 两篇论文都使用了类似ALS的学习算法;当然,您也可以使用SGD,从负面/未观察到的示例中取样
  • 另一种矩阵分解方法(免责声明:我是本文的合著者)
    • Steffen Rendle、Christoph Freudenthaler、Zeno Ganner、Lars Schmidt Thieme:BPR:基于内隐反馈的贝叶斯个性化排名。UAI 2009
这些算法存在公开可用的实现,例如

  • MyMediaLite(免责声明:主要作者)
  • Apache Mahout(免责声明:fan and patch contributor)
  • GraphLab/GraphChi

顺便说一句,如果你用分类器来解决这些问题,请看一下关于纯积极学习的文献,例如。

这显然是一篇老文章,但我也有一个类似的问题,希望你能用我使用以下技巧发现的信息节省一些时间:

如前所述,您可以使用选项一类SVM


希望有帮助

你的分类特征是什么?你是正确的,推荐系统非常适合这个问题,但是你没有回答最初的问题。如果他不告诉我他的分类器试图学习的特征,我就不能正确回答他的问题。如果没有要学习的功能,你不能只“生成”两个二进制分类器。你假设这些单词是“单词袋”的功能,我只是想帮助你改进你的答案,这样我就可以取消我的反对票。请在正确的地方发表你对我的答案的评论。嗨,你能解释一下我如何解释这个派生词吗