1 问题来源

记得一开始学逻辑回归时候也不知道当时怎么想得,很自然就接受了逻辑回归的决策函数——sigmod函数:

与此同时,有些书上直接给出了该函数与将 $y$ 视为类后验概率估计 $p(y=1|x)$ 等价,即

并给出了二分类(标签 $yin(0,1)$)情况下的判别方式:

但今天再回过头看的时候,突然就不理解了,一个函数值是怎么和一个概率联系起来了呢?有些人解释说因为 $h_{theta}(x)$ 范围在0~1之间啊,可是数值在此之间还是没说明白和概率究竟有什么关系。所以,前几天看了一些资料,对个人而言比较好理解的还是从广义线性模型(Generalized Linear Models, GLM)来解释,至少这种方法能从概率出发直接推出 sigmod 函数。实际上,线性回归和逻辑回归都是广义线性模型的特例,从此出发,得到对应的决策函数就比较自然了。

2 指数分布族

在介绍广义线性模型之前不得不先说一下“指数分布族”,因为指数分布族是广义线性模型所提出的假设之一。
指数分布族中的一类分布都可以用下述公式描述:

下面是公式中的参数:(可以通过后面具体例子的推导来理解)

  • η:分布的自然参数(也就是说跟分布有关)
  • T(y):充分统计量(通常 T(y)=y)
  • a(η):log partition function,$e^{-a(eta)}$ 本质上起着规范化常数的作用,保证概率分布 $sum p(y;eta)$ 为1

当T、a、b固定之后实际上就确定了指数分布族中的一种分布模型,就得到了以$eta$为参数的模型。

其实,大多数的概率分布都属于指数分布族:

  • 伯努利分布(Bernoulli):对 0、1 问题进行建模;
  • 二项分布(Multinomial):对 K 个离散结果的事件建模;
  • 泊松分布(Poisson):对计数过程进行建模,比如网站访问量的计数问题,放射性衰变的数目,商店顾客数量等问题;
  • 伽马分布(gamma)与指数分布(exponential):对有间隔的正数进行建模,比如公交车的到站时间问题;
  • β 分布:对小数建模;
  • Dirichlet 分布:对概率分布进建模;
  • Wishart 分布:协方差矩阵的分布;
  • 高斯分布(Gaussian)

知道了这么多的指数分布族之后其实我们已经能够求解一些问题了,求解的方法就是将概率分布符合上述指数分布族的转换成它对应的指数分布族的形式,求出指数分布族对应位置上的参数即可求出原模型的参数。

3 广义线性模型

为了给问题构造GL 大专栏  从广义线性模型(GLM)理解逻辑回归M模型,必须首先知道GLM为作出的三个假设:

  1. $y|x;θ sim ExponentialFamily(eta)$。比如,给定样本$x$与参数$theta$,样本的分类$y$服从以 $eta$ 为参数的指数分布族中的某个分布
  2. 给定$x$,广义线性模型的目标是求解 $T(y)|x$,不过由于很多情况下 $T(y) = y$ 所以我们的目标变成了求 $h(x) = E[y|x]$
  3. $eta=theta^Tx$

这些假设看起来似乎很神奇,比如第三条,但这就是GLM的假设(说成“设计”更合理),从这三个假设出发能得到一类很好的学习算法。下面就来展示一下如何从GLM推导出逻辑回归和线性回归。

3.1 GLM与逻辑回归

接下来按照上面GLM作出的假设条件来推导逻辑回归。

  • 对于二分类问题,很自然想到$y$服从伯努利分布,满足第一个假设,即$y|x;theta sim Bernoulli(phi)$
  • 第二个假设很重要,是求决策函数的。因此我们要求$E[y|x;theta]$。对于伯努利分布来说,$p(y=1|x;theta)=phi$,$p(y=0|x;theta))=1-phi$。因此有:

参照指数分布族的标准形式,可以得到:

$b(y)=1$
$T(y)=y$
$eta=log(frac{phi}{1-phi})y$,进而得到$phi=frac{1}{1+e^{-eta}}$
$a(eta)=-log(1-phi)=log(1+e^eta)$

再根据第三个假设条件$eta=theta^Tx$,得到 $phi=frac{1}{1+e^{-eta}}=frac{1}{1+e^{-theta^Tx}}$,即 $p(y=1|x;theta)=frac{1}{1+e^{-theta^Tx}}$,这样就将概率和 sigmod 函数联系起来了。

到这里,GLM已经解决了概率和sigmod函数之间关系的疑惑了。

3.2 GLM与线性回归

  • 在线性回归中,我们对概率分布作出的假设是 $y|x;theta sim N(mu,sigma^2)$
  • 接下来求 $h_{theta}(x)=E[y|x;theta]$。对于高斯分布,从概率角度是通过极大似然法来求,可以发现最后的结果是不受$sigma$影响的,因此可以将$sigma$设为1。(原因如下所示)

等价于:

所以我们从 $y|x;theta sim N(mu,1)$ 出发来推导:

通刚才一样,参照指数分布族的标准形式,可以得到:

$b(y)=frac{1}{sqrt{2pi}}exp(-frac{y^2}{2})$
$T(y)=y$
$eta=mu$
$a(eta)=frac{mu^2}{2}=frac{eta^2}{2}$

