逻辑斯蒂回归(Logistic Regression)
转载请标明出处:http://blog.****.net/wuzqchom/article/details/74016215
在之前的博客,简单的介绍了线性回归,今天来看看和其十分相关的Logistic Regression。
1. 问题背景
线性回归可以让我们呢学习得到特征和目标label的权重关系,新来的一组测试样本,用同样的特征,它可以告诉我们一个预测值。但是很多时候我们需要的是一个更加有意义的值,比如在CTR预估的时候我们预测用户点击投放广告的概率,医院里预测一个人心脏病发的概率。Logistic Regre(LR)就可以做这么一件事。
2. 初窥
首选来看看Sigmoid函数,其函数表达式为:
函数图像如下(摘自维基百科):
我们可以看到他把所有的x值都映射到(0,1),可以很好的满足我们的需求。其实Logistc Regression的本质就是线性回归套上一个Sigmoid函数,合并起来之后,其函数表达式如下所示(将中的b看成是):
3. 真容
函数表达式有了,那么我们应该如何去学习一个目标呢,即要学习的参数有哪些呢?上式中要估计的参数为和。我们使用最大似然法来求解。之前的线性回归问题用的损失函数是Squared Error,但是LR用的在实际使用的是时候是一种分类学习算法。所以均方误差并不合适,取而代之的是Cross-Entropy error。下面看看推导吧。
假设我们有训练样本,那么对于训练样本的似然函数为:
对于上式我们需要最大化似然,求解得到参数即可。
其中为我们的目标的hypothesis,由于对于所有的都是一样的,所以:
PS:
即为伯努利分布,这也是Logistic Regression适合用于分类的原因。
我们的目标是求参数的取值,使用代入得到目标:
取对数得 ,又因为是一个指数表示的形式,所以原来的累乘可以变成累加形式,并将最大化问题转换成最小化问题:
其中只是为了使得和损失函数在形式上的统一, 称之为cross-entropy error。
PS:
这里可能有人说好像和其一些地方的cross-entropy
error不太一样,这是因为本文使用的label为=1或-1,但代进去就会发现两个表达式的结果是一致的。
4. 一步之遥
既然有了损失函数之后,我们要做的就是然这个损失函数最小化就好了。由于LR的损失函数是一个高阶可导连续的凸函数,那么根据凸优化理论就可以使用梯度下降法来求得其最优解,我们需要一个优化的方向和一个learning rate。
方向可以由梯度得到,对求导即可。学习率是一个超参。因此整个过程可以描述如下:
initialize for t=0,1,…
1.计算:
2.更新直到 或者一定的迭代步数之后停止循环。
5. 尾巴
LR看起来是一个简单的模型,但据我所知在工业界还是挺受欢迎的,原因就在于它虽然简单,但是够稳定,可解释性好。但是LR本质上毕竟是一个线性模型,学习能力有限。
这里对于LR是线性模型可能有人会有一些疑问,LR明明用了一个sigmoid变换啊,而sigmoid不是可以作为神经网络的一种叫做**函数的东西,这还是线性模型?这里LR和神经网络不同的是,LR只是通过sigmoid函数将线性回归的预测值映射到(0,1),但其决策的平面还是线性的,所以LR本质上还是一个线性模型。
一种方法是前期加入一些特征工程的工作(比如,不同特征进行组合),使得其达到拟合非线性的效果。还有一种方法就是使用模型来组合特征(如Facebook 2014年文章中的GBDT+LR),然后再将这些特征送到LR做分类。最近阿里公开其自主研发的MLR(Mixed Logistic Regression)算法,通过分片线性的方式,使其可以直接在原始空间学习非线性关系,实现拟合非线性的平面。最后,当然还可以使用近几年很火的DNN来自动提取特征了,再接一个LR或者softmax,但很可能会遇到过拟合的问题以及模型的稳定性都是一个值得商榷的问题。
以上内容均为博主根据相关资料整理而成,如有错误,请予指正。
转载请标明出处:http://blog.****.net/wuzqchom/article/details/74016215
参考资料:
1. 周志华.《机器学习》p58-p59
2. 林轩田. 机器学习基石课程 Lecture 10