一淘广告机器学习
DESCRIPTION
#LAMP人#第14期《海量数据挖掘与应用 – e淘专场》 之 《一淘广告机器学习平台》- 蒋龙(昙宗)TRANSCRIPT
1
一淘广告机器学习平台
蒋龙(昙宗)
2012年4月
内容提要
• 机器学习
– 机器学习与互联网广告
– 并行计算与机器学习
• 一淘广告中的机器学习
– 广告点击率预估
– 混合逻辑回归模型
机器学习
• 计算机自动从数据中发现规律,并应用于解决新问题
– 给定数据(X1,Y1), (X2,Y2), … ,(Xn,Yn)
– 对新的Xi,预测其Yi
– 例子
• 智商测试:1, 3, 6, 10, ?
– (1,1),(2,3),(3,6),(4,10) ,(5,?)
– f(n) = (n^2+n)/2
机器学习与互联网
• 机器学习技术
– 分类,聚类,回归,排序...
• 互联网应用
– 用户分类,网页/新闻分类,Query分类,商品分类
• 同样于聚类
– 点击率预估
– 网页搜索排序
互联网广告
• 广告
– 恰当的用户,恰当的环境,恰当的内容
– 广告主,广告平台,用户共赢
• 机器学习应用
– 用户的偏好和需求理解
– 广告内容理解
– 相关性计算(用户,环境,内容)
– 展现分配
挑战
• 海量数据
– 训练样例
• 每天的访问量上亿级别
• 相关信息不断累积
– 特征空间
• 用户,Query,广告,商品,图片,文字,销量…
• 时效性
– 实时反应数据的变化
MPI并行计算
• 消息传递接口(Message Passing Interface,
MPI)
– 并行计算编程模型
– 通过在进程间传递消息完成数据交换
• MPI基本函数
– Init, Finalize
– Comm_size, Comm_rank
– Send, Recv,
MPI与Map-Reduce
• MPI模型 – 基于进程通信的计算模型
– 程序员能更多控制内部交互
– 适合逻辑复杂的分布式运算,如机器学习算法
• Map-Reduce模型 – 适合独立的线性计算过程
– 超大数据量进行并发计算
– 内置容错逻辑
• 综合利用 – 利用Map-Reduce模型处理数据
– 利用MPI进行模型训练
阿里Hadoop集群
• 2000+台机器
– 几十PB容量
– 扫描数据>1PB/天
• 适合于数据处理
– 商品,日志,用户
一淘MPI集群
• 2011年启动
– 100+台机器
• 算法
– 逻辑回归
– 混合逻辑回归
• 应用
– 广告点击率预估
– 广告质量分计算
内容提要
• 机器学习
– 机器学习与互联网广告
– 并行计算与机器学习
• 一淘广告中的机器学习
– 广告点击率预估
– 混合逻辑回归模型
广告点击率预估
• CPC广告排序规则 – RankScore = CTR*BidPrice
• BidPrice:广告主出价
• Ctr:广告的点击率
– 排序时CTR未知,需要预估
• 任务
– 搜索广告 • 给定一个query,估计该每个广告的ctr
– 定向广告 • 给定一个用户,估计每个广告的ctr
广告点击率预估
• 逻辑回归模型
• 参数估计 – 最大似然法
– 基于L-BFGS算法快速迭代计算
)( 01
1)|1(
ii xe
XYP
ii xp
p0
0
1 )(ln
特征来源
• 商品/广告信息:
– 文字描述、类目、价格、成交量等
• 卖家信息:
– 信誉度、收藏数据量等
• 用户信息:
– 历史搜索、点击、购买、收藏记录等
• 其他信息
– 季节、节假日等
模型训练
• Hadoop原始数据
– ~100TB
– 处理时间:~5小时
• 基于MPI的模型训练
– 十亿级特征
– 百亿级训练样例
– 运算时间:~10小时
效果评价
• 线下评估:
– AUC评估:真实ctr高的广告是否预测ctr也高?
– MAE/MSE评估:预测值是否和真实值差距小?
• 人工评估
– 预估ctr高的广告是否好广告?
• 线上评估:
– 对比基准系统CTR是否提升?
Hadoop超大规模特征抽取
实验评估
小结
MPI集群分布式模型训练
混合逻辑回归模型
• 问题
– 目前在业界广泛使用的传统逻辑回归模型无法抓住数据的非线性关系
• 非线性关系
– 已知数据
1. 广告历史CTR: ad_ctr
2. 广告历史PV:ad_pv
3. 广告所在类目CTR:cat_ctr
– 一种可能的预测规则为
如何解决?
• 方法一:使用特征变换
– 在使用线性模型之前,对特征进行预变换 • (单维特征)离散化、(单维特征)交叉
– 问题: • 离散化区间过少,则表达能力不足
• 离散化区间过多,则面临数据稀疏问题
• 离散化、交叉的选择太多,费时费力,很难找到较好的处理方式
• 特征数多时,无法穷举所有的交叉组合,因此仍然不能完全抓住数据的非线性关系
如何解决?
• 方法二:使用非线性学习机器
– 1. 决策树和GBDT类(boosting)
• 问题1:对维数很大的数据不适用(会生成过多的树叶,造成计算复杂度问题以及推广性问题)
• 问题2:模型的预测输出对输入特征是不连续的。造成突变影响预测值的稳定性,也影响推广性能
– 2. 其它非线性学习机器,例如kernel SVM等
• 问题:无法适用于大规模数据
如何解决
• 我们的方法 – 适用于大规模、高维度数据的非线性学习机器—混合逻辑回归模型
• 重新考虑:
– 简单原理解释:首先,根据一个线性模型ad_pv-K的值将数据分别分到两个领域中:
• 第一领域内使用线性模型ad_ctr预测;
• 第二个领域内用另一个线性模型cate_ctr预测。
总结
• 互联网->机器学习->并行计算
• 一淘广告中的机器学习
– Hadoop处理数据
– MPI集群训练模型
– 模型创新:混合逻辑回归模型