Logistic Regression(逻辑回归)简介


逻辑回归模型(Logistic Regression)是一个重要的有监督二类分类模型,在计算广告学中有着非常广泛的应用。在求职过程中发现各大互联网公司凡是涉及广告工程师的岗位面试几乎都会问到逻辑回归,因此在这里作一个总结。

1.什么是逻辑回归

Logistic Regression 属于广义线性模型(generalized linear model)的一种,是基于Sigmoid函数(又叫“S型函数”)的有监督二类分类模型。Sigmoid函数公式为:

其导数形式为:

Logistic Regression(逻辑回归)简介_第1张图片

注意,这个导数形式在求解参数的推导过程中会用到。


 取值范围被压缩在0到1之间,其图像如下图所示:

Logistic Regression(逻辑回归)简介_第2张图片


我们知道有监督分类问题需要有带类别标记的训练样本,中的 就对应训练集中某个样本的信息。 而样本信息通常用一系列特征的线性组合来表示,即


其中 表示 n 个特征,是每个特征的权重,代表对应特征的重要程度,是偏移,上式通常被写成向量形式:   ( 对应的等于1)。那么Sigmoid函数就可以相应地写为如下的形式:


假设我们知道了某个样本对应的特征取值和权重参数,那么只要将其带入上式即可得到一个0到1之间的数,通常认为  则属于正类别,反之属于负类别,即这个数其实反映了该样本属于正类别的概率。现在的问题是,我们手上有了训练集,即样本的都是已知的,而模型参数是未知的。我们需要通过训练集来确定未知的值。一旦被确定,每当面临新样本时,我们就可以将其对应的  扔到  中,根据结果是否大于0.5,轻松加愉快地得出新样本的类别了。


2.目标函数

假设训练集中有个样本,每个样本属于正类别的概率为 ,属于负类别的概率就是 ,在训练过程中,我们应该尽可能地使整个训练集的分类结果与这个样本的类别标记尽可能地一致。换句话说,我们要使训练样本集分类正确的似然函数最大,而我们可以很容易地写出如下的似然函数:



其中是训练集中第  个样本已经被标记好的类别,若为1.则上式的前半部分起作用,反之后半部分起作用。由于对 整体求 ,其极值点保持不变,因此可以简化为:


接下来的任务是求相应的值,使得取最大值。如果对整体取负号即为Logistic回归的损失函数(loss function),相应地,应该求使取最小值的


3.求解过程

这里采用随机梯度下降求解,首先对每个特征对应的参数  随机赋一个较小的值,然后需要对求偏导数,复合函数求偏导说白了就是“剥洋葱大法”,即由外层到内层逐层求导,结合第1小节给出的 ,不难得出如下推导过程。

Logistic Regression(逻辑回归)简介_第3张图片

有了偏导数之后,就可以采用迭代的方式求解每个了:


也就是     其中是步长,又叫学习率,是一个常数。经过若干次迭代后,当不再变化或者前后两次的差异小于某个阈值时,我们将此时的一组  作为逻辑回归模型的参数。

如果使用损失函数作为优化目标函数,那么上式应该换成如下形式:


注意:其实前者对似然函数求解是“梯度上升法”(求最大值),对损失函数求解是梯度下降法(求最小值),两者本质是一样的,效果也等同,一般广义上的梯度下降法包含了梯度上升法和梯度下降法。


除了梯度下降法之外,以L-BFGS为代表的拟牛顿法也比较流行,且速度更快。


4.正则化

在实际应用中,为了防止过拟合,使得模型具有较强的泛化能力,往往还需要在目标函数中加入正则项。在逻辑回归的实际应用中,L1正则应用较为广泛,原因是在面临诸如广告系统等实际应用的场景,特征的维度往往达到百万级甚至上亿,而L1正则会产生稀疏模型,在避免过拟合的同时起到了特征选择的作用。工业界一般采用更快的L-BFGS算法求解。关于L1正则逻辑回归和逻辑回归在广告系统中的实际应用可以参考 这里 。


5. Logistic Regression 与 Softmax Regression

待补充


6.问题补充

在面试过程中,往往面试官要求讲解逻辑回归的原理和推导后,还会追问一些问题,现列举几个代表性的问题如下:

(1)逻辑回归有何优缺点?

优点:

简单易于实现。

逻辑回归可以输出一个[0,1]之间的浮点数,也就是不仅可以产生分类的类别,同时产生属于该类别的概率。

逻辑回归是连续可导的,易于最优化求解。

缺点:

容易过拟合

原始的逻辑回归只能处理两分类问题,且必须线性可分。


(2)步长α有什么要求,应该怎么选择?

梯度下降算法的每次迭代受到学习率的影响,如果学习率α过小,则达到收敛所需的迭代次数会非常高;如果学习率过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。在斯坦福的机器学习课程中介绍了一种“启发式”的方法确定α,即按照α=0.01,0.03,0.1,0.3,1,3,10的顺序不断尝试。其他方法待补充。


(3)L1正则和L2正则有什么区别?

L1正则和L2正则分别对应1范数和2范数,具体可以参考 这里


(4)梯度下降和随机梯度下降有什么区别?

前者对整个样本集优化,后者每次只对一个样本优化,因此更快,但是可能收敛到局部最优解。另外,介于两者之间的还有批处理梯度下降法。


(5)梯度下降速度比较慢,有没有更快的方法?

可以用L-BFGS等牛顿迭代系列方法。关于牛顿迭代的详细介绍可以看这里。


(6)为什么牛顿迭代比梯度下降速度快?

牛顿迭代与梯度下降法的不同之处在于多了一项二阶导数,因此牛顿法是二阶收敛的,而梯度下降法是一阶收敛。二阶其实相当于考虑了梯度的梯度,所以相对更快。可以类比物理中的速度和加速度的概念,梯度下降相当于对速度作优化,牛顿法相当于还对加速度做优化,因此更快。


(7) 对逻辑回归的并行化是否有了解?

可以参考 这里


7.参考文献

[1]   tornadomeet对机器学习算法的知识点梳理  http://www.cnblogs.com/tornadomeet/p/3395593.html

[2]   Logistic Regression分类器   http://www.cnblogs.com/guyj/p/3800519.html

[2]   Softmax回归     http://deeplearning.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92

[3]  牛顿法与拟牛顿法学习笔记 http://blog.csdn.net/itplus/article/details/21896453#0-tsina-1-92787-397232819ff9a47a7b7e80a40613cfe1

[4]  牛顿法为什么比梯度下降法求解需要的迭代次数更少  http://www.zhihu.com/question/19723347

[5]  详解并行逻辑回归  http://blog.csdn.net/zhoubl668/article/details/19612215

[7]  逻辑回归 http://blog.csdn.net/pakko/article/details/37878837

[8]  斯坦福机器学习notes http://cs229.stanford.edu/notes/cs229-notes1.pdf

[9]  [转化率预估-2]逻辑回归技术 http://www.tuicool.com/articles/zABJFjJ

[8]  L1正则和L2正则  http://freemind.pluskid.org/machine-learning/sparsity-and-some-basics-of-l1-regularization/

你可能感兴趣的:(机器学习)