前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习之回归(二):广义线性模型(GLM)

机器学习之回归(二):广义线性模型(GLM)

原创
作者头像
汪毅雄
修改2017-10-16 17:20:29
10K1
修改2017-10-16 17:20:29
举报

导语:本文在上篇线性回归的基础上,延伸到广义线性模型,并把广义线性模型目的、假设条件来源,指数族分布、连接函数等各个函数的关系都进行详细地解释。最后用两个常见的GLM特例Logistics回归、Softmax模型进行了推导。

接上篇,我们了解了一下线性回归及其延伸回归的原理(传送门 机器学习之回归原理详述(一)),我们知道了线性回归是通过建立了一个线性模型来预测样本的值。而今天要聊的内容是线性模型的升级版,叫广义线性模型(GLM),基于此模型延伸而来的很多子模型很多,而且用途非常广,所以研究其很有意义!!!

GLM一个抽象模型,里面涉及了不少内容,很多相关文章也都有介绍。但是不少文章只是介绍了怎么用它,至于为什么引入,其各个角色之间的关系,介绍的不多。所以这篇文章中,我会引入很多个人看法(可能有错)和通俗的语言,来尝试把它讲的更明白些。由于内容有点生涩,关系有点乱,所以想了解原理的同学可能需要花点时间来好好了解,当然我自己也花了很多功夫。

为什么引入GLM?

上一篇文章中,我们知道了”回归“一般是用于预测样本的值,这个值通常是连续的。但是受限于其连续的特性,一般用它来进行分类的效果往往很不理想。为了保留线性回归”简单效果有不错“的特点,又想让它能够进行分类,因此需要对预测值再做一次处理。这个多出来的处理过程,就是GLM所做的最主要的事。而处理过程的这个函数,我们把它叫做连接函数。

如下图是一个广义模型的流程:

[1503629767421_1860_1503629767588.png]
[1503629767421_1860_1503629767588.png]

图中,当一个处理样本的回归模型是线性模型,且连接函数满足一定特性(特性下面说明)时,我们把模型叫做广义线性模型。因为广义模型的最后输出可以为离散,也可以为连续,因此,用广义模型进行分类、回归都是可以的。

但是为什么线性回归是广义线性模型的子类呢,因为连接函数是f(x) = x本身的时候,也就是不做任何处理时,它其实就是一个线性回归啦。

所以模型的问题就转化成获得合适的连接函数?以及有了连接函数,怎么求其预测函数
[1503629780133_9591_1503629780184.png]
[1503629780133_9591_1503629780184.png]

连接函数的获取

刚才说了,只有连接函数满足一定特性才属于广义线性模型。特性是什么呢?先简单描述下背景。

在广义线性模型中,为了提高可操作性,因此限定了Y和X的分布必须满足指数族分布:

[1503630838235_9504_1503630838326.png]
[1503630838235_9504_1503630838326.png]

其中

[1503630865343_109_1503630865395.png]
[1503630865343_109_1503630865395.png]
即为上图所提到的回归模型输出的连续值,也就是说
[1503630873748_7079_1503630873804.png]
[1503630873748_7079_1503630873804.png]

有上述条件,满足指数族分布的样本,就可以通过来E(T(Y))得到
[1503630899198_9219_1503630899253.png]
[1503630899198_9219_1503630899253.png]
了,也就是上图连接函数的输出值。
// PS:对于Y,X不满足指数族分布的,只不过不能用E(T(Y))来描述成
[1503630934815_979_1503630934871.png]
[1503630934815_979_1503630934871.png]
,其也不属于广义线性模型,但不是不可计算。

// PS1:E(T(Y))这个统计量为什么可以预测函数呢,这块是可以证明的,本文就不详述了。

事实上,指数分布族包括了除了柯西分布和t分布以外的其他基本分布,因此其适用域非常广。

从图中我们可以看到

