线性回归是预测数值型量的一个经典模型。
线性回归模型的参数可以通过最小二乘法过程或最大似然估计过程进行估计。最大似然估计是一种概率框架,用于自动查找最能描述观测数据的概率分布和参数。监督学习可以被构建为一个条件概率问题,并且最大似然估计可以用于拟合模型参数,该参数最能概括条件概率分布,这被称为条件最大似然估计。
线性回归模型可以在此框架下进行拟合,并且可以证明其推导出的解与最小二乘法方法相同。
在本篇博文中,您将了解最大似然估计的线性回归。
阅读本文后,你将了解:
- 线性回归是预测数值型量的一种模型,而最大似然估计是估计模型参数的概率框架。
- 线性回归模型的系数可以通过最大似然估计的负对数似然函数来估计。
- 负对数似然函数可用于推导线性回归的最小二乘解。
开始您的项目,阅读我的新书《机器学习概率》,其中包含分步教程和所有示例的Python源代码文件。
让我们开始吧。
- 更新于2019年11月:修复了MLE计算中的拼写错误,将x写成了y(感谢Norman)。

最大似然估计线性回归入门指南
照片作者:Franck Michel,部分权利保留。
概述
本教程分为四个部分;它们是
- 线性回归
- 最大似然估计
- 线性回归作为最大似然
- 最小二乘法与最大似然估计
线性回归
线性回归是统计学和机器学习中的一种标准建模方法。
线性回归是统计学和(监督)机器学习的“主力”。
— 第 217 页,《机器学习:概率视角》,2012年。
通常,它是一种将一个或多个数值输入映射到数值输出的模型。在预测建模方面,它适用于回归类问题:即预测实数值。
输入数据表示为X,有n个样本,输出表示为y,每个输入对应一个输出。模型对给定输入的预测表示为yhat。
- yhat = model(X)
模型根据称为系数(beta)的参数定义,每个输入都有一个系数,还有一个额外的系数提供截距或偏差。
例如,一个包含m个变量x1, x2, …, xm的输入X的问题将有系数beta1, beta2, …, betam和beta0。给定输入的预测是该样本输入与系数的加权和。
- yhat = beta0 + beta1 * x1 + beta2 * x2 + … + betam * xm
模型也可以使用线性代数来描述,使用系数向量(Beta)和输入数据矩阵(X)以及输出向量(y)。
- y = X * Beta
样本是从更广泛的总体中抽取的,因此样本被认为是_不完整的_。此外,观测值中预期存在测量误差或统计噪声。
模型参数(beta)必须从从域中提取的样本观测值中估计。
在对模型研究了100多年后,有许多方法可以估计参数;尽管如此,最常见的两种框架是:
- 最小二乘优化。
- 最大似然估计。
两者都是涉及搜索不同模型参数的优化过程。
最小二乘优化是一种估计模型参数的方法,通过寻找一组参数,使得模型预测(yhat)与实际输出(y)之间的平方误差最小,并在所有数据集样本上进行平均,即所谓的均方误差。
最大似然估计是一个频率派概率框架,它寻找一组模型参数来最大化似然函数。我们将更仔细地研究第二种方法。
在这两种框架下,都可以使用不同的优化算法,例如局部搜索方法(如BFGS算法(或其变体))和通用优化方法(如随机梯度下降)。线性回归模型比较特殊,因为它存在解析解,这意味着可以使用线性代数直接计算系数,但这超出了本教程的范围。
欲了解更多信息,请参阅
最大似然估计
最大似然估计,简称MLE,是一种估计模型参数的概率框架。
在最大似然估计中,我们希望最大化给定特定概率分布及其参数(theta)时观测到数据的条件概率(X),正式表述为:
- P(X ; theta)
其中,X实际上是来自问题域从1到n的所有观测值的联合概率分布。
- P(x1, x2, x3, …, xn ; theta)
这个得到的条件概率被称为给定模型参数时观测到数据的似然,并使用L()表示法来表示似然函数。例如:
- L(X ; theta)
联合概率分布可以重述为给定分布参数时观测到每个样本的条件概率的乘积。将许多小概率相乘可能不稳定;因此,通常将此问题重述为自然对数条件概率之和。
- sum i to n log(P(xi ; theta))
考虑到对数在似然函数中的常见使用,它被称为对数似然函数。在优化问题中,通常也更倾向于最小化成本函数而不是最大化它。因此,使用对数似然函数的负值,通常称为负对数似然(NLL)函数。
- 最小化 - sum i=1 to n log(P(xi ; theta))
最大似然估计框架可以作为估计各种回归和分类预测建模的机器学习模型参数的基础。这包括线性回归模型。
想学习机器学习概率吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
线性回归作为最大似然
我们可以将拟合机器学习模型的问题构建为概率密度估计问题。
具体来说,模型和模型参数的选择被称为建模假设h,问题在于找到最能解释数据X的h。因此,我们可以找到最大化似然函数的建模假设。
- 最大化 sum i=1 to n log(P(xi ; h))
监督学习可以被构建为一个条件概率问题,即预测给定输入的输出的概率
- P(y | X)
因此,我们可以将监督机器学习的条件最大似然估计定义如下:
- 最大化 sum i=1 to n log(P(yi|xi ; h))
现在我们可以将h替换为我们的线性回归模型。
我们可以做一些合理的假设,例如数据集中的观测值是独立的并且来自相同的概率分布(i.i.d.),并且目标变量(y)具有高斯分布的统计噪声,均值为零,并且所有样本的方差相同。
有了这些假设,我们可以将估计y给定X的问题构建为估计高斯概率分布在给定X时的y的均值。
高斯函数的解析形式如下:
- f(x) = (1 / sqrt(2 * pi * sigma^2)) * exp(- 1/(2 * sigma^2) * (y – mu)^2 )
其中mu是分布的均值,sigma^2是方差,单位是平方。
我们可以使用此函数作为似然函数,其中mu定义为给定一组系数(Beta)的模型预测,而sigma是固定常数。
首先,我们可以将问题表述为最大化数据集中每个样本概率的乘积:
- 最大化 product i=1 to n (1 / sqrt(2 * pi * sigma^2)) * exp(-1/(2 * sigma^2) * (yi – h(xi, Beta))^2)
其中xi是给定样本,Beta表示线性回归模型的系数。我们可以将其转换为对数似然模型,如下所示:
- 最大化 sum i=1 to n log (1 / sqrt(2 * pi * sigma^2)) – (1/(2 * sigma^2) * (yi – h(xi, Beta))^2)
计算可以进一步简化,但我们暂时停在这里。
有趣的是,预测是分布的均值。这表明我们可以非常合理地为预测添加一个边界,以获得基于分布标准差的预测区间,这确实是一种常见的做法。
虽然模型假设预测服从高斯分布(即高斯噪声函数或误差函数),但对模型的输入(X)没有这样的期望。
[模型] 只考虑了训练样本目标值中的噪声,而没有考虑描述实例本身的属性中的噪声。
— 第 167 页,《机器学习》,1997年。
我们可以应用一个搜索过程来最大化这个对数似然函数,或者通过在前面加上负号来反转它,最小化负对数似然函数(更常见)。
这为给定数据集的线性回归模型提供了一个解决方案。
这个框架也更通用,可以用于曲线拟合,并为拟合其他回归模型(如人工神经网络)奠定了基础。
最小二乘法与最大似然估计
有趣的是,前面部分提出的线性回归的最大似然解可以证明与最小二乘解相同。
在推导之后,为了将线性回归拟合到数据集而需要最小化的最小二乘方程如下:
- 最小化 sum i=1 to n (yi – h(xi, Beta))^2
在这里,我们对每个目标变量(yi)与模型预测(h(xi, Beta))之间的平方误差进行求和。这通常被称为普通最小二乘法。更普遍地说,如果该值除以数据集中的样本数(平均)而不是求和,则该量被称为均方误差。
- mse = 1/n * sum i=1 to n (yi – yhat)^2
从上一节定义的似然函数开始,我们可以展示如何去除常数项,得到与最小二乘法求解线性回归的方法相同的方程。
注意:此推导基于Tom Mitchell的《机器学习》第六章中的示例。
- 最大化 sum i=1 to n log (1 / sqrt(2 * pi * sigma^2)) – (1/(2 * sigma^2) * (yi – h(xi, Beta))^2)
去除常数的关键在于关注在评估不同模型时(例如,在评估h(xi, Beta)时)不变的项。
计算的第一项与模型无关,可以去除,得到:
- 最大化 sum i=1 to n – (1/(2 * sigma^2) * (yi – h(xi, Beta))^2)
然后我们可以去除负号,最小化正数而不是最大化负数:
- 最小化 sum i=1 to n (1/(2 * sigma^2) * (yi – h(xi, Beta))^2)
最后,我们可以丢弃同样与模型无关的第一个常数项,得到:
- 最小化 sum i=1 to n (yi – h(xi, Beta))^2
我们可以看到这与最小二乘解是相同的。
事实上,在合理的假设下,最小化目标变量和模型输出之间平方误差的算法也执行了最大似然估计。
……在某些假设下,任何最小化输出假设预测与训练数据之间平方误差的学习算法都将输出一个最大似然假设。
— 第 164 页,《机器学习》,1997年。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
教程
- 如何使用线性代数解决线性回归
- 如何在 Python 中从头实现线性回归
- 如何使用 Python 从零开始实现简单线性回归
- 用于机器学习的梯度下降线性回归教程
- 机器学习简单线性回归教程
- 机器学习中的线性回归
书籍
- 第 15.1 节 最小二乘法作为最大似然估计器,《C语言数值计算:科学计算艺术》,第二版,1992年。
- 第 5 章 机器学习基础,深度学习,2016 年。
- 第 2.6.3 节 函数逼近,《统计学习要素》,2016年。
- 第 6.4 节 最大似然与最小二乘误差假设,《机器学习》,1997年。
- 第 3.1.1 节 最大似然与最小二乘法,《模式识别与机器学习》,2006年。
- 第 7.3 节 最大似然估计(最小二乘法),《机器学习:概率视角》,2012年。
文章
总结
在本篇博文中,您了解了最大似然估计的线性回归。
具体来说,你学到了:
- 线性回归是预测数值型量的一种模型,而最大似然估计是估计模型参数的概率框架。
- 线性回归模型的系数可以通过最大似然估计的负对数似然函数来估计。
- 负对数似然函数可用于推导线性回归的最小二乘解。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
嗨,Jason
有一个拼写错误吗?在“最大化 product i=1 to n (1 / sqrt(2 * pi * sigma^2)) * exp(-1/(2 * sigma^2) * (xi – h(xi, Beta))^2)”中,是否应该是 (yi – h(xi, Beta))^2 ?
我们假设y是给定X的高斯概率分布。
我应该是对的 – 凭感觉。我会安排时间进行确认并更新博文。
已更新,谢谢!
建议 – 使用MathJax书写数学公式。这样更容易阅读。
感谢您的博文。
我选择不这样做,以免吓跑那些对数学感到恐惧的开发者。
你好。抱歉打扰,但我感到很困惑。在文章开头你说:“通常,它是一种将一个或多个数值输入映射到数值输出的模型。在预测建模方面,它适用于回归类问题:即预测实数值。”
这里的输入是什么意思?输入是一个数据点,还是一个数据点的字段?例如,每个数据点是一个具有多个变量/输入的向量?因为你说多个输入匹配一个输出……就像一个向量(所以多个输入)匹配一个标量值?
能否给一个包含实际值的简单例子,来描述输入、变量等是什么样的?
希望我的问题有意义。
有些文本称这里的输入为“回归量”,输出为“被回归量”。有些文本称输入为“预测因子”,输出为“响应变量”。如果你将线性回归视为一个寻找函数f的问题,使得y=f(x)。那么输入是x,输出是y。
感谢撰写这篇文章!它非常清晰。但我同意上面的评论,请使用LaTeX或其他语言写出公式。使用这种Python风格的记法非常难以阅读。
你好Emi… 不客气!这是很好的反馈,我们的团队将在今后的工作中予以考虑!
这太棒了!
你的网站绝对需要数学符号。
谢谢
“其中X实际上是来自问题域从1到n的所有观测值的联合概率分布。”
你上面是这么说的。
X不是联合概率分布。P(.)才是。
谢谢你。
感谢您的反馈!