查看原文
其他

数据挖掘系列篇之今日头条的个性化推荐

2017-06-07 面包君 R语言中文社区

作者:面包君 【数据分析联盟创始人,前支付宝资深数据人,VC投资人,《数据分析侠的成长故事》作者,7年大数据行业数据分析和产品从业经验】。

知乎专栏:https://zhuanlan.zhihu.com/dataman


今日头条作为一种新型的新闻阅读方式,已经将传统的新浪、腾讯、网易、搜狐这些新闻媒体以一种大数据+新闻内容的方式呈现给用户。上线没几年,用户量已经发展到3亿累计用户,日活奔着3000万去。看到这样的数据,小编还是比较震撼。这几乎是目前APP Top10的水平。所以有必要对今日头条好好研究下。


个性化推荐大体思路

简单来看下今日头条这类的个性化推荐要实现大概是什么样的流程:

(1)今日头条服务器1000台左右,通过代码实现的爬虫功能,在其他传媒的网站和门户上抓取各种信息。如果在网站上抓取到纸媒的内容,优先从纸媒门户上抓取信息

(2)抓取信息后,对有价值的信息通过算法进行分析归类。

(3)推送到有感兴趣的今日头条客户端。

(4)用户注册或登录(新浪微博、QQ、人人网)时,通过数据挖掘分析,对用户进行分析,推荐感兴趣的信息。

(5)推送后,根据用户的体验(阅读时间、评论)判断信息是否符合客户需求,再进一步调整推送信息内容。

(6)敏感信息审查。

(7)网页转码,手机信息打开纸媒或网站信息,因附带有大量广告或样式信息,下载速度很慢,影响用户体验,转码后保留内容资源,格式更适合阅读。

而我们在实际使用产品的过程中,1.可以订阅自己关注的频道;2.可以给自己不感兴趣的内容打上标签;3.内容有些少,推来推去还是那些;4.泛阅读,推荐的新闻都是即时性很高,阅后即焚,没有太多的精选文章;5.评论没有高质量的用户,都是比较短浅的评论;6.热点文章排序还有待提升。

在今日头条技术实现层面,重点包含两个环节:网络爬虫,算法推荐。

网络爬虫

以今日头条为例说明一下网络爬虫在新闻抓取中的工作流程:

STEP 1:工作人员先要在后台设置新闻来源的字典,比如“网易新闻”、“新浪新闻”、“凤凰新闻”、“浙江新闻”等等;

STEP 2:通过这些字典,网络爬虫将会锁定到这些网站的超链接,从中抓取新闻。

补充说明:

如果这条新闻是在这些新闻平台相关的博客当中的内容,而不是新闻平台本身的新闻,网络爬虫就抓不到了。

聚合媒体的概念并非如此简单,除了汇聚来自不同媒体的内容之外,聚合媒体更重要的特征是对不同信息进行分类并排序,得到一个信息汇总界面(aggregator),这种信息汇总往往表现为某种排行榜。这种排行榜在传播机制上满足网络科学中所说的“优先链接机制”,即用户的注意力更倾向于投向那些排名靠前的信息,这个过程可以被经典的传播学发现:“乐队花车效应”。这个发现起源于美国的选举过程。候选人会站在乐队花车上拉选票,赞同者会站到他的车上。研究发现,人们倾向于登上那些站满了人的花车,而非那些只有很少人的花车。

算法推荐

据了解,今日头条在实现个性化推荐上,重点引入了几个机制:算法排序+人工运营,还有重点介绍的A/B test+投票机制。

今日头条的用户登录非常人性化。作为一个后起之秀,今日头条非常具有策略性地允许用户使用微博、QQ等社交账号登录。这个过程实际上授权今日头条挖掘个人社交网络的基本信息。因而,便于获取用户的个性化信息,比如用户的兴趣、用户属性。越用越懂用户,从而进行精准的阅读内容推荐。

个性化推荐的基础是构建推荐系统

