4

简单的项目到项目推荐系统是众所周知的并且经常实现。一个例子是Slope One 算法. 如果用户还没有对很多项目进行评分,这很好,但是一旦他们有了,我想提供更细粒度的推荐。让我们以音乐推荐系统为例,因为它们非常流行。如果用户正在查看莫扎特的作品,则可能会给出另一部莫扎特作品或贝多芬的建议。但如果用户对古典音乐进行了多次评分,我们或许可以在这些项目之间建立关联,并看到用户不喜欢人声或某些乐器。我假设这将是一个两部分的过程,第一部分是找到每个用户评分之间的相关性,第二部分是从这些额外数据构建推荐矩阵。所以问题是,它们是否有任何可用于这些步骤的开源实现或论文?

4

3 回答 3

2

味道可能有一些有用的东西。它已移至 Mahout 项目:

http://taste.sourceforge.net/

一般来说,这个想法是给定用户过去的偏好,您希望预测他们接下来会选择什么并推荐它。您构建了一个机器学习模型,其中输入是用户过去选择的内容以及每个选择的属性。输出是他们将选择的项目。您通过保留他们的一些选择来创建训练数据,并使用他们的历史来预测您保留的数据。

您可以使用许多不同的机器学习模型。决策树很常见。

于 2010-12-20T18:24:30.643 回答
1

一个答案是任何推荐系统都应该具有您描述的一些属性。最初,建议并不是那么好,而且到处都是。当它学习口味时,推荐将来自用户喜欢的区域。

但是,您描述的协同过滤过程从根本上不是试图解决您要解决的问题。它基于用户评分,两首歌曲的评分并不相似,因为它们是相似的歌曲——它们的评分相似只是因为相似的人喜欢它们。

你真正需要的是定义你对歌曲相似度的概念。它是基于歌曲的声音吗?作曲家?因为听起来这个概念实际上并不是基于收视率。那是您要解决的问题的 80%。

我认为您真正要回答的问题是,哪些项目与给定项目最相似?鉴于您的项目相似性,这是一个比推荐更容易的问题。

Mahout可以帮助解决所有这些问题,除了基于其音频的歌曲与歌曲的相似性——或者至少为您的解决方案提供一个起点和框架。

于 2010-12-23T23:02:55.710 回答
0

我能想到两种技术:

  • 使用反向传播或其后继者之一(例如弹性传播)训练前馈人工神经网络。
  • 使用版本空间学习。这从关于用户喜欢什么的最一般和最具体的假设开始,并在集成新示例时缩小范围。您可以使用术语层次结构来描述概念。

这些方法的共同特点是:

  1. 您需要为每个用户提供不同的功能。在搜索推荐时,这几乎排除了高效的数据库查询。
  2. 当用户为某项投票时,该功能可以即时更新。
  3. 您对输入数据进行分类的维度(例如,人声、每分钟节拍、音阶等)对分类质量非常重要。

请注意,这些建议来自基于知识的系统和人工神经网络的大学课程,而不是来自实践经验。

于 2010-12-20T18:11:55.363 回答