文档结构  
可译网翻译有奖活动正在进行中,查看详情 现在前往 注册?
原作者:Doug Turnbull (2016-09-19)    来源:Dzone [英文]
coyee    计算机    2016-09-20    0评/682阅
翻译进度:已翻译   参与翻译: tangmisi (10)

这是Doug Turnbull《使用Elasticsearch构建高质量推荐系统》文章的Part II。你错过了Part I?阅读这里

实现贝叶斯方法

我想在未来的文章中继续探究与搜索引擎共生的评分方法。在谈论前景和背景百分比时,我不禁想到贝叶斯公式:

P(A | B) = P(B | A) * P(A) / P(B) 

我们在尝试理解在喜欢一个电影的情况下,喜欢另一部电影的概率。这正是P(A | B)表达的情况。在喜欢B(也许是“《终结者》”)的范围内的用户,喜欢A(也许是“《第一滴血》”)的概率有多大。 

第 1 段(可获 1.33 积分)
P(Rambo | Terminator) = P(Terminator | Rambo) * P(Rambo) / P(Terminator) 

好吧,P(Rambo | Terminator)对应于前景百分比。而P(Rambo)对应于背景百分比。换句话说:

foregroundRambo = ( P(Terminator | Rambo) / P(Terminator) ) * backgroundRambo 

我已经提到过,你需要对你的数据做数据分析工作。不要只是试图找到前景和背景概率的这种(译者注:与公式相符的)关系。而是尝试找到前景百分比和背景百分比的一种典型关系。然后你就可以使用这个典型的通用关系来评估评分方法,并找到能够不影响评分统计模式的较好的低边界。如果我们在大体上能够更多考虑贝叶斯公式,我们会看到一种常见的转换发生。丢弃一个例子,我们就可以得出返回概率(即概率分布)的函数,以得到这些关系:

第 2 段(可获 1.55 积分)
ForegroundDistribution(item A, item B) = transformation(item A, item B) * background( item B) 

我还没能把这个关系记住,但是这个关系是贝叶斯公式的根源。“背景”分布看起来对应于贝叶斯先验定律。这表明了,虽然没有任何证据,但是我们可以预料到某种程度上的典型背景概率分布。在《购物篮分析》一文中,我们讨论了购物模式的幂律或Zipfian分布。在经典贝叶斯分析中的“转换(transformation)”对应于似然函数(likelihood function)。在这里,就是在给定B的情况下A的相对可能性。你可以想象成根据A和B相对共同出现下的对背景概率的收缩或增长的一个输出常数。也许它对于某对A和B输出为1.5——前景百分比增长。或者是0.5,前景百分比缩小。

第 3 段(可获 1.71 积分)

你可以在三维空间中想象“转换(transformation)”函数。x和y轴对应项a和b,z轴对应于为了得到前景概率,你需要对背景概率做的乘法的乘数。你可以对P(B | A)(用户在喜欢《终结者》的情况下,喜欢《第一滴血》的概率)做取样,这个概率可以通过查找喜欢《第一滴血》的用户和计算喜欢《终结者》的用户的原始数量来得到。你可以通过抽取喜欢《第一滴血》的用户的总数来查找P(《第一滴血》)。你可以用这些值计算得到一个转移(transformation)的逐点值。

你很可能不能把这个转换(transformation)总结为一个公式,但是你可以使用你的数据来画一个图。从任何给定的项对,例如《终结者》和《第一滴血》,你可以计算出这个值(译者注:指P(B | A))。你需要不对每对项都计算这个值。记住:你的目标是找出什么情况是典型的,以引导你的评估,而不是找到所有值。

第 4 段(可获 1.86 积分)

如果你对这个转换(transformation)取样,并且那些值倾向于稳定在0.9和1.1之间,那么你可以知道,你的前景和背景百分比不会相差太远。如果受欢迎的东西比没那么受欢迎的东西增长或缩小,那么LJH就可以为你很好地工作了。如果有违背这个模式的剧烈波动,你就应该要注意到,像JLH这样的评估手段对于你的数据来说是不合适的。