推荐系统广泛地应用于用户没有明确需求的场景。推荐系统就算法而言,可以分为:

社会化推荐(Social recommendation, 比如向朋友咨询);

基于内容的推荐(content-based filtering, 例如根据用户观看过的电影推荐其他与之相似的电影);

基于协同过滤的推荐(collaborative filtering,例如查看排行榜,或者找到和自己兴趣相似的用户,看看他们最近看什么电影)。

所以,可以用于构建推荐系统的信息也分为三类:好友、历史兴趣、注册信息。

推荐系统就是可以关联用户和物品的一种自动化工具。除了这些信息之外,时间、地点等信息均可加入到推荐系统的构建中来。现在,推荐系统已经广泛地应用于新闻推荐、图书推荐、音乐推荐、电影推荐、朋友推荐等领域,作为人工智能的一种形式,极大地方便了人们的生活和交往。

推荐系统算法的基础就是要构造相似性矩阵

这种相似性矩阵可以是物与物的相似性,例如书籍之间的相似性、音乐之间的相似性。以下以基于物品的协同过滤算法(item-based collaborative filtering, ItemCF)为例。基于物品的协同过滤算法可以利用用户的历史行为,因而可以使得推荐结果具有很强解释性。比如,可以给喜欢读足球新闻的用户推荐其它相似的新闻。基于物品的协同过滤算法主要分为两步:

STEP 1:计算物品之间的相似度。

STEP 2: 根据用户的历史行为生成用户的推荐列表。

假设有四个用户:

用户1在今日头条的浏览记录是[a、b、d],

用户2的浏览记录是[b、c],

用户3的浏览记录是[c、d],

用户4的浏览记录是[b、c、d];

可将这四个人的浏览行为表达为以下四个物品矩阵:


将个体用户的物品矩阵相加,可以汇总为所有的新闻矩阵M,M[i][j]表示新闻i和新闻j被多个人同时阅读的次数。如下所示:


矩阵逻辑

如果两个新闻被多个人同时浏览,那么可以说它们之间的相似度更高。

将以上矩阵归一化就可以对矩阵进行操作并计算新闻之间的相似度,比如相关相似度或者余弦相似度。

基于物品间的相似性度,如果有一个新用户进入系统,并且他阅读了新闻c,那么ItemCF算法可以很快给出与新闻c相似度最高的新闻(b和d),并推荐给这个新用户。

在推荐过程中,推荐系统可以根据用户的行为不断优化相似矩阵,使得推荐越来越准确。

或者,如果用户可以手动对每个新闻的兴趣(如喜欢或讨厌)标出,就可以使得推荐更准确。

本质上来说,上面两个图是热点新闻、以及个人定制新闻的基础原理。它分为两步完成:

STEP 1:先找出新闻之间的热点与相似度

STEP 2:将热点与相似度高的新闻推送给用户。

举个栗子——

假设在抗战胜利70周年当天,有4个人同时浏览今日头条的新闻,

A是女读者,她点击了秋季糖水制作方法、育儿应注意的五个事项、阅兵式、新型武器等新闻,

B是中年上班族,他点击了阅兵式、中国最新兵器谱等新闻,

C是一位年长者,他点击了养生、阅兵式、新型武器等新闻,

D是一位刚毕业的男大学生,他点击了英雄联盟攻略、好莱坞旅行攻略、阅兵式、新型武器等新闻。

热点和相似度的产生过程:

STEP 1:这四个人同时点击阅兵式和新型武器,系统算法就会通过点击和停留的时间计算出阅兵式和新型武器是当天的热点。

STEP 2:阅兵式和新型武器同时被多人点击,代表他们之间具有相似性。

STEP 3:当新进用户点击新闻时,今日头条会以最快速度分析他点击的内容,并在已经排查出的热点新闻当中寻找他所感兴趣的相关内容匹配给他,引导他阅读热点。

这一系列的行为都由计算机自动完成。

今日头条的个性推荐算法公式

