逻辑回归是机器学习中的一种分类模型,在现实中应用非常广泛。在这篇文章中,我们主要关注逻辑回归算法的模型、参数求解和公式推导,其中涉及到代价函数最大似然估计梯度下降等关键知识。同时讨论逻辑回归在多分类问题中的应用,以及过拟合问题的优化。

一、基础理论

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)基础

[4] 机器学习之逻辑回归(纯python实现)

[5] 一步步用python实现Logistic回归

[6] 概率论与梳理统计(浙大第四版)

[7] Logistic Regression 模型简介

打赏

发表评论

电子邮件地址不会被公开。