尝试写点 GLM 的相关知识点,这部分内容看似不难,但要搞清楚理解透彻还是需要费一番心思,然而我不打算扣太多细节,仅记录一些我觉得比较关键的点以及比较难的点。
已经很熟悉常见的线性模型了,例如 线性回归和二分类问题。线性回归的模型表达为
![]()
,当然我们还知道,不仅仅限于直线,还可以扩展到多项式曲线的回归:
![]()
,当然,这可以理解为当直线无法拟合时,将数据进行升维,既然任何平滑的曲线都可以用泰勒展开,那使用多项式来拟合最合适不过。二分类问题,我们当然可以使用
![]()
其中 a 为参数来处理二分类问题,如果特征是多维,那就找到一条直线或者超平面,记为
![]()
,然后对于每个数据点,其分类为
![]()
。当 d=1时,变为
![]()
与前面一致,如果数据点不是线性可分,也可以考虑升维
![]()
。
选定了模型之后,如何拟合?(以下为了方便,
![]()
均写为
![]()
)
通常使用迭代的方式求解参数,这需要我们找到一个检测标准以及每一步迭代的优化方向。对于线性回归,可以使用距离作为损失进行优化,即
![]()
(一般选L2范数),迭代方向可选用梯度下降方向。对于二分类问题,可以选择误分类点到分隔超平面的距离作为损失,为了便于计算,将分类标签记为
![]()
,判断函数为符号函数
![]()
,分隔超平面的法向量为
![]()
,于是 误分类点
![]()
到超平面的距离为
![]()
,如果
![]()
,那么分类正确,否则分类错误,所以误分类点到超平面的距离为
![]()
,当然,我们可以让超平面的系数进行等比例放缩,这不影响超平面本身,所以令
![]()
,故放缩后超平面系数的 L2 范数为 1,于是 误分类点到超平面的距离为
![]()
,于是总损失为
![]()
,使用梯度下降即可优化。
广义线性模型
以上两个问题其实都是线性模型,在统计学习中,可以使用广义线性模型将它们统一起来。为此,首先看看利用概率统计相关的知识如何求解这两个具体。对于线性回归,我们将误差
![]()
看作随机变量,服从
![]()
,这是合理的,于是真实值
![]()
。对于二分类,可以将
![]()
通过一个严格增函数
![]()
变为
![]()
,即
![]()
,于是二分类问题使用 Bernoulli 分布
![]()
。线性回归和二分类其实都是广义线性回归的例子,广义线性模型包含以下三个部分:
- 线性预测器
- 连接函数
- 随机变量的概率分布
其中,线性预测对于模型的系统部分,这正是“线性”的由来,即,这一部分考虑的是特征的线性组合,其值
![]()
经过一个连接函数的变换,得到参数
![]()
,
![]()
作为某个随机变量的概率分布
![]()
的期望。鉴于指数族分布有诸多优点,所以第三部分“概率分布”使用指数族函数
![]()
,注意这里随机变量
![]()
是一维的,所以我们可以使用两个参数
![]()
,即
其中自然参数
![]()
与特征
![]()
有关,
![]()
与特征
![]()
无关,
![]()
称作散度参数。使用一个函数来实现分布期望与自然参数之间的转换
![]()
,又因为连接函数
![]()
,所以
![]()
。如果
![]()
,即
![]()
,称其为规范连接函数,此时
![]()
。
再以前面两个例子说明,线性回归中,线性预测器为
![]()
,连接函数为恒等函数
![]()
,即
![]()
,概率分布为正态分布;二分类中,线性预测器为
![]()
,连接函数为 sigmoid 函数
![]()
,概率分布为 Bernoulli 分布。这两个例子中均为规范连接函数,即
![]()
。不难看出在广义线性模型下,它们都包含了线性预测部分,但是随机部分不同,从而连接线性预测部分和随机部分的函数也不同。
根据指数族分布的属性有(推导过程可参考 “指数族分布 1”),
例子
其中
![]()
,
![]()
,
![]()
,
![]()
,
![]()
,
![]()
。
其中,
![]()
,
![]()
,
![]()
,
![]()
,
![]()
,
![]()
,
![]()
。
其中
![]()
,其他参数容易给出,略。当 N = 1 时,退化到 二分类。
回顾 Poisson 分布
![]()
,故指数型为,
其中
![]()
,
![]()
,其他参数容易得到,略。
还有一些其他GLM 模型,略。
ML 和 MAP 估计
记数据集为
![]()
,那么对数似然为
求梯度,
简单起见考虑规范连接函数
![]()
,于是上式变为
![]()
,对数似然梯度为,
如果使用二阶优化方法,那么计算 Hessian,
其中,
![]()
,
![]()
。
牛顿法更新公式为,
由于
![]()
,两边同时乘以
![]()
,得
由于
![]()
对称且正定(可参考 “Logistic回归和数值优化”一文中的牛顿法一节,),其逆矩阵存在,故有
![]()
,代入参数更新公式得,
对于 MAP 估计,对参数
![]()
增加 L2 正则即可,这部分略。
总结
回头再看,好像没有讲太多的 GLM 的东西,但是如果接受了前面所说的 GLM 的三个组成部分,似乎一切都是水到渠成,还是比较简单的:GLM 中线性的部分就是线性预测器,然后利用一个连接函数将线性预测结果与随机部分联系起来。研究 GLM,一个目的就是为了将这一类问题用一个通用的套路/步骤来进行模型拟合。