再根据第三个假设条件,即可得到线性回归模型 $h_{theta}(x)=E[y|x;theta]=mu=eta=theta^Tx$

综上所述,广义线性模型GLM是通过假设一个概率分布并将其化成指数分布族形式,从而得到不同的模型,这对理解模型的由来很有帮助。

参考:
CS229 Andrew Ng

从广义线性模型(GLM)理解逻辑回归的更多相关文章

  1. 广义线性模型 GLM

    Logistic Regression 同 Liner Regression 均属于广义线性模型,Liner Regression 假设 $y|x ; \theta$ 服从 Gaussian 分布,而 ...

  2. 广义线性模型(GLM, Generalized Linear Model)

    引言:通过高斯模型得到最小二乘法(线性回归),即:      通过伯努利模型得到逻辑回归,即:      这些模型都可以通过广义线性模型得到.广义线性模型是把自变量的线性预测函数当作因变量的估计值.在 ...

  3. 广义线性模型------逻辑回归和softmax回归

    1.广义线性模型 2.逻辑回归 3.softmax回归

  4. 广义线性模型(GLM)

    一.广义线性模型概念 在讨论广义线性模型之前,先回顾一下基本线性模型,也就是线性回归. 在线性回归模型中的假设中,有两点需要提出: (1)假设因变量服从高斯分布:$Y={{\theta }^{T}}x ...

  5. 【Coursera】线性回归和逻辑回归

    一.线性回归 1.批量梯度下降法 每次对参数进行一次迭代时,都要扫描一遍输入全集 算法可以收敛到局部最优值 当迭代多次之后,每次迭代参数的改变越小 2.随机梯度下降法 对于一个输入样本,对参数进行一次 ...

  6. 逻辑回归(Logistic Regression)

    转载请注明出自BYRans博客:http://www.cnblogs.com/BYRans/ 本文主要讲解分类问题中的逻辑回归.逻辑回归是一个二分类问题. 二分类问题 二分类问题是指预测的y值只有两个 ...

  7. 分类和逻辑回归(Classification and logistic regression)

    分类问题和线性回归问题问题很像,只是在分类问题中,我们预测的y值包含在一个小的离散数据集里.首先,认识一下二元分类(binary classification),在二元分类中,y的取值只能是0和1.例 ...

  8. 逻辑回归(Logistic Regression)推导

    出自BYRans博客:http://www.cnblogs.com/BYRans/ 本文主要讲解分类问题中的逻辑回归.逻辑回归是一个二分类问题. 二分类问题 二分类问题是指预测的y值只有两个取值(0或 ...

  9. 机器学习——逻辑回归(Logistic Regression)

    1 前言 虽然该机器学习算法名字里面有"回归",但是它其实是个分类算法.取名逻辑回归主要是因为是从线性回归转变而来的. logistic回归,又叫对数几率回归. 2 回归模型 2. ...

随机推荐

  1. 【MySQL参数】-innodb_additional_mem_pool_size

    原博客:https://yq.aliyun.com/articles/32384

  2. 使用Eclipse开发学习 Spring Boot 教程的内容小结

    spring-tool-suite使用教程,并创建spring配置文件 Spring Boot基础教程1-Spring Tool Suite工具的安装 Spring Boot基础教程2-RESTful ...

  3. js分页的一些思考

    一两年之前在写java的时候,分页的逻辑是写在后端的,用java去实现,jsp是动态展示页码和数据.但是对于一个用ajax加载的分页数据来说,分页的逻辑必须也在前端完成,那么就不得不去思考一下在js里 ...

  4. JavaSE--数字签名之校验签名

    参考:http://blog.csdn.net/dotuian/article/details/51722300 关于keystore的简单介绍 Keytool是一个Java数据证书的管理工具 ,Ke ...

  5. MySQL--MySQL分区

    参考:http://bbs.51cto.com/thread-1080714-1.html MySQL 从5.1 版本开始支持分区的功能.分区是指根据一定的规则,数据库把一个表分解成多个更小的.更容易 ...

  6. python-day8爬虫基础之数据存储

    数据存储,在爬虫中也是十分的重要,因为我们要把我们想要的数据保存到本地,其中最简单直接的就是保存为文件文本,比如:TXT.JSON.CSV等等,除此之外,我们还可以将其保存到数据库中,常见的数据库类型 ...

  7. 93.QuerySet转换为SQL的条件:迭代,切片(指定步长),len函数,list函数,判断

    生成一个QuerySet对象并不会马上转换为SQL语句去执行. books = Book.objects.filter(pk=3) print(connection.queries) 打印出djang ...

  8. 从git上拉取项目 如果数据库密码不一致 会报错 500

    解决方法 在该路径下设置 数据库的密码

  9. 肯德基联手亚马逊Kindle试水咖啡主题店中店能成功吗?

    互联网上始终有一个传说:kindle与泡面是绝配.因为用kindle压着泡面,泡出来的味道格外的好.当然,这只是一个调侃.毕竟很多人购买kindle的动力是为了摆脱其他电子设备的诱惑,想去好好去读书. ...

  10. Win10卸载python总是提示error2503失败各种解决办法

    最近win10的电脑装了python的3.4,然后想卸载,就总是提示error 2053,类似于这种: 下面是我的坎坷解决之路: 1.网上说,任务管理器 --> 详细信息 --> expl ...