开发工具:
文件大小: 1mb
下载次数: 0
上传时间: 2019-07-02
详细说明:随着大数据时代的到来,机器学习成为解决问题的一种重要且关键的工具。不管是工业界还 是学术界,机器学习都是一个炙手可热的方向,但是学术界和工业界对机器学习的研究各有 侧重,学术界侧重于对机器学习理论的研究,工业界侧重于如何用机器学习来解决实际问 题。我们结合美团在机器学习上的实践,进行一个实战(InAction)系列的介绍(带“机器 学习InAction系列”标签的文章),介绍机器学习在解决工业界问题的实战中所需的基本技 术、经验和技巧。本文主要结合实际问题,概要地介绍机器学习解决实际问题的整个流程, 包括对问题建模、准备训练数据、抽取特征、训练模型和优化模型等关键环节;另外几篇则 会对这些关键环节进行更深入地介绍。目标问题需要持续优化,因为机器学习可以基于数据自我学习和迭代,持续地发
挥价值。
对问题建模
本文以DAL(团购单)交易额预估问题为例(就是预估一个给定DEAL一段时间内卖∫多少
钱),介绍使用机器学习如何解决问题。首先需要
收集问题的资料,理解问题,成为这个问题的专家
拆解问题,简化问题,将问题转化机器可预估的问题。
深入理解和分析DEAL交易额后,可以将它分解为如下图的儿个问题:
业努问题:DEAL交易额预估
DEAL订单数
单价
用户数
访购率
单个模型?多个模型?如何来选择?
按照上图进行拆解后,预估DAL交易额就有2种可能模式,一种是直接预估交易额;另一种
是预估各子问题,如建立一个用户数模型和建立一个访购率模型(访问这个DEAL的用户会购
买的单子数),再基于这些子问题的预估值计算交易额。
·不同方式有不同优缺点,具体如下
模式缺点
优点
1.理论上
1.预估难可以获得
度大
最优预估
单模型
2风险比(实际上
较高
很难)
2一次解
决问题
单个子
模型更容
1可能产易实现比
生积累误较准地预
估
2训练和2可以调
应用成本
整子模型
的融合方
式,以达
到最佳效
果
选择哪种模式?
1)问题可预仁的难度,难度大,则考虑用多模型
2)问题木身的重要性,问题很重要,则考虑用多模型
3)多个模型的关系是否明确,关系明确,则可以用多模犁。
如果采用多模型,如何融合?
可以根据问题的特点和要求进行线性融合,或进行复杂的融合。以本文问题为例,至少可以
有如下两种:
EAL交易额=用户数模型*访购率模型*价格
DEAL交易额模型
用户数模型访购率模型商家特征用户特征产品特征价格
模型选择
对于DAL交易额这个问题,我们认为直接预佔难度很大,希望拆成子问题进行预佔,即多模
型模式。那样就需要建立用户数模型和访购率模型,因为机器学习解决问题的方式类似,下
文只以访购率模型为例。要解决访购率问题,首先要选择模型,我们有如下的一些考虑
主要考虑
1)选择与业务目标一致的模型;
)选择与训练数据和特征相符的模型。
训练数据少, High Level特征多,则使用“复杂”的非线性模型(流行的GBDT、 Random
Forest等)
训练数据很大量, Low Level特征多,则使用“简单”的线性模型(流行的LR、 Linear-SWM
等)
补充考虑
1)当前模型是否被工业界广泛使用
2)当前模型是否有比较成熟的开源工具包(公司内或公司外);
3)当前工具包能够的处理数据量能否满足要求;
4)自己对当前模型理论是否了解,是否之前用过该模型解决问题。
为实际问题选择模型,需要转化问题的业务目标为模型评价目标,转化模型评价目标为模型
优化目标;根据业务的不同目标,选择合适的模型,具体关系如下
业务目标技术目标
模型平价目标
模型优化目示
刀真实数值最准
MMAE
Suare loss
GBDT
购
大小顺序最优 aUci Maxinum likel ho,
LR
/1
I Hinge loss
预估正确区间
Precision和 Recall
==---==-4
通常来讲,预估真实数值(回归)、大小顺序(排序)、目标所在的正确区问(分类)的难
度从大到小,根据应用所需,尽可能选择难度小的目标进行。对于访购率预估的应用目标来
说,我们至少需要知道大小顺序或真实数值,所以我们可以选择 Area Under Curve(AUC)
或 Mean absolute error(MAE)作为评估日标,以 Maximum likelihood为模型损失函数(即
优化目标)。综上所述,我们选择 spark版本GBDT或LR,主要基于如下考虑
1)可以解决排序或回归问题;
2)我们自己实现了算法,经常使用,效果很好;
3)支持海量数据;
4)工业界广泛使用
准备训练数据
深入理解问题,针对问题选择了相应的模型后,接下来则需要准备数据;数据是机器学习解
决问题的根本,数据选择不对,则问题不可能被解决,所以准备训练数据需要格外的小心和
注意:
注意点:
待解决问题的数据本身的分布尽量一致;
训练集/测试集分布与线上预测环境的数据分布尽可能一致,这里的分布是指
(Xy)的分布,不仅仅是y的分布;
y数据噪音尽可能小,尽量剔除y有噪音的数据;
非必要不做采样,采样常常可能使实际数据分布发生变化,但是如果数据太大无
法训练或者正负比例严重失调(如超过100:1),则需要采样解决。
常见问题及解决办法
待解决问题的数据分布不一致
1)访购率问题中DEAL数据可能差异很大,如美食DEAL和酒店DEAL的影响因素或表现很不
致,需要做特别处理;要么对数据提前归化,要么将分布不一致因素作为特征,要么对各
类别DAL单独训练模型。
数据分布变化了:
)用半年前的数据训练模型,用来预测当前数据,因为数据分布随着时间可能变化了,效
果可能很差。尽量用近期的数据训练,来预测当前数据,历史的数据可以做降权用到模型,
或做 transfer learning
y数据有噪音:
1)在建立CTR模型时,将用户没有看到的Iem作为负例,这些Item是因为用户没有看到才没
有被点击,不一定是用户不喜欢而没有被点击,所以这些Item是有噪音的。可以采用一些简
单规则,剔除这些噪音负例,如采用skip- above思想,即用户点过的Item之上,没有点过的
Item作为负例(假设用户是从上往下浏览Item)。
采样方法有偏,没有覆盖整个集τ
1)访购率问题中,如果只取只有一个门店的DEAL进行预估,则对于多门店的DEAL无法很好
预估。应该保证一个门店的和多个门店的DEA数据都有
2)无客观数据的二分类问题,用规则来获得正/负例,规则对正/负例的覆盖不全面。应该
随杋抽样数据,进行人工标注,以确保抽样数据和实际数据分布一致。
访购率问题的训练数据
收集N个月的DEAL数据(X)及相应访购率(y);
·收集最近N个月,剔除节假日等非常规时间(保持分布一致)
只收集在线时长>T且访问用户数>U的DEAL(减少y的噪音)
考虑DEAL销量生命周期(保持分布一致);
·考虑不同城市、不同商圈、不同品类的差别(保持分布一致)。
抽取特征
完成数据°选和清洗后,就需要对数据抽取特征,就是完成输入空间到特征空间的转换(见
下图)。针对线性模型或非线性模型需要进行不同特征抽取,线性模型需要更多特征抽取工
作和技巧,而非线性模型对特征抽取要求相对较低
特征抽取(变换)
品牌
对于非线性
商家信息
1模型,可以门
刁店位置
仅仅简单变
换
DEA信息
折扣
对于线性模
用户信息
型,需要利方案内容
用 Domain
I Knowledge
做非线性变
产品信息
换(特征用户量
1组合)
用户偏好
输入空间
特征空间
通常,特征可以分为 High level与 Low Level, High level指含义比较泛的特征, Low Level
指含义比较特定的特征,举例来说
DEAL A1属于POIA,人均50以下,访购率高;
DEAL A2属于POIA,人均50以上,访购率高;
DEAL B1属于POIB,人均50以下,访购率高;
DEAL B2属于POIB,人均50以上,访购率底;
基于上面的数据,可以抽到两种特征,POI(门店)或人均消费;POI特征则是 Low Level特
征,人均消费则是 High level特征;假设模型通过学习,获得如下预估:
如果 DEALX属于POIA( Low Level feature),访购率高;
如果 DEALX人均50以下( High level feature),访购率高
所以,总体上, Low Level比较有针对性,单个特征覆盖面小(含有这个特征的数据不
多),特征数量(维度)很大。 High level比较泛化,单个特征覆盖面大(含有这个特征的
数据很多),特征数量(维度)不大。长尾样本的预测值主要受 High Level特征影响。高频
样本的预测值主要受 Low Level特征影响。
对于访购率问题,有大量的 High Level或 Low Level的特征,其中一些展示在下图
High Level特征
人均诗环境是否温馨菜品是否丰富
商圈的用户数
泛化能力培加
TILE字面
方汽内容宇面商圈
[菜显
不容易过找合
特征每个取值覆盖
的样本个数增加
ERID
DEALIO
Po T
特征区分能力下降
LISERID-DEALID
USERID-PCIID
Low.evel特征
作线性模型的特征
1)可以主要使用 High level特征,因为计算复杂度大,所以特征维度不宜太高
2)通过 High Level非线性映射可以比较好地拟合目标。
线性模型的特征
1)特征体系要尽可能全面, High level科 Low Level都要有;
2)可以将 High level转换 Low Level,以提升模型的拟合能力
特征归一化
特征抽取后,如果不同特征的取值范围相差很人,最好对特征进行归一化,以取得更好的效
果,常见的归一化方式如下
Rescaling
归一化到[0,1]或[-1,1],用类似方式
—n(x
marl T
Standardization
设
为x分布的均值,
为x分布的标准差
Scaling to unit length
归一化到单位长度向量
特征选择
特征抽取和归一化之后,如果发现特征太多,导致模型无法训练,或很容易导致模型过拟
合,则需要对特征进行选择,挑选有价值的特征
Filter
偎设特征子集对模型预估的影响互相独立,选择一个特征子集,分析该子集和数据 Label的
关系,如果存在某种正相关,则认为该特征子集有效。衡量特征子集和数据 Label关系的算
法有很多,如Chi- square, Information gain
Wrapper
选择一个特征子集加入原有特征集合,用模型进行训练,比较子集加入前后的效果,如果效
果变好,则认为该特征子集有效,否则认为无效。
Embedded
将特征选择和模型训练结合起来,如在损失函数中加入L1Norm,L2Norm。
训练模型
完成特征抽取和处理后,就可以开始模型训练了,下文以简单且常用的 Logistic
Regression模型(下称L模型)为例,进行简单介绍
设有m个(x,y)训练数据,其中x为特征向量,y为 label
y∈{0.,1}
;w为模型中参数向量,即模型训练中需要学习的对象。
所谓训练模型,就是选定假说函数和损失函数,基于已有训练数据(x,y),不断调整w,使
得损失函数最优,相应的w就是最终学习结果,也就得到相应的模型
模型函数
1)假说函数,即假设x和y存在一种函数关系
h(x)=P=1c:)=;1
1+e-r
2)损失函数,基于上述假设函数,构建模型损失函数(优化目标),在LR中通常以(x,y)
的最大似然估计为目标:
∑y" lochus(x()+(1
(i)log
优化算法
梯度下降( Gradient descent)
即w沿着损失数的负梯度方向进行调整,小意图见下图
的梯度即一阶导数(见下式),梯度下降有多种类型,如随机梯度下降或批量梯度卜降。
∑0
随机梯度下降( Stochastic gradient descent),每一步随机选择一个样木
,计算相应的梯度,并完成w的更新,如下式,
w =w+nL'(u=w+n(y()-h(x (2) (2)
批量梯度下降( Batch gradient descent),每步都计算训练数据中的所有样本对应的梯
度,w沿着这个梯度方向迭代,即
+n(x)=n+n∑(y0-b2(")n0
W
牛顿法( Newton' s Method)
牛顿法的基本思想是在极小点附近通过对日标函数做二阶 Taylor展开,进而找到L(w)的极小
点的佔计值。形象地讲,在w处做切线,该切线与L(w)=0的交点即为下一个迭代点wk+1(示
意图如下)。w的更新公式如下,其中目标函数的二阶偏导数,即为大名鼎鼎的 Hessian矩
L(
w::= L(U)U-HL(uy
拟牛顿法( Quasi- Newton methods):计算日标函数的二阶偏导数,难度较大,更为复杂的
是目标函数的 Hessian矩阵无法保持正定;不用二阶偏导数而构造出可以近似 Hessian矩阵的
逆的正定对称阵,从而在"拟牛顿"的条件下优化目标函数。
BFGS:使用BFGS公式对H(w)进行近似,内存中需要放H(w),内存需要0(m2)级别;
L-BFGS:存储有限次数(如k次)的更新矩阵
▲H
用这些更新矩阵生成新的H(w),内存降不0(m)级别
0WLQN:如果在目标函数中引入L1正则化,需要引入虚梯度来解决目标函数不可导问题,
0WQN就是用来解决这个问题。
10
15
25W-:3
5
4.5
5
Coordinate descent
对于w,每次迭代,固定其他维度不变,只对其一个维度进行搜索,确定最优下降方向(示
意图如下),公式表达如下
ER
26xy5y2-0.0z59=0
1.5
05
-05
05
优化模型
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.