如何评估线性回归的结果

机器算法验证 回归 线性模型
2022-03-08 18:37:58

我有一个线性回归问题。简而言之,我有一个数据集,我把它分成两个子集。一个子集用于找到线性回归(训练子集),另一个用于评估它(评估子集)。我的问题是如何在将线性回归应用于数据的评估子集后评估它的结果?

以下是详细信息:

在训练子集中,我进行线性回归:y=ax+b, 在哪里y是groundtruth(也称为目标),x是一个自变量。然后我发现ab. (xy在训练子集中给出)。

现在,使用ab从上面的训练子集中找到,将它们应用于评估子集,我发现y=ax+b. 换句话说,这些y从线性回归中找到x. 现在,除了y, 我也有y从评估集中。我如何评估我的结果(多少y与......不同y)? 任何通用的数学模型可以做到这一点?它需要是某种数学模型/公式。我可以想出不同的方法来做到这一点,但它们都是临时的或简单的,但这是一项科学工作,所以很遗憾,听起来临时的东西不能在这里使用。

任何的想法?

3个回答

我同意@Octern 的观点,很少有人看到人们对线性模型使用训练/测试拆分(甚至交叉验证之类的东西)。对于像这样一个非常简单的模型,过度拟合(几乎)肯定不是问题。

如果您想了解模型的“质量”,您可能需要报告回归系数周围的置信区间(或它们的贝叶斯等价物)。有几种方法可以做到这一点。如果您知道/可以假设您的错误是正态分布的,那么有一个简单的公式(大多数流行的数据分析包都会为您提供这些值)。另一种流行的替代方法是通过重采样(例如,自举或折刀)来计算它们,这对错误分布的假设更少。无论哪种情况,我都会使用完整的数据集进行计算。

如果你真的对你的线性训练模型很好,并且想知道它对你的测试数据的预测有多好,那么你所要做的就是使用你已经拥有的线性模型公式并包括估计的系数 a(= 截距)和 b(回归系数,也称为斜率)由第一个模型得出。

应该看起来像 y= a + b*X 这里一些虚数... y= 2 + 0.5*X

你用的是哪个软件?你在用 R 吗?如果是这样,您可以使用 predict.lm() 函数并将其应用于您的第二个数据集。

虽然这在很大程度上取决于您的目标是什么,但一种简单而标准的方法是测量均方误差 (MSE)所以如果你有你的测试数据集D由输入/输出对组成,D={(x1,y1),(x2,y2),,(xn,yn)}和你的参数ab,则 MSE 可以计算为

MSEa,b=1ni=1n(yi(axi+b))2.

这可能也是衡量错误的明智方法,因为这可能是您用于查找参数的标准ab. 如果您想更好地了解估计参数的泛化程度,您应该研究类似交叉验证的东西。