今日头条推荐系统解密.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
今日头条推荐系统解密

今日头条推荐系统解密首先声明本文是技术讨论贴,不是技术泄密贴。作者本人是另一个聚合阅读产品摘客的技术架构工程师,非今日头条员工。本文技术架构对于爬虫、大数据平台、推荐算法等理解不足之处,欢迎大家指正。推荐系统大的来说分为四类:基于人口统计学的推荐、基于内容的推荐、基于协同过滤的推荐和混合的推荐机制【1】。先简单介绍一下这几类的区别。基于人口统计学的推荐就是对用户按属性进行分类推荐,比如按年龄、性别、城市、消费能力等用户天然自带的属性分类,然后推荐不同商品。基于内容的推荐是按物品的天然属性进行分类推荐,比如按物品的功能、价格、产地、类型等物品自带的属性进行分类推荐。基于用户的协同过虑,找有相似购物列表的用户定义为相似用户。从相似用户购物列表中找目标用户没买的物品推荐。和基于人口统计学的推荐不同的事评价两个用户相似与否用的是用户的购物列表比较。基于物品的协同过虑,有相似用户的物品定义为相似物品。从相似物品中找目标用户没有购买的物品推荐。混合推荐就是融合几个推荐策略的结果到一个最终的推荐列表中。融合的方法包括加权、分级、调制和过滤。 基于用户的协同过虑相当于把下图每行看成一个向量,寻找相信用户,推荐相似用户没有的物品;基于物品的协同过虑相当于把下图每列看成一个向量,寻找相似物品,然后推荐相似物品给空缺的用户。 有了上面的铺垫,我们大概知道了推荐系统的常见算法。下面我们来分析对于今日头条这个用户过亿的APP,怎么有效的给用户推荐内容。 推荐的第一步是获取内容,目前开源的爬虫包括Java的Nutch、WebMagic,Python的Scrapy?等。Nutch 完全构建在 Hadoop 分布式计算平台之上,可以部署在由成千上万计算机组成的大型集群上。 Nutch 在垂直搜索、档案互联网搜索等领域得到了广泛应用【2】。Scrapy使用了Twisted异步库来处理网络通讯,是一个优秀的Python网络爬虫。WebMagic的设计参考了Scrapy的架构,并整合了HttpClient、Jsoup等Java最成熟的工具,是一个优秀的轻量级Java爬虫,也是我们摘客目前在使用的爬虫。考虑的数据抓取量,我们有理由相信今日头条用的是Nutch框架。抓取到网页之后,需要将网页信息处理成文本,然后分词和去停止词。目前中文分词主要用两个工具: java的ANSJ和python的Jieba。两个都可以自定义指定分词库和停止词库,在Github上可以找到对应代码,在此就不赘述了。以摘客项目的经验来看ANSJ分词的效果更好一点。 推荐系统的一大特点就是要对推荐物品做特征化处理,对新闻而言就是挑一些有代表性的特征词。比如传统内容网站会在编辑人员输入完文章时,必须要指定一些Tag。以今日头条的新闻抓取量,如果是人工加Tag,会是一项非常费时费力的工作。所以自动化Tagging应该是首选方案。这里提几个自动化Tagging的方案。一个简单的方案是准备一个Tag库,用Tag匹配标题和文章第一段话,如果匹配上打这个Tag。用TFIDF算出新闻最有代表性的词,和Tag库匹配,匹配上的Tag作为文章Tag。用分类的方式,将每个tag看成一类。用机器学习的方式对文章分类,对应的类名为文章Tag。 TFIDF其实是一个简单高效的方式。根据信息论,一篇文章的TFIDF值越大,其包含的信息量越大。所以TFIDF值越大的词是越有可能代表这篇文章的。 上面这么多准备工作完成后就可以进入正题:推荐。在用户不多的时候,协同过滤效果不会很好,基于内容的推荐是首选方案。假设用户对各个Tag的偏好矩阵(UT)是这样的:?时尚汽车体育财经军事国际科技张三1.350.80李四001.30王五0.90.20001.61.9这个偏好矩阵可以通过用户画像得到。假设文章和Tag的矩阵(AT)是这样的:?时尚汽车体育财经军事国际科技A100001.800A20.81.500000A3001.30000这时基于内容的推荐方案有两种:UA1=Max(UT1*AT1, UT2*AT2…) =kUA2=(UT1*AT1+UT2*AT2…) =k第一种方式是挑文章最有代表性的Tag推荐给用户。第二种是计算文章每个Tag权重之和对用户推荐,相当于UT和AT两个矩阵的点积。实际中我们更偏好第一种方案,因为文章只要在一个方面很突出,恰好用户喜欢这个类别,就可以推荐给用户了。而不是Tag很多的那些综合性的文章会胜出。 对于今日头条用户量大,内容量大,协同过滤也是一个不错的选择。以基于用户的协同过滤为例,可以用Person相关系数或余弦相似度找出用户的一些相似用户。相似用户阅读较多的内容推荐给目标用户。上图中潜在因子模型是利用矩阵分解

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档