点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


作者:Pavel Kordík

编译:ronghuaiyang

导读

一般来说,搜索是非个性化的,不过如果和推荐系统组合起来,也会有意想不到的效果。

寻找正确的信息总是很困难的。在不久之前,文档还是存放在实际的物理仓库中,要找到相关的文档是非常困难的。

当文档可以通过在线存储库访问时,索引文档的数量开始超出物理存储的限制。电子商务网站提供的产品数量或通过在线流媒体服务提供的内容数量亦是如此。

用户倾向于在一个地方找到所有东西,他们中的大多数人喜欢从更相关的选择中进行挑选,所以服务提供商需要适应这种需求。一些全球性的服务(如谷歌、亚马逊、Netflix、Spotify),在飞快的增长,用户几乎在上面可以找到任何东西。推动它们在全球占据主导地位的最强大工具之一,是它们以机器学习技术为动力的高度先进的个性化技术。这些技术就是推荐系统个性化搜索

推荐系统使用用户与物品的交互的历史来为用户生成最相关物品的排序列表。搜索引擎根据与给定查询的相似度对内容进行排序,而不考虑用户的历史记录。

推荐系统使用户能够在线发现相关文档、产品或内容。通常,用户可能最喜欢的物品隐藏在数百万个其他物品中。用户无法通过搜索引擎直接找到这些商品,因为他们很少知道它们的标签,甚至可能不知道它们的存在。

另一方面,有时用户需要寻找一个特定的物品,并愿意通过表达他们的需求来帮助在线系统,以减少可能被推荐的物品的数量。

有几种方法可以帮助用户表达他们的需求。用户体验在这里扮演着非常重要的角色。很多用户通过他们的手机访问在线服务,但显示兴趣的能力有限。在线服务应该专注于利用所有可用信息过滤可能的搜索结果。

用户地理位置可以显著缩小可能的搜索和推荐结果。例如,在Recombee中,您可以选择推荐只包含距离用户位置一定范围内的物品。另一种方法是,当某个物品在地理位置上更接近某个用户时,你可以提高该物品被推荐的可能性。

用户希望使用特定的标签或类别过滤掉可能的搜索结果。它通常只需要一次点击就可以过滤除特定类别之外的所有物品(例如,除了科幻小说之外的所有文章)。应该让用户尽可能轻松地表达他们的兴趣。

一定比例的用户希望可以使用一个查询文本(即使只是几个字符)的方式来缩小搜索范围。他们的目的可能是找到一个特定类别的商品,或者通过他们知道的正在寻找的商品的标签直接来搜索一个特定的商品。他们输入的文本被称为a user query,这篇博客文章讨论了如何利用一个query来帮助用户找到她/他要找的东西。这篇博客文章从理论部分开始,然后是实践部分。

信息检索

为给定文本query寻找合适物品的问题作为信息检索(information retrieval, IR)已经研究了几十年。当用户向系统输入一个query时,信息检索过程就开始了。query是信息需求的正式形式,例如web搜索引擎中的搜索字符串。在信息检索中,query不能唯一地标识集合中的单个物品(文档)。相反,有几个物品能与query匹配,可能具有不同程度的相关性。

传统的方法试图将query与文档匹配,并根据相似度获得相关性。机器学习方法通过从训练数据构建一个排序模型来解决IR问题。这样的训练数据(对于搜索引擎来说)是什么样的呢?通常,它是对每个query进行“适当”排序的文档的集合。

以下是在相关博客中描述的IR系统方案:

经典的IR系统不是个性化的,它只是为一个query返回大部分相关的文档。机器学习通常是不需要的,因为系统遵循预定义的过程(如TF-IDF相似性查找)。

该系统通过匹配query和文档并计算它们的相似度来工作。大多数相似的文档都是按照与query的相似度排序返回的。相似度是计算出来的,比如TF-IDF向量的余弦相似度。

通过重新排序(使用机器学习模型)可以改进搜索结果。在本例中,还使用搜索引擎来减少机器学习模型的候选项的数量,从而使评分更快。

Learning to rank(LTR)是机器学习的一种应用,它根据人的期望对物品进行排序。LTR模型通常使用人类标记的数据进行训练。

