逻辑回归算法
目录
逻辑回归是机器学习中的一种分类模型,在现实中应用非常广泛。在这篇文章中,我们主要关注逻辑回归算法的模型、参数求解和公式推导,其中涉及到代价函数、最大似然估计、梯度下降等关键知识。同时讨论逻辑回归在多分类问题中的应用,以及过拟合问题的优化。
一、基础理论
1、模型表示
逻辑回归是机器学习中的一种分类模型,在实际中应用非常广泛,该模型的输出值始终在0和1之间。
逻辑回归模型的假设是:
\[
h(X)=g(\theta^T X)
\]
其中:X代表输入变量(特征变量),g代表逻辑函数(sigmod函数),其公式为:
\[
g(z) = \frac{1}{1 + e ^ {-z}}
\]
其对应函数图像如下:
用概率的方式来描述,即已知参数θ和数据x的情况下,其分类为y=1或y=0的概率大小,如下:
\[
P(y=1|x;\theta) =h(x)= g(\theta^T x) = \frac{1}{1 + e ^ {-\theta^T *x}}
\]
\[
P(y=0|x;\theta) =1 - h(x)
\]
2、判定边界
模型h(X)的返回值始终处在0和1之间,其实也就是表示数据属于某一个分类的概率,例如:
h(X) >= 0.5时,y=1
h(X) < 0.5时,y=0
备注:这里选择0.5作为阈值,只是一般的做法,在实际应用中,可以根据实际情况选择不同的阈值。
由上图,可以知道
z=0时,g(z)=0.5
z>0时,g(z)>0.5
z<0时,g(z)<0.5
又,所以:
假如有一个模型其数据分布如下:
由上面的结论可知,当,y=1;当
时,y=0。所以
是模型的分界线。
如果数据程下面这样分布,则其模型可以假设为:
3、最大似然估计
3.1最大似然估计法基本概念
在继续将代价函数之前,我们需要介绍一下最大似然估计的概念。
若总体X属于离散性,其分布律P{X=x}=p(x;θ),θ∈Θ的形式为已知,θ为待估参数,Θ是θ可能取值的范围。
设是来自X的样本,则
的联合分布律为:
\[
\prod P(x;\theta)
\]
又设是相应于
的一个样本值,则
取到观察值
的概率,即事件:
发生的概率为:
这一概率随着θ而发生变化,它是θ的函数,L(θ)称为样本的似然函数(注意,这里是一只的样本值,它们都是常数)
固定样本值,在θ的可能取值范围内,找到使得似然函数L(θ)达到最大值的参数值
,作为参数θ的估计值。即取
使:
这样得到的与样本值
有关,常记为
,称为参数θ的最大似然估计值,而相应的统计量
称为参数θ的最大似然估计量。
3.2 梯度下降与最大似然估计
根据上式,我们知道分类为1和0时的概率如下。
\[
P(y=1|x;\theta) =h(x)
\]
\[
P(y=0|x;\theta) =1 - h(x)
\]
合并之后,可得事件发生(分类)的概率如下:
取其似然函数为:
取对数似然函数为:
我们知道最大似然估计就是找到参数θ,是的l(θ)取得最大值。这里我们变换一下,令:
这里乘了一个负的系数-1/m,则我们就可以通过梯度下降算法进行参数求解,找到使得J(θ)取得最小值时的参数θ,这时l(θ)取得最大值。
4 代价函数
4.1 代价函数及其推到
逻辑回归模型:
在《线性回归》一文中,我们知道线性回归的代价函数就是所有模型误差的平方和。如果对逻辑回归模型,也套用这个定义,把带入到线性回归的代价函数,那么我们最终得到的是一个非凸函数(如下图左边)
这意味着代价函数存在多个局部最小值,当使用梯度下降算法的时候,会影响到寻找全局最小值。
线性回归的代价函数:
我们重新定义逻辑回归的代价函数:
通过3.2的分析,我们可以知道:
则:
所以,逻辑回归的代价函数如下:
如果拆开来的话,可以按如下表示:
4.2 代价函数的矩阵表示
我们将上面的代价函数J(θ)做下转换:
我们将J(θ)分成两部分进行推导:
所以代价函数的矩阵表示形式如下:
5 梯度下降算法(逻辑回归)
在3.3中,我们推导出了代价函数,这里,代价函数是一个凸函数,并且没有局部最优值,凸优化问题这里我们不展开讲。
接下来,我们通过梯度下降算法来求导使得代价函数最小的参数。
梯度下降算法为:
求导后得到:
其推到过程如下:
我们可以发现,这个逻辑回归的梯度下降算法跟线性回归的梯度算法很类似,但是由于,这里两者还是有一定区别的。
6 梯度下降算法的矩阵描述方式(逻辑回归)
在3.4中,我们推导出了梯度下降算法的代数表示方式,接下来这一节,我们来推到出梯度下降算法的矩阵描述方式。
首先,约定几个矩阵的表示形式:
令:
综合起来:
二、进阶
1、多类别分类
在上面的介绍中,我们分析了二元分类的问题,那么如果要多多类别的进行分类要怎么处理呢。例如用y=1、y=2、y=3和y=4来做代表。
现在我们有一个训练集,其分类如上图所示,有3个类别,我们分别用y=1、y=2和y=3分别表示三角形、正方形和叉叉。
下面要做的就是通过训练集来将其分成3个二元分类的问题。
首先从类别1开始,我们可以创建一个新的训练集,设定类型1为正类,类型2和类型3为负类,如下图,我们要拟合出一个合适的二元分类器。这里,三角形代表正样本,原型代表负样本。
下面,我们通过训练一个标准的逻辑回归分类器,得到一个边界。
我们将多个类中的一个类标记为正向类(y=1),然后将其他类都标记为负向类,这个模型记为:。类似地选择另一个类标记为正向类(y=2),其他类都标记为负向类,这个模型记为:
,以此类推。
最后,我们可以得到一系列的模型,简记为:。
最后,在需要做预测的时候,我们将所有分类机都运行一遍,然后对每一个输入变量,都选择其中最高可能性的输出变量。
所以,在上例中,我们要做的就是在3个分类器中输入x,然后选择一个让最大的i,即
,从而得到输出变量y,及其类别。
2、过拟合问题
我们已经学习了线性回归和逻辑回归的机器学习算法,他们能有效的结局额很多问题。但是,在实际应用中,会遇到过拟合的问题,从而导致他们的预测效果很差。
如下图所示,第一个模型是线性模型,拟合效果较差;第三个模型是一个四次方的模型,对原始数据拟合的很好,但是对新的数据预测效果则很差,也就是出现了过拟合的问题。
在逻辑回归的分类问题中,也存在一样的问题。
如果使用的模型函数中,x的次数越过,则拟合的越好,但是相应的预测能力则变差。
解决过拟合问题,有两种方法,分别是:
(1)丢弃一些不重要的特征,例如PCA方法。
(2)正则化,保留所有特征,但是减少参数的大小。
下面讲讲正则化的处理方法。
带正则化的损失函数:
矩阵化的损失函数:
偏导:
偏导(向量化):
所以,正则化的梯度公式为:
其向量表示为:
参考:
[1] AndrewNg的机器学习教程
[2] Logistic Regression(逻辑回归)原理及公式推导
[3] 逻辑回归模型(Logistic Regression, LR)基础
[6] 概率论与梳理统计(浙大第四版)