机器学习中的连续回归

假设我们有一组输入(称为x1, x2, …, xn),这些输入会产生输出y。我们的目标是从之前未见过的x1…xn的值中预测y。显然,这个问题可以在机器学习的领域内建模为回归问题。

然而,假设数据持续不断地到来。我能够从x1…xn预测y。此外,我还能够事后检查这个预测是否准确。如果预测准确,一切都很好。另一方面,如果预测与实际的y有很大偏差,我希望能够更新我的模型。我能想到的一种方法是将这些新数据插入我的训练集中,并重新训练回归算法。但这样会带来两个问题。首先,重新计算我的模型可能会花费我无法承受的成本。其次,我的训练集中可能已经有太多的数据,以至于新来的数据变得微不足道。然而,由于我问题的性质,新来的数据可能比旧数据更重要。

似乎一个好的解决方案是计算一种与新数据更相关的连续回归,而不是与旧数据相关。我已经搜索了这种方法,但没有找到任何相关的内容。或许我找错了方向。有人知道如何做吗?


回答:

如果你想让较新的数据更重要,你需要使用权重。通常这被称为

sample_weight

在scikit-learn的fit()函数中(如果你使用这个库)。

权重可以定义为1 /(自当前观察以来的时间)。

现在谈谈第二个问题。如果重新计算需要很长时间,你可以截取你的观察数据并使用最新的数据。在整个数据集和最新数据+部分旧数据上拟合你的模型,并检查你的权重变化了多少。我认为如果你真的在{x_i}和{y}之间有依赖关系,你不需要整个数据集。

否则,你可以再次使用权重。但现在你将对模型中的权重进行加权:

旧数据模型:w1*x1 + w2*x2 + …

新数据模型:~w1*x1 + ~w2*x2 + …

公共模型:(w1*a1_1 + ~w1*a1_2)*x1 + (w2*a2_1 + ~w2*a2_2)*x2 + …

这里a1_1, a2_1是‘旧模型’的权重,a2_1, a2_2是新模型的权重,w1, w2是旧模型的系数,~w1, ~w2是新模型的系数。

参数{a}可以像第一个项目符号中那样手动估计,但你也可以创建另一个线性模型来估计它们。但我的建议是:不要对{a}使用非线性回归——你会过度拟合。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注