互联网给用户带来了大量的信息,满足了用户在信息时代对信息的需求,但也使得用户在面对大量信息时无法从中获得对自己真正有用的那部分信息,对信息的使用效率反而降低了,而通常解决这个问题最常规的办法是推荐系统。
推荐系统能有效帮助用户快速发现感兴趣和高质量的信息,提升用户体验,增加用户使用产品时间,并有效减少用户浏览到重复或者厌恶的信息带来的不利影响,通常推荐系统越精准,用户体验就越好,用户停留时间也会越长,也越容易留住用户。
今日头条在北京国家会议中心举办了“算数·年度数据发布会”,数据发布会的主题名为“算数”,实际上指的是“算法”与“数据”,我也参加了这场发布会,有些收获不敢私藏与大家分享!
众所周知,今日头条是个个性化的新闻推荐引擎,在今日头条CEO张一鸣看来,算法是《今日头条》这款兴趣推荐搜索引擎应用的核心,这也是与传统媒体最本质的区别,今日头条之所以能够非常懂用户,精准推荐出用户所喜好的新闻,完全得益于算法,而正是精准推荐,使得今日头条在短短两年多的时间内拥有了2.2亿用户,每天有超过2000万用户在今日头条上阅读自己感兴趣的文章。
那么今日头条是怎么做到为每一个用户按兴趣精准推荐新闻的呢?在发布会上,今日头条的技术副总裁杨震原给我们揭秘了今日头条的个性化推荐核心“算法”。
1、今日头条的个性化推荐算法原理
如下图,有3篇文章,让3个用户投票[注:这3个用户是一类人,有相同属性(喜好和偏好)],那第4个用户应该被系统推荐的文章是那篇呢?第4个用户与前3个用户都是一类人,答案显而易见是第一篇文章。
没错,今日头条的个性化推荐算法原理就是基于投票的方法,其核心理念就是投票,每个用户一票,喜欢哪一篇文章就把票投给这篇文章,经过统计,最后得到结果很可能是在这个人群下最好的文章,并把这篇文章推荐给同人群用户过程就是个性化推荐,实际上个性化推荐并不是机器给用户推荐,而是用户之间在互相推荐,看起来似乎很简单,但实际上这需要基于海量的用户行为数据挖掘与分析。
2、今日头条是如何来划分人群和文章
搞技术的朋友都知道,内容推荐必须基于受众人群,只有在确定受众人群之后才能确定推荐内容,有的放矢才叫精准推荐。
上面那个例子只是很小的人群,但是现实生活中不会有这样小的人群,而且太小的人群通过推荐投票的方式也很难推荐出很精细的内容,只能推荐出一些热门内容,那今日头条是如何来划分人群?
我们假定上图这个人群有8万人,只有两类:一类叫喜欢科技的人群;一类喜欢娱乐的人群,我们先分成两类,每类有4万人,我们又找到另一个维度地域:上海和北京,喜欢科技的人有上海和北京的,喜欢娱乐的也有北京和上海的,我们把8万人群分成四组,每组两万,我们再找年龄,30岁以上和以下,我们分成8个人群,每个人群1万人,第1个是喜好科技,位置在北京,年龄30岁以上,这有1万人,我们再以下面的喜欢娱乐,地点上海,人群1万。
根据人群不同维度,我们可以细分到一个合理的力度。特别需要注意的是:在细分的领域里面投票数既不要太多,但也不要太少,因为太多没有个性化,仅是一个大众关心的话题而已,而投票数太少又没有统计意义,支持度就低了。
人群特征可以是阅读姓名,年龄,地域,职业等等,同理,文章也是类似的,文章有提到哪些名人,文章发布的时间,文章所属的地区等等,也都有很多特性,这些都是可以去组合起来。
3、今日头条是怎样判断一个人属于怎样的人群
判断一个用户属于怎样的人群相对简单,比如地域,用户的手机在什么区域,就可以认为用户是什么地域的;比如说用户兴趣,可以根据用户的阅读习惯去判断,用户会经常去看科技的文章,那就可以判断用户属于科技的人群;再比如说用户的好友关系,用户在今日头条上面注册了,用户的好友都是娱乐圈的人,则该用户很有可能也是娱乐圈的人。
所以通过用户在今日头条上行为,以及用户客观的地理位置信息,就能判断用户到底属于一个什么样的人群。
4、今日头条的个性推荐算法公式
精准推荐最难的不是划分人群,也不是判断用户人群归属,更不是文章属性判断,一个人可以属于多个人群,也有多个文章候选,选那个推荐才是最难的,而今日头条的推荐内容是怎么算出来的呢?
通过上图的计算公式:W1*候选1的投票率+W2*候选2的投票率+W3候选3的投票率+……=最高分,最后能计算出一个得分,按得分的高低来排序,就可以得到推荐文章的一个侯选,这个过程实际上是一个比较简单的算法,而这在今日头条内部叫逻辑回归。
总的来说,个性化推荐技术本身并不神秘,归根到底推荐算法关键是还在于对海量用户行为的数据分析与挖掘,也许各家算法略有不同,但最终目的都是殊途同归,为实现最精准的内容推荐而努力中(对于排序的算法,大家可查看一下SEO马龙博客《九大排序算法的实现方法及算法分析》的相关介绍)。
5、关于推荐算法的三大类
推荐算法大致可以分为三类:基于内容的推荐算法、协同过滤推荐算法和基于知识的推荐算法。
(1)、基于内容的推荐算法
基于内容的推荐算法的原理是用户喜欢和自己关注过的Item在内容上类似的Item,比如你看了哈利波特I,基于内容的推荐算法发现哈利波特II-VI,与你以前观看的在内容上面(共有很多关键词)有很大关联性,就把后者推荐给你,这种方法可以避免Item的冷启动问题(冷启动:如果一个Item从没有被关注过,其他推荐算法则很少会去推荐,但是基于内容的推荐算法可以分析Item之间的关系,实现推荐)。
弊端在于推荐的Item可能会重复,典型的就是新闻推荐,如果你看了一则关于MH370的新闻,很可能推荐的新闻和你浏览过的,内容一致;另外一个弊端则是对于一些多媒体的推荐(比如音乐、电影、图片等)由于很难提内容特征,则很难进行推荐,一种解决方式则是人工给这些Item打标签。
(2)、协同过滤算法
协同过滤算法的原理是用户喜欢那些具有相似兴趣的用户喜欢过的商品,比如你的朋友喜欢电影哈利波特I,那么就会推荐给你,这是最简单的基于用户的协同过滤算法(user-based collaboratIve filtering),还有一种是基于Item的协同过滤算法(item-based collaborative filtering),这两种方法都是将用户的所有数据读入到内存中进行运算的,因此成为Memory-based Collaborative Filtering,另一种则是Model-based collaborative filtering,包括Aspect Model,pLSA,LDA,聚类,SVD,Matrix Factorization等,这种方法训练过程比较长,但是训练完成后,推荐过程比较快。
(3)、基于知识的推荐算法
最后一种方法是基于知识的推荐算法,也有人将这种方法归为基于内容的推荐,这种方法比较典型的是构建领域本体,或者是建立一定的规则,进行推荐。
混合推荐算法,则会融合以上方法,以加权或者串联、并联等方式尽心融合。
当然,推荐系统还包括很多方法,其实机器学习或者数据挖掘里面的方法,很多都可以应用在推荐系统中,比如说LR、GBDT、RF(这三种方法在一些电商推荐里面经常用到),社交网络里面的图结构等,都可以说是推荐方法。
SEO马龙祥博客点评:
个性化推荐的主要思想八个字概括之:物以类聚、人以群分。主要的方法及变种应该有很多,像协同过滤、基于内容的推荐、基于标签的推荐等等,以后推荐系统一个趋势就是基于社交的,利用用户反馈进行实时推荐,多种推荐算法进行混合,从而达到一个较好的推荐结果。