在召回阶段,LTR模型获取由搜索引擎生成的一个query和返回的文档(项)的子集,作为每个物品的输入和输出相关性。最后,它可以输出一个经过排序的文档列表(k-最相关的文档)。请注意,现代系统还可以将用户属性文件作为输入,并执行个性化学习来对机器学习任务进行排序。

经典预测模型, learning to rank模型和推荐系统之间的区别是什么?

  • 预测模型/分类器通常只有几个输出属性,它们的设计目的不是为及百万用户进行几百万物品的排序。

  • Learning to Rank系统,对于给定的query,返回的结果是相同的列表,不涉及个性化。

  • 推荐系统不使用query,它们根据用户历史和用户之间的相似性生成相关物品。相关物品的计算方法是在评分矩阵中预测它们的评分,或者根据它们的属性推荐类似的物品。

下一节对LTR和推荐系统都很有用,因为模型的评估与机器学习中的经典预测模型是相似的。

评估LTR和推荐系统

累积收益度量通过learning to rank系统或推荐系统返回的前k项的相关性。

例如,我们可以把6个返回物品的相关性加起来(注意,第4项是不相关的)。

显示给用户的物品很少有统一的可见性方式。例如,在电子商务中,由于大多数用户不想向下滚动列表,所推荐的商品的可见性急剧下降。在媒体领域,一个内容经常被高亮显示,而其他内容则很难被发现。

CG的问题是它没有考虑到物品的位置。例如,第一个推荐可能有比其他五个大得多的图像显示。此外,用户倾向于浏览列表顶部的几个物品,而他们看到列表更下方的物品的可能性要小得多。基于这个原因,discounted cumulative gain(DCG)比简单的CG更受欢迎。

在DCG中,相关性值与结果的位置成对数比例递减。

DCG可以很容易地计算,如上例所示。

有些变体甚至更加强调检索列表顶部的相关物品。

假设一个数据集包含N个query。通常的做法是对每个query的DCG分数进行归一化,并得到所有query的平均DCG(“NDCG”)分数。有这样一个评价指标是很好的,但请记住现实世界是残酷的。

传统的LTR算法

  • Pointwise方法将排序转化为单个物品的回归或分类。然后,该模型一次只获取一个物品,它要么预测其相关性得分,要么将该物品归类到一个相关性类中。

  • Pairwise方法将问题处理为物品对的分类,即确定在第一个位置上的物品是不是具有更高的相关性,反之亦然。

  • Listwise方法把整个物品列表作为一个学习样本。例如,使用属于一个特定query的所有物品的得分,而不是仅通过比较成对或单个样本。

以下是一些LTR算法的例子:

PRank算法,使用感知器(线性函数)从文档的特征向量中估计文档的得分。query被附加到文档嵌入的特征向量中。我们还可以将文档分类为相关类(例如相关/不相关)。这个函数几乎可以用任何机器学习方法来建模。大多数算法使用决策树和森林。现代方法利用深度学习网络。

最终的排名列表是通过对所有文档进行评分并根据预测的相关性进行排序得到的。显然,当对模型进行输入嵌入和相应输出相关性的训练时,我们并没有直接最小化NDCG或其他上述评价标准。与Pointwise方法相一致,Pairwise方法也使用代理可微损失函数。

为了更好地理解pairwise方法,我们应该记住在二元分类中使用的交叉熵损失,它惩罚了模型的高置信度的错误的预测。

对数损失可以通过对0,1标签的损失求和来计算:−(y log(p) +(1−y) log(1−p))

正如你所看到的,错误的高置信度的答案得到很高的损失。

更多关于LTR系统的梯度训练算法可以在这里找到:https://medium.com/recombee-blog/ //www.microsoft.com/en-us/research/wp-content/uploads/2005/08/icml_ranking.pdf。

Rankboost直接优化分类错误。它源自Adaboost,在文档对上进行训练。它训练弱分类器,将更多的权重赋给在前面步骤中没有正确分类的对。

