当前位置: 首页 > news >正文

ODM和OLAP实现时序预测(一)

Part 1 概要
前言
http://oracledmt.blogspot.com/2006/01/time-series-forecasting-part-1_23.html
Oracle数据库中的ODM组件支持时序预测。预测通过OLAP中的FORECAST命令支持。FORECAST命令能够通过三种方法预测数据:线性趋势(straight-line trend),指数增长(exponential growth),Holt-Winter指数平滑法(Holt-Winters extrapolation)。FORECAST根据选定的方法执行计算并且也可以选择将结果存储在analytic workspace中的变量中。头两个方法是比较简单的推断方法。Holt-Winters预测方法要更加复杂,它是指数平滑法或移动平均技术的一种。Holt-Winters方法构成三个统计上的相关序列,用于做实际预测。这些序列是:
1. 平滑数据序列,带有季节性结果的原始数据
2. 季节索引序列,每个时期的季节结果。
3. 趋势序列。
FORECAST命令所支持的方法叫做“单变量时间序列(univariate time series)”。他们仅能被用于建模一个时间序列,时间序列由跨越时间增加范围的可观测顺序单变量(scalar)数据组成。FORECAST命令方法也是线性的,并且不能捕捉输入和输出间的复杂关系。
ODM,通过其自身的支持向量机(SVM)回归函数,为复杂关系的和包含除自身外其他变量的时序预测提供了强大的非线性技术支持。这篇文章剩余部分包含了时序建模的数据挖掘方法。这篇文章是一个系列中的一部分,下一篇文章我会给出一个使用ODM做时序预测的例子和方法。
数据挖掘方法
ODM SVM回归支持通过时间延迟或lag空间爱你方法的时序建模。这种方法也被称为“状态-空间重建(在物理社区state-space reconstruction)”和“tapped delay line(在工程社区)”。在它最简单的形式,目标(即为时序想要预测的内容)过去的值被作为模型输入,这些输入被称为“迟滞变量(lagged variabled)”,并且能够通过SQL LAG分析函数很容易的计算出来。与预测序列相关的其他属性也能用相同的方式增加进来。例如,我们要预测每天的电力负载,基于电力负载值和每天平均温度。下表中说明了使用LAG函数计算的值。数据使用Y表示最大负载值使用X表示10天的平均温度。
DAY
Y
LAG(Y,1)
LAG(Y,2)
X
LAG(X,1)
LAG(X,2)
1
797
.
.
-7.6
.
.
2
777
797
.
-6.3
-7.6
.
3
797
777
797
-3.0
-6.3
-7.6
4
757
797
777
0.7
-3.0
-6.3
5
707
757
797
-1.9
0.7
-3.0
6
730
707
757
-6.0
-1.9
0.7
7
818
730
707
-6.2
-6.0
-1.9
8
818
818
730
-3.9
-6.2
-6.0
9
803
818
818
-6.3
-3.9
-6.2
10
804
803
818
-1.1
-6.3
-3.9
在一些情况下,辅助属性X,如上面例子中给出的平均温度,在我们试图预测目标Y时不能获得,因此不能包含在输入中,然而,我们仍然能使用X的LAG值。一旦属性被选中,我们能使用这些目标Y来训练SVM模型以及预测属性,在上面的例子中预测者是:LAG(Y,1),LAG(Y,2),X,LAG(X,1),LAG(X,2)。数据会被分为培训和测试数据集。通常在以前日期上做训练在以后的日期上做测试。对于单步(one-step)预测测试,训练和测试数据可以在所有可用数据中随机选定。仅输入lagged目标Y的SVM回归模型被叫做“自回归模型(autoregressive model)”。包括所有lagged变量的输入空间被叫做“嵌入间隔(embedding space)”。
如果在时序中的数据行没有相等间隔就有些麻烦了,要观测的时间间隔不同。一种方法是使用平滑技术来计算相等时间间隔属性的值,然后使用计算出来的替换值而不是原始值来训练。
方法
当建模时间序列时,依据上面的方法,必须要做如下决策:
1. 趋势移动(Trend removal)
2. 目标转换(Target transformation)
3. 迟滞属性选择(lagged attribute selection)
对于大多数时序预测技术都会需要做这些决策。
l 趋势移动 Trend removal
对于上述时间延迟方法的关键事实是假定时序是不变的。意味着在一系列时间间隔的时序值得统计分布式相同的。事实上,这意味着时序没有趋势,实际上许多时序表现出了趋势。例如,许多金融指数,股票价格一段时间经常上升。在时序中的趋势组成是指在一段时间序列值趋向于上升或下降。最简单的方法叫做差分化(differencing),它是处理非定长(stochastic)趋势的标准统计学方法。在上面的例子中,不是使用Y(时序值)作为目标,而是使用差分D=Y-LAG(Y,1)作为目标,应用到目标lagged值也一样。例如,不使用LAG(Y,1)做预测者,而使用LAG(Y,1)-LAG(Y,2)。有时计算差异的差别是必要的。目标的差分能反向获得对原始序列的预测。
l 目标转换Target transformation
常态SVM回归目标,有助于提高算法的收敛。对于时序问题,目标应该被事先常态化以便创建lagged变量。
l 迟滞属性选择 Lagged attribute selection
可以通过分析数据(计算相关图correlogram或交叉相关图cross-correlogram)或选择窗口大小来选择lag。例如,如果我们设置窗口大小为2,则要包括LAG(Y,1)和LAG(Y,2)作为预测者,Y是目标属性。选择窗口大小时要注意,窗口大小直接影响SVM算法的模式识别能力,它限制能被识别的模式大小。如果窗口太小,我们可能没有足够的信息来捕捉系统动态的时序数据。如果窗口太大,额外的lagged属性会增加噪音并且使问题难于解决。
计算预测
有几种不同的方法来计算预测,两种最常用的策略是:单步预测one-step-ahead (open-loop)和多步预测multi-step (closed-loop)。
l 单步预测或开循环预测
这种策略需要对模型的所有输入值可用。包含在模型中的早先目标值只能为下个时间间隔做预测。对于上例中的预测请求,我们只能预测请求中的一天(Day 11),为了计算Y_12,预测DAY12,需要等待真实的Day11发生。预测Day 11 = P(Y_10,Y_9),Day12 = P(Y_11,Y_10),等等。单步预测能够直接通过Oracle Data Miner的Apply和测试挖掘活动或者使用SQL预测函数来实现。这个系列的第二部分会讲到。
  • forecast Y_11 as P(Y_10,Y_9)
  • forecast Y_12 as P(Y_11,Y_10)
  • and so on
