《Spark机器学习进阶实战》——3.2 分类模型算法
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,则该事件的对数概率函数为:
针对二类分类,逻辑回归中输出Y=1的对数概率就是输入X的线性函数,这也是逻辑回归的本质所在,可以表示为如下公式:
将上式进行转换可以得到下式:
上式中的条件概率分布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,此时似然函数为:
经转换,可以得到对数似然函数:
针对对数似然函数的最优化问题,常用梯度下降法(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加快求解速度。
逻辑回归模型的优点在于原理简单、训练速度快、可解释性强、能够支撑大数据,即使在上亿的特征规模下,依然有较好的训练效果和很快的训练速度。缺点在于无法学习到特征之间的组合,在实际使用中,需要进行大量的人工特征工程,对特征进行交叉组合。
- 点赞
- 收藏
- 关注作者
评论(0)