机器学习|逻辑回归模型


by - YH
Date - 22/11/2019

上一篇博客主要通过代码实现了线性回归,本篇博客讲解一下逻辑回归(Logistic),主要分为两个部分,一个是基本概念原理,另外一个是基于Tensorflow对该算法进行一个代码实战。

一、基本概念简介以及理论讲解

1.1 基本概念简介以及理论讲解
  • 回归一般用于解决那些连续变量的问题,如:线性回归,它是通过最小化误差函数,来不断拟合一条直线,以计算出权重w和偏差b的过程,他的目标是基于一个连续方程去预测一个值。

  • 这里要讲解的是Logistic回归,却经常用于分类问题,也就是说将观测值贴上某个标签,或者是分入某个预先定义的类别之中。故理解常用于分类问题的 Logistic 回归的关键在于,我们是将先寻找到的该样本属于某个类可能性的连续值映射到了某一个类(我们一般将某一个类的 label 建模成离散值)。这就是 Logistic 常用于分类却叫做回归的原因。

1.2 Logistic函数的你函数->Logit函数
  • 在了解Logistic函数之前我们先来了解一下它的逆函数 Logit 函数,即对数几率函数。正如我们所了解的一样逆函数之间关于 y = x 直线对称,自变量 x 和因变量 y 互为对偶位置,因此,Logit 函数和 Logistic 函数有很多性质都有关联。

  • Logit 函数的变量需要一个概率值 p 作为自变量,如果是二分类问题,确切一点是伯努利分布(即二项分布),如果是多分类问题,则是多项分布。

1.2.1 伯努力分布

它又称为二项分布,也就是说它只能表示成功和失败两种情况。当是二分类问题时,都可用该分布。

   取1,表示成功,以概率 p 表示
   取 0,即失败,以概率 q = 1-p 表示 
   伯努利分布的概率函数可以表示为: Pr(X=1) = 1 - Pr(X=0) = 1-q = p 

  此外,Logistic 函数也是属于广义线性模型(GLM)的一种,在建立广义线性模型之前,我们还需要从线性函数开始,从独立的连续变量映射到一个概率分布。 如果是针对二分类的 Logistic 回归,由于是二分类属于二值选项问题,我们一般会将上面的概率分布建模成一个伯努利分布(即二项分布),而将上述的独立的连续变量建模成线性方程回归后的 y 值,最后再通过连接函数,这里采用对数函数Logit ,将连续的 y = wx +b 的线性连续变量映射到二项分布。
  由于Logit函数是从自变量p到函数值的映射,故逆函数Logistic 函数即上一段所讲,便可以将连续值映射到二项分布,从而用做分类问题。

1.2.2 Logit函数

  Logit 函数又称对数几率函数,其中 p 是二项分布中事件发生的概率,用发生的概率 p 除以不发生的概率 1-p, 即(p /1-p)称为事件的发生率,对其取对数,就成了对数几率函数(Logit 函数) 。

l o g i t ( p ) = l o g ( p 1 − p )   logit(p)=log(\frac{p}{1-p})\, logit(p)=log(1pp)Logit

从图中我们可以看到,该函数实现了从区间 [ 0 , 1 ]   [0,1]\, [0,1]到区间 [ − ∞ , ∞ ]   [-\infty,\infty]\, [,]之间的映射,我们只要将y用一个输入的线性函数替代,那么就实现了从输入到区间 [ 0 , 1 ]   [0,1]\, [0,1]之间的映射。

1.3 对数几率函数的逆函数 Logistic 函数

  由上面的讲解可知,我们先计算对数几率函数的逆函数后得如下结果:这里我们记logistic(z)为g(z),转换之后, l o g i t − 1 ( z )   logit^{-1}(z)\, logit1(z)就是上面提到的二项分布发生的概率p:

l o g i t − 1 ( z ) = l o g i s t i c ( z ) = g ( z ) = 1 1 + e − z   logit^{-1}(z)=logistic(z)=g(z)=\frac{1}{1+e^{-z}}\, logit1(z)=logistic(z)=g(z)=1+ez1

这个式子是一个Sigmoid函数,图像如下:
Sigmoid

其中,我们认为 Sigmoid 函数最为漂亮的是它的求导后形式非常简介、易用。如下:
函数: f ( z ) = 1 1 + e − z   f(z)=\frac{1}{1+e^{-z}}\, f(z)=1+ez1

倒数: f ′ ( z ) = f ( z ) ( 1 − f ( z ) )   f'(z)=f(z)(1-f(z))\, f(z)=f(z)(1f(z))

推导比较简单,读者自行推导。

  得到上述式子之后,将z换成 θ 1 x + θ 0   \theta_{1}x+\theta_{0}\, θ1x+θ0,可以得到逻辑回归模型的参数形式:

p ( x ; a , b ) = 1 1 + e ( − θ 1 x + θ 0 )   p(x;a,b)=\frac{1}{1+e^{(-\theta_{1}x+\theta_{0})}}\, p(x;a,b)=1+e(θ1x+θ0)1

(注:当然也可以将 z 替换成多维度的线性回归方程如: z = θ T x = θ 0 x 0 + θ 1 x 1 + . . . + θ n x n = ∑ i = 0 n θ i x i   z=\theta^{T}x=\theta_{0}x_{0}+\theta_{1}x_{1}+...+\theta_{n}x_{n}=\sum_{i=0}^{n}\theta_{i}x_{i}\, z=θTx=θ0x0+θ1x1+...+θnxn=i=0nθixi)

于是可以构造如下预测函数:

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

Logistic 回归的损失函数这里采用交叉熵,此外常见的还有均方误差作为损失函数。它的定义如下:

J ( θ ) = − 1 m [ y i l o g h θ ( x i ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) ]   J(\theta)=-\frac{1}{m}[y^{i}logh_{\theta}(x^{i})+(1-y^{i})log(1-h_{\theta}(x^{i}))]\, J(θ)=m1[yiloghθ(xi)+(1yi)log(1hθ(xi))]

  • 参数说明:
    m:训练样本的个数
    h θ ( x )   h_{\theta}(x)\, hθ(x):用参数 θ \theta θ和x预测出来的y值
    y:原训练样本中的y值,也就是标准答案
    上角标(i):第i个样本;
1.4 多分类应用 — Softmax 回归
1.4.1 Softmax 函数定义

  到目前为止,我们都是针对二分类问题进行处理的,能够得到发生或者不发生的概率p。在Logistic regression二分类问题中,我们可以使用sigmoid函数将输入 W x + b Wx+b Wx+b映射到(0,1)区间中,从而得到属于某个类别的概率。将这个问题进行泛化,推广到多分类问题中,我们可以使用softmax函数,对输出的值归一化为概率值。
  我们需要将训练样本的标签 label 做出改变从二值标签到向量标签, 假设K是类的数目,y 可以取 K 个不同的值,针对它我们可以对于每个由前面 Sigmoid 函数输出的属于某一个类的概率 X 估算出 P ( y = k ∣ x )   P(y = k | x)\, P(y=kx) 的概率,其中 k = 1 … K(即进一步将 Logistic 回归泛化,通过 Softmax 函数对输出的值做归一化为新的概率值)。它的输出将会是一个 K 维的向量,每个数值对应的是它属于当前类的概率。

  • 这里假设在进入softmax函数之前,已经有模型输出C值,其中C是要预测的类别数,模型可以是全连接网络的输出a,其输出个数为C,即输出 a 1 , a 2 , a 3 , . . . , a C a_{1},a_{2},a_{3},...,a_{C} a1,a2,a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值