逻辑回归
Logistic Regression
Classification
在分类问题中,预测的结果是离散值(结果是否属于某一类),逻辑回归算法(Logistic Regression)被用于解决这类分类问题。
- 垃圾邮件判断
- 金融欺诈判断
- 肿瘤诊断
讨论肿瘤诊断问题:
肿瘤诊断问题的目的是告诉病人是否为恶性肿瘤,是一个二元分类问题(binary class problems),则定义 $ y \in\lbrace 0, 1\rbrace$,其中 0 表示负向类(negative class),代表恶性肿瘤("-"),1 为正向类(positive class),代表良性肿瘤("+")。如图,定义最右边的样本为偏差项。
在未加入偏差项时,线性回归算法给出了品红色的拟合直线,若规定
即以 0.5 为阈值(threshold),则我们就可以根据线性回归结果,得到相对正确的分类结果
接下来加入偏差项,线性回归算法给出了靛青色的拟合直线,如果阈值仍然为 0.5,可以看到算法在某些情况下会给出完全错误的结果,对于癌症、肿瘤诊断这类要求预测极其精确的问题,这种情况是无法容忍的。
不仅如此,线性回归算法的值域为全体实数集(
区别于线性回归算法,逻辑回归算法是一个分类算法,其输出值永远在 0 到 1 之间,即
Hypothesis Representation
**对数几率函数(logistic function)**正是我们所需要的(注意这里的
对数几率函数有时也称为对率函数,是一种Sigmoid函数(即形似S的函数)。将它作为
逻辑函数是 S 形函数,会将所有实数映射到
sigmoid 函数 (opens new window)(如下图)是逻辑函数的特殊情况,其公式为

应用 sigmoid 函数,则逻辑回归模型:$$h_{\theta}(x)=g(\theta^Tx) =\frac{1}{1+e^{-\theta^Tx}}$$
该式可以改写为:
其中,
由此可以看出,对数几率回归的实质使用线性回归模型的预测值逼近分类任务真实标记的对数几率。它有几个优点:
- 直接对分类的概率建模,无需实现假设数据分布,从而避免了假设分布不准确带来的问题;
- 不仅可预测出类别,还能得到该预测的概率,这对一些利用概率辅助决策的任务很有用;
- 对数几率函数是任意阶可导的凸函数,有许多数值优化算法都可以求出最优解。
最大似然估计
有了预测函数之后,我们需要关心的就是怎样求取模型参数了。这里介绍一种与最小二乘法异曲同工的办法,叫做极大似然法(maximum likelihood method)。我在另一个项目中有这方面比较详细的讲解,欢迎前往项目主页 (opens new window)交流学习。
前面说道可以把
但是!由于预测概率都是小于1的,如果直接对所有样本的预测概率求积,所得的数会非常非常小,当样例数较多时,会超出精度限制。所以,一般来说会对概率去对数,得到对数似然(log-likelihood),此时求所有样本的预测概率之积就变成了求所有样本的对数似然之和。对率回归模型的目标就是最大化对数似然,对应的似然函数是:
可以理解为若标记为正例,则加上预测为正例的概率,否则加上预测为反例的概率。其中
对该式求导,令导数为0可以求出参数的最优解。特别地,我们会发现似然函数的导数和损失函数是等价的,所以说最大似然解等价于最小二乘解。最大化似然函数等价于最小化损失函数:
这是一个关于
逻辑回归模型中,
以肿瘤诊断为例,
Decision Boundary
决策边界的概念,可帮助我们更好地理解逻辑回归模型的拟合原理。
在逻辑回归中,有假设函数
为了得出分类的结果,这里和前面一样,规定以
回忆一下 sigmoid 函数的图像:
观察可得当
同线性回归模型的不同点在于:
直观一点来个例子,
根据上面的讨论,要进行分类,那么只要 $ {\theta_0}+{\theta_1}{x_1}+{\theta_{2}}{x_{2}}\geq0$ 时,就预测
如果取
上面讨论了逻辑回归模型中线性拟合的例子,下面则是一个多项式拟合的例子,和线性回归中的情况也是类似的。
为了拟合下图数据,建模多项式假设函数:
这里取
当然,通过一些更为复杂的多项式,还能拟合那些图像显得非常怪异的数据,使得决策边界形似碗状、爱心状等等。
简单来说,决策边界就是分类的分界线,分类现在实际就由
Cost Function
那我们怎么知道决策边界是啥样?
如果直接套用线性回归的代价函数:
其中
回忆线性回归中的平方损失函数,其是一个二次凸函数(碗状),二次凸函数的重要性质是只有一个局部最小点即全局最小点。上图中有许多局部最小点,这样将使得梯度下降算法无法确定收敛点是全局最优。
如果此处的损失函数也是一个凸函数,是否也有同样的性质,从而最优化?这类讨论凸函数最优值的问题,被称为凸优化问题(Convex optimization)。
当然,损失函数不止平方损失函数一种。
对于逻辑回归,更换平方损失函数为对数损失函数,可由统计学中的最大似然估计方法推出代价函数
则有关于
如左图,当训练集的结果为
区别于平方损失函数,对数损失函数也是一个凸函数,但没有局部最优值。
Simplified Cost Function and Gradient Descent
由于懒得分类讨论,对于二元分类问题,我们可把代价函数简化为一个函数:
当
向量化实现:
为了最优化
解出偏导得:
注意,虽然形式上梯度下降算法同线性回归一样,但其中的假设函不同,即
向量化实现:
令
忆及
忆及
所以有:
则可得代价函数的导数:
Advanced Optimization
运行梯度下降算法,其能最小化代价函数
我们编写代码给出代价函数及其偏导数然后传入梯度下降算法中,接下来算法则会为我们最小化代价函数给出参数的最优解。这类算法被称为最优化算法(Optimization Algorithms),梯度下降算法不是唯一的最小化算法[^1]。
一些最优化算法:
- 梯度下降法(Gradient Descent)
- 共轭梯度算法(Conjugate gradient)
- 牛顿法和拟牛顿法(Newton's method & Quasi-Newton Methods)
- DFP算法
- 局部优化法(BFGS)
- 有限内存局部优化法(L-BFGS)
- 拉格朗日乘数法(Lagrange multiplier)
比较梯度下降算法:一些最优化算法虽然会更为复杂,难以调试,自行实现又困难重重,开源库又效率也不一,哎,做个调包侠还得碰运气。不过这些算法通常效率更高,并无需选择学习速率
Octave/Matlab 中对这类高级算法做了封装,易于调用。
假设有
Multiclass Classification: One-vs-all
一直在讨论二元分类问题,这里谈谈多类别分类问题(比如天气预报)。
原理是,转化多类别分类问题为多个二元分类问题,这种方法被称为 One-vs-all。
正式定义:
: 输出 (属于第 个分类)的可能性
: 类别总数,如上图 。
注意多类别分类问题中
对于某个样本实例,需计算所有的
logistic 损失函数的解释(Explanation of logistic regression cost function)
在前面的视频中,我们已经分析了逻辑回归的损失函数表达式,在这节选修视频中,我将给出一个简洁的证明来说明逻辑回归的损失函数为什么是这种形式。
回想一下,在逻辑回归中,需要预测的结果
这两个条件概率公式定义形式为
接下来我会解释为什么可以合并成这种形式的表达式:
第一种情况,假设
第二种情况,当
因此,刚才的推导表明
而这就是我们前面提到的损失函数的负数
在
让我们一起来探讨一下,整个训练集中标签的概率,更正式地来写一下。假设所有的训练样本服从同一分布且相互独立,也即独立同分布的,所有这些样本的联合概率就是每个样本概率的乘积:
如果你想做最大似然估计,需要寻找一组参数,使得给定样本的观测值概率最大,但令这个概率最大化等价于令其对数最大化,在等式两边取对数:
在统计学里面,有一个方法叫做最大似然估计,即求出一组参数,使这个式子取最大值,也就是说,使得这个式子取最大值,
由于训练模型时,目标是让成本函数最小化,所以我们不是直接用最大似然概率,要去掉这里的负号,最后为了方便,可以对成本函数进行适当的缩放,我们就在前面加一个额外的常数因子
总结一下,为了最小化成本函数