RankSVM是第一批采用pairwise方法解决问题的算法之一。它以序数回归的方式进行排序,并对类的阈值进行训练。RankSVM采用hinge损耗函数最小化。它还允许直接使用kernel进行非线性处理。

listwise方法的动机

pairwise的方法很好,但也有缺点。训练过程是昂贵的,并且存在固有的训练偏差,在不同的query中差异很大。也只有pairwise的关系被考虑在内。我们想使用一个评价指标,能让我们优化完整的list,同时考虑到所有物品的相关性。

指数排序的优势在于,即使当模型f给所有文档分配相似的分数时,它们的最高概率也会非常不同 —— 最好的文档接近1,相关性较低的文档接近0。

这里,损失是针对一个文档列表计算的。我们不太关心不相关的文档Py(x)=0,最大的损失是由相关文档造成的。

如何得到LTR系统的训练数据?

获取LTR系统的训练数据可能是一个漫长而昂贵的过程。你通常需要一群人,人工来输入查询并判断搜索结果。关联判断也比较困难。评估人评估下列分数之一:

相关度 —— 二值:相关与不相关(适合pointwise)

pairwise偏好 —— 文件A比文件B更相关。

总的顺序 —— 文件按A、B、C、…,排序,根据它们的相关性。(对listwise来说很完美,但很耗时)

很明显,人工标注非常贵,而且它们的标签也不是很可靠。因此,应该从用户在网站上的行为来获得排名和训练系统。

更好的方法是用推荐系统代替上述的LTR算法。


个性化搜索回顾

当根据用户的偏好对搜索结果进行排序时,用户对搜索功能的总体满意度会显著提高。

个性化搜索还应该考虑用户偏好、历史交互和相似用户的交互。为什么不利用推荐系统呢?对于相同的搜索查询,两个用户可以期望非常不同的推荐。

解决方案是将搜索引擎与强大的推荐系统相结合,而不是像上面描述的那样将经典学习应用到机器学习(LTR)模型中。这种方法有几个优点,我们将在后续的博客文章中分析它们。

我们的个性化搜索方法结合了搜索引擎和推荐系统。首先,搜索引擎对推荐物品(与查询无关)进行重新排序,以过滤掉不相关的推荐,并推送与query匹配的物品及其描述。其次,搜索引擎返回最佳匹配的候选项,而不管用户属性文件或交互历史记录。然后,这些商品由推荐系统重新排序,以更好地适应每个特定用户的口味。最终结果由上游的排名投票产生。

—END—

英文原文:https://medium.com/recombee-blog/introduction-to-personalized-search-2b70eb5fa5ae

请长按或扫描二维码关注本公众号

喜欢的话,请给我个好看吧

