在RapidMiner中使用窗口操作符的时间序列

rainaadirainaadi 成员职位:4贡献我
2018年11月编辑 帮助

我正在尝试使用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月的标签值?

我是初学者,我真的很感激任何帮助!

标记:
Anthony93

最佳答案

  • Thomas_OttThomas_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。

    1. WindowingExample png

    那么如何在预报中使用FB_CLOSE和MSFT_CLOSE呢?这就是Window操作符的用武之地,我想要获取这些数据并创建一个FB/MSFT数据点的“窗口”,这些数据点描述了一些XOM数据点。问题是,使用多大的窗口?这就是需要一些领域知识的地方,你必须做出你的第一个“最佳猜测”,记住你可以在以后使用参数优化时改变窗口大小。

    对于这个论点,让我们以5天的窗口为例(交易周通常为5天)。这就是窗口大小。步长是你想让窗口前进的距离。设置步长还需要一些领域知识,因为您可能已经预测了每周、季度或每月类型的数据。在我们的例子中,我们将时间提前1(第二天)。

    你应该会看到这样的东西:

    2. WindowingExample png

    上面的图片就是你应该看到的。我用红框来说明下一点。红色方框强调了一个重要的概念。在示例第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)的值

    3. WindowingExample png

    它是这样的:

    4. WindowingExample png

    下一步将是将这些数据输入滑动窗口验证操作符,并在其中嵌套一个算法来反向测试您的假设。

    希望这能有所帮助。

    见鬼 yyhuang Marcela_Hercog amund

答案

  • rainaadirainaadi 成员职位:4贡献我

    是的,那正是我想要的。本文中的步骤只是概述,没有解释。

    例如:“窗口大小:决定为截面数据创建多少个“属性”。窗口宽度内的原始时间序列的每一行都将成为一个新属性”——这并没有真正解释为什么会发生这种情况,或者我应该从Windowing操作符生成的许多属性中得出什么结论。

    托马斯·奥特的youtube视频也是如此——这些资源只是告诉我该做什么,而不是解释他们为什么要做这乐鱼体育安装些事情,以及这些事情的用途。

    只是希望能有更清晰的解释,因为我在网上找不到太多。

  • Thomas_OttThomas_Ott RapidMiner认证分析师,RapidMiner认证专家,会员职位:1761年独角兽

    好吧,我应该学会看第一个问题,而不是最后一个。

    第1项:查看我的回复以及我发布的链接

    项目2:创建单个属性参数与您希望Studio如何识别数据系列有关。在Series扩展中还有其他操作符,它们要求将数据转换为“Series”数据类型(这是特定于该特定操作符必须如何读入数据的)。通常这是不需要的,所以保持开关打开。

    第3项:你应该能够预测你的价值,但我从来没有在我的具体问题上那样做过,所以我建议你在那里尝试一下。为什么没有12月15日/ 1月16日的标签值,好问题,这与你在第一次传递中创建的窗口有多大有关。这就是为什么您总是需要为您的测试集使用第二个窗口操作符(没有打开“Create Label”)。这周晚些时候我有更多时间的时候,我会再跟进这件事。

    见鬼 yyhuang
  • Thomas_OttThomas_Ott RapidMiner认证分析师,RapidMiner认证专家,会员职位:1761年独角兽

    下面是一个例子:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <过程version = " 7.1.001 " >
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文

    <过程扩展= " true " >

    .
    < /操作符>




    < /操作符>





    < /操作符>




    < /操作符>



    <过程扩展= " true " >




    .
    .
    > < /过程
    <过程扩展= " true " >

    <列出关键= " application_parameters " / >
    < /操作符>


    < /操作符>


    .



    .
    .
    > < /过程
    < /操作符>

    <列出关键= " application_parameters " / >
    < /操作符>
    /> .
    /> .



    .
    .

    > < /过程
    < /操作符>
    > < /过程
    见鬼 yyhuang
  • mallsunita13mallsunita13 成员职位:4贡献我

    亲爱的托马斯·奥特先生:

    我正在做时间序列分析,以预测未来邮件的大小,以优化资源。乐鱼体育安装

    我看了你的视频,做了一个模型。我有一个数据集,其中只有一个变量是“总字节”,这个信息是基于学年的连续9周。我把我的数据集分为两部分,比如8周的数据作为训练,9周的数据作为测试。

    我使用SVM和交叉验证算子。我的问题是

    • 在使用窗口操作符期间,我想选择系列表示为“编码-序列-属性”和窗口大小为“10”。但显示错误信息“参数window-size指定窗口大小,但值10超过属性数量”。
    • 在支持向量机中显示“支持向量机不能处理多项式属性”的错误信息。

    我是RapidMiner Studio的新手。请帮帮我。

    谢谢你!

    萨尼塔

  • iesnaolaiesnaola 成员职位:8贡献我

    苏尼塔,你好,

    关于SVM错误消息…你的数据集有String类型的属性吗?有些算法只能处理数值属性,不能处理文本属性。我建议你将你的非数值属性转换为数值属性。

    如果你有一个String类型的参数,你可以使用“Nominal to Numerical”模块。

    我希望这对你有所帮助

    伊克尔

  • 列表列表 成员职位:39大师

    错误地翻了一倍。

  • binsetyawanbinsetyawan 成员职位:46大师

    我有类似的问题,在训练中我使用2009-2015年的数据,在测试中我使用2016年的数据(数据是每月的)来预测2017年的数据。无论是训练还是测试,我都将窗口大小设置为12,步长设置为1,视界设置为1。

    但是测试结果只有1行,而我想象的结果是12行(2017年12月)。我知道为什么结果只有1行,这是因为12个窗口大小的完整窗口只有1,当我检查添加不完整的窗口时,它出现了12行,但我认为有些事情是不正确的......

    @Thomas_Ott

  • Thomas_OttThomas_Ott RapidMiner认证分析师,RapidMiner认证专家,会员职位:1761年独角兽

    你将需要Bala D在他的书中所写的过程。看一下这个线程中的最后一个进程。http://community.www.turtlecreekpls.com/t5/RapidMiner-Studio-Forum/Recall-Error/m-p/37302#U37302

  • luc_bartkowskiluc_bartkowski 成员职位:46Maven

    你好托马斯,

    关于时间序列分析和预测,我仍然没有达到一个令人满意的学习点。我很抱歉。
    我很欣赏你的博客/视频和回答,但我仍然有问题:

    为什么“窗口”和“滑动窗口验证器”操作符同时提供窗口、步长和视界的参数?

    他们如何相互影响或合作/工作?

    是否有任何“经验法则”来实现两个运算符的参数集相互结合?

    解释一下我的问题:

    如果窗口操作符的参数是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_bartkowskiluc_bartkowski 成员职位:46Maven
    亲爱的托马斯,

    问题解决了,我得到了我的学习点。通过试验。
    窗口操作符参数决定了学习和预测。
    模型的训练/验证是分开的。

    再次感谢你的工作。
    sgenzer
  • Thomas_OttThomas_Ott RapidMiner认证分析师,RapidMiner认证专家,会员职位:1761年独角兽

    哦嘿@luc_bartkowski我没看到你的问题。为了引起我的注意,最好使用“@”符号,并在将来标记我。

    澄清一下,Windowing操作符是转换操作符。它只是将您的时间序列转换为基于您使用的参数的多维数据集。滑动窗口验证操作符用于训练和测试模型的性能。是的,它们有类似的参数,称为步骤和宽度,只是它们的应用不同。好运!

    sgenzer Anthony93
  • akaplanakaplan 成员职位:2新手
    我也有同样的问题。我怎么能?
登录注册置评。