# 指定时间区间

使用**时间区间**节点指定预测模型的时间间隔。

时间区间节点可以为时间序列建模节点或自相关图节点的时间序列数据指定时间间隔并生成标签，作为未来估计或预测的基础。目前支持的时间间隔包括年、季度、月、日和时、分、秒。

时间时区节点适用于以下两种情况：

1.  数据表中不含时间字段：

数据表虽然并不包含时间字段，但该序列的数据已按照时间顺序按照等间隔排列，则可通过时间区间节点为数据自动添加日期标签。如果某个时点的数据存在缺失，建议增加空行表示此次度量或提前使用缺失值替代的方法进行填充。这种情况下选择“从第一个记录开始附加标签”。

1.  数据表中已包含时间字段：

对于这样已经含有时间字段的数据，需要对数据按照指定时间间隔进行转换，例如，将小时数据整合成以天为间隔的数据。由于数据中已经存在时间字段，不等间隔的情况允许存在。这种情况下选择“从数据构建”。在进行整合时，需要对数据进行汇总，汇总值的操作根据具体的分析需要进行，以确保对各种字段类型按照指定间隔进行汇总的方法。

当然，1 和 2 也可以结合使用，先生成时间标签，然后按照用户所需要的时间间隔进行数据汇总。

![](/uploads/projects/mining/202603/189e1de955fc0fbf.jpeg)

![](/uploads/projects/mining/202603/189e1de956e2bc34.jpeg)

表 9.3 时间区间节点配置

| **对话框选项** | **内容** |
| --- | --- |
| 时间区间 | 在选择框中指定用于构建或标注时间序列的间隔和  <br/>周期(支持的时间间隔包括年、季度、月、日和时、分、秒) |
| 从第一个记录开始附加标签 | 从用户指定的日期开始以指定的时间区间为间隔连  <br/>续为记录添加标签。例如，如果选择的时间区间是月，指定的日期表示第一条记录是某年和某月，之后以一个月为间隔，为下一条记录做标签，直到遍历整个数据表。输出表中将增加新生成的日期标签。 |

| 从数据构建 | 通过填充或汇总记录对数据进行转换以满足指定的  <br/>间隔，例如，将日度数据累计为月度，在汇总过程中将缺失记录填充为空值或者 0 等。可以在汇总配置中指定用于填充或汇总记录的函数。 输出表将创建新的日期型字段并删除之前的日期，数据按照新的日期进行汇总。 |
| --- | --- |
| 汇总设置 | 在汇总配置中指定用于不同类型字段的汇总和填充  <br/>函数，例如，将每日的利润进行求和得到每月的总利润。 |
| 汇总函数 | 针对不同类型的字段可用的汇总函数有以下几种：  <br/>数值型：总和、平均值、最小值和最大值；字符型： 模式和第一个；  <br/>布尔型：任一值为真则为真或全部为真则为真。 |
| 填充函数 | 针对缺失值可用的填充函数如下：  <br/>数值型：选项包括空值、0 和总体平均值。  <br/>字符型：空值和最近的值。最近的值是指将要创建的时间周期之前的最近非空值。  <br/>布尔型：选项包括空值、真和假。 |
| 最大填充间隔 | 设为默认值 |
| 结果数据集的中最大记录数 | 指定输出表记录数的上限，如果不指定，该数字值会很大，尤其在以日为间隔的情况下可能会超出指定的最大值。如果超出指定的最大值，系统将停止处理并显示警告消息 |

至此，数据准备工作结束。

### 数据探索

数据探索主要是分析时间序列的规律和趋势特征，这个步骤是时间序列建模

的初步工作。

时间序列的思维有三个关键点：

-   近期的时间点对于整个序列的影响较之于远期时间点大；
-   要对在不同周期中相对时间位置相同的指标进行对比分析，例如每年的

8 月旅游消费额都呈现快速上升；

-   是重点标记出异常结果值（比如出现了历史最低值或历史最高值，建议在时间序列作图时，添加平均值线和平均值加减一倍或两倍标准差线，便于观察异常值）。

数据云使用**趋势图**节点进行时间序列的趋势分析。通过该节点可以对选定的时间序列展示时间序列随时间推移的变动情况。

此案例中，对整理好的销售数据表，建立**趋势图**节点，显示随日期，利润的趋势变化，如下图所示。

![](/uploads/projects/mining/202603/189e1de95817e44b.jpeg)

