
作者:亦飞 (一淘及搜索事业部-搜索技术-算法技术-文本搜索技术)
如意淘商品推荐技术是由一淘搜索北京算法团队支持,去年8月份上线之初,PV点击率即高于数据平台部门(原技术支持方)的30%,经过半年左右的优化,PV点击率实现翻倍。
在项目的实施过程中,我们有以下两点体会:
1. 明确问题,即对问题建立合适的模型,特殊问题特殊解决,生搬硬套一些经典算法未必能获得最优效果
2. 数据比算法重要,大数据时代,把数据分析好、处理好,获得的收益很可能高于算法调优的收益,与其调整数据去适应那些经典算法,不如针对特定的数据设计特定的算法
对如意淘商品推荐技术的介绍,将分为2个部分:
1. 如意淘商品的基础推荐技术:对问题的建模与算法设计
2. 如意淘商品的高级推荐技术:Re-ranking、商品聚类与点击反馈
本文将介绍第1部分的工作,即如意淘商品的基础推荐技术。
一、问题描述
如意淘商品推荐的应用场景是:用户进入到淘宝商品详情页之后,如意淘插件会在页面左下方展现6个推荐商品,产品希望获得更多的用户主动点击。根据该应用场景,可以将问题描述为:
设用户正在浏览的商品为ItemA,需要找到ItemB,使得条件点击概率P(ItemB|ItemA)最大化
二、问题建模
根据条件概率的计算,可以得到:
P(ItemB|ItemA) = P(ItemA, ItemB)/P(ItemA)
分子与分母的含义如下:
分子:P(ItemA,ItemB)是点击了ItemA后又点击ItemB的概率
分母:P(ItemA)点击ItemA的概率
根据用户的搜索点击日志,分子和分母的概率值都可以估计出来,这里我们选择UV来进行估计(使用UV进行估计,可以比PV更有效地回避用户作弊问题),那么分子与分母的计算方式如下:
计算分子:P(ItemA,ItemB) = UV(ItemA,ItemB)/UV(All),其中UV(All)表示所有浏览商品详情页的用户数,UV(ItemA,ItemB)表示访问了ItemA后又访问ItemB的UV数,根据淘宝的搜索点击日志数据,可分为以下2种情况进行统计:
Case1:用户在ItemA的页面点击了ItemB,即店铺内的商品点击
Case2:用户搜索了一个query,在搜索结果页点击了ItemA后又点击了ItemB
计算分母:P(ItemA) = UV(ItemA)/UV(All),很直观,不需解释
通过上面的分析,可以得到下面的计算模型:
P(ItemB|ItemA) = UV(Case1 or Case2)/UV(ItemA),UV(All)无需计算
使用这个计算模型,我们就从淘宝的搜索点击日志中找出需要的ItemB,但该方法并不能覆盖所有的商品,即存在一些UV很低的商品,无法找到6个关联的商品。针对这种情况,我们采用搜索的方式进行推荐,即P(ItemB|ItemA) = P(ItemB|Term1,Term2,…,TermN),可分解为2个问题:
1. 将ItemA转化为一组查询词Term1, Term2, …, TermN,即对ItemA的标题进行分词,根据分词属性进行关键词提取
2. 以查询词为Query访问淘宝主搜索引擎,将返回结果作为推荐商品
有了这个方法,可基本覆盖所有的商品。
三、算法设计与实现
计算UV(Case1 or Case2)/UV(ItemA):
使用45天用户搜索点击日志,在Hadoop上进行计算,每天线下生成一份Key/Value字典,可覆盖每天PV的60+%,不再赘述。
计算P(ItemB|Term1,Term2,…,TermN):
关键词提取算法:
考虑AliWS的分词属性:产品词与品牌词
考虑Term的长度特征与doc数特征
考虑商品的性别特征:即女性商品不出男性商品
搜索请求串的设计:
查询词:使用关键词
类目限制:使用ItemA的商品类目
本文介绍的商品推荐技术,就是在如意淘商品推荐刚上线时采用的,2个人1周时间完成开发,PV点击率在上线当天即高于数据平台部门的30%,实现简单、有效、快速的解决问题。
—
微信名称:阿里技术嘉年华
微信号:alibabatech
简介:面向互联网行业全体工程师的技术交流盛会,分享实战技术,拜各路大神,听业界干货,享年度码农聚会!