直观来看,上一篇文章介绍的逻辑回归只是对普通线性回归的输出加以变换,以满足问题的需要。但在这简单的现象背后,以逻辑回归为代表的这类线性模型的推广具有更加深刻的数学内涵,因而被称为广义线性模型(generalized linear model)。

线性模型的意义是建立了自变量和因变量的关联,当自变量变化时,因变量也会出现依照比例同等程度的变化。可是现实世界不是数学模型,如果硬要将线性模型套用在实际问题中,很可能会闹出笑话。

如果线性回归告诉你气温每下降 1 度,海滩上的游客就会减少 100 人,那么这条规律适用于科帕卡巴纳或者芭堤雅的问题不大,因为这些著名的度假胜地的游客基数数以万计。可是对于一个最多只能接待 80 名游客的不知名小海滩来说,气温下降 1 度意味着游客数目变成了 -20,难不成工作人员也被冻跑了吗?这和不能听相声是一个道理:“笑一笑十年少”也是个线性模型,要是这个模型属实的话,哪怕只听一分钟相声我都要回到娘胎里去了。

物理学中有个概念叫半衰期,不严格地说,它指的是放射性元素的原子核半数发生衰变所需要的时间。元素的半衰期和原子的总量无关,100 个原子中衰变 50 个的时间和剩下的 50 个原子中衰变 25 个的时间是一致的。和线性模型相比,以半衰期为代表的建模方式似乎更加符合真实世界的规律:因变量变化的绝对尺度通常是非线性的,但其变化比率却会和自变量呈现线性关系。

半衰期的思路也可以自然地延伸到离散输出的问题当中。如果说气温每上升 1 度,某人去海滩的概率就会翻一番,这是否意味着在原本有 75% 的概率去海滩时,温度的上升会将这个概率提高到 150% 呢?肯定不是。气温升高会让去海滩的概率增大,不去海滩的概率减小。如果将去与不去的概率之比定义为几率(odd),那么气温升高会导致相对的几率,而非绝对的概率翻一番显然是更合理的解释。按这种方式计算,气温上升 1 度会让 75% 的概率变成 85.7%,这样就说得通了。

除了能否真实表示自变量和因变量的关联之外,线性回归将因变量的误差定义为正态分布其实也是过于理想的假设。比如当因变量是离散输出时,使用正态分布假设的建模效果自然会大打折扣。在一场足球比赛中,某只球队进球数目超过 8 个的概率微乎其微。因而在预测某队的进球数时,用正态分布对分布在 01234567 这些离散数值上的因变量进行建模就缺乏合理性,泊松分布才是更好的选择。

可不巧的是,正态分布恰恰是狭义线性模型的核心成分,它是联结最小均方误差和最大似然估计的纽带。在求解时,狭义的线性模型建立在最小均方误差的意义上,其解析解可由普通最小二乘法求得,求解时的一个基本前提是因变量,也就是回归结果的误差服从正态分布,这个推导过程我在“人工智能基础课”中有详细介绍。

误差的正态分布意味着因变量既可以增加也减少,其增加或者减少的范围虽然不存在上限,却以较大的概率出现在一个较小的区间内。如果按照前文的方式改造狭义线性模型的话,噪声的正态性质就不能得以保持,简洁明晰的解析解也会不再适用。因此,要拓展线性模型的应用范围,新的数学工具不可或缺。

广义线性模型(generalized linear model)就是这样的数学工具。在广义线性模型中,因变量可以满足任意形式的概率分布,它与自变量的线性组合之间的关系由联系函数定义。逻辑回归就是广义线性模型的一个实例,它的因变量是二进制的输出,联系函数则是对数几率函数。这个实例体现出了在一般意义上,广义线性模型要满足一些共性的条件。

首先,广义线性模型的基础是指数分布族(exponential family)。模型的因变量 yy