推荐Rerank二次重排序算法

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】

推荐Rerank二次重排序算法


前言

推荐的Rerank排序有两种情况,一个是离线计算的时候为每个用户提前用Rerank排序算法算好推荐结果,另一个是在实时在线Web推荐引擎里做二次融合排序的时候。但不管哪一种用到的算法是一样的。比如用逻辑回归、随机森林、神经网络等来预测这个商品被点击或者被购买的可能性的概率,用的模型都是同一个,预测的时候是对特征转换做同样的处理。一般封装一个通用方法供离线和在线场景调用。

一、基于逻辑回归、随机森林、神经网络的分类思想做二次排序

做二次排序之前首先得有一个候选结果集合,简单来说,为某个用户预测哪个商品最可能被购买,不会把所有的商品都预测一遍,除非你的数据库所有商品总共就有几千个。实际上电商网站的商品一般都是多少万量级,甚至几百万SKU。都预测一遍的话,估计跑完都不知道什么时候。所以一般处理的方法都是在一个小的候选集合上产生的。这个候选集合你可以认为是一个粗筛选。当然这个粗筛选也不是你想象的那么粗,其实也是通过算法得到,精准度也是非常不错的。只是通过Rerank二次重排序算法把精准度再提高到一个台阶。至于推荐效果能提高多少,要看你在特征工程上、参数调优是不是做的好。但一般来说推荐效果能提升10%以上,就认为优化效果非常显著了。当然最高提升几倍也是有可能的。

逻辑回归、随机森林、神经网络这些算法我们在前几章已经讲过,在广告系统里可以做点击率预估的二次排序,在推荐系统可以做被购买的概率预估。

二、基于Learning to rank排序学习思想做二次排序

Learning to Rank排序学习是推荐、搜索、广告的核心方法。排序结果的好坏很大程度影响用户体验、广告收入等。排序学习可以理解为机器学习中用户排序的方法,是一个有监督的机器学习过程,对每一个给定的查询-文档对,抽取特征,通过日志挖掘或者人工标注的方法获得真实数据标注。然后通过排序模型,使得输入能够和实际的数据相似。

常用的排序学习分为三种类型:PointWise、PairWise和ListWise。

1)PointWise

单文档方法的处理对象是单独的一篇文档,将文档转换为特征向量后,机器学习系统根据从训练数据中学习到的分类或者回归函数对文档打分,打分结果即是搜索结果或推荐结果。

2)PairWise

对于搜索或推荐系统来说,系统接收到用户査询后,返回相关文档列表,所以问题的关键是确定文档之间的先后顺序关系。单文档方法完全从单个文档的分类得分角度计算,没有考虑文档之间的顺序关系。文档对方法则将重点转向量对文档顺序关系是否合理进行判断。之所以被称为文档对方法,是因为这种机器学习方法的训练过程和训练目标,是判断任意两个文档组成的文档对是否满足顺序关系,即判断是否D0C1应该排在DOC2的前面。常用的PairWise实现有SVM Rank、RankNet、RankBoost。

3)ListWise

单文档方法将训练集里每一个文档当做一个训练实例,文档对方法将同一个査询的搜索结果里任意两个文档对作为一个训练实例,文档列表方法与上述两种方法都不同,ListWise方法直接考虑整体序列,针对Ranking评价指标进行优化。比如常用的MAP, NDCG。常用的ListWise方法有:LambdaRank、AdaRank、SoftRank、LambdaMART。

4)Learning to rank指标介绍

(1)MAP(Mean Average Precision):

假设有两个主题,主题1有4个相关网页,主题2有5个相关网页。某系统对于主题1检索出4个相关网页,其rank分别为1, 2, 4, 7;对于主题2检索出3个相关网页,其rank分别为1,3,5。对于主题1,平均准确率为(1/1+2/2+3/4+4/7)/4=0.83。对于主题2,平均准确率为(1/1+2/3+3/5+0+0)/5=0.45。则MAP= (0.83+0.45)/2=0.64。

(2)NDCG(Normalized Discounted Cumulative Gain):

一个推荐系统返回一些项并形成一个列表,我们想要计算这个列表有多好。每一项都有一个相关的评分值,通常这些评分值是一个非负数。这就是gain(增益)。此外,对于这些没有用户反馈的项,我们通常设置其增益为0。现在,我们把这些分数相加,也就是Cumulative Gain(累积增益)。我们更愿意看那些位于列表前面的最相关的项,因此,在把这些分数相加之前,我们将每项除以一个递增的数(通常是该项位置的对数值),也就是折损值,并得到DCG。

在用户与用户之间,DCGs没有直接的可比性,所以我们要对它们进行归一化处理。最糟糕的情况是,当使用非负相关评分时DCG为0。为了得到最好的,我们把测试集中所有的条目置放在理想的次序下,采取的是前K项并计算它们的DCG。然后将原DCG除以理想状态下的DCG并得到NDCG@K,它是一个0到1之间的数。你可能已经注意到,我们使用K表示推荐列表的长度。这个数由专业人员指定。你可以把它想像成是一个用户可能会注意到的多少个项的一个估计值,如10或50这些比较常见的值。

对于MAP和NDCG这两个指标来讲,NDCG更常用一些。Learning to Rank和基于监督分类的思想做Rerank二次排序总体效果是差不太多的,关键取决于特征工程和参数调优。


三、基于加权组合的公式规则做二次排序

除了用上面的机器学习做二次排序外,也可以用比较简单的方式做二次排序。虽然这种方式简单,但不一定就代表这种方式的推荐效果差。对于推荐系统来讲,最终的是看购买转换率,哪个算法或者策略能带来更多的销量,就是好算法。