从图中可以看到，该公司的月度利润总额总体呈现下降趋势，但并不存在明显的季节性或周期性趋势。

### 建模数学模型

时间序列预测法可用于短期、中期和长期预测。根据对资料分析方法的不同，又可分为：简单序时平均数法、加权序时平均数法、移动平均法、加权移动平均法、趋势预测法、指数平滑法、季节性趋势预测法、市场寿命周期预测法等。

在数据探索中，我们看到利润随时间的变化规律，与指数函数趋势较为一致。因此选择**指数平滑**节点进行建模分析。

继续之前的工作流，进行以下操作：

-   建立**类型**节点，在角色中指定模型的输入变量，目标变量
-   建立**指数平滑**节点，选择模型

该节点提供了“自动”、“简单指数平滑”、“Holt 线性趋势”、“简单季节模型”、“Winter加法”和“Winter 乘法”多种模型。其中“自动”是指节点会按照其他五个模型分别进行训练，然后输出效果最好的一个，“自动”选项运行耗时会相对长一些。

节点配置界面如图 9.22 所示：

![](/uploads/projects/mining/202603/189e1de958e3d04b.jpeg)

图 9.22 指数平滑节点配置图

配置图解释如下表：

表 9.8 指数平滑节点配置

| 对话框选项 | 内容  |
| --- | --- |
| 模型  | 选择具体的分析模型，提供了自动、简单、Holt 趋势、简单季节、  <br/>Winter 加法和 Winter 乘法多种模型供选择。如果选择“自动”，将自动执行所有的模型拟合并输出效果最好的一个，选择该选项则耗时会相对长一些 |
| 预测期数 | 指定要预测未来几期的数据 |
| 置信区间的置信度 | 模型不仅输出预测值，也输出预测值的置信区间。对于同样的模型  <br/>而言，置信度越高，预测区间越宽，置信度越低，预测区间越窄。 |
| ACF 和 PACF  <br/>最大延迟数 | 用于指定计算 ACF（auto correlation function，自相关)和 PACF  <br/>（partial auto correlation function，偏自相关)时最大的延迟期数。一般为序列周期的倍数。 |
| 时序周期 | 可以有用户指定时间序列的周期，或者由系统自动识别 |

时间序列有三个部分构成，平稳性，趋势性和季节性，根据预测时考虑到的时序的影响因素的不同，影响方式不同和平滑的次数不同，从简单指数平滑衍生出更多中模型：

指数平滑模型算法选择：

-   当数据比较稳定，没有较大波动，可以采用“自动”
-   如果数据存在线性趋势且没有季节性，建议“Holt”
-   如果存在显著季节性且趋势性不明显，建议“简单季节”
-   如果同时存在线性趋势和季节性，建议“Winter 加法”或者 Winter 乘法”

### 模型评估

实际操作时，建立模型后，可以尝试运行不同的模型，对模型评进行估对比，从而选择最佳的模型。

指数平滑节点执行后，输出时间散点图，残差自相关图，模型评估和预测数据，同时也支持 PMML 模型查看和导出。

### 时间散点图

**![](/uploads/projects/mining/202603/189e1de959c7a033.jpeg)**

时间散点图展示了使用指数平滑法的预测值与实际观测值的对比以及每个预测值的置信区间。主要是看模型拟合效果。

### 残差自相关图

![](/uploads/projects/mining/202603/189e1de95ac0866e.jpeg)

关于残差自相关图的解读我们会在 XX 具体解释。

### 模型评估

**![](/uploads/projects/mining/202603/189e1de95b9a5032.jpeg)**

从模型评估中可以看到最终选择的模型是 Winter 乘法模型，模型中的参数α， β和γ分别为 0.585，0.088 和 0.798。同时还可以看到模型的拟合度 R<sup>2</sup>\=0.680,和各

种误差指标。在选择模型时，除了 R2 之外其他的误差指标和 AIC/SBC 都是越小越好，然而这些指标单独看时并没有多大的指示意义，只有多个模型对照时可以帮助我们选择最佳的模型。

### 预测结果

模型输出预测值供模型评估或者进一步分析使用，显示如图 9.24 所示：

![](/uploads/projects/mining/202603/189e1de95cad3df7.jpeg)![](/uploads/projects/mining/202603/189e1de95d62ca1b.jpeg)

图 9.24 执行指数平滑操作后的预测值窗口图

