时间序列预测的许多例子

诺埃尔诺埃尔 成员职位:82Maven
2019年6月编辑 帮助
你好,
[为我可能使用的任何混淆或模糊的语言提前道歉;我不是数据科学家,所以我不知道正确的术语。

假设我有一个销售螺丝刀的零售商一段时间以来的销售量数据集。他们的产品种类繁多:平头的、十字的、托克斯的、长颜色的、短颜色的,还有你能想到的各种颜色,等等。如果你想预测需求,你可以一次为每个产品创建一个系列的模型(例如,短的,黄色的,平头螺丝刀,然后是中等长度的,紫色的,粗柄的梅花螺丝刀,等等),或者可以将所有十字螺丝刀或所有不同类型的螺丝刀的销售汇总在一起,以便将它们合并成一个系列。
但是,由于某种原因,假设您想单独使用每种螺丝刀的所有数据来训练模型。对于每个日期,您将拥有库存中每种型号螺丝刀的数据点。

在RapidMiner中表示这一点的“正确方式”是什么?

@sgenzer @tftemme
标记:

最好的答案

  • hughesfleming68hughesfleming68 成员职位:323独角兽
    2019年3月编辑 解决方案接受
    嗨,诺埃尔,

    我知道你想干什么。在大多数情况下,越简单越好。将每个ID视为一个独立的预测,并尝试确定哪个属性实际上包含任何信号。选择您认为贡献最大的属性,并使用一系列连接,构建一个由资产和一个窗口属性组成的表,并通过交叉验证运行该表。一个现实世界的例子是使用行业ETF的数据来预测整体市场方向。记住将交叉验证设置为线性采样,或者更好的方法是使用滑动窗口验证。还要看一下您的规范化。如果你先标准化,然后再组合你的资产,你会失去它们之间的关系,因为你把它们放在同一个尺度上。你可能想这样做,但有些情况下你可能不想这样做。

    我不确定你所建议的组合属性的方式会给你你正在寻找的结果。从最简单的模型出发总是最好的,因为从噪声中分离信号已经很难了。

    请注意,为了获得平稳时间序列而进行的微分实际上可能会导致过度微分。部分解决方案是使用分数阶微分和增广迪基-富勒检验,并估计实际需要多少微分来实现平稳时间序列。这可能是必要的,也可能不是必要的,但如果它能给你更好的结果,这是值得研究的。PM我如果你想Python代码来测试这一点。比起使用ADF测试,我更喜欢为分数阶微分设置一个值循环,看看它对我的预测有什么影响。Rapidminer非常适合这种测试。

    问候,

    亚历克斯
    诺埃尔 yyhuang ashreim

答案

  • Telcontar120Telcontar120 主持人,RapidMiner认证分析师,RapidMiner认证专家,会员职位:1635年独角兽
    我可能没理解你的问题。当你说“你想使用每一种螺丝刀的所有数据来训练一个模型”,你的意思是你想要一个单一的模型来代表螺丝刀的总需求吗?如果是这样,那么传统的方法将是首先按日期汇总所有销售额,然后使用传统的时间序列方法对其建模(例如,它可能是ARIMA或Holt-Winters等)。
    布莱恩·T。
    Lindon合资企业
    乐鱼平台进入来自认证RapidMiner专家的数据科学咨询
    诺埃尔
  • 诺埃尔诺埃尔 成员职位:82Maven
    感谢您的回复,Telcontar120!
    假设我有零售商携带的每种型号的螺丝刀的日销售数字,并且不想将数据聚合到单个时间序列中。(不幸的是,我在这里无法使用这个类比,因为我想不出为什么有人想要单独模拟每种型号螺丝刀的销售,而不是将它们合并在一起……如果有帮助的话,我可以试着想出另一个比喻,但我担心它会把水搅浑。)
  • Brian_WellsBrian_Wells 成员职位:6因素二世
    诺埃尔,你好!我完全能理解你的情况,虽然我正在努力用神经网络和窗口建立一个干净的预测模型,但我可能对你的问题有一些见解。首先,我同意你的观点,即在最细粒度的水平上进行预测,然后进行汇总是一种典型的更准确的方法,前提是你在试图建模的分辨率上有足够的数据(完全独立的兔子洞)。我读过的许多文章以及Ingo的一些视频都支持这种方法。

    我从相反的角度出发(我认为),因为我收到了一份来自我们一个业务部门的销售报告,该部门有超过10年的记录,其中包含数百个不同的聚合级别,其层次结构由预测“关键”属性描述,该属性仅是产品系列、产品、模型、销售渠道、商店分类等。作为一名工程师而不是财务人员,这种方法最初让我陷入了困境,直到我意识到我可以设置一个标准模板来简单地过滤我想要的粒度级别的键,并将我的预测模型应用于这些记录。

    如果您的销售数据没有以这种方式组合,那么很容易自己创建键,然后将数据附加在一起,并使用我采用的方法。我选择这种方法的原因是,一旦您确定了合适的粒度级别并过滤到该级别,您就可以剥离键列表,去重复项,并使用它来建立一个循环来隔离,例如,每个部分的销售数据,应用您的预测模型,收集结果,最后,使用TurboPrep来pivot和聚合结果预测数据,以创建您需要创建的任何汇总报告。

    希望这能说得通。关键提示-循环和过滤在这种情况下是一个巨大的力量倍增器。

    干杯!
    sgenzer Telcontar120 CraigBostonUSA 诺埃尔
  • 诺埃尔诺埃尔 成员职位:82Maven
    谢谢@Brian_Wells等待回应!我真的很感谢你花时间发帖。我用了5个例子测试了你的技巧,我希望人们可以看看并验证这是“正确”的方法……

    我有五种资产价格的时间序列,以及它们所属指数的价值。我想对这五种指数分别训练一个模型,并预测未来一个时期的指数值。

    直觉上,我觉得我应该迭代这五个资产,打开它们的属性窗口,并一次一个地将它们“提供”给模型。资产#1的第一个窗口看起来像这样:

    资产1 Px - 2 |资产1 Px - 1 |资产1 Px - 0 |指数val - 2 |指数val - 1 |指数val - 0

    对于资产2-5,你需要再重复4次。然而,我无法让这种方法发挥作用,而且作为机器学习的新手,我甚至不确定它是否有意义。将每个日期的所有资产数据连接在一起也会想到:

    资产1 Px - 2 |资产#1 Px - 1 |资产#1 Px - 0 |资产#2 Px - 2 |资产#2 Px - 1 |资产#2 Px - 0 |…其他资产,索引值....

    但由于许多资产具有许多属性和潜在的大窗口,我认为这种情况可能会失控。

    我最终循环遍历所有资产id,打开每个系列,并一个接一个地附加结果。进入模型的数据集看起来像:资产#1的窗口数据,资产#2的窗口数据,……资产#5窗口数据

    这是否打乱了时间顺序?模型是否知道它看到了相同时间框架和索引值的五个示例?

    任何帮助将非常感激!(附过程及资料)。

    最好的
    诺埃尔

    @sgenzer @Telcontar120 @Pavithra_Rao @CraigBostonUSA @hughesfleming68
  • sgenzersgenzer 管理员,版主,员工,RapidMiner认证分析师,社区经理,成员,大学教授,PM版主职位:2959年社区经理
    @Noel我要把谭医生从办公室叫出来,他是我们的时间序列专家。眨眼:

    斯科特
  • SGolbertSGolbert RapidMiner注册分析师、会员职位:344独角兽
    @Noel

    用例看起来像是矢量自回归模型(例如VAR或VARMA)的一个很好的候选者,AFIK尚未在RapidMiner中实现,但是可以很容易地使用脚本操作符。我以前使用过R脚本的VAR模型。

    如果您对此感兴趣或感兴趣,请告诉我,如果有的话,我可以准备一份样品。

    问候,
    塞巴斯蒂安。

    sgenzer
  • prashant768prashant768 成员职位:6贡献我
    谢谢你提供的信息,但是有人能帮我解释一下如何在RM中执行平稳性测试吗?我真的被困在这个过程中了
登录注册置评。