实际上,我真的对深入探究这些想法感到非常兴奋(如果你也玩过这些概念,让我知道会发生什么)。例如,我们在尝试从一些模型参数找到我们的信心(例如一枚硬币的偏置(译者注:向上还是向下),或者体重和死亡的关系,或者在语料库中话题的分布),这其实不是特别典型的贝叶斯分析。相反,它更像是一个回归案例,在这个回归案例中,我们在尝试决定两个值之间的关系(项A和项B)和一个转移函数(transformation)。也许像是没有被参数化的黄土回归( loess regression)一样(例如没有假设潜在的数据精确地匹配某个公式)。也许我应该做的事情是尝试在转移的过程做贝叶斯分析,以找到在任意A和B项的关系间潜在的参数。我很乐意听到你的想法!联系我,或者找我出来,我请你吃饭,一起互相学习

第 5 段(可获 2.89 积分)

关于实用的Elasticsearch和数据模型的思考

聚合方法给我们留下了几个为建立好的建议而作的实用的思考。在这里注意到它们,并把它们作为进一步研究的对象,是有意义的。

我们不可以脱离典型搜索得分来使用意义评分(significance score),所以我们不能直接地在一个查询中偏置例如发布日期这样的因素。要做个性化的搜索,我们不可能脱离“搜索”来做“推荐”。不幸的是,聚合和搜索生活在两个不同的宇宙(译者注:即聚合和索引原理不同)。

第 6 段(可获 1.05 积分)

绕过这个问题的一种方法是,使用取样聚合(sampler aggregation)。取样聚合只对最相关的N个文档执行聚合。所以,例如我们可以优先考虑在我们的搜索结果中最新的那些电影,然后把最相关的100个搜索结果作为“前景”集。这间接地影响了意义得分计算(significance calculation)。

同样地,也许也有一种方法可以对意义评分(significance scoring)和常规的搜索过程进行整合。我试过使用More Like This查询,或者通过新的在普通的查询过程中也会发生的Simhash功能做局部敏感的哈希计算。但是我对于这些方法的意义计算持保留意见,在这篇文章中我不会讨论这些意见(抱歉,这篇文章可能只是10篇其他文章的引子:-))。

第 7 段(可获 1.58 积分)

用Elastic Graph做基于图的推荐

Elastic发布了一个有趣的图形产品,这个产品能够做抽样和重要性聚合,并且能够导航到第二级和第三级重要性。例如,除了上面的练习,如果我们可以注意到哪种体裁/类型(genres)或者品味简介(taste profiles)对于我来说是有意义的,然后找到这些品味简介的共通点(意义所在),在这种情况下生成推荐,那该多好?这就是一种能够给用户提供很多价值的图导航,并且能够极大地简化推荐系统的创建。

第 8 段(可获 1.08 积分)

我们实际上在为了推荐使用Elastic的图形产品构建一些有趣的demo,但这超出了本文的讨论范围。如果你对我们用Elastic的图形产品做的概念证明感兴趣,随时都可以联系我们。我很乐意为你演示想法和概念证明,即使我们在积极地开发它。我们很乐意听到你的反馈!

搜索引擎是推荐的未来

开源搜索引擎,例如Solr和Elasticsearch,使搜索非常容易实施。然而,推荐系统仍然需要集成多种分布式系统,学习R,并且聘请一个庞大的数据专家团队。这听起来很困难。合理的搜索只需要几天就能够搭建起来,但是推荐系统则需要投入更多的努力。

第 9 段(可获 1.7 积分)

我们在致力于改变这种情况。与Solr和Elasticsearch给大家提供了相当好的开箱即用的搜索一样,我们希望能够帮助推荐系统比起现在的体制花费更低的投入总额。搜索引擎对于直接实施推荐系统来说非常理想,因为它们比起一堆机器学习库和分布式系统更容易维护、调整和部署。

如果你对Solr和Elasticsearch如何简化推荐系统的开发感兴趣,你可以联系我们,我们非常乐意跟你一起探究。每个人都可以通过我们的午餐和学习计划(Lunch and Learn program)得到一个自由咨询的时间

特别感谢Elastic的Mark Harwood,感谢他为这篇文章做了校审。

第 10 段(可获 1.68 积分)

文章评论