指数平滑节点执行后，输出表增加了三列，分别是$E-销量、$EX-上限-销量、

$EX-下限-销量。分别表示序列利润的预测值、预测区间的上限和预测区间的下限，而且提供了未来三期（1996 年 1 月、2 月和 3 月）的利润预测值。

### 时间序列图检验

在研究时间序列中存在的规律时，我们需要研究的问题有：

-   -   -   序列是否在固定水平上下变动？
        -   此水平是否本身也在变动？
        -   是否有某种上升或下降的趋势？
        -   是否存在有季节性的模式？
        -   是否季节性的模式也在变更？

这些问题的答案会影响到预测模型的选择。

**时间序列组成因子**

一个时间序列的时间性趋势可能包括以下一种或几种：

平稳性：平稳性是指时间序列在特定时间内呈现比较稳定的趋势；与之相对的是趋势性。时间序列的长期趋势可以由函数图像进行拟合，根据函数图像曲线的形状，可以为线性的

该案例的工作流如下：

![](/uploads/projects/mining/202603/189e1de95e71f302.jpeg)

### 商业目标

业务理解：该案例所用的数据是《中国纱年产量.xls》、《奶牛月产奶量.xls》和《北京市每年最高气温.xls》，三组数据均包含年份/月份、产量/最高气温两个指标，如下：

![](/uploads/projects/mining/202603/189e1de95f5f096d.jpeg)

![](/uploads/projects/mining/202603/189e1de960394e0d.jpeg)

![](/uploads/projects/mining/202603/189e1de9611ad2ca.jpeg)

### 分布趋势分析

以中国纱年产量的工作流为例：

![](/uploads/projects/mining/202603/189e1de961c5b21c.jpeg)

分析时间序列趋势是时间序列建模的初步工作。目的是为了分析时间序列的规律和序列特征，如序列是否平稳？是否有周期性或者趋势性？并由此分析哪些分析模型更适合。

操作如下：

第一步，设置时间区间。节点配置如下：

![](/uploads/projects/mining/202603/189e1de962c08961.jpeg)

时间区间设为年，从第一个记录开始附加标签，因为数据本身就是年度数据，所以没有进行汇总设置。执行后生成的时间区间表如下：

![](/uploads/projects/mining/202603/189e1de963f295b9.jpeg)

第二步，使用**趋势图**节点分析序列的趋势，节点配置如下：

![](/uploads/projects/mining/202603/189e1de964da1742.jpeg)

从下图可以看出，序列整体呈上升趋势，且没有周期性。

![](/uploads/projects/mining/202603/189e1de965ad8ccb.jpeg)

另外两组数据的节点配置与之类似，不再赘述。配置完成并运行后得到的奶牛月产奶量的趋势图如下，序列整体呈上升趋势，且具有周期性：

![](/uploads/projects/mining/202603/189e1de9668f71f9.jpeg)

北京市每年最高气温的趋势图如下，序列整体没有明显的周期性和趋势性，围绕某个常数上下波动：

![](/uploads/projects/mining/202603/189e1de9678942c2.jpeg)

### 时间序列图检验

仍以中国纱年产量数据为例，工作流如下：

![](/uploads/projects/mining/202603/189e1de9686ecc47.jpeg)

第一步，设置时间区间。具体操作参见上一节。

第二步，使用自相关节点做时间序列图检验，设置如下：

![](/uploads/projects/mining/202603/189e1de96956ccf2.jpeg)

差分阶数默认为 0，表示不进行差分。勾选 ACF，表示绘制自相关图，没有勾选 PACF，表示不绘制偏自相关图，也可以勾选。由如下相关图可以看出，自相关图既不是拖尾也不是截尾（截尾是指在某阶之后，系数都为 0 ；拖尾则会

有一个衰减的趋势，但是不都为 0 ），而是一个三角对称的形式，这种趋势是单调趋势的典型图形，所以原时间序列不平稳。

![](/uploads/projects/mining/202603/189e1de96a6c57ce.jpeg)

另外两组数据的自相关节点配置与之类似，不再赘述。配置完成并执行后分别得到如下的相关图。下图是奶牛月产奶量的自相关图和偏自相关图，自相关图既不是拖尾也不是截尾，而是正弦曲线的形式，这种趋势是**周期性趋势**的典型图形；偏自相关图同样既不是拖尾也不是截尾， 所以原时间序列不是平稳序列。

![](/uploads/projects/mining/202603/189e1de96b95c3bf.jpeg)