[1503630965363_8817_1503630965407.png]
[1503630965363_8817_1503630965407.png]
为函数的输入,而
[1503630983745_6698_1503630983911.png]
[1503630983745_6698_1503630983911.png]
为函数的输出。所以有这么一个公式:

[1503631012589_9410_1503631012639.png]
[1503631012589_9410_1503631012639.png]
[1503631049798_3112_1503631049844.png]
[1503631049798_3112_1503631049844.png]
[1503631064657_7204_1503631064704.png]
[1503631064657_7204_1503631064704.png]
[1503631079159_7563_1503631079210.png]
[1503631079159_7563_1503631079210.png]
不管是 f 还是
[1503631090934_5774_1503631090979.png]
[1503631090934_5774_1503631090979.png]
,其能反映输入输出的关系就行对吧。

所以求连接函数的步骤就变成:

1、把Y、X所满足的分布拼凑成指数族分布形式

2、在指数族分布形式中获得 T(Y)的函数形式和
[1503631130479_4751_1503631130524.png]
[1503631130479_4751_1503631130524.png]
的值。

3、算出 E(T(Y))和

[1503631141383_1939_1503631141425.png]
[1503631141383_1939_1503631141425.png]
的关系,并把
[1503631167485_379_1503631167527.png]
[1503631167485_379_1503631167527.png]
代入
[1503631173898_9231_1503631173943.png]
[1503631173898_9231_1503631173943.png]
中,获得连接函数,并得到
[1503631181799_9563_1503631181843.png]
[1503631181799_9563_1503631181843.png]

有了连接函数和
[1503631203705_5801_1503631203745.png]
[1503631203705_5801_1503631203745.png]
,就可以用最大似然估计啊、梯度下降算法啊来进行后一步的计算了。

常见连接函数求解及对应回归

伯努利分布 > Logistics回归

伯努利分布只有0、1两种情况,因此它的概率分布可以写成:

[1503631227039_9600_1503631227107.png]
[1503631227039_9600_1503631227107.png]

写成指数族分布的形式有:

[1503631236921_7988_1503631236999.png]
[1503631236921_7988_1503631236999.png]

这样在指数族分布中: B(y) = 1; T(Y) = y;

[1503631250338_2827_1503631250412.png]
[1503631250338_2827_1503631250412.png]
,
[1503631260674_298_1503631260797.png]
[1503631260674_298_1503631260797.png]

这样E(T(Y))= E(y);

由于伯努利分布是离散分布,因此它的期望:

[1503631274847_3385_1503631274911.png]
[1503631274847_3385_1503631274911.png]
所以:
[1503631287173_7899_1503631287349.png]
[1503631287173_7899_1503631287349.png]

又因为

[1503631302938_2959_1503631303006.png]
[1503631302938_2959_1503631303006.png]
,此函数输入为
[1503631319308_8193_1503631319370.png]
[1503631319308_8193_1503631319370.png]
也就是
[1503631329237_2026_1503631329305.png]
[1503631329237_2026_1503631329305.png]
,输出为
[1503631338120_2182_1503631338215.png]
[1503631338120_2182_1503631338215.png]
,这不就是我们要找的连接函数:

[1503631353564_6294_1503631353635.png]
[1503631353564_6294_1503631353635.png]

又因为

[1503631364668_8291_1503631364725.png]
[1503631364668_8291_1503631364725.png]
,代入
[1503631373969_5298_1503631374034.png]
[1503631373969_5298_1503631374034.png]
式子中,得到

[1503631386189_7556_1503631386256.png]
[1503631386189_7556_1503631386256.png]

化简得到:

[1503631398303_9585_1503631398369.png]
[1503631398303_9585_1503631398369.png]

用这个预测函数的回归,我们把它叫做Logistics回归

Logistics的回归的使用范围很广,例如判断是否垃圾邮件这种二分类问题上经常出现。

多项分布 > softmax回归

softmax理解:

假设有n个数x1、x2。。。xn,我们从中随机抽取一个数,请问这个数是什么?

答案显然是不知道的,但是我们可以回答,这个数最有可能是什么。

所以我们计算一下抽到xi的概率为p(xi),这样p(xi)占的比重为:

[1503631425869_4308_1503631425919.png]
[1503631425869_4308_1503631425919.png]

那我们可以写上答案为max p(x1), p(x2) ... p(xi) ... p(xn) 所对应的那个x。

但是呢,直接用max p(xi) ,其在取值域存在不可导点的,不利于计算。

因此为了消除它的不可导点,我们用了一种对概率曲线柔化后的max方式进行模拟,这种柔化的max我们把它叫做softmax。大概模拟的示意如图:

[1503631438429_8549_1503631438499.png]
[1503631438429_8549_1503631438499.png]

这种软化的方式是对概率指数化:

[1503631450833_2886_1503631450895.png]
[1503631450833_2886_1503631450895.png]

所以结果变成求max exp(p(xi)) ,以这种概率形式来对线性模型输出值做概率计算,并通过选取最大概率的方式来进行分类的模型,我们称之为softmax模型。

softmax多项分布解释:

刚才提了一个稍微好理解的方式。其实softmax和多项分布息息相关的,我们用最客观的方式推导一下。多项分布其实是伯努利分布的一个扩展,其取值可以从 1、2....k 中取,可以简单地建模为如下:

[1503631463407_4939_1503631463480.png]
[1503631463407_4939_1503631463480.png]

第1个数为1,其他数全为0,记为1

第k个数为1,其他数全为0,记为2

这样就对 1,2....k进行了区分。

因此它的概率分布如下:

[1503631473441_137_1503631473514.png]
[1503631473441_137_1503631473514.png]

其中u{y=k}的意思为:y==k ? 1: 0 相当输出1,否则为0。

因此对应在指数族分布中,其:

B(y) = 1;
[1503631497219_5142_1503631497289.png]
[1503631497219_5142_1503631497289.png]

所以有:

[1503631508371_6246_1503631508427.png]
[1503631508371_6246_1503631508427.png]

对上面等式从1至k相加可得:

[1503631521255_3300_1503631521314.png]
[1503631521255_3300_1503631521314.png]
这样我们就得到了
[1503631534953_6790_1503631535043.png]
[1503631534953_6790_1503631535043.png]
的一般形式。

而对于其期望和预测函数:

[1503631546122_8382_1503631546189.png]
[1503631546122_8382_1503631546189.png]

结论和上面说的拍脑门的方式一模一样。

Softmax的回归用的非常非常多,可以说是最常用的k分类器之一。真的很重要!!!

广义线性模型的计算

有了
[1503631574903_2683_1503631574966.png]
[1503631574903_2683_1503631574966.png]
这个概率密度函数,我们对其求对数似然函数:
[1503631590325_5366_1503631590493.png]
[1503631590325_5366_1503631590493.png]

其损失函数J也就是负的最大似然函数。对最大似然函数求梯度可得:

[1503631602022_6150_1503631602086.png]
[1503631602022_6150_1503631602086.png]

这个式子是一个广义线性模型通用的公式,也就是对于线性模型、Logistics等都适用。用此梯度不断对损失函数进行梯度下降,得到损失函数的最小值,并取出对应参数即可。这部分实现代码就不贴了,推荐一个python库sklearn,里面集成了很多模型,很适合新手上路。

附一个常见连接函数表(来源某付费学习视频PPT):

[1503631620510_413_1503631620929.png]
[1503631620510_413_1503631620929.png]

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么引入GLM?
  • 连接函数的获取
  • 常见连接函数求解及对应回归
    • 伯努利分布 > Logistics回归
    • 多项分布 > softmax回归
      • softmax理解:
      • softmax多项分布解释:
      • 广义线性模型的计算
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档