讲Redis缓存的时候提到的猜你喜欢,为了满足用户新鲜感性,能够实时的反馈用户最近的兴趣变化,在线web网站展示推荐结果的时候,会实时调用推荐的Web接口,根据最近看过、听过的课程ID,然后再拿课程ID从看了又看类似的推荐结果对多个推荐列表的融合二次排序,这个融合就是我们前面提到的加权组合策略:

一种用于加权组合策略的经典公式:

假如现在有3个商品,每个商品推荐6个商品,那么某被推荐商品R的综合得分如下:

Sr = sum(1/(Oi+C))

其中,O1-O3分别表示商品R在三个商品中的推荐次序,C为平衡因子,可设为0,也可大点,最终从排序结果看被推荐商品的Sr值的分值越高排序越靠前。

此公式同样适用于对多个推荐算法列表的整体聚合排序。

我们做的二次排序就是把多个推荐列表按不同权重混合成一个总的推荐列表,其中包括去重打分。但除了基本的组合还会加入其他的一些因素进去,比如听课的权重大于看过课的权重,访问时间最新的大于旧的的时间权重,最终算出一个打分排序。大概就是根据用户最近的行为,实时算出一个新的结果,实时的融合去重,实时的二次重排序。.

总体来看,在多个推荐列表融合二次排序的时候,多个列表重复投票推荐的那个商品会优先排到前面,越是和最近查看和购买的相关商品会优先排在前面,这是一个随时间衰减的权重的结果。

总结

除了推荐Rerank二次重排序算法

其它深度学习框架也有不错的开源实现,比如MXNet,
此文章有对应的配套视频,其它更多精彩文章请大家下载充电了么app,可获取千万免费好课和文章,配套新书教材请看陈敬雷新书:《分布式机器学习实战》(人工智能科学与技术丛书)

【新书介绍】
《分布式机器学习实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】
新书特色:深入浅出,逐步讲解分布式机器学习的框架及应用配套个性化推荐算法系统、人脸识别、对话机器人等实战项目

【新书介绍视频】
分布式机器学习实战(人工智能科学与技术丛书)新书【陈敬雷】
视频特色:重点对新书进行介绍,最新前沿技术热点剖析,技术职业规划建议!听完此课你对人工智能领域将有一个崭新的技术视野!职业发展也将有更加清晰的认识!

【精品课程】
《分布式机器学习实战》大数据人工智能AI专家级精品课程

【免费体验视频】:
人工智能百万年薪成长路线/从Python到最新热点技术

从Python编程零基础小白入门到人工智能高级实战系列课

视频特色: 本系列专家级精品课有对应的配套书籍《分布式机器学习实战》,精品课和书籍可以互补式学习,彼此相互补充,大大提高了学习效率。本系列课和书籍是以分布式机器学习为主线,并对其依赖的大数据技术做了详细介绍,之后对目前主流的分布式机器学习框架和算法进行重点讲解,本系列课和书籍侧重实战,最后讲几个工业级的系统实战项目给大家。 课程核心内容有互联网公司大数据和人工智能那些事、大数据算法系统架构、大数据基础、Python编程、Java编程、Scala编程、Docker容器、Mahout分布式机器学习平台、Spark分布式机器学习平台、分布式深度学习框架和神经网络算法、自然语言处理算法、工业级完整系统实战(推荐算法系统实战、人脸识别实战、对话机器人实战)、就业/面试技巧/职业生涯规划/职业晋升指导等内容。

【充电了么公司介绍】

充电了么App是专注上班族职业培训充电学习的在线教育平台。

专注工作职业技能提升和学习,提高工作效率,带来经济效益!今天你充电了么?

充电了么官网
http://www.chongdianleme.com/

充电了么App官网下载地址
https://a.app.qq.com/o/simple.jsp?pkgname=com.charged.app

功能特色如下:

【全行业职位】 - 专注职场上班族职业技能提升

覆盖所有行业和职位,不管你是上班族,高管,还是创业都有你要学习的视频和文章。其中大数据智能AI、区块链、深度学习是互联网一线工业级的实战经验。

除了专业技能学习,还有通用职场技能,比如企业管理、股权激励和设计、职业生涯规划、社交礼仪、沟通技巧、演讲技巧、开会技巧、发邮件技巧、工作压力如何放松、人脉关系等等,全方位提高你的专业水平和整体素质。

【牛人课堂】 - 学习牛人的工作经验

1.智能个性化引擎:

海量视频课程,覆盖所有行业、所有职位,通过不同行业职位的技能词偏好挖掘分析,智能匹配你目前职位最感兴趣的技能学习课程。

2.听课全网搜索

输入关键词搜索海量视频课程,应有尽有,总有适合你的课程。

3.听课播放详情

视频播放详情,除了播放当前视频,更有相关视频课程和文章阅读,对某个技能知识点强化,让你轻松成为某个领域的资深专家。

【精品阅读】 - 技能文章兴趣阅读

1.个性化阅读引擎:

千万级文章阅读,覆盖所有行业、所有职位,通过不同行业职位的技能词偏好挖掘分析,智能匹配你目前职位最感兴趣的技能学习文章。

2.阅读全网搜索

输入关键词搜索海量文章阅读,应有尽有,总有你感兴趣的技能学习文章。

【机器人老师】 - 个人提升趣味学习

基于搜索引擎和智能深度学习训练,为您打造更懂你的机器人老师,用自然语言和机器人老师聊天学习,寓教于乐,高效学习,快乐人生。

【精短课程】 - 高效学习知识

海量精短牛人课程,满足你的时间碎片化学习,快速提高某个技能知识点。

你可能感兴趣的:(算法,人工智能,hadoop,机器学习,人工智能,大数据,数据挖掘,编程语言)