实施无监督学习推荐系统

时间:2015-01-22 21:25:43

标签: machine-learning recommendation-engine

我一直在研究有关推荐系统的文章和书籍以及建议它们建议的方法。在其中许多人中,Netflix比赛就是一个例子。在Netflix用户评价电影(从1到5)。在那场比赛中,竞争对手被给予用户的电影和相应评级数据库,并且他们应该实施一个最能预测电影评级的系统,并使用该评级向用户推荐电影。

对于评估,他们建议使用使用预测和实际评级作为参数的度量进行交叉验证。预测评级是使用用户的历史记录和他对电影的评分来计算的。

我正在尝试建立一个新闻推荐系统。我现在面临的问题是这个消息只是在短时间内相关,而且几乎没有人会给新闻评分。所以,我只有隐含的反馈(观点),没有明确的反馈(评级)。同样在Netflix问题中,它们还提供了一个数据库。我想知道如何应对冷启动问题,因为一开始没有新闻被阅读(查看)。

如果你能建议我如何避免冷启动问题,我会非常感激,一旦我有了算法,我怎么能测试它是否正常工作。

谢谢!

2 个答案:

答案 0 :(得分:2)

电影是经典协同过滤的一个很好的用例:人们长期感兴趣的项目,相对较少,很多人有重叠的兴趣,星级评分是有意义的。新闻报道完全不同。而不是协作过滤,请看基于内容的过滤。人们的兴趣与内容标识符(可能是关于新闻报道的关键字,或发布者,或关于时间或世界某个地区的元数据)的关系。对于有关人员偏好的信息,查看计数是您最好的选择,它们还允许您使用一些数据挖掘技术,如关联规则挖掘。

虽然您仍然遇到用户冷启动问题 - 系统中的新用户没有向您提供有关其偏好的信息,除非您通过挖掘她的推文或Facebook兴趣或类似的东西来引导它 - 您可以避免项目冷启动问题。您可以使用另一个语料库,而不是依靠通过社区阅读的新闻报道作为获取项目相似性的唯一方法。特别是,尝试维基百科,并查看WikiBrain(https://github.com/shilad/wikibrain)。这是一个API,通过它您可以获得一个概念与另一个概念的相似性,并将其应用于您的推荐需求。

答案 1 :(得分:0)

要开始使用您正在进行的这个项目,我建议使用群集来查找相关/热门项目的新闻模式。您所加入的功能越多,它就会为您的结果增加价值(这部分需要仔细选择,研究和统计分析)。

对于新闻推荐 - 您可以采用分层方法,因此我们要说第一部分是扫描文章,这些文章是“肯定的”/包含评论该文章的人的某些关键字。

然后,或许第二种分层方法是交叉引用twitter对该文章的回应,对Facebook的喜欢/流量,有多少针对用户的文章等等。 。

您还可以查看google,bing等关于特定主题的趋势关键字,以便了解如何确保您展示的文章是相关的'

我还建议开始小因为网上有这么多篇文章 - 也许会关注一个主题然后概括它。正如您可能注意到的那样,一篇文章'受欢迎程度与人们遵循的某些声音有关,这是找到该文章相关性的另一种方式。

以下是有关无监督学习的更多信息: http://en.wikipedia.org/wiki/Unsupervised_learning

您可能还需要查看期望最大化,以找出哪些变量可以改善您已获得的未观察数据。这是对EM的完整解释 https://stats.stackexchange.com/questions/72774/numerical-example-to-understand-expectation-maximization