一方面从用户角度来讲,每个人的喜好不一样,需要分析用户偏好。比如价格偏好、类目偏好、品质偏好等等;另一方面,从搜索的角度来讲,搜索系统有两件事情可以做:首先挖掘用户的个性化需求,明确消费指向;其次是对商品的特征抽取。这两件事情做好后,当客户搜索时,系统需要把符合他消费习惯的产品尽量往前排。
淘宝上用户的注册信息,浏览行为,购买行为非常丰富,搜索的结果中加入了个性化的因素,不同的买家,由于以前的购买或者浏览行为不一样,看到的搜索结果也可能不一样。

比如下图中,搜索购买T恤时,对于中档购买力的用户,左图高中低价格都有,用户需要仔细再筛选辨认下,而右图主要是中等价位,而且拍在前面,用户很容易选择,这就是在价位上的个性化排序搜索。

想要顺利地构建个性化搜索系统,需要先明晰系统的核心关键点,然后据此逐步进行用户和物品特征建模、建立个性化化模型、线上二次排序,最后把最终结果展示给用户。
(4) 融合:一种是,协同搜索;搜索凉鞋,如果用户刚买红色连衣裙,这种情况下推送买红色连衣裙的用户也买的凉鞋。另外一种是,在搜索结果中,展示不完全符合搜索意图,但是符合用户偏好特征,并与搜索意图相关的物品。
物品特征建模就是挖掘物品特征的过程。
协调搜索是根据用户的购买,浏览等消费行为,利用经典的协同过滤算法,离线推荐用户可能喜欢的其他物品,简单的算法原理见下图:

综上,个性化搜索系统的整体架构如下:

同城约会的个性化搜索系统在“找缘分”下的“搜索会员”界面,默认排序的方式就是个性化搜索的结果。同城约会的个性化搜索系统架构见下图:

系统的数据源为数据库mysql和客户端的行为action日志;数据库数据可以通过猛犸导出到hdfs,日志可以通过datastream分发到hdfs;之后的离线计算可以在hadoop集群上处理。
最后,可以根据用户的被动行为(即其他用户对该用户的浏览、点赞图片、送礼物等的主动行为),分析用户的受欢迎程度、外貌特征(图片点赞情况可以推测出)、亲和力等特征,从用户自己的消费行为可以分析用户的消费水平等,以上可以构成用户的质量特征。
当线上,用户发出搜索请求后,在原始搜索结果的基础上,获取请求用户的异性偏好特征和搜索结果中用户的客观属性特征和质量特征,经过线上二次排序后,再展示给用户,即图中的FeatureBased算法。
根据用户主动行为,可分析用户偏好的异性,之后利用协同过滤算法,计算出同性用户之间的相似度,进而可以为用户推荐出他/她可能喜欢的其他相似异性用户,由于直接相似关联的结果会有badcase,因此,离线计算时候会根据用户的偏好特征和被推荐用户的质量特征,作一次过滤和重排序;当线上,用户发出搜索请求后,在原始搜索结果的基础上,当存在用户的推荐结果时候,会作加权二次排序,即图中的Itembased算法。
个性化搜索系统中的实时模块包括两部分:(1)用户实时推荐结果;当系统发现用户对某异性有偏好意图后,会实时为用户推荐可能喜欢的其他用户,进而迅速地融入Itembased算法中;(2)用户实时偏好特征;系统在线上追踪用户表现偏好的主动行为,不断调整当天用户实时的异性偏好特征,最终体现到FeatureBased算法二次排序中。实时模块可以迅速扑捉用户当前的口味偏好,能促进个性化搜索系统更灵敏、更智能化。

上图为,个性化搜索系统刚上线的一段时间内,搜索结果top10,用户点击率效果图。红线为非算法的原始搜索结果的点击率效果,平均在3.5%左右;蓝色为FeatureBased算法的点击率效果,平均在4.18%左右,提升19.4%;青色为Itembased算法的点击率效果,平均在4.44%左右,提升26.9%。
特征是个性化排序模型的基础;挖掘分析特征需要深入业务场景,不断调整完善,往往好的特征可以事半功倍。
特征权重可以人工设置,也可以通过机器学习不断调整。一般刚开始数据两不足的时候,可以通过人工经验,手动设置;当积累到一定的数据量的时候,可以通过模型训练,优化特征权重。
数据管理公众号

长按二维码,关注数据管理





