logo

广义加性模型

wangzf / 2022-09-23


目录

广义加性模型简介

广义加性模型(GAM)作为回归家族的一个扩展,是最强大的模型之一,可以为任何回归问题建模

线性模型简单、直观、便于理解,但是,在现实生活中,变量的作用通常不是线性的。 线性的假设很可能不能满足实际需求,甚至直接违背实际情况

1985 年 Stone 提出加性模型(additive models),模型中每一个加性项使用单个光滑函数来估计, 在每一个加性项中可以解释因变量如何随自变量变化而变化, 解决了模型中自变量数量较多时,模型的方差会加大问题

1990 年,Hastie 和 Tibshirani 扩展了加性模型的应用范围, 提出了广义加性模型(Generalized Additive Models)

线性回归模型

y=ω1x1+ω2x2++ωnxn+σ

其中:

广义加性模型

广义加性回归方程

g(y)=ω1F1(x1)+ω2F2(x2)++ωnFn(xn)+σ

其中:

平滑函数

广义加性模型中的 Fi,i=1,2,,n 是一组对每个自变量分别建模为目标变量的函数, 称为平滑函数(smoothing functions),将所有这些函数加起来预测 g(y)

Fi 对于不同的自变量可以采用不同的表示, 对于一个自变量 xiFi 可以表示为如下形式:

基函数

基函数(basic functions) 是一组可以用来表示复杂非线性函数的简单函数。

例如,有非线性函数:

f(x)=5+2x2

为了表示这个复杂的非线性函数,可以使用基函数集: f1(x)=1,f2(x)=x,f3(x)=x2。 因此非线性函数用基函数表示为:

f(x)=5f1(x)+0f2(x)+2f3(x)

基函数有很多种,最常见的可能就是径向基函数(RBF),此外还有样条函数(Splines)、多项式方程等

多项式方程

径向基函数

样条函数

样条函数

样条函数(Splines)是基函数的一种,它是由多项式分段定义的函数。 分段多项式基本上就是对变量的不同区间有不同表示的多项式

例如:

g(x)={mx+a,x<5mx+nx2,5<x<10px3,x>10

根据 x 的不同区间改变多项式的表示,这样的多项式称为分段多项式。 根据样条的程度,可以有以下可能的基函数,来构造原始的复杂函数 g(x):

样条回归

样条回归是一组基础函数集的加权和,其中使用的基函数是样条函数

Fi(xi)=jωjbj(xi),i=1,2,,n

其中:

所以 GAM 方程是(如果只使用样条回归):

g(y)=kωkbk(x1)+mωmbm(x2)++nωnbn(xn)+σ

其中:

联系函数

如果自变量和目标变量之间的关系不是线性的,用于线性回归的线程方程就需要一些修改将目标映射到自变量, 这里的映射有可能是非线性关系,所以就需要将目标限制在某个特定范围内,也就是将 y 变为 g(y)

这里的 g(y) 称为联系函数(link function),它的作用就是保持目标变量和自变量之间的线性关系。 正如模型的名字,“广义”这个词描述了 GAM 可以满足不同的回归场景,这些场景不需要遵循线性回归的基本假设, 所以这个 g() 可以是任何函数

将一个线性回归方程建模为 GAM

GAM 方程:

g(y)=ω1F1(x1)+ω2F2(x2)++ωnFn(xn)+σ

如果要将一个线性回归方程建模为 GAM,只需要:

  1. 联系函数设置成恒等函数
  2. Fn 设置成恒等函数

也就是说

  1. g(y)=x
  2. Fi(x)=x,i=1,2,,n

所以有:

y=ω1x1+ω2x2++ωnxn+σ

GAM Python 库