本文介绍了为单变量模型选择回归函数时需要参考的重要指标,有助于快速调整参数和评估回归模型的性能。
- GitHub 地址:https://github.com/bjoernhartmann/linear_model_selection
- 网页交互版本:https://bjoernhartmann.shinyapps.io/linear_model_selection/
受到我上一篇文章(https://medium.freecodecamp.org/learn-how-to-improve-your-linear-models-8294bfa8a731)的启发,我发现一般在尝试了不同线性模型之后会出现一个问题:你需要选择一个模型。具体点说,Khalifa Ardi Sidqi(https://medium.com/@khalifaardi)曾问我: (https://medium.com/@khalifaardi%EF%BC%89%E6%9B%BE%E9%97%AE%E6%88%91%EF%BC%9A)
我该如何确定最适合我的数据的模型?只要看 R²、SSE 等数据吗?可是由于模型不同,因此对模型的解释(平方、根等)也会不同,这不是个问题吗?
问题的第二部分很容易回答。首先,找到最适合数据的模型,然后解释其结果。如果你知道模型解释数据的方式会很有帮助。
本文的其余部分将解决前面提到问题的第一部分。请注意,我将分享我选择模型的方法。模型的选择有多种方式,可能会有其他不同的方法,但我描述的是最适合我的方式。
另外,这种方法只适用于单变量模型。单变量模型只有一个输入变量。我会在之后的文章中描述如何用更多的输入变量评估多变量模型。然而,在今天这篇文章中我们只关注基础的单变量模型。
为了进行练习并获得更好的体验,我写了一个简单的 ShinyApp。我们可以通过它用不同的模型训练不同的数据集。在训练过程中注意参数的变化情况,可以更好地评估简单的线性模型,从而对模型进行选择。此外,你可以从 GitHub 复制该程序并将其作为数据框架。
对单变量模型应用调整后的 R2
如果只使用一个输入变量,则调整后的 R2 值可以指出模型的执行情况。它说明了你的模型解释了多少(y 的)变化。
与简单的 R2 相比,调整后的 R2 考虑了输入因素的数量。调整后的 R2 惩罚了很多输入因素,倾向于得到简洁的模型。
在上面的截图中,可以看到两个模型的 R2 值分别为 71.3% 和 84.32%。显然,第二种比第一种好。然而,R2 值较低的模型仍然有用,因为调整后的 R2 对数据中的噪声非常敏感。因此,只需要比较相同数据集应用在不同模型的指标,无需在不同数据集间进行比较。
通常情况下,很少用到 SSE
在阅读这一部分之前,我们先明确 SSE 的含义。在此,SSE 指的是平方误差的总和(sum of squared errors)。
因此,调整后的 R2 约为 1-SSE/SST。SST 指平方总和。
这里不打算深入讲述数学原理。我想说明的是调整后的 R2 是用 SSE 计算的。所以 SSE 通常不会给出任何附加信息。
此外,调整后的 R2 进行了归一化,使得它总是在零到一之间。这一操作使得人们更容易对不熟悉的模型进行解释,例如,调整后的 R2 等于 75% 比 SSE 等于 398 更容易解释模型,尽管这两个量可以解释相同的模型。
看看残差项或误差项!
误差项,或所谓的残差项常常被忽略。通常它们包含的信息比你想象的更多。
残差是预测值和实际值之间的差异。
残差的作用在于告诉你误差的大小和方向。我们来看一个例子:
我们不希望残差在零的附近变化
我在此试图用线性函数对一个多项式数据集进行预测。对残差进行分析,可以显示模型的偏差是向上的还是向下的。
当 50 < x < 100 时,残差值大于零。所以在这个范围内,实际值高于预测值,也就是说模型偏差是向下的。
然而当 100 < x < 150 时,残差小于零。因此,实际值低于预测值,就是说模型偏差是向上的。
知道模型偏差很有帮助,通常人们都不会想要上述的模式。
残差的平均值应该为零,而且还应该是均匀分布的。使用三次多项式函数对相同的数据集进行预测可以获得更好的拟合结果:
残差均匀分布在零值周围意味着拟合效果更好。
此外,还可以观察误差项的方差是否增加。在统计学中,这被称为异方差(Heteroscedasticity),可以使用稳健标准差(robust standard errors)对其进行修正,否则,你的假设检验可能是错误的。
残差直方图
最后,用直方图总结误差项的分布(频率 vs. 残差)。直方图提供有关误差带宽的信息,还可以指出误差的出现频率。
右边的直方图表明误差带宽比左边直方图的小,所以从上图看来右边模型的拟合效果更好。
上图显示了在两个不同的模型上使用相同的数据集进行预测的残差分布。在左边的直方图中,误差分布在 -338 到 520 的范围内。
在右边的直方图中,误差分布在 -293 到 401 之间。所以异常值要低得多。而且,右边直方图的模型中大部分误差都接近零。所以我更支持使用右边的模型。
总结
当选择一个线性模型时,要考虑以下几点:
- 在相同数据集中比较线性模型
- 选择调整后的 R2 值较高的模型
- 确保模型残差均匀分布在零值周围
- 确定模型误差带宽较小
原文链接:https://medium.freecodecamp.org/learn-how-to-select-the-best-performing-linear-regression-for-univariate-models-e9d429c40581