构建推荐引擎时需要考虑什么?

19

我读了《集体智慧编程》这本书,感觉很有意思。最近听说亚马逊向世界发起了一个挑战,要求设计更好的推荐引擎。

获胜者似乎通过限制输入信息的数量,提出了最佳算法。

通常而言,"对于模糊算法而言,拥有更多信息并不一定更好。"这是第一原则。

虽然这是一个主观问题,但最终还是可以通过推荐后的点击量来衡量。

由于我们中的大多数人都在处理网络,搜索可以被视为推荐的一种形式......我想我不是唯一一个希望听到他人想法的人。

简而言之,"构建推荐系统的最佳方法是什么?"

4个回答

5
同意@Ricardo的观点。这个问题太宽泛了,就像问“优化系统的最佳方法是什么?”
几乎所有现有的推荐引擎都具有一个共同特征,即最终推荐的实现可以归结为对一些矩阵和向量进行乘法运算。例如,将包含用户之间接近程度权重的矩阵与包含项目评分的向量相乘。
(当然,你必须准备好大多数向量都是超级稀疏的!)
我的回答对于@Allain来说肯定太晚了,但对于通过搜索找到这个问题的其他用户——给我发私信,提出更具体的问题,我一定会回复。
(我专业设计推荐引擎。)

5

计算机科学领域有一个完整的研究方向专注于这个主题。我建议阅读一些文章


5

如果您没有有关用户的任何信息,不要使用“总体流行度”。相反,您需要将此用户与类似的用户对齐并进行相应的加权处理。

这正是贝叶斯推断所做的。它的意思是用其他投票方式与您相似的人的评分来调整您可能喜欢某物的总体概率(平均评分)。

另一个建议,但这次是临时性的: 我发现有些人喜欢某件事情,我几乎肯定不会喜欢它。我不知道这种影响是真实的还是想象的,但建立一种“负面效应”而不仅仅是通过相似性来聚集人也许会很有趣。

最后,有一家专门从事此项工作的公司,叫做SenseArray。业主(Ian ClarkeFreenet 的创始人之一)非常平易近人。如果您打电话给他,请告诉他我的名字。


1
那是贝叶斯推断的错误定义。贝叶斯推断是基于数据从先前观点到更新观点的过程。这种定义太宽泛了,无法回答@Allain的问题。 - isomorphismes

2

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

在我看来,推荐引擎由以下部分组成:

  • 从上下文感知系统中提取的上下文输入(记录所有您的数据)
  • 逻辑推理以过滤最明显的选项
  • 专家系统根据上下文输入随着时间的推移改善您的主观数据,以及
  • 基于加权和的概率推理,根据以前的行动(信仰、愿望和意愿)进行近距离决策。

P.S. 我做了这样一个推荐引擎。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接