《Spark机器学习进阶实战》——3.2 分类模型算法

举报
华章计算机 发表于 2019/05/31 01:50:16 2019/05/31
【摘要】 本书摘自《Spark机器学习进阶实战》——书中的第3章,第3.2.1节,作者是马海平、于俊、吕昕、向海。


3.2 分类模型算法

机器学习中很多问题都可以定义为一个凸优化问题,凸优化问题是指在最小化要求下,目标函数是凸函数,变量所属集合是凸集合的优化问题。也就是说,找到关于w的凸函数f的最小值,目标函数定义如下:


其中,1≤i≤n,xi∈Rd是训练样本,而yi∈Z则是对应标签。

目标函数f包含两部分:控制模型复杂度的正则项,代表模型在训练数据上的误差的损失函数。正则项系数λ用来权衡两者关系,如果模型中L(w,x,y)可以表示成wTx和y的函数,则该模型为线性模型。

在MLlib中,支持的损失函数包括下面三种:

折页损失(hinge loss):max{0,1-ywTx},y∈{-1,+1},

逻辑损失(logistic loss):log(1+exp(- ywT x)),y∈{-1,+1}

平方损失(squared loss): (wT x-y)2,y∈R

其中,折页损失对应SVM模型,而逻辑损失对应逻辑回归。

在MLlib中,支持的正则项包括三种。一般来说,添加L2正则项的优化问题(平滑)比添加L1正则项的问题容易求解,而添加L1正则项可以产生稀疏解,而且模型的可解释性更强,Elastic Net是L1和L2正则的结合。一般来说,模型都要添加正则项,特别是数据量少的情形。

L1:||w||1

L2: ||w||22

Elasitic Net:α||w||1 + (1-α) ||w||22

MLlib使用随机梯度下降(SGD)和改进的拟牛顿法(L-BFGS)两种优化方法,大多数算法的API支持SGD,只有少部分算法支持L-BFGS。如果API支持L-BFGS,则推荐使用L-BFGS,L-BFGS相对于SGD收敛速度更快。

3.2.1 逻辑回归

逻辑回归(Logistic Regression,LR)是一种常用的分类算法,凭借着简单和高效的优势在实际应用中广泛使用。逻辑回归模型的预测结果的值域为[0,1],所以可以看作概率模型;对于二分类来说,逻辑回归的输出等价于模型预测某个样本点属于正类的概率。

一个事件的概率是指该事件发生的概率与不发生的概率的比值,如果该事件发生的概率为p,则该事件的对数概率函数为:

image.png

针对二类分类,逻辑回归中输出Y=1的对数概率就是输入X的线性函数,这也是逻辑回归的本质所在,可以表示为如下公式:

image.png

将上式进行转换可以得到下式:

image.png

上式中的条件概率分布P(Y=1|x)也就是模型的最终输出,其范围为[0,1]。如果x的线性函数w·x越大,则条件概率值越接近于1。相反,如果x的线性函数w·x越小,则条件概率越接近于0。一般可以设定某一阈值β(0<β<1),如果P(Y=1|x)>β,则认为输入x的标签为1,否则标签为0。

给定训练集合,T={(x1, y1),…(x2, y2),…,(xn, yn)},其中,xi∈Rn, yi∈{0,1},可以使用极大似然法估计模型的参数w。假设P(Y=1|x)=π(x),P(Y=0|x)=1-π(x)。类标签yi取值0或者1,此时似然函数为:

image.png

经转换,可以得到对数似然函数:

image.png

针对对数似然函数的最优化问题,常用梯度下降法(Gradient Descent,GD)或者拟牛顿法(Broyden Fletcher Goldfarb Shanno,BFGS)进行求解。

实际中,对于特征规模很大的逻辑回归模型,使用改进的拟牛顿法L-BFGS加快求解速度。在MLlib库中,逻辑回归支持二分类和多分类,多分类是通过K*(K-1)/2个二分类模型实现的。MLlib支持两种优化算法求解逻辑回归问题,小批量梯度下降(Mini-batch Gradient Descent)和改进的拟牛顿法(L-BFGS),分别对应LogisticRegressionWithSGD和LogisticRegressionWithLBFGS,实际工作中,对于特征规模很大的逻辑回归模型,使用改进的拟牛顿法L-BFGS加快求解速度。

逻辑回归模型的优点在于原理简单、训练速度快、可解释性强、能够支撑大数据,即使在上亿的特征规模下,依然有较好的训练效果和很快的训练速度。缺点在于无法学习到特征之间的组合,在实际使用中,需要进行大量的人工特征工程,对特征进行交叉组合。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。