l 多步预测或闭循环预测
这个策略当实际值可用时使用实际值,当实际值不可用时使用估计值或预测值作为输入。
  • forecast Y_11 as P_11 = P(Y_10,Y_9)
  • forecast Y_12 as P_12 = P(P_11,Y_10) P_11是预测值
  • and so on
在这个例子中,即使没有Y_11的实际值也能生成Y_12的预测值。这个策略是使用了预测值来估计。多步预测使用简单的PL/SQL过程来计算。在本文的第三部分会讲到。
与传统的时序技术比较
SVM回归像大多数的神经网络一样,提供了时序预测功能,但是训练更简化。使用这种模型的优势有:
l 建模非常复杂函数的能力
l 在模型中使用大量变量并且在额外的迟滞时序数据中包括其他数据的能力
通过这里描述的方法创建非线性的自回归模型。这些模型非常有用并且被广泛应用于很多领域,金融预测、电力负载预测、混沌 chaos 模型以及太阳黑子预测。相比, ARIMA ,一种流行的时序预测技术既支持自回归也支持移动平均。然而 ARIMA 建模时线性的,但 SVM 回归模型能捕捉非线性关系。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 16进制 转为图片 php_ImageMagick(图片处理软件) 分享
  • 数据分析 超市条码_超市小程序做得比较好的功能点是什么?
  • ODM和OLAP实现时序预测(二)
  • 软件产品研发方向调研内容_研发部职能分解:调研,产品、技术、工艺、软件研发,测试、验收...
  • 网页像素测量工具_寓教于乐!11 个提升网页设计和前端开发技能的趣味游戏
  • ODM和OLAP实现时序预测(三)
  • asp 执行 exe_asp.net core 系列 18 web服务器实现
  • 搜索引擎登录,网站分类目录登录地址
  • python删除列表元素_Python去除列表中对应数量的元素(一一对应)
  • 基于Java Socket的文件UpLoad代码
  • python网络爬虫_Python网络爬虫实战(二)数据解析
  • 应用Executors来建立Thread pool
  • 富士通台式电脑_什么是电脑显卡 电脑显卡分类介绍【详解】
  • U盘上安装Damn Small Linux(DSL),让Linux常驻U盘
  • nginx 伪静态404_宝塔LNMP环境 Nginx安装EduSoho教程说明
  • ----------
  • Android交互
  • Apache Pulsar 2.1 重磅发布
  • ES2017异步函数现已正式可用
  • JS数组方法汇总
  • Python3爬取英雄联盟英雄皮肤大图
  • Python利用正则抓取网页内容保存到本地
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • tab.js分享及浏览器兼容性问题汇总
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 电商搜索引擎的架构设计和性能优化
  • 高性能JavaScript阅读简记(三)
  • 前端面试之CSS3新特性
  • 使用 QuickBI 搭建酷炫可视化分析
  • 学习JavaScript数据结构与算法 — 树
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 数据库巡检项
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​如何在iOS手机上查看应用日志
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #控制台大学课堂点名问题_课堂随机点名
  • (0)Nginx 功能特性
  • (33)STM32——485实验笔记
  • (MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2
  • (第30天)二叉树阶段总结
  • (第二周)效能测试
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)Linq学习笔记
  • (转)人的集合论——移山之道
  • (自适应手机端)行业协会机构网站模板
  • .net core + vue 搭建前后端分离的框架
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET 反射的使用
  • .Net8 Blazor 尝鲜
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装