个性化搜索的介绍,推荐和搜索的强强结合相关推荐

  1. 专访头条搜索:从推荐到搜索,如何构建搜索技术的另一种可能?

    今日头条又将搜索业务往前推进了一步.4 月 30 日,今日头条宣布上线"头条百科"测试版.界面简洁,除了搜索框外,只有一个 Slogan:" 来这里,认识世界!" ...

  2. 【招聘内推】阿里巴巴广告/推荐/搜索-算法工程师岗位

    阿里巴巴机器学习平台.引擎平台,社招.校招都还有hc,简历发送至:di.zhangd@alibaba-inc.com:(邮件可备注来自智能推荐系统公众号) 一.公司&平台介绍 阿里巴巴广告/推 ...

  3. 深度学习如何应用在广告、推荐及搜索业务?阿里妈妈实践案例解读

    阿里妹导读:靖世,阿里妈妈精准展示技术研究员.2011 年,刚进阿里的他提出了分片线性模型 MLR,极大提高了 CTR 预估的准确性.近期,靖世又带领团队在 CTR 预估方面推出了一个新的模型结构-- ...

  4. 爆料 | 解析阿里妈妈如何将深度学习应用在广告、推荐及搜索业务

    非常高兴与大家进行"深度学习演进之路"的交流,阿里妈妈是阿里巴巴集团下的大数据营销平台,是负责阿里巴巴变现的一个事业部.我研究的方向是机器学习.计算机视觉.推荐系统和计算广告.我在 ...

  5. 场景导购系列一:个性化服饰搭配在淘宝搜索的实践

    背景 日常生活中存在着各种各样的场景,比如参加晚会.海边度假.跑步.登山.垂钓等等.场景可以认为是在一些维度上相似的元素所构成的情境画面,不同场景会有不同的氛围.组成元素. 一些场景偏实用性,比如跑步 ...

  6. 搜索介绍 | 当你搜索时,发生了什么?

    全文目录如下: 一如"万物皆可百度"."万物无难事,只要肯百度"所言,搜索在我们生活中早已成为习以为常的事情.毕业季的我们会在每日99+的群聊信息中搜索所需的信 ...

  7. 豆瓣图书的推荐与搜索、简易版知识引擎构建(neo4j)

    DouBanRecommend 基于豆瓣图书的推荐.知识图谱与知识引擎简单构建neo4j 本项目主要贡献源来自豆瓣爬虫(数据源)lanbing510/DouBanSpider.知识图谱引擎Agricu ...

  8. 详解APP应用分发平台的榜单推荐和搜索排名规则

    如果你要问最近互联网最热门话题的是什么?那一定是App的应用与营销推广了.APP是英文Application的简称,由于iPhone等智能手机的流行,APP指智能手机的第三方应用程序.一开始APP只是 ...

  9. 淘宝号标签,,猜你喜欢推荐,消费潜力值,淘宝号的千人千面,购物足迹,潜在购买类目,淘宝号的潜在成交词,官方推荐的搜索词,淘宝标签查询,淘宝号是否打上标签,标签透视,标签接口,猜你喜欢接口,

    简介: 可以查询到指定淘宝号被淘宝推荐的搜索词,和猜你喜欢的词库和商品id库. 淘宝标签查询基于官方千人千面算法推荐,针对不同的消费者推送不同的潜在成交商品和可消费的金额. 实时查询买家曾浏览过.购买 ...

  10. 电商类应用如何快速构建站内搜索和智能推荐能力?

    用户进入电商应用,锁定商品有两种路径: 一是用户明确要买的商品,通过文字.语音.图片等方式直接搜索定位商品: 二是用户随机浏览商品,系统根据用户喜好推荐,越懂得用户偏好,则越能激发用户购买欲. 商品智 ...

最新文章

  1. 使用PHPExcel 对表格进行,读取和写入的操作。。。。
  2. JVM经常使用的调优參数
  3. ExtJS-Grid框增加复选框checkbox
  4. SSH免密码登录设置
  5. Struts2-获取值栈对象与结构
  6. boost::python::detail::if_相关的测试程序
  7. Oracle 数据字典表 -- SYS.COL$
  8. 筛法求10000以内的质数
  9. 王道计算机网络 网络层整理 超详细版
  10. Appium+PythonUI自动化测试之uiautomatorviewer和Inspector元素定位
  11. finalshell连接失败解决方法_iPhone热点连不上?教你网络连接失败或断线的解决办法...
  12. Cocos2d-x教程(28)-ttf 字体库的使用
  13. linux 中添加kvm虚拟化,在 Centos7 的KVM上启用嵌套虚拟化
  14. 【Spring】Service 注入失败,空指针
  15. 在数据中心里SDN技术发展现状
  16. sql vb xml 换行_vb怎么写换行代码 vb文本框怎么换行输出
  17. 蓝牙耳机哪个牌子好?国庆出游蓝牙耳机推荐
  18. 用arduinoUNO做温度计
  19. 模拟大规模电动车充电行为(Matlab实现)
  20. vue3.0组合式api语法使用总结

热门文章

  1. 狼的故事7:单枪匹马的代价
  2. 图像的常用灰度变换——负片、伽马变换、对数变换、直方图均衡化、自适应灰度变换及其MATLAB实现
  3. JavaScript类型化数组——ArrayBuffer
  4. 翻译:原型继承是如何工作的
  5. 分部视图 Partial View
  6. Hub control
  7. libhv教程19--MQTT的实现与使用
  8. 浅析高校用电现状及节电方案
  9. html5语文答题制作,教你语文期末考试怎么答题
  10. linux true命令,linux true命令详解