从先进走向普遍的广告和推荐系统方法之一: 在线学习 | AlgorithmDog

标签: | 发表时间:2018-04-15 18:27 | 作者:
出处:http://www.algorithmdog.com

      广告和推荐系统作为机器学习领域的“摇钱树”,一直受到广泛的关注。在这 5 年,或者说 10 年的维度上,广告和推荐系统发生了改头换面的变化。传统的方法已经远去,一时先进的新兴的方法广泛走向千家万户。今天介绍的在线学习,就已经从先进走向了千家万户。

      

      广告和推荐系统的 CTR 预估模型有三种部署形态: 离线预测,在线预测和在线学习,其中在线学习是近几年迅速推广的架构。

1. 离线预测

      离线预测的架构很简单,其要点离线计算好所有的可能的预测结果。具体过程如下所示:1)在线上,从用户和物品属性抽取用户和物品特征,将抽取的特征合并进日志生成训练数据,训练机器学习模型;将几乎所有可能的请求合并特征,进而生成预测实例,用模型得到预测结果;2)线上就很简单了,接入线下传过来的预测结果。这里稍微难理解的是 “穷尽几乎所有可能的请求”,疑惑那么多可能的请求怎么可能穷尽呢?微博广告系统(虚构的)所有可能的请求貌似很多,但每个用户只需要匹配若干个广告就行了。因此微博广告系统的预测结果 “userid,adid1,adid2…,adidn” 上载到线上,一旦线上传一个 userid 请求展示广告,线上模块就按照一定的逻辑返回预测结果中这个用户对应的广告。

      离线预测架构最大的优势是简单,其将机器学习全过程和绝大部分控制逻辑都搬到线下,规避了线上的各种隐患。这样不那么厉害的工程师用不那么厉害的机器也能搞定线上模块了,毕竟线上模块只需要实现少量的控制逻辑和展示。这大大降低了建立一个广告和推荐系统的难度。

      离线预测架构也有其劣势,其中两个突出问题是系统开销大和灵活性不够。系统开销大主要是预测时需要对所有可能用户物品对进行预测,消耗大量的系统资源。这逼得我们发展出一系列的预测优化技巧,我之前的工作: 超大规模 LR 预测优化便是优化了 LR 的预测性能,使之 10 分钟处理完 380 亿量级的预测实例,应该能够处理万亿级预测数据。腾讯同学可以关注下 km 中 wxg 同学的文章:万亿级实例打分预测,优化了 XGBoost 的预测性能,使之能够处理万亿级预测数据。离线预测架构的另一个大问题就是灵活性不够,比如离线预测架构完全无法支撑用强化学习或者多臂老虎机解决冷启动问题。

      为了解决这些问题,我们引入在线预测架构。很多大团队直接跳过了离线预测架。我 2010 年在百度实习见识的就是在线预测架构了。

2. 在线预测

      在线预测的广告和推荐系统过程如下所示:1)线下部分,从用户和物品属性抽取用户和物品特征,把抽取的特征合并进日志生成训练数据用于训练机,并把抽取的特征上载到线上 Redis 服务器;2)线上部分,来了一个请求,从 Redis 服务器取出用户和物品特征,将特征合并进请求生成预测实例,用线上模型得到预测结果。

      在线预测解决了离线预测的问题,系统变得更加灵活,也变得更加复杂了。随着数据量的增加,业务场景多样化,在线预测面临了两个突出问题。

      第一个问题是系统性能。随着特征工程和深度学习的发展,机器学习要求和能够利用的数据量越来越多。这个时候线下训练需要的系统资源和时间越来越长。训练系统需要利用十亿级,甚至百亿级的训练数据,需要大规模分布式训练,很多时候需要一整天时间。

      第二个问题是实时性。离线训练差不多要一天收集数据,训练差不多需要半天,上线的模型得到的是一天前的规律。另外还存在一个问题,我们生成训练数据是用日志 userid, itemid, is_click,拼接数据库中用户 (user) 和物品 (item) 的属性。我们使用的用户和物品的属性是一个时间切片的,而日志记录的浏览点击行为发生在不同时间。这些浏览点击行为发生时间的用户和物品属性,和数据库中的用户和物品属性不一致,生成的训练数据就有偏差。用户行为与用户状态紧密关联的情况下,比如刚刚买奶粉就不会再买奶粉,训练数据的偏差就会造成很大的问题。

