博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器学习之逻辑回归
阅读量:2051 次
发布时间:2019-04-28

本文共 4798 字,大约阅读时间需要 15 分钟。

1、逻辑回归概念

面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。

Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别。它就是通过拟合一个逻辑函数(logit fuction)来预测一个事件发生的概率。所以它预测的是一个概率值,自然,它的输出值应该在0到1之间。–计算的是单个输出

那是什么手段让逻辑回归只能输出两种值呢?答:Sigmoid函数。

2、Sigmoid函数

我们先来看看之前一章说的线性回归,线性假设函数为:

h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n = θ T x h_{\theta }(x)=\theta _{0}+\theta _{1}x_{1}+\theta _{2}x_{2}+...+\theta _{n}x_{n}=\theta ^{T}x hθ(x)=θ0+θ1x1+θ2x2+...+θnxn=θTx
线性假设函数的输出是个没有范围的连续值,不适合分类问题。因此在线性回归的假设函数外包裹一层Sigmoid函数,使之取值范围属于(0,1),完成了从值到概率的转换。逻辑回归的假设函数形式如下:
h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x = P ( y = 1 ∣ x ; θ ) h_{\theta }(x)=g(\theta ^{T}x)=\frac{1}{1+e^{-\theta ^{T}x}}=P(y=1|x;\theta ) hθ(x)=g(θTx)=1+eθTx1=P(y=1x;θ)
其中 g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1
g ( z ) g(z) g(z)被称为Sigmoid函数。若 P ( y = 1 ∣ x ; θ ) = 0.7 P(y=1|x;\theta )=0.7 P(y=1x;θ)=0.7,表示输入x时,y=1的概率为70%。
下图为Sigmoid函数图像:
在这里插入图片描述从上图可以看到sigmoid函数是一个s形的曲线,它的取值在[0, 1]之间,当z为0时取值为 1 2 \frac{1}{2} 21,在远离0的地方函数的值会很快接近0或者1。它的这个特性对于解决二分类问题十分重要。

3、判定边界

我们现在再来看看,为什么逻辑回归能够解决分类问题。这里引入一个概念,叫做判定边界,可以理解为是用以对不同类别的数据分割的边界,边界的两旁应该是不同类别的数据。

举几个例子,如下:
在这里插入图片描述有时候是这个样子:
在这里插入图片描述甚至可能是这个样子:在这里插入图片描述上述三幅图中的红绿样本点为不同类别的样本,而我们划出的线,不管是直线、圆或者是曲线,都能比较好地将图中的两类样本分割开来。这就是我们的判定边界,下面我们来看看,逻辑回归是如何根据样本点获得这些判定边界的。

通过sigmoid函数图像我们发现:

g ( z ) ⩾ 0.5 g(z)\geqslant 0.5 g(z)0.5时, z ⩾ 0 z\geqslant 0 z0 h θ ( x ) = g ( θ T x ) ⩾ 0.5 h_{\theta }(x)=g(\theta ^{T}x)\geqslant 0.5 hθ(x)=g(θTx)0.5,也就是说 θ T x ⩾ 0 \theta ^{T}x\geqslant 0 θTx0此时预估y=1;
反之,当y=0时, θ T x < 0 \theta ^{T}x< 0 θTx<0
所以我们认为 θ T x = 0 \theta ^{T}x= 0 θTx=0就是一个决策边界,当它大于或者小于0时,逻辑回归模型分别预测不同的分类结果。

我们先来看看第一个例子 h θ x = g ( θ 0 + θ 1 x 1 + θ 2 x 2 ) h_{\theta }x=g(\theta _{0}+\theta _{1}x_{1}+\theta _{2}x_{2}) hθx=g(θ0+θ1x1+θ2x2),其中 θ 0 , θ 1 , θ 2 \theta _{0},\theta _{1},\theta _{2} θ0,θ1,θ2分别取值-3,1,1。则 − 3 + x 1 + x 2 ⩾ 0 -3+x_{1}+x_{2}\geqslant 0 3+x1+x20时,y=1;则 x 1 + x 2 = 3 x_{1}+x_{2}=3 x1+x2=3是一个决策边界,图形表示如下,刚好把图像的两类点区分开来:

在这里插入图片描述
例1只是一个线性的决策边界,当 hθ(x)更复杂的时候,我们可以得到非线性的决策边界,例如:在这里插入图片描述这时当 − 1 + x 1 2 + x 2 2 ⩾ 0 -1+x_{1}^{2}+x_{2}^{2}\geqslant 0 1+x12+x220时,我们判定y=1,这时的决策边界是一个圆形,如下图所示:在这里插入图片描述
所以我们发现, g ( θ T x ) g(\theta ^{T}x) g(θTx) θ T x \theta ^{T}x θTx足够复杂,在不同的情形下,能够拟合出不同的判定边界,将不同类别的样本点分离开。

4、代价函数

我们通过对判定边界的说明,知道会有合适的参数θ使得 θ T x = 0 \theta ^{T}x= 0 θTx=0成为很好的分类判定边界,那么问题就来了,我们如何判定我们的参数θ是否合适,有多合适呢?更进一步,我们有没有办法去求得这样的合适参数θ呢?

这就是我们接下来提到的代价函数与梯度下降了。

在线性回归中,我们给出代价函数定义: J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta )=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})^{2} J(θ)=2m1i=1m(hθ(x(i))y(i))2

