热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

广义线性模型(GeneralizedLinearModels,GLM)

上一篇博客中我们说到线性回归和逻辑回归之间隐隐约约好像有什么关系,到底是什么关系呢?我们就来探讨一下吧。(这一篇数学推导占了大多数,可能看起来会略有枯燥,但这本身就是一个把之前算法



  上一篇博客中我们说到线性回归和逻辑回归之间隐隐约约好像有什么关系,到底是什么关系呢?我们就来探讨一下吧。(这一篇数学推导占了大多数,可能看起来会略有枯燥,但这本身就是一个把之前算法统一起来的抽象模型,从一个更高的角度给出了一个更具泛化能力的方法,还是很有意义的。)

1. 指数分布族

  首先,我们先来定义指数分布族(exponential family),如果一类分布可以写成如下的形式,那么它就是属于指数分布族的:


p(y;η)=b(y)exp(ηTT(y)a(η))

这里

η
叫做分布的自然参数(natural parameter),或者叫标准参数(canonical parameter);T(y)是充分统计量( sufficient statistic),对于我们考虑的大多数分布,

T(y)=y
;然后

a(η)
叫做log partition function(不会翻译,就强不翻了。。。)。

ea(η)
实际上是一个标准化的常数,用来保证这个分布的和为1。
  这个指数分布族是何方神圣呢?为什么要先讲它呢?因为我们前面讲过的伯努利分布和高斯分布都可以归为指数分布族的一种。什么?这两个长得毫不相关的分布可以归为一起吗?我的天呐,这么神奇吗?(小岳岳脸)哈哈,是的!下面我们就来说一说这是怎么回事。
  伯努利分布就是我们前面讲的y只能取0和1时的情况,它就可以变成指数分布族的形式,我们试一试:
这里写图片描述
  这里,我们选择自然参数

η=log(ϕ/(1ϕ))
,诶,有个很有趣的事情:如果我们用

η
表示

ϕ
,我们可以得到

ϕ=1/(1+eη)
,是不是很眼熟?这不就是sigmoid function吗?没错!更神奇的还在后面呢。现在我们把伯努利分布写成了指数分布族的形式。什么?不是很明显?它们的对应关系是这样的:
  这里写图片描述
  好,我们再来说高斯分布。前面我们说了,高斯分布的

σ2
对模型的结果是没有影响的那我们就干脆令它为1好了(其实如果我们把它当做变量,依然行的通,只是得到的

η
将会是二维的)。高斯分布也写成指数分布族的形式,推导是这样的:
  这里写图片描述
  它与指数分布族的对应关系为:
  这里写图片描述
  上面我们展示了伯努利和高斯分布,实际上,还有multinomial(后面将会谈到),泊松分布,gamma和指数分布,beta和狄里克雷分布等等都是属于指数分布族的。怎么样,这个广义线性模型还是有两下子的的,原来我们前面讨论的分类都可以统一为指数分布族的形式。但这还不够,我们怎么从指数分布族中推出我们想要的东西呢?下面我们就来看一看怎样通过构造广义线性模型来解决实际问题。

2. 构造GLMs

  现在我们来把之前的分类问题扩展一下。生活中的很多事物肯定不止一个种类,我们来考虑多类别的分类问题,讨论一下如何利用GLMs来解决。
  首先,和之前一样,我们构造模型都是有一定的条件的。我们先来作三个假设:
  1.

y|x;θExpoentialFamily(η)
。这当然是必须的,我们就是要用指数分布族来解决问题嘛。
  2. 我们的目标是给定x,预测T(y)期望。比如我们刚才说了,大多数情况下T(y)=y,而在逻辑回归问题中,我们要预测的

hθ=p(y=1|x;θ)=0p(y=0|x;θ)+1(y=1|x;θ)=E[y|x;θ]

  3. 自然参数

η
满足

η=θTx

  如果我们的问题需要满足这三个假设,那么我们就可以通过构造广义线性模型来解决。线性回归和逻辑回归都是满足这三个假设的,就可以使用这个模型。

2.1 普通的最小平方(Ordinary Least Squares)问题

  在线性回归的最小平方问题中,目标变量y(在GLM的术语中也称作响应变量(response variable))是连续的,给定x,y的条件分布符合我们刚刚讨论过的高斯分布,均值为

μ
。套用前面GLM的推导,我们有

μ=η
。所以,我们可以得到线性回归的假设函数就是:
这里写图片描述
这样,我们就从广义线性模型的角度得到了线性回归的解决方案。

2.2 逻辑回归

  在二元分类问题中,给定x,y服从我们刚才讨论的伯努利分布,均值为

ϕ
。同样利用前面的推导我们可以得到逻辑回归的假设函数就是:
这里写图片描述
最后一个等号是由前面第3个假设的到的。同样的,我们也从广义线性模型的角度得到了逻辑回归的解决方案。这里,我们就知道了为什么在逻辑回归中我们的假设函数要用sigmoid function了吧,并不是凭空才出来的喔。
  这里我们介绍几个术语。

g(η)=E[T(y);η]
被称为canonical response function,它的反函数

g1
,被称为canonical link function

2.3 Softmax Regression

  好了,铺垫了这么久,我们终于可以考虑我们的多类别分类的问题了,我们首先用multinomial distribution来给它建立模型。假设我们的类别

y{1,2,,k}
。我们可以用一个k维的向量来表示分类结果,当y=i时,向量的第i个元素为1,其它均为零。但这样做是存在冗余的,因为如果我们知道了前k-1个元素,那么第k个其实就已经确定了,也就是说,这k个元素不独立。因此我们可以只用k-1维向量来表示,每一维对应的参数为

ϕi
。为了方便,我们也使用

ϕk
,但应该记住,它并不是一个真正的参数,它只表示

ϕk=1k1i=1ϕi
。这样我们可以定义:
这里写图片描述
注意,这里就和前面T(y)=y不一样了,这里的T(y)是一个向量了。我们用

(T(y))i
表示T(y)的第i个元素。
  为了表示方便,我们用符号

1{}
表示判断,{}中的表达式为真时输出1,为假时输出0。于是我们有

(T(y))i=1{y=i}
,它表示只有当y=i时

(T(y))i
才不为零。另外,由于

ϕi
表示第i个类别的概率,我们有

E[(T(y))i]=P(y=i)=ϕi

  好,我们仿照前面二元分类的过程,来说明这个multinomial也是属于指数分布族的:
  这里写图片描述
  这里,
  这里写图片描述
  我们可以看到:
  这里写图片描述
  当i=0时上式为零。我们的目的是为了得到参数

ϕ
,于是
  这里写图片描述
  最后我们终于得到:
  这里写图片描述
  我们再利用假设3,就可以得到参数

ϕ
了:
  这里写图片描述
  这个模型就被称为softmax regression,它是逻辑回归在多类别情况下的扩展。综合起来,我们的假设函数的输出为:
  这里写图片描述
  最后就是参数的学习了。我们依然可以使用最大似然的方法来学习

θ
,似然函数为:
  这里写图片描述
  然后使用梯度上升或牛顿方法等来求出使似然函数最大的

θ
值,就大功告成了!
  






推荐阅读
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 作为一名 Ember.js 新手,了解如何在路由和模型中正确加载 JSON 数据是至关重要的。本文将探讨两者之间的差异,并提供实用的建议。 ... [详细]
  • 在现代Web应用中,当用户滚动到页面底部时,自动加载更多内容的功能变得越来越普遍。这种无刷新加载技术不仅提升了用户体验,还优化了页面性能。本文将探讨如何实现这一功能,并介绍一些实际应用案例。 ... [详细]
  • 基于结构相似性的HOPC算法:多模态遥感影像配准方法及Matlab实现
    本文介绍了一种基于结构相似性的多模态遥感影像配准方法——HOPC算法,该算法通过相位一致性模型构建几何结构特征描述符,能够有效应对多模态影像间的非线性辐射差异。文章详细阐述了HOPC算法的原理、实验结果及其在多种遥感影像中的应用,并提供了相应的Matlab代码。 ... [详细]
  • LambdaMART算法详解
    本文详细介绍了LambdaMART算法的背景、原理及其在信息检索中的应用。首先回顾了LambdaMART的发展历程,包括其前身RankNet和LambdaRank,然后深入探讨了LambdaMART如何结合梯度提升决策树(GBDT)和LambdaRank来优化排序问题。 ... [详细]
  • C语言标准及其GCC编译器版本
    编程语言的发展离不开持续的维护和更新。本文将探讨C语言的标准演变以及GCC编译器如何支持这些标准,确保其与时俱进,满足现代开发需求。 ... [详细]
  • 解析SQL查询结果的排序问题及其解决方案
    本文探讨了为什么某些SQL查询返回的数据集未能按预期顺序排列,并提供了详细的解决方案,帮助开发者理解并解决这一常见问题。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本题探讨了在大数据结构背景下,如何通过整体二分和CDQ分治等高级算法优化处理复杂的时间序列问题。题目设定包括节点数量、查询次数和权重限制,并详细分析了解决方案中的关键步骤。 ... [详细]
  • Python中HOG图像特征提取与应用
    本文介绍如何在Python中使用HOG(Histogram of Oriented Gradients)算法进行图像特征提取,探讨其在目标检测中的应用,并详细解释实现步骤。 ... [详细]
  • Python 工具推荐 | PyHubWeekly 第二十一期:提升命令行体验的五大工具
    本期 PyHubWeekly 为大家精选了 GitHub 上五个优秀的 Python 工具,涵盖金融数据可视化、终端美化、国际化支持、图像增强和远程 Shell 环境配置。欢迎关注并参与项目。 ... [详细]
  • 本文旨在探讨如何利用决策树算法实现对男女性别的分类。通过引入信息熵和信息增益的概念,结合具体的数据集,详细介绍了决策树的构建过程,并展示了其在实际应用中的效果。 ... [详细]
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
  • 在互联网信息爆炸的时代,当用户需求模糊或难以通过精确查询表达时,推荐系统成为解决信息过载的有效手段。美团作为国内领先的O2O平台,通过深入分析用户行为,运用先进的机器学习技术优化推荐算法,提升用户体验。 ... [详细]
  • 机器学习公开课备忘录(三)机器学习算法的应用与大数据集
    机器学习公开课备忘录(三)机器学习算法的应用与大数据集对应机器学习公开课第六周和第10周机器学习算法模型的选择与评价1、对于一个data,可以将data划分为trainingset、t ... [详细]
author-avatar
一只小蚂蚁
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有