在RapidMiner中使用窗口操作符的时间序列
我正在尝试使用RapidMiner中的时间序列模型来预测支付给保险公司的保费。具体来说,我有一个从2009年1月到2015年12月的每个月的条目,我希望能够预测未来12个月(2016年1月- 2016年12月)的数据。
我很难理解窗口操作符是如何工作的,我有几个问题:
1)如何选择窗口大小?如果我想预测未来12个月的溢价,我的窗口大小是12吗?如果是这样,为什么我的数据集中的每个原始属性都有12个属性(这12个属性之一的原始Premium金额)?我得到,这应该解释对应的标签值(这只是下一行的原始溢价,不确定为什么会发生这种情况),但这些数字来自哪里,为什么RapidMiner生成这些?
2)“创建单个属性”选项有什么作用?
3)地平线字段:如果这是最后一个窗口值和要预测的值之间的距离,这是否意味着我不能立即预测未来12个月的数据?即使我输入视界为1(我的意思是,给我2016年1月的预测,因为最后一个数据点是2015年12月的),那么为什么当我运行流程时,输出中没有2015年12月或2016年1月的标签值?
我是初学者,我真的很感激任何帮助!
最佳答案
-
Thomas_Ott RapidMiner认证分析师,RapidMiner认证专家,会员职位:1761年独角兽
嗨Rainaddi,
我是那些旧视频的作者,你是对的,我没有解释为什么我选择窗口参数。
首先,在我们的社区中有另一个(更古老的)更详细的窗口操作符解释:http://community.www.turtlecreekpls.com/t5/RapidMiner-Studio/Prediction-Forecasting-with-RM/td-p/210也来看看。
好问题,让我先介绍一下,系列扩展对于预测趋势方向是非常棒的,它在做点预测方面也很不错,但在点预测中是你所追求的,我会在Studio中混搭R forecast ' Library。很简单。
注意,我选择的许多参数通常都是第一个起点。我将做出“最佳猜测”,然后从那里使用参数优化来改变参数,如窗口大小,训练/测试窗口宽度,步长等。
我认为Simafore的博客说得最好,使用窗口操作符就像及时获取“数据的横截面”。可以有多个属性(列),这些属性具有不同的数据点,以帮助描述标签(目标变量)。例如,让我们以这个简单的股票收盘数据集为例。它有XOM, FB和MSFT关闭值。我们感兴趣的是预测XOM_CLOSE的趋势,使用它作为标签(目标变量),并将FB和MSFT的收盘价作为输入的一部分。您需要创建一个多元数据集来描述XOM。
那么如何在预报中使用FB_CLOSE和MSFT_CLOSE呢?这就是Window操作符的用武之地,我想要获取这些数据并创建一个FB/MSFT数据点的“窗口”,这些数据点描述了一些XOM数据点。问题是,使用多大的窗口?这就是需要一些领域知识的地方,你必须做出你的第一个“最佳猜测”,记住你可以在以后使用参数优化时改变窗口大小。
对于这个论点,让我们以5天的窗口为例(交易周通常为5天)。这就是窗口大小。步长是你想让窗口前进的距离。设置步长还需要一些领域知识,因为您可能已经预测了每周、季度或每月类型的数据。在我们的例子中,我们将时间提前1(第二天)。
你应该会看到这样的东西:
上面的图片就是你应该看到的。我用红框来说明下一点。红色方框强调了一个重要的概念。在示例第1行中,Date-4列对应XOM和MSFT (FB在屏幕截图中被切断)到XOM_CLOSE-4和MSFT_CLOSE-4的收盘价。同样地,在示例第3行中,Date-3对应XOM_CLOSE-3和MSFT_CLOSE-3的XOM和MSFT的收盘价。现在你有一个5天的数据窗口,一个例子(行)一个例子(行)。这很好,但我们还没有完成。
为什么将数据系列从列旋转到行如此重要?您可以很容易地使用一个简单的单变量列并对其进行线性回归,这很好,但是如果您想使用多个变量并最终测试性能(例如。趋势准确性)?为此,您必须将数据集转换为上面的截图,因为它为滑动窗口验证操作符(滑动窗口验证操作符是您回溯测试多元数据系列的方法)做好了准备。
在此之前,您必须从上述数据集中创建一个Label。您还必须告诉窗口操作符应该使用哪些列(属性)来训练模型。这里应该使用两个主要参数,创建标签切换和地平线参数。这些参数将告诉RapidMiner标签列(XOM_CLOSE)使用哪个属性,以及您想预测的值,在这种情况下,它是2016年1月6日的XOM_CLOSE(73.69)的值
它是这样的:
下一步将是将这些数据输入滑动窗口验证操作符,并在其中嵌套一个算法来反向测试您的假设。
希望这能有所帮助。
4
答案
这可能有助于你理解级数运算符
http://www.simafore.com/blog/bid/110752/Time-Series-Forecasting-from-windowing-to-predicting-in-RapidMiner
是的,那正是我想要的。本文中的步骤只是概述,没有解释。
例如:“窗口大小:决定为截面数据创建多少个“属性”。窗口宽度内的原始时间序列的每一行都将成为一个新属性”——这并没有真正解释为什么会发生这种情况,或者我应该从Windowing操作符生成的许多属性中得出什么结论。
托马斯·奥特的youtube视频也是如此——这些资源只是告诉我该做什么,而不是解释他们为什么要做这乐鱼体育安装些事情,以及这些事情的用途。
只是希望能有更清晰的解释,因为我在网上找不到太多。
好吧,我应该学会看第一个问题,而不是最后一个。
第1项:查看我的回复以及我发布的链接
项目2:创建单个属性参数与您希望Studio如何识别数据系列有关。在Series扩展中还有其他操作符,它们要求将数据转换为“Series”数据类型(这是特定于该特定操作符必须如何读入数据的)。通常这是不需要的,所以保持开关打开。
第3项:你应该能够预测你的价值,但我从来没有在我的具体问题上那样做过,所以我建议你在那里尝试一下。为什么没有12月15日/ 1月16日的标签值,好问题,这与你在第一次传递中创建的窗口有多大有关。这就是为什么您总是需要为您的测试集使用第二个窗口操作符(没有打开“Create Label”)。这周晚些时候我有更多时间的时候,我会再跟进这件事。
下面是一个例子:
亲爱的托马斯·奥特先生:
我正在做时间序列分析,以预测未来邮件的大小,以优化资源。乐鱼体育安装
我看了你的视频,做了一个模型。我有一个数据集,其中只有一个变量是“总字节”,这个信息是基于学年的连续9周。我把我的数据集分为两部分,比如8周的数据作为训练,9周的数据作为测试。
我使用SVM和交叉验证算子。我的问题是
我是RapidMiner Studio的新手。请帮帮我。
谢谢你!
萨尼塔
苏尼塔,你好,
关于SVM错误消息…你的数据集有String类型的属性吗?有些算法只能处理数值属性,不能处理文本属性。我建议你将你的非数值属性转换为数值属性。
如果你有一个String类型的参数,你可以使用“Nominal to Numerical”模块。
我希望这对你有所帮助
伊克尔
错误地翻了一倍。
我有类似的问题,在训练中我使用2009-2015年的数据,在测试中我使用2016年的数据(数据是每月的)来预测2017年的数据。无论是训练还是测试,我都将窗口大小设置为12,步长设置为1,视界设置为1。
但是测试结果只有1行,而我想象的结果是12行(2017年12月)。我知道为什么结果只有1行,这是因为12个窗口大小的完整窗口只有1,当我检查添加不完整的窗口时,它出现了12行,但我认为有些事情是不正确的......
@Thomas_Ott
你将需要Bala D在他的书中所写的过程。看一下这个线程中的最后一个进程。http://community.www.turtlecreekpls.com/t5/RapidMiner-Studio-Forum/Recall-Error/m-p/37302#U37302
你好托马斯,
关于时间序列分析和预测,我仍然没有达到一个令人满意的学习点。我很抱歉。
我很欣赏你的博客/视频和回答,但我仍然有问题:
为什么“窗口”和“滑动窗口验证器”操作符同时提供窗口、步长和视界的参数?
他们如何相互影响或合作/工作?
是否有任何“经验法则”来实现两个运算符的参数集相互结合?
解释一下我的问题:
如果窗口操作符的参数是Window=1, Step=1,地平线=1:如果相邻的滑动窗口验证器的参数被配置为Window=5, Step=1,地平线=1,就像你的时间系列视频#9一样,会发生什么?检查来自Windowing操作符的输出示例,可以看到Label已经包含了时间n+1的预测训练数据,因为Horizon=1。滑动窗口验证器会为自己的Step=1创建一个新标签吗?那么我们得到了什么,一个适合预测n=2的标签,从窗口步骤=1加上从滑动窗口验证器步骤=1得到的n=1的累积?显然不是,但我不明白。假设窗口和滑动窗口验证器操作符都有Horizon = 5:那么我们得到了什么,一个Label作为时间n+25或n+10的算法训练的输入?同样,我不理解端到端流程。
如果答案是Windowing和滑动窗口验证操作符(包括它们的参数)在端到端过程中完全独立工作:为什么要用比Windowing参数设置的初始示例多5倍的特征/属性来训练/验证SVM这样的算法?我猜滑动窗口验证参数Window=5将导致基于5维向量的SVM超平面。但是这些向量与来自Window=1的Windowing操作符的输入示例集的向量相比,“不指向任何地方”。为什么不将Windowing操作符的Window参数也设置为5,以便输入示例集的向量的维度至少与SVM超平面的训练/验证向量的维度匹配?
你可能会理解:我感觉训练过度了。
请详细说明。谢谢。
问题解决了,我得到了我的学习点。通过试验。
窗口操作符参数决定了学习和预测。
模型的训练/验证是分开的。
再次感谢你的工作。
哦嘿@luc_bartkowski我没看到你的问题。为了引起我的注意,最好使用“@”符号,并在将来标记我。
澄清一下,Windowing操作符是转换操作符。它只是将您的时间序列转换为基于您使用的参数的多维数据集。滑动窗口验证操作符用于训练和测试模型的性能。是的,它们有类似的参数,称为步骤和宽度,只是它们的应用不同。好运!