3. 在线学习

      为了解决在线预测的系统性能和实时性,人们发展出了在线学习的框架。在线学习是在线预测的基础上更进一步,将模型的训练也搬到了线上。在线学习架构和在线预测架构基本相似,区别在于:业务系统根据广告和推荐系统预测做出相应动作,并得到用户反馈之后,将展示点击记录给还给广告和推荐系统;广告和推荐系统根据业务系统的反馈,在线更新模型。

      对于广告和推荐系统性能的影响。在线学习并不直接提升训练效率,也不减少训练样本数量。整体训练时间和资源效率并不会减少。但是在线学习改变了模型完全训练完才部署上线的模式,使得模型能够边训练边部署。这样对模型训练的耗时的要求就降下来了。

      对于广告和推荐系统实时性的影响。这样模型训练能够使用最新训练样本,就能时刻保持最新状态。同时,由于用户和物品属性的迁移会近乎实时地更新到广告和推荐系统中,避免了训练数据中用户物品属性和用户行为直接的时间差。

      上图就是在线学习简略框架图。从工程复杂度来说,离线预测最容易,在线预测次之,在线学习最难;从灵活性和效果性来说,离线预测最差,在线预测次之,在线学习最好。

4. 总结

      在这 5 年,或者说 10 年的维度上,在线学习的广告和推荐系统就从先进走向了普遍。业内很多广告和推荐系统都进入了在线学习模式。这个发展速度是机器学习领域蓬勃发展的一个侧面,反映了整个人工智能技术的快速推进。

      我们这些计算机同学需要一直适应,利用甚至推动技术的快速进步。因为跟不上,就落后了。这是我们的宿命,也是我们开心的来源吧。停留在 “技术往往体现在‘最恰当’几个字上面” 的同学们还是自勉吧。

相关 [广告 推荐系统 方法] 推荐:

从先进走向普遍的广告和推荐系统方法之一: 在线学习 | AlgorithmDog

- -
      广告和推荐系统作为机器学习领域的“摇钱树”,一直受到广泛的关注. 在这 5 年,或者说 10 年的维度上,广告和推荐系统发生了改头换面的变化. 传统的方法已经远去,一时先进的新兴的方法广泛走向千家万户. 今天介绍的在线学习,就已经从先进走向了千家万户.       广告和推荐系统的 CTR 预估模型有三种部署形态: 离线预测,在线预测和在线学习,其中在线学习是近几年迅速推广的架构.

推荐系统的评测方法及指标

- - 我爱机器学习
首先声明,以下内容是看了项亮的《推荐系统实践》后 写的,内容基本出自该书,只是我自己再归纳总结一下而已(以免喷子又喷). 推荐系统中,主要有三种评测推荐效果的实验方法:. 往往是从日志系统中取得用户的行为数据,然后将数据集分成训练数据和测试数据,比如80%的训练数据和20%的测试数据(还可以交叉验证),然后在训练数 据集上训练用户的兴趣模型,在测试集上进行测试.

Min-Hash和推荐系统

- - xlvector - Recommender System
前几年看Google News Recommendation的那篇Paper,对里面提到的MinHash的算法基本没有注意,因为之前的习惯都是只注意论文的模型那块,至于怎么优化模型一般都只是扫一眼. 不过最近看了大量的Google Paper,发现Google在实现一个算法方面确实有很多独到之处. 其实,Min-Hash是LSH(Locality Sensitive Hash)的一种,我之前对LSH的了解仅仅限于知道它能把两个相似的东西Hash成两个汉明距离接近的2进制数.

