谁能帮我解释一下。
我目前正在使用协同过滤(ALS),它返回一个推荐列表,其中包含与推荐项目相对应的分数。除此之外,如果项目包含与用户指定的他们喜欢的内容(如"浪漫电影")相对应的标签,我将提高分数(+0.1)。对我来说,这被认为是一种混合协作方法,因为它通过基于内容的过滤来提高协作过滤的结果(如果我说错了,请纠正我)。
现在,如果我在不进行协同过滤的情况下使用相同的方法会怎么样?它会被认为是基于内容的过滤吗?因为我仍然会根据用户指定的他们喜欢的菜的内容和属性来推荐菜肴(比如"浪漫电影")。
我感到困惑的原因是因为我看到了基于内容的过滤,他们应用了一种算法,如朴素贝叶斯等,这种方法类似于对项目(内容)的简单搜索。
不确定你能做到你建议的,因为没有CF你没有分数可以提高。
你确实在使用一个混合的,和通用推荐器差不多。要做纯粹基于内容的推荐,你必须实现两个方法
- 个性化推荐:在这里,你必须查看用户喜欢的项目内容,并找到具有相似内容的项目。这可以通过使用像Mahout spark-rowsimilarity作业这样的东西来创建一个类似项目列表的模型,然后使用搜索引擎对结果进行索引,并使用用户首选的项目id作为查询。这将被添加到通用推荐器中。
- "喜欢这个的人也喜欢这些":例如,这些项目与正在查看的项目相似,并且对所有用户都是相同的。它们不是个性化的,因此即使对于没有历史记录的匿名用户也很有用。这可以使用与上面相同的索引id,但使用与查询中查看的项相似的项来完成。有人可能会认为只使用类似的项目本身,但通过使用它们作为查询,您可以在搜索引擎查询中添加分类提升,并返回提升的项目。这已经在通用推荐器中工作了,但类似的项目还没有在模型中。
也就是说,混合内容和协同过滤几乎肯定会产生更好的结果,因为CF在数据可用时工作得更好。唯一依赖基于内容的推荐的时候是当你的目录是一次性的项目,这些项目从来没有得到足够的CF交互,或者你有丰富的内容,像突发新闻一样只有很短的生命周期。
顺便说一句,任何想要帮助添加纯基于内容的部分到通用推荐器的人都可以联系它的新维护者在ActionML.com