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