为回归中的最新观察结果分配更多权重


9

如何为R中的最新观测值分配更多权重?

我认为这是一个常见的问题或愿望,但是我很难弄清楚该如何实现。我试图对此进行大量搜索,但是我找不到一个很好的实际例子。

在我的示例中,随着时间的推移,我将拥有一个大型数据集。我想说的是对最近的数据行进行某种指数加权。因此,我将具有某种指数函数,即2015年的观测值对训练模型比_2012年的观测值更重要。

我的数据集变量包含分类值和数字值的混合,而我的目标是一个数值-如果重要的话。

我想使用GBM / Random Forest等模型进行测试/尝试,最好在CARET软件包中进行测试。

更新问题

我很欣赏下面给出的关于如何按两点之间的日期距离以指数方式衰减权重的响应。

但是,当涉及到在插入符号中训练此模型时,权重因素又如何精确计算呢?每个训练行中的权重值是将来某个点与该点历史发生之间的距离。

权重是否仅在预测期间起作用?因为如果它们在训练过程中发挥作用,那会不会引起各种问题,因为各种交叉折叠的权重都不同,试图预测可能早于它的某个时间点?


3
因为发问者需要澄清统计问题,所以选择Closevote。我不清楚GBN或RF是否适合此处。建议将其迁移到CV.com
DWin

好。我将很快添加一个示例。我只是在整个互联网上看到这种问题,但是没有如何应用/解决它的具体示例。
user3788557 '02

Answers:


5

如何为R中的最新观测值分配更多权重?

我想您的每次观察都有一个时间戳。您可以计算一个变量timeElapsed = modelingTime - observationTime。现在,您将简单的指数函数应用为W=K*exp(-timeElapsed/T),其中K是缩放常数,并且T是衰减函数的时间常数W充当案例重量。

据我所知,许多函数都caret允许weight作为参数,这是一列案例权重,提供给相应的观察值(因此长度与#rows相同)。


1
中的功能caret::trainweights
timcdlucas

谢谢Ujjwal-但是,确定方程式中“ K”的方法是什么?有任何准则或最佳做法?另外,衰减功能的“时间段”是什么意思?
user3788557 '02

K只是一个缩放常数,不会对模型结果产生太大影响。您可以设置一些值,以使案例权重值的范围可能接近0-1。关于“时间周期”,也称为一阶指数衰减函数或平均寿命的时间常数。您可以在Wikipedia上查找。
Ujjwal Kumar

请查看我对我的帖子的更新。在训练过程中可以正常工作吗?训练模型是否会有偏差,因为权重只能在针对测试集使用时才能应用?当随机调整训练集时,如果使用较高的权重来预测过去或相对于时间不近的时间段的价格,可能会很不好。
user3788557'2

如果没有案例权重,则模型训练将对旧数据和新数据都给予同等的重视,但是对于拟议的案例权重,它将对较新的数据给予更多的重视,因此从某种意义上讲,它偏向于较新的观察结果,但这就是你想要什么。我不明白为什么“只能在测试用例中使用权重”。另外,当随机调整训练集时,较高的权重将用于较旧的值吗?当所有训练案例的modelingTime保持相同时。PS案例权重不适用于仅使用模型的情况,仅适用于培训期间。
Ujjwal Kumar

0

数据(不是分析师做出的假设-猜测)通常可以建议加权方案的形式。这是通过GLS完成的,其中从误差方差中发现的统计显着性差异中获得了加权最小二乘模型的适当权重。看一下通过ARIMA(Tsay过程)进行的变更和离群值检测,并在此处http://docplayer.net/12080848-Outliers-level-shifts-and-variance-changes-in-time-series.html中。如果您希望发布数据,请在此处进行,因为我可以例行使用可能启发您的软件,所以我将尽力提供进一步的帮助。

我正在使用该软件的R版本。

您可能会看看如何在ARIMA的干预分析中包括控制变量?因为它有一个示例,说明了如何确定权重并使用其来稳定误差方差,从而有效地相信/不相信/打折/加权/信任某些先验值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.