由于它是一个凸函数,所以可用梯度下降直接求解,局部最小值即全局最小值。
但在逻辑回归中, h θ ( x ) h_{\theta }(x) hθ(x)是一个复杂的非线性函数,属于非凸函数,直接使用梯度下降会陷入局部最小值中。类似于线性回归,逻辑回归的 J ( θ ) J(\theta ) J(θ)的具体求解过程如下:
对于输入x,分类结果为类别1和类别0的概率分别为:
P ( y = 1 ∣ x ; θ ) = h ( x ) ; P(y=1|x;\theta )=h(x); P(y=1x;θ)=h(x);
P ( y = 0 ∣ x ; θ ) = 1 − h ( x ) ; P(y=0|x;\theta )=1-h(x); P(y=0x;θ)=1h(x);
则整合之后为: p ( y ∣ x ; θ ) = ( h ( x ) ) y ( 1 − h ( x ) ) ( 1 − y ) p(y|x;\theta )=(h(x))^{y}(1-h(x))^{(1-y)} p(yx;θ)=(h(x))y(1h(x))(1y)
通过最大似然函数求损失函数 :

L ( θ ) = ∏ i = 1 m P ( y ( i ) ∣ x ( i ) ; θ ) L(\theta )=\prod_{i=1}^{m}P(y^{(i)}|x^{(i)};\theta ) L(θ)=i=1mP(y(i)x(i);θ)

L ( θ ) = ∏ i = 1 m ( h θ ( x ( i ) ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) 1 − y ( i ) L(\theta )=\prod_{i=1}^{m}(h_{\theta }(x^{(i)}))^{y^{(i)}}(1-h_{\theta }(x^{(i)}))^{1-y^{(i)}} L(θ)=i=1m(hθ(x(i)))y(i)(1hθ(x(i)))1y(i)
对数似然函数为(取对数):
l ( θ ) = l o g L ( θ ) l(\theta )=logL(\theta ) l(θ)=logL(θ)
l ( θ ) = ∑ i = 1 m ( y ( i ) l o g h θ ( x ( i ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ) l(\theta )=\sum_{i=1}^{m}(y^{(i)}logh_{\theta }(x^{(i)})+(1-y^{(i)})log(1-h_{\theta }(x^{(i)}))) l(θ)=i=1m(y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i))))
似然函数有极大值,此时应该使用梯度上升求最大值,但为了便于使用梯度下降法,这里将 J ( θ ) = − 1 m l ( θ ) J(\theta )=-\frac{1}{m}l(\theta ) J(θ)=m1l(θ)
求解 J ( θ ) J(\theta ) J(θ)的最小值可以使用梯度下降法,根据梯度下降可得 θ \theta θ的更新过程为( α \alpha α为学习步长):
θ j : = θ j − α ∂ ∂ θ j J ( θ ) \theta _{j}:=\theta _{j}-\alpha \frac{\partial }{\partial \theta _{j}}J(\theta ) θj:=θjαθjJ(θ)
接下来求偏导:
在这里插入图片描述由此, θ \theta θ 的更新过程可以写成:(下式的 1 m \frac{1}{m} m1 一般省略)
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ x ( i ) − y ( i ) ) x j ( i ) , ( j = 0... n ) \theta _{j}:=\theta _{j}-\alpha \frac{1}{m}\sum_{i=1}^{m}(h_{\theta }x^{(i)}-y^{(i)})x_{j}^{(i)},(j=0...n) θj:=θjαm1i=1m(hθx(i)y(i))xj(i),(j=0...n)
除了梯度下降之外,还有以下优化代价函数的方法:

  1. 共轭梯度法(Conjugate Gradient)

  2. BFGS

  3. L-BFGS

在这些方法中,相比梯度下降,有以下优点和缺点:

  1. 不需要主观的选择学习率α,算法中的内循环会自动调节

  2. 速度更快

  3. 算法更复杂

多元分类:一对多

多分类(multi-classification)是指分类的结果不只两类,而是有多个类别。

逻辑回归本质上是一种二分类的算法,但是可以通过搭建多个二分类器的思想,实现多分类。

针对类别A ,设 A 为正类,非A 为反类,搭建 h θ 1 h_{\theta }^1 hθ1 (x)二分类器

针对类别B ,设 B为正类,非B 为反类,搭建 h θ 2 ( x ) h_{\theta }^2(x) hθ2(x) 二分类器

针对类别 ,设 为正类,非 为反类,搭建 h θ 3 ( x ) h_{\theta }^3(x) hθ3(x)二分类器

这是我在进行机器学习的过程中关于逻辑回归的笔记和总结,希望能够帮助大家,如果文章中有错误,希望大家指出,我们一起进步。

转载地址:http://ffulf.baihongyu.com/

你可能感兴趣的文章
Prometheus监控神器-Alertmanager篇(二)
查看>>
Prometheus监控神器-Alertmanager篇(一)
查看>>
Kubernetes 的新武器:层级命名空间
查看>>
他在阿里5年,升为P9,现在直播不卖货,就要招各路云原生大师!
查看>>
知道吗?容器镜像也可以延迟拉取!
查看>>
Awesome Kubernetes 系列:第一期
查看>>
我是怎么莫名地劫持了自己的 DHCP 的
查看>>
现在是云原生最好的时代
查看>>
DDD 到底什么鬼?
查看>>
ElasticSearch Operator 工作原理浅析
查看>>
Thanos 与 VictoriaMetrics,谁才是打造大型 Prometheus 监控系统的王者?
查看>>
卧槽!竟然可以直接白嫖 Github Action 的 2C7G 服务器。。
查看>>
BPF数据传递的桥梁——BPF Map(一)
查看>>
一口气搞懂「文件系统」,就靠这 25 张图了
查看>>
Hive 死期将至?
查看>>
没错,华为开始招募了!
查看>>
深入理解 Cilium 的 eBPF 收发包路径
查看>>
黑苹果的历史
查看>>
Kubernetes 使用 ceph-csi 消费 RBD 作为持久化存储
查看>>
Ceph万字总结|如何改善存储性能以及提升存储稳定性
查看>>