<img src="http://img.blog.csdn.net/20171231111930492?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvR2FtZXJfZ3l0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
<br>
打开微信扫一扫,关注微信公众号【数据与算法联盟】
转载请注明出处: http://blog.csdn.net/gamer_gyt
博主微博: http://weibo.com/234654758
Github: https://github.com/thinkgamer
推荐系统一直以来都是电商网站必不可少的一项,在提升用户转化,增加GMV方面可谓功不可没,那么一个好的推荐算法必然会创造更大的价值,刚好最近听了一个关于推荐算法的讲座,写出来一些思考吧,算是分享一下。
学术界的推荐系统
其实在大学期间也看过一些推荐的算法,还帮别人实现过关于推荐系统的毕设,但终究都是停留在协同过滤的层面,顶多是加了一些热门推荐来防止冷启动。不得不说,协同过滤打开了我对推荐系统认知的大门,当然在真实环境中这是远远不够的。
传统的推荐系统无非就是评分和排序两种方案,评分即计算出用户对item的可能评分,根据评分的高低进行排序,排序则不关心具体的评分是多少,只是为了得到一个顺序(其实这一点和推荐系统即为相似)。传统的推荐算法典型的有协同过滤和基于内容的过滤。如果你不明白什么是协同过滤算法可以参考:https://blog.csdn.net/gamer_gyt/article/details/51346159 ,如果你不知道协同过滤与基于内容的过滤的区别可参考:https://www.zhihu.com/question/19971859。
大学数学术界关于推荐算法的论文都是对协同过滤的改进,而最终得到一个相对于原先的算法有很大的提升的结果,但是这些都过于理想化了,真实的环境远比实验要复杂的多,网上最有名的推荐系统数据集莫过于那个电影评分数据了,里边只有用户对电影的评分,和电影的一些信息数据。建立在这些数据上的推荐算法其实有点理想化了,他并不能模拟出真实的电商环境,数据的缺乏也是导致协同过滤算法大行其道的原因。
工业界的推荐系统
工业界的推荐系统,需要的是明确的价值走向,比如说电商网站的推荐系统是为了增加交易总额,那么在进行推荐的时候是不是应该适当过滤一些极其廉价的商品,是否应该根据用户对不同价格段的需求进行不同价格段商品的推送;如果电商的推荐系统是为了增加用户停留时间,提交CTR,那么推荐系统就不应该考虑过多别的因素,只找到用户最感兴趣的商品或者评论等,当然如何找到用户最感兴趣的也是一个问题,但是有一点不可否认的是这些如果用传统的协同过滤来做是很难满足需求的。这时候就需要开发出新的推荐架构,来适应不同的需求。
目前工业界用的最多的算法莫过于GBDT,LR,DNN等,但所有的推荐算法都会面临一个海量数据的情况,这个时候的做法便是对数据集进行数据召回,得到用户比较感兴趣的一些数据,然后再根据我们的推荐模型进行素材偏好度排序,过滤掉用户已经购买过的类别数据,继而推送给用户。
那么如何进行数据召回呢?这就需要一些基础的模型进行数据准备,比如说用户肖像,用户的价格段偏好,用户购买力水平等。根绝已有的用户数据和特征进行数据召回,适度拉取一些新的数据,保证召回结果的多样性,得到召回池数据之后,便是对模型的训练,其实模型本身难度不大,难度大的是如何选取有效的特征来作为模型的输入数据。你组合得到的有效特征越多,对于模型的训练结果就越准确。
推荐系统的多样性
如何保证推荐结果的多样性呢,首先我们要先认识到推荐的可能性,比如说电商网页首页的推荐,商品详细页面的推荐,不同年龄下的推荐,推荐的结果和被评估的指标都是不一样的。这个时候不能单一对所有情况下使用同一种算法或者特征,而是要找到能够区分出不同位置,不同年龄的推荐结果的特征,进行模型训练。