精准推荐最难的不是划分人群,也不是判断用户人群归属,更不是文章属性判断,一个人可以属于多个人群,也有多个文章候选,选哪个推荐才是最难的。而今日头条的推荐内容是怎么算出来的呢?


通过上图的计算公式:W1*候选1的投票率+W2*候选2的投票率+W3候选3的投票率+……=最高分,最后能计算出一个得分,按得分的高低来排序,就可以得到推荐文章的一个侯选,这个过程实际上是一个比较简单的算法,而这在今日头条内部叫逻辑回归。

机制的缺陷

上面的例子说明了定制新闻以泛热点新闻为基础数据来完成的事实,这就出现一个问题,即当一个人关注的新闻不是热点时,系统得不到相关的热点,就会在该新闻当中寻找其他信息进行再匹配,这样匹配出的新闻在现有信息的基础上最大程度吻合了用户的兴趣,但未必会推送当天最热点的新闻。要想达到这种长尾理论所设想的定制服务,关键是对新闻的细分。只有将不同主题细分成各种子主题,再细分下设内容,才能达到真正的私人定制。要做到这一点,实际已经脱离了机械,而在于人对于事物性质的认知与把握。正如法国社会学家福柯在《知识考古学》当中的观点,分类,是一事物区别于其他事物的根本。而分类,归根结底是人的主观能动性的体现;当系统中累计的用户行为越 多,这种分类越准确,自动化的私人定制也会越贴近用户需求。

A/B测试、双盲交叉验证




怎么做A/B测试,第一步线上流量进行分流,正常用户还是走正常的流量,一部分流量我们要保证样本无偏(不要样本全是女的或者全是90后),通过科学方法去划分出一些流量做实验,还要进行分组,分出对照组和实践组,对照组和线上的策略完全一样,实验组我们做一些小小的改变。

比如头条网页版的首页,新版加了一个链接,老版加了一个任务评论。我们看哪个好呢?通过A/B测试的方式,一部分人看到新版的结果,一部分是老版效果。事后统计分析,看到底哪个版本效果好。




还有在验证过程介入双盲交叉验证。它是说在评估一项数据的时候,我可以把一部分样本抽样,让其他人再评估一下。根据抽样数据评估的一致性来判断该评估的可靠性怎么样,比如你审一些黄色反动的文章,机器做得再好,必须有人来把关。

这个事本身判断特别复杂,机器也不能做好,我们要保证评估的有效性,要引入争议复评机制。


人工运营

在头条刚才提到有些业务需要人工的评估。因为你文章如果分类分不准的话,可能就会影响你的推荐。有很多东西要人去审的,审核和评估都有一个问题,什么问题呢?它依赖人。

大家印象中人比机器靠谱的,从大的面上来说,机器比人更靠谱,机器不求回报。在互联网公司,审核和评估投入这块肯定比工程师低很多,这就造成两个后果,第一个就是审核人员敬业或者他的能力上可能跟工程师相比,他会有一定的差距,这是客观存在的。因为我们的人力成本也比较低。

第二个就是他的流动性可能比较大,另外标准经常变来变去。我们一定要用机器去监控人的工作怎么样,需要有一个预警。这块我们需要引入一个双盲的交叉验证,帮助我们去看这些运营同学他们工作的稳定性怎么样,同时去激励不断提升自己的判断力,得到机器更好的评估。




个性化推荐技术本身并不神秘,归根到底推荐算法关键是还在于对海量用户行为的数据分析与挖掘,也许各家算法略有不同,但最终目的都是殊途同归,为实现最精准的内容推荐而努力中。

快报:面包君 6月20日在Hellobi Live直播 《互联网金融行业大数据应用》

内容:1、互联网金融的发展历程  2、大数据在互联网金融的应用 3、 征信体系介绍 4、风控反作弊欺诈模型运用 5、互联网金融公司贷款授信 6、保险定价策略分析 7、量化投资应用 

 参加方式:阅读原文或扫码参加

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存