Logistic回归 为概率型非线性回归模型,它是一个 分类算法
,它可以处理二元分类以及多元分类。虽然它名字里面有 回归 两个字,却不是一个回归算法。
1. 从线性回归到逻辑回归
线性回归的模型可简写为:
此时
是连续的,所以是回归模型。假如样本所对应的输出是在指数尺度上变化,那我们可以将真实值的对数作为我们回归模型逼近的目标,即:
这就是对数线性回归,其本质上是求解输入空间到输出空间的非线性函数映射,这里的对数函数只是起到了将线性回归模型的预测值跟真实标签联系起来的作用。更一般性,考虑单调可微函数
,令
这样得到的模型称为广义线性模型,很显然对数线性回归是广义线性模型在
的特例。
2. 二元逻辑回归模型
上面提到对线性回归的结果做一个在函数g上的转换,如果令的值在某个实数区间的时候是类别A,在另一个实数区间的时候是类别B,以此类推,就得到了一个分类模型。如果结果的类别只有两种,那么就是一个二元分类模型了。逻辑回归的出发点就是从这来的。
这个函数在逻辑回归中我们一般取为sigmoid函数,形式如下:
它有一个非常好的性质,即当z趋于正无穷时,𝑔(𝑧)趋于1,而当z趋于负无穷时,𝑔(𝑧)趋于0,并且在点时斜率最大,梯度更新最快,这非常适合于我们的分类概率模型。另外,它还有一个很好的导数性质:
如果我们令𝑔(𝑧)中的z为:,这样就得到了二元逻辑回归模型的一般形式:其中为样本输入,为模型输出,可以理解为某一分类的概率大小。而为分类模型的要求出的模型参数。对于模型输出,让它和我们的二元样本输出(假设为0和1)有这样的对应关系,如果 ,即, 则为1。如果,即, 则为0。是临界情况,此时为, 从逻辑回归模型本身无法确定分类。
3. 二元逻辑回归的损失函数
线性回归的损失函数使用 MSE
来定义损失函数。但是逻辑回归不是连续的,自然MSE就用不上了。不过我们可以用 最大似然法
来推导出我们的损失函数。
假设我们的样本输出是0或者1两类。那么对于一个样本有:则,
把这两个式子写成一个式子,就是:
其中y的取值只能是0或者1。
得到了的概率分布函数表达式,因为各个观测样本之间
相互独立
,那么它们的联合分布为各边缘分布的乘积。得到似然函数为:
其中m为样本的个数。
我们就可以用似然函数最大化来求解我们需要的模型系数。为了方便求解,这里我们用对数似然函数最大化,对数似然函数取反即为我们的损失函数
。对似然函数对数化取反的表达式,即损失函数表达式为:
4.
损失函数的优化方法
对于二元逻辑回归的损失函数极小化,有比较多的方法,最常见的有梯度下降法,坐标轴下降法,牛顿法等。这里推导出梯度下降法中𝜃每次迭代的公式。
求逻辑回归模型f(θ),等价于:采用梯度下降法:
中间用到了
从而迭代θ至收敛即可:其中,𝛼为梯度下降法的步长。实践中,我们一般不用操心优化方法,大部分机器学习库都内置了各种逻辑回归的优化方法,不过了解至少一种优化方法还是有必要的。
5. 二元逻辑回归的正则化
逻辑回归也会面临过拟合问题,所以我们也要考虑正则化。常见的有L1正则化和L2正则化。
逻辑回归的L1正则化的损失函数表达式相比普通的逻辑回归损失函数,增加了L1的范数做作为惩罚,超参数𝛼作为惩罚系数,调节惩罚项的大小。
二元逻辑回归的L1正则化损失函数表达式如下:
其中||𝜃||1为𝜃的L1范数。
逻辑回归的L1正则化损失函数的优化方法常用的有坐标轴下降法和最小角回归法。
L1正则相当于加入拉普拉斯先验。
L2正则相当于加入高斯先验。
二元逻辑回归的L2正则化损失函数表达式如下:
其中||𝜃||2为𝜃的L2范数。
逻辑回归的L2正则化损失函数的优化方法和普通的逻辑回归类似。
6. 二元逻辑回归的推广:多元逻辑回归
前面几节我们的逻辑回归的模型和损失函数都局限于二元逻辑回归,实际上二元逻辑回归的模型和损失函数很容易推广到多元逻辑回归。比如总是认为某种类型为正值,其余为0值,这种方法为最常用的one-vs-rest,简称OvR.
另一种多元逻辑回归的方法是Many-vs-Many(MvM),它会选择一部分类别的样本和另一部分类别的样本来做逻辑回归二分类。最常用的是One-Vs-One(OvO)。OvO是MvM的特例。每次我们选择两类样本来做二元逻辑回归。
这里只介绍多元逻辑回归的softmax回归的一种特例推导:
首先回顾下二元逻辑回归。
其中y只能取到0和1。则有:
如果我们要推广到多元逻辑回归,则模型要稍微做下扩展。
我们假设是K元分类模型,即样本输出y的取值为1,2,...,K.
根据二元逻辑回归的经验,我们有:
....
上面有K-1个方程。
加上概率之和为1的方程如下:
从而得到K个方程,里面有K个逻辑回归的概率分布。
解出这个K元一次方程组,得到K元逻辑回归的概率分布如下:
多元逻辑回归的损失函数推导以及优化方法和二元逻辑回归类似。
小结:Logistic回归尤其是二元Logistic回归是非常常见的模型,训练速度很快,虽然使用起来没有SVM那么占主流,但是解决普通的分类问题是足够了,训练速度也比起SVM要快不少,适合分布式训练,适用于离散特征。如果想要理解机器学习的所有分类算法,那么第一个应该学习的分类算法个人觉得应该是逻辑回归。理解了逻辑回归,其他的分类算法再学习起来应该没有那么难了。