推荐系统实战

- - 博客园_首页
推荐算法:基于特征的推荐算法. 推荐算法准确度度量公式:. 其中,R(u)表示对用户推荐的N个物品,T(u)表示用户u在测试集上喜欢的物品集合. 集合相似度度量公式(N维向量的距离度量公式):. 其中,N(u)表示用户u有过正反馈的物品集合. 其中,S(u,k)表示和用户u兴趣最接近的K个用户集合;N(i)表示对物品i有过正反馈的用户集合;w(u,v)表示用户u和用户v的兴趣相似度;r(v,i)表示用户v对物品i的兴趣.

推荐系统杂谈

- - 后端技术杂谈 | 飒然Hang
推荐系统是近些年非常火的技术,不管是电商类软件还是新闻类app,都号称有精准的推荐系统能给你推送你最感兴趣的内容. 现象级的资讯类app“今日头条”就得益于此成为了势头非常猛的一款产品. 本文就针对推荐系统讲述一些相关概念和实践经验. 首先需要明确的就是推荐系统的目标,一般来说不外乎以下几个:. 用户满意性:首当其冲的,推荐系统主要就是为了满足用户的需求,因此准确率是评判一个推荐系统好坏的最关键指标.

个性化推荐系统综述

- Tony - 所有文章 - UCD大社区
上个月写过一篇产品推荐的文章,详情请见《我所了解的产品推荐》,内容很泛,多为工作心得. 本周读了几篇相关的论文,收获颇多,分享点干货. 以下内容摘自《个性化推荐系统的研究进展》,该文发表于2009年1月的《自然科学进展》专题评述,作者是刘建国、周涛、汪秉宏. 我略去了具体的算法和许多公式,重点看原理、思路和比较.

推荐系统开源工具 – SVDFeature

- Roger - Resys China
SVDFeature是我们(上海交大Apex实验室)在参加KDDCUP 2011期间开发的. 通过这个工具,我们和港科大(HKUST)的联合小组InnerPeace在KDDCUP 2011中获得Track 1第三名,并创造单模型最好成绩. 在此分享给大家,并希望和大家有更多的交流. (1)基于feature的可扩展性 —— SVDFeature实现了我们的基础模型feature-based matrix factorization.

Reculike : 开源论文推荐系统

- votis - Resys China
今天这篇博文主要总结一下reculike的系统架构. 两周前我们宣布发布了reculike的alpha版. 本着分享的原则,今天在这儿介绍一下我们的各个模块的设计方法. 我们这个项目一开始叫paperlens,这是因为我们想学习业界的前辈movielens,开发一个源代码和数据都开源的系统. 关于数据的开源,我想当用户数达到一定程度后,每个月会dump一次我们所有的数据库(密码等隐私信息除外),放到网络上供大家下载.

推荐系统那些事儿1

- - 冰火岛
知识库:用户知识库,Item知识库,用户评分数据(显性和隐性)等.不同的业务背景不一样,譬如电商,社交网络,视频,app应用等. 协同过滤引擎:根据用户评分数据集,通过collaborative filtering方法,计算用户喜欢的top N item. 数据格式: userid, itemid,score.

下一代个性化推荐系统

- - 技术改变世界 创新驱动中国 - 《程序员》官网
本文结合技术及社会需求发展的大背景,讲述了当前推荐系统的价值及所面临的挑战,并指出了下一代个性化推荐系统的设计思路及需要注意的问题. 作为个性化推荐系统核心的协同过滤(Collabora-tive Filtering)算法,是Goldberg等人在1992年的一篇学术论文中最早提出的. 他们在这篇文章中提出一种方法,在一个新闻组中,根据 用户下载的新闻计算他们之间在口味上的相似程度,并利用这种相似程度为他们进一步推荐相关的新闻.