关于算法:构建推荐引擎时应考虑什么?

关于算法:构建推荐引擎时应考虑什么?

What should be considered when building a Recommendation Engine?

我读过《编程集体智慧》一书,发现它很有趣。 最近,我听说亚马逊向全世界发布了一个挑战,以为其系统提供更好的推荐引擎。

优胜者显然是通过限制向其馈送的信息量而产生了最佳算法。

作为第一条经验法则,我想:"关于模糊算法,更多的信息不一定更好。"

我知道这是主观的,但最终还是可以衡量的(点击以回应建议)。

由于这些天我们大多数人都在使用网络,搜索可以被视为一种推荐形式……我怀疑我不是唯一会欣赏其他人对此事的想法的人。

简而言之,"建立建议的最佳方法是什么?"


同意@Ricardo。这个问题太笼统了,就像问"优化系统的最佳方法是什么?"一样。

几乎所有现有推荐引擎的一个共同特征是做出最终推荐归结为乘以一定数量的矩阵和向量。例如,将包含用户之间的接近度权重的矩阵乘以项目评分向量。

(当然,您必须准备好使大多数向量超级稀疏!)

对于@Allain来说,我的回答肯定为时已晚,但对于其他通过搜索找到此问题的用户-给我发送PM并提出更具体的问题,我一定会回答。

(我专业设计推荐引擎。)


在整个计算机科学领域中,有一个专门研究该主题的领域。我建议阅读一些文章。


除非您没有有关该用户的信息,否则您不希望使用"总体流行度"。相反,您想要使该用户与相似用户保持一致并相应地权重。

这正是贝叶斯推理所做的。用英语来说,这意味着用通常也投票支持您的其他人的评分来调整您喜欢某事的总体概率(平均评分)。

另一个建议,但这次是临时的:我发现有些人如果喜欢的话,我几乎肯定会不喜欢。我不知道这种效果是真实的还是想像出来的,但是建立一种"负面效果"可能会很有趣,而不是仅仅因为相似性而束手无策。

最终,有一家专门从事这种技术的公司叫做SenseArray。所有者(freenet名望的Ian Clarke)非常平易近人。打电话给他可以用我的名字。


@老子,我同意你的看法。

据我说,推荐引擎由以下组成:

  • Context Input fed from context aware systems (logging all your data)
  • Logical reasoning to filter the most obvious
  • Expert systems that improve your subjective data over the period of time based on context inputs, and
  • Probabilistic reasoning to do decision-making close-to-proximity based on weighted sum of previous actions(beliefs, desires, & intentions).

附言
我做了这样的推荐引擎。


推荐阅读