![](/uploads/projects/mining/202603/189e1de96ca2bf61.jpeg)下图是北京市每年最高气温的自相关图和偏自相关图，自相关图和偏自相关图都是拖尾，所以原时间序列是平稳序列，可以使用 ARMA 模型进行时间序列分析。

### 简单时序预测

该案例的工作流如下：

![](/uploads/projects/mining/202603/189e1de96d853565.jpeg)

### 商业目标

![](/uploads/projects/mining/202603/189e1de96e9ac0ab.jpeg)业务理解：该案例所用的数据是《销售数据.csv》，该数据包含销售日期、销量和利润（万元）三个指标，如下：

**表 1：销售数据预览**

业务目标：建立预测分析系统，分析利润在未来的预测值。

数据挖掘目标：建立时间序列预测模型，该模型以日期为输入，以利润为目标，建立预测模型。

### 数据理解

使用统计节点计算字段的特征统计量，输出结果如下：

![](/uploads/projects/mining/202603/189e1de96f8e5880.jpeg)

### 分布趋势分析

**![](/uploads/projects/mining/202603/189e1de9705ef5d2.jpeg)**

分析时间序列趋势是时间序列建模的初步工作。目的是为了分析时间序列的规律和序列特征，如序列是否平稳？是否有周期性或者趋势性？并由此分析哪些分析模型更适合。

操作如下：

第一步，使用类型转换节点将字符型的日期型转化为日期型。节点配置如下：

![](/uploads/projects/mining/202603/189e1de97166af03.jpeg)

第二步，使用时间选择节点选择选择 85 年 - 95 年的数据的进行分析。节点配置如下：

![](/uploads/projects/mining/202603/189e1de9727af6f5.jpeg)

第三步，设置时间区间，节点配置如下：

![](/uploads/projects/mining/202603/189e1de9736c823e.jpeg)

第四步，使用时序图节点分析序列的趋势，节点配置如下：

![](/uploads/projects/mining/202603/189e1de9745ced59.jpeg)

从下图可以看出，序列整体呈下降趋势，且没有周期性。

![](/uploads/projects/mining/202603/189e1de97542b861.jpeg)

### 简单序列预测

工作流如下：

![](/uploads/projects/mining/202603/189e1de9764c4543.jpeg)

接下来，我们选择一个**指数平滑**预测算法进行预测。步骤如下：

第一步，使用时间区间节点设置时间区间为“月”， 汇总配置中按照月对数据进行汇总，配置如下：

![](/uploads/projects/mining/202603/189e1de9773de859.jpeg)

该节点执行前数据预览如下：

![](/uploads/projects/mining/202603/189e1de9782b1459.jpeg)

执行后数据预览如下：

![](/uploads/projects/mining/202603/189e1de979396077.jpeg)

![](/uploads/projects/mining/202603/189e1de97a1cb5dd.jpeg)第二个，使用**类型**节点，制定输入变量，目标变量，为建模做准备，配置如下：

第三步，使用指数平滑预测算法，进行建模。节点配置如下：

![](/uploads/projects/mining/202603/189e1de97b0c7d60.jpeg)

执行后预览数据如下：

![](/uploads/projects/mining/202603/189e1de97c77a48e.jpeg)

查看残差相关图：

![](/uploads/projects/mining/202603/189e1de97d992284.jpeg)

查看预测结果趋势图：

![](/uploads/projects/mining/202603/189e1de97ea72c76.jpeg)

如上图所示，指数平滑算法对该时间序列的趋势有一定预测能力，该模型也总结一些规律，但是尚有一些规律并未总结出。这是一个趋势性非平稳序列，您还可以考虑使用 ARIMA 模型重新建模。

### 小结

时间序列分析是数据挖掘最难的算法之一。当然它也有一个好处，就是建模之前的数据量一般都很小，一般只有几十条到几百条记录（如果您的预测粒度是月，那么每年才 12 条数据，10 年才 120 条），因此模型计算很快。

时间序列分析的一般步骤是：首先，探索序列的趋势，看看序列是趋势特征还是周期性特征，平稳序列还是非平稳序列，是白噪声序列，还是非白噪声序列。根据这些信息我们可以把分析尝试的模型范围缩小，有方向的去优化模型。其次，开始使用工具去尝试模型，并解释模型的质量。最后，评估模型。以及考虑是否使用混合模型来提高模型的稳定性。