广义线性模型(4)逻辑回归(Logistic regression)

一 简介

广义线性模型(1)广义线性模型详解 中我们知道,逻辑回归是使用logit函数(Sigmod函数)作为连接函数,伯努利分布(二分类问题)或多项式分布(多分类问题)作为概率分布的广义线性模型。

逻辑回归,虽然叫做回归,但它却是分类算法,而且是比较重要的有监督的分类算法。

Logistic回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。所以实际中最常用的就是二分类的Logistic回归。

Logistic回归的主要用途:

  • 寻找危险因素:寻找某一疾病的危险因素等;
  • 预测:根据模型,预测在不同的自变量情况下,发生某病或某种情况的概率有多大;
  • 判别:实际上跟预测有些类似,也是根据模型,判断某人属于某病或属于某种情况的概率有多大,也就是看一下这个人有多大的可能性是属于某病。

Logistic回归主要在流行病学中应用较多,比较常用的情形是探索某疾病的危险因素,根据危险因素预测某疾病发生的概率,等等。例如,想探讨胃癌发生的危险因素,可以选择两组人群,一组是胃癌组,一组是非胃癌组,两组人群肯定有不同的体征和生活方式等。这里的因变量就是是否胃癌,即“是”或“否”,自变量就可以包括很多了,例如年龄、性别、饮食习惯、幽门螺杆菌感染等。自变量既可以是连续的,也可以是分类的。

二 逻辑回归原理

2.1 从线性回归到逻辑回归

逻辑回归是广义的线性模型,就是在线性回归基础上加了一个非线性映射。逻辑回归既然是分类算法,为什么不叫逻辑分类而是逻辑回归呢?在我看来,这是因为逻辑回归用回归的思路去解决分类的问题。

假设有如下图所示的一个数据集,使用线性回归算法,我们可以找到大致如黑线的一个线性模型对其进行拟合。对于回归算法,需要做的是对数据集中每一个 x i x_i xi,都能通过模型找到一个 y i y_i yi(预测值)与之对应。

获得了预测值 y ∗ i {{y}*_{i}} yi,我们就可以做很多事情了,例如:分类。我们可以对 y i y_i yi 进行分段,例如,在 y {{y}} y 轴上取一值 M M M,当 y i < M {{y}_{i}}<M yi<M 时,我们将其标记到类0中,当 y i > M {{y}_{i}}>M yi>M 时,我们将其标记到另一类1中,如下图所示:

这就实现了以回归的思路来实现分类

但逻辑回归可不止在线性回归的基础上做这些事情。线性回归有一个很致命的缺陷——对异常值很敏感,如果数据集中出现异常值,拟合出来的线性模型也将出现很大变化,预测出来的结果也将不在那么准确,从而到导致分类错误。如下图所示,数据集中出现一个异常点(绿点),那么拟合出来的模型就可能从原来的黑线变为绿线,此时,当数据集中有某一点 x ∈ ( x 1 , x 2 ) x\in ({{x}_{1}},{{x}_{2}}) x(x1,x2) 时,该点就回被误判,例如图中橙色点,在原本黑线模型中,该点预测出来的 y {{y}} y值大于 M M M,被标记到1类中,但在绿线模型中,其 y {{y}} y 值就小于 M M M,就回被误标记到0类中。

逻辑回归算法对线性回归对异常数据敏感的不足进行了优化改进。怎么改进呢?最直观的方法就是将直线“掰弯”。“掰弯”之后,就算出现异常数据,模型主体部分也不会出现太多改变,从而解决线性回归模型对异常值敏感的问题,如下图所示:

而我们所用的“掰弯”方法就是用sigmod函数与线性函数进行复合

2.2 sigmod 函数

sigmoid函数也叫Logistic函数,函数表达式如下:

g ( z ) = 1 1 + e − x g(z)=\frac{1}{1+{{e}^{-x}}} g(z)=1+ex1

其中, e e e为自然对数,是一个常数,值约为2.71828。

函数图像如下:

从函数图像可以看出, sigmoid函数可以很好地将 ( − ∞ , + ∞ ) (-\infty ,+\infty ) (,+)内的数映射到 ( 0 , 1 ) (0,1) (0,1) 上,于是我们可以将 g ( z ) ≥ 0.5 g(z)\ge 0.5 g(z)0.5时我们可以将该条数据标记为1类, g ( z ) < 0.5 g(z)<0.5 g(z)<0.5时标记为0类。即:

y = { 0 ,   g ( z ) < 0.5 1 ,   g ( z ) ≥ 0.5 y=\left\{ _{0,\text{ }g(z)<0.5}^{1,\text{ }g(z)\ge 0.5} \right. y={0, g(z)<0.51, g(z)0.5

其中 y y y表示分类结果。

通常,在逻辑回归算法应用中,模型可不会如同上面的sigmoid函数那么简单,而是sigmoid函数与线性函数的组合:

g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+{{e}^{-z}}} g(z)=1+ez1

其中, z z z 就是线性回归中的预测值,即:

z = f ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n z=f(x)={{\theta }_{0}}+{{\theta }_{1}}{{x}_{1}}+{{\theta }_{2}}{{x}_{2}}+\cdots +{{\theta }_{n}}{{x}_{n}} z=f(x)=θ0+θ1x1+θ2x2++θnxn

所以有:

h ( x ) = 1 1 + e − ( θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n ) h(x)=\frac{1}{1+{{e}^{-({{\theta }_{0}}+{{\theta }_{1}}{{x}_{1}}+{{\theta }_{2}}{{x}_{2}}+\cdots +{{\theta }_{n}}{{x}_{n}})}}} h(x)=1+e(θ0+θ1x1+θ2x2++θnxn)1

用矩阵方式表示:

h ( x ) = g ( z ) = g ( θ T x ) = 1 1 + e − θ T x h(x)=g(z)=g({{\theta }^{T}}x)=\frac{1}{1+{{e}^{-{{\theta }^{T}}x}}} h(x)=g(z)=g(θTx)=1+eθTx1

其中, θ = [ θ 0 θ 1 ⋮ θ n ] \theta =\left[ \begin{matrix} {{\theta }_{0}} \\ {{\theta }_{1}} \\ \vdots \\ {{\theta }_{n}} \\ \end{matrix} \right] θ= θ0θ1θn , x = [ x 0 x 1 ⋮ x n ] x=\left[ \begin{matrix} {{x}_{0}} \\ {{x}_{1}} \\ \vdots \\ {{x}_{n}} \\ \end{matrix} \right] x= x0x1xn

三 损失函数

下一步我们要做的就是如何求取最佳拟合模型的问题了。在线性回归算法中,我们使用误差平方和或者均方误差来作为损失函数,但是在逻辑回归中,这个方法不再使用,因为已被证明,在逻辑回归模型中使用误差平方和作为损失函数的话,会存在在许多局部最小值点,在求解参数的过程中很容易陷入局部最小值点,而无法求得真正的最小值点。

上面说过, h ( x ) ∈ ( 0 , 1 ) h(x)\in (0,1) h(x)(0,1),这一点的性质刚好与概率 p ∈ [ 0 , 1 ] p\in [0,1] p[0,1]的性质吻合(当做概率使用的理由不止这点),故而我们可以将 h ( x ) h(x) h(x) 值当做数据被标记为1类的概率,即:

p ( y = 1 ∣ x ; θ ) = h ( x ) p(y=1|x;\theta )=h(x) p(y=1∣x;θ)=h(x)

p ( y = 0 ∣ x ; θ ) = 1 − h ( x ) p(y=0|x;\theta )=1-h(x) p(y=0∣x;θ)=1h(x)

当给定 y y y为1时,即属于1类时, h ( x ) h(x) h(x)越趋近于1,被预测为1类的概率就越大,损失(误差)就越小;反之,当给定 y y y 为0时,即属于0类时, h ( x ) h(x) h(x)越趋近于1,被预测为0类的概率就越小,损失(误差)就越大,于是,我们可以定义损失函数:

cos ⁡ t ( h ( x ) , y ) = { − log ⁡ ( 1 − h ( x ) ) ,   y = 0 − log ⁡ ( h ( x ) ) ,   y = 1 \cos t(h(x),y)=\left\{ _{-\log (1-h(x)),\text{ }y=0}^{-\log (h(x)),\text{ }y=1} \right. cost(h(x),y)={log(1h(x)), y=0log(h(x)), y=1

对所有数据集中 x x x损失累加然后求平均,有:

J ( θ ) = − 1 m ∑ i = 1 m cos ⁡ t ( h ( x ) , y ) J(\theta )=-\frac{1}{m}\sum\limits_{i=1}^{m}{\cos t(h(x),y)} J(θ)=m1i=1mcost(h(x),y)

由于 y y y的取值为0或1,结合上面两个公式可以得到:

J ( θ ) = − 1 m ∑ i = 1 m ( y i log ⁡ ( h ( x i ) ) + ( 1 − y i ) log ⁡ ( 1 − h ( x i ) ) ) J(\theta )=-\frac{1}{m}\sum\limits_{i=1}^{m}{({{y}_{i}}\log (h({{x}_{i}}))+(1-{{y}_{i}})\log (1-h({{x}_{i}})))} J(θ)=m1i=1m(yilog(h(xi))+(1yi)log(1h(xi)))

这个函数就是我们逻辑回归的损失函数,我们把它称为交叉熵损失函数。

四 梯度下降法求解

公式 18 与最小二成的形式一样,但是实际上是不一样的,因为函数 h 不一样。

但这并不是巧合,这几乎是一种通用的规则,你可以选择不同的假设,但如果使用梯度下降算法的话,更新规则都是如公式 18 的形式。

五 总结

总结一下逻辑回归的优缺点。

优点:

  1. 预测结果是介于0和1之间的概率;

  2. 可以适用于连续性和类别性自变量;

  3. 容易使用和解释。

缺点:

  1. 对模型中自变量多重共线性较为敏感,例如两个高度相关自变量同时放入模型,可能导致较弱的一个自变量回归符号不符合预期,符号被扭转。需要利用因子分析或者变量聚类分析等手段来选择代表性的自变量,以减少候选变量之间的相关性;

  2. 预测结果呈“S”型,因此从log(odds)向概率转化的过程是非线性的,在两端随着log(odds)值的变化,概率变化很小,边际值太小,slope太小,而中间概率的变化很大,很敏感。 导致很多区间的变量变化对目标概率的影响没有区分度,无法确定阀值。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据AI

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值