【第十四章:Sentosa_DSML社区版-机器学习之时间序列】
目录
【第十四章:Sentosa_DSML社区版-机器学习时间序列】
14.1 ARIMAX
14.2 ARIMA
14.3 HoltWinters
14.4 一次指数平滑预测
14.5 二次指数平滑预测
【第十四章:Sentosa_DSML社区版-机器学习时间序列】
14.1 ARIMAX
1.算子介绍
考虑其他序列对一个时间序列的影响,如太阳黑子对某地区降雨量的影响,石油价格对股价的影响,可以用ARIMAX模型,即带有输入序列的一般ARIMA模型。
ARIMAX模型被称为传递函数模型、动态回归模型,其本质是指带回归项的ARIMA模型,又称为扩展的ARIMA模型。回归项的引入有助于提高模型的预测效果,引入的回归项通常是和被解释变量相关程度高的变量。
2.算子类型
机器学习/时间序列算子。
3.算子属性说明
属性 | 页面显示名称 | 选项 | 类型 | 默认值 | 约束规则 | 属性说明 |
time_col | 时间列 | 必填 | String | null | 必须为时间格式 | 时间列 |
value_col | 预测列 | 必填 | String | null | 数据列 | |
key_col | key列 | 非必填 | String | key键列 | ||
exogenous_cols | 外生变量列 | 必填 | List<String> | null | 外生变量列 | |
predictedN | 预测数量 | 必填 | Integer | 10 | 大于0 | 预测数量 |
analyze_frequency | 分析频率 | 必填 | String | minute | 选项有"year",“month”,“day”,“hour”,“minute”,“second” | |
analyze_time_span | 分析时间间隔 | 必填 | Integer | 5 | 大于0 | 分析时间间隔 |
p | 自回归项数p | 必填 | Integer | 2 | 大于0 | 自回归项 |
d | 差分阶数d | 必填 | Integer | 0 | 大于0 | 时间序列成为平稳时所做的差分次数 |
q | 移动平均项数q | 必填 | Integer | 2 | 大于0 | 移动平均项数 |
exogenous_values | 外生变量输入值 | 非必填 | List<List<Double>> | null | 是否输入外生变量值(多key时不支持输入外生变量值):选择是时进行填写 | 外生变量输入值,用户手动输入预测时间点的外生变量值,可输入多列。 |
xreg_max_lag | 外生变量最大滞后阶数 | 必填 | Integer | 0 | 大于等于0 | 外生变量最大滞后阶数 |
alpha | 显著性水平 | 必填 | Double | 0.05 | (0,1) | 显著性水平 |
4.算子使用介绍
(1)算子初始化
参考公共功能算子初始化算子。
(2)算子属性设置
ARIMAX算子根据现有的时间序列对应的数据,预测未来时间的数据。ARIMAX算子的输入数据支持多种key键,但必须是满足相同key键下时间列间隔为固定数值,且数值列非空的时序数据,建议是使用时序清洗算子处理后的数据。时间列必须为DataTime/Data类型。时间序列预测算子的分析频率应与时序数据采样频率一致,且分析时间间隔需等于时序数据采样时间间隔。
ARIMAXNode属性参数设置
(3)算子的运行
时间序列预测算子的输入数据支持多种key键,但必须是满足相同key键下时间列间隔为固定数值,且数值列非空的时序数据,建议是使用时序清洗算子处理后的数据。算子后可接任意个数据处理算子,再接表格算子或数据写出算子,形成算子流执行。
ARIMAX算子预测算子流
算子的运行结果如图所示
算子流预测结果
结果说明:结果中有时间列,key列(如果源数据没有key列则不会输出),原始数据列xxx(根据选择的数据列而定), 外生变量列,predicted列表示是否为预测行,predicted_xxx表示预测值,predicted_low_xxx 和predicted_high_xxx分别为置信区间的下限和上限。
14.2 ARIMA
1.算子介绍
常用时间序列模型中的一种,如果只是根据单一目标变量的历史数据预测未来数据,可以使用ARIMA算法。如果除了目标变量还有其他输入变量可以选择ARIMAX模型。
2.算子类型
机器学习/时间序列算子
3.算子属性说明
属性 | 页面显示名称 | 选项 | 类型 | 默认值 | 约束规则 | 属性说明 |
time_col | 时间列 | 必填 | String | null | 必须为时间格式 | 时间列 |
value_col | 数据列 | 必填 | String | null | 数据列 | |
key_col | key键列 | 非必填 | String | “” | key键列 | |
predictedN | 预测数量 | 必填 | Integer | “10” | 大于0 | 预测数量 |
analyze_frequency | 分析频率 | 必填 | String | “minute” | 选项有"year",“month”,“day”,“hour”,“minute”,“second” | |
analyze_time_span | 分析时间间隔 | 必填 | Integer | 5 | 大于0 | 分析时间间隔 |
p | 自回归项数P | 必填 | Integer | 2 | 大于0 | 自回归项 |
d | 差分阶数D | 必填 | Integer | 0 | 大于0 | 时间序列成为平稳时所做的差分次数 |
q | 滑动平均项数Q | 必填 | Integer | 2 | 大于0 | 移动平均项数 |
alpha | 显著性水平 | 必填 | Double | 0.05 | (0,1) | 显著性水平 |
4.算子使用介绍
(1)算子初始化
参考公共功能算子初始化算子
(2)算子属性设置
ARIMA算子根据现有的时间序列对应的数据,预测未来时间的数据。ARIMA算子的输入数据支持多种key键,但必须是满足相同key键下时间列间隔为固定数值,且数值列非空的时序数据,建议是使用时序清洗算子处理后的数据。时间列必须为DataTime/Data类型。时间序列预测算子的分析频率应与时序数据采样频率一致,且分析时间间隔需等于时序数据采样时间间隔。
ARIMANode属性参数设置
(3)算子的运行
时间序列预测算子的输入数据支持多种key键,但必须是满足相同key键下时间列间隔为固定数值,且数值列非空的时序数据,建议是使用时序清洗算子处理后的数据。算子后可接任意个数据处理算子,再接表格算子或数据写出算子,形成算子流执行。
ARIMA算子预测算子流
算子的运行结果如图所示
算子流预测结果
结果说明:结果中有时间列,key列(如果源数据没有key列则不会输出),要预测的列xxx(选择的数据列),predicted列表示是否为预测行predicted_xxx表示预测值,predicted_low_xxx 和predicted_high_xxx分别为置信区间的上限和下限。
14.3 HoltWinters
1.算子介绍
常用时间序列模型中的一种,如果只是根据单一目标变量且有明显的周期性的历史数据预测未来数据,可以使用HoltWinters 算法。
2.算子类型
机器学习/时间序列算子。
3.算子属性说明
属性 | 页面显示名称 | 选项 | 类型 | 默认值 | 约束规则 | 属性说明 |
time_col | 时间列 | 必填 | String | null | 时间格式列 | 时间列 |
value_col | 数据列 | 必填 | String | null | 数据列 | |
key_col | key键列 | 非必填 | String | null | key键列 | |
predictedN | 预测数量 | 必填 | Integer | 10 | 大于0 | 预测数量 |
holt_winters_model_type | 模型类型 | 必填 | String | additive | 选项有"additive",“multiplicative” | 模型类型,当算法类型为”HoltWinters”时设置 |
period | 周期性参数 | 必填 | Integer | 12 | 大于0 | 周期性参数,当算法类型为”HoltWinters”时设置 |
analyze_frequency | 分析频率 | 必填 | String | minute | 大于0 | 选项有"year",“month”,“day”,“hour”,“minute”,“second” |
analyze_time_span | 分析时间间隔 | 必填 | Integer | 5 | 大于0 | 分析时间间隔 |
alpha | 显著性水平 | 必填 | Double | 0.05 | (0,1) | 显著性水平 |
4.算子使用介绍
(1)算子初始化
参考公共功能算子初始化算子。
(2)算子属性设置
HoltWinters算子根据现有的时间序列对应的数据,预测未来时间的数据。HoltWinters算子的输入数据支持多种key键,但必须是满足相同key键下时间列间隔为固定数值,且数值列非空的时序数据,建议是时序数据清洗算子处理后的数据。时间列必须为DataTime/Data类型。HoltWinters算子的分析频率应与时序数据采样频率一致,且分析时间间隔需等于时序数据的采样时间间隔。算子属性设置规则参考算子属性说明表格
HoltWintersNode属性参数设置
(3)算子的运行
HoltWinters算子的输入数据支持多种key键,但必须是满足相同key键下时间列间隔为固定数值,且数值列非空的时序数据,建议是使用时序清洗算子处理后的数据。。算子后可接任意个数据处理算子,再接表格算子或数据写出算子,形成算子流执行。
HoltWinters算子预测算子流
算子的运行结果如图所示
算子流预测结果
结果说明:结果中有时间列,key列(如果源数据没有key列则不会输出),原始数据的列xxx(根据选择的数据列而定), predicted列表示是否为预测行,predicted_xxx表示预测值,predicted_low_xxx 和predicted_high_xxx分别为置信区间的上限和下限。
14.4 一次指数平滑预测
1.算子介绍
一次指数平滑预测(single exponential smoothing),也称为单一指数平滑法,当时间数列无明显的趋势变化,可用一次指数平滑预测。
2.算子类型
机器学习/时间序列算子。
3.算子属性说明
属性 | 页面显示名称 | 选项 | 类型 | 默认值 | 约束规则 | 属性说明 |
time_col | 时间列 | 必填 | String | null | 时间列 | |
value_col | 数据列 | 必填 | String | null | 数据列 | |
key_col | key键列 | 选填 | String | null | key键列 | |
predictedN | 预测数量 | 必填 | Integer | 10 | 大于0 | 预测数量 |
analyze_frequency | 分析频率 | 必填 | String | minute | 单选"year",“month”,“day”,“hour”,“minute”,“second” | 分析频率 |
analyze_time_span | 分析时间间隔 | 必填 | Integer | null | 大于等于1 | 分析时间间隔 |
alpha | 显著性水平 | 必填 | Double | 0.05 | 大于0小于1 | 显著性水平 |
4.算子使用介绍
(1)算子初始化
参考公共功能算子初始化操作。
(2)算子属性设置
一次指数平滑预测算子根据现有的时间序列对应的数据,预测未来时间的数据。一次指数平滑预测算子的输入数据支持多种key键,但必须是满足相同key键下时间列间隔为固定数值,且数值列非空的时序数据,建议是使用时序清洗算子处理后的数据。时间列必须为DataTime/Data类型。一次指数平滑预测算子的分析频率应与时序数据采样频率一致,且分析时间间隔需等于时序数据采样时间间隔。
时间序列预测算子属性设置
(3)算子的运行
一次指数平滑预测算子的输入数据支持多种key键,但必须是满足相同key键下时间列间隔为固定数值,且数值列非空的时序数据,建议是使用时序清洗算子处理后的数据。算子后可接任意个数据处理算子,再接表格算子或数据写出算子,形成算子流执行。
一次指数平滑预测算子流
算子的运行结果如图所示
一次指数平滑预测算子运行结果
结果中predicted列取值为false的数据为原有数据,predicted_xxx列取值为预测数据,predicted_low_xxx为置信区间下限,predicted_high_xxx为置信区间上限。
14.5 二次指数平滑预测
1.算子介绍
二次指数平滑预测,二次指数平滑是对一次指数平滑的再平滑。它适用于具线性趋势的时间数列。
2.算子类型
机器学习/时间序列算子。
3.算子属性说明
属性 | 页面显示名称 | 选项 | 类型 | 默认值 | 约束规则 | 属性说明 |
time_col | 时间列 | 必填 | String | null | 时间列 | |
value_col | 数据列 | 必填 | String | null | 数据列 | |
key_col | key键列 | 选填 | String | null | key键列 | |
predictedN | 预测数量 | 必填 | Integer | 10 | 大于0 | 预测数量 |
analyze_frequency | 分析频率 | 必填 | String | minute | 单选:"year", “month”,“day”,“hour”,“minute”,“second” | 分析频率 |
analyze_time_span | 分析时间间隔 | 必填 | Integer | null | 大于等于1 | 分析时间间隔 |
holt_linear_model_type | 模型类型 | 必填 | String | Additive | 单选:Additive, Multiplicative | 模型类型 |
alpha | 显著性水平 | 必填 | Double | 0.05 | 大于0小于1 | 显著性水平 |
4.算子使用介绍
(1)算子初始化
参考公共功能算子初始化操作。
(2)算子属性设置
二次指数平滑预测算子根据现有的时间序列对应的数据,预测未来时间的数据。二次指数平滑预测算子的输入数据支持多种key键,但必须是满足相同key键下时间列间隔为固定数值,且数值列非空的时序数据,建议是使用时序清洗算子处理后的数据。时间列必须为DataTime/Data类型。模型类型分为加性和乘性两种(Additive,Multiplicative),二次指数平滑预测算子的分析频率应与时序数据采样频率一致,且分析时间间隔需等于时序数据采样时间间隔。
二次指数平滑预测算子属性设置
(3)算子的运行
二次指数平滑预测算子的输入数据支持多种key键,但必须是满足相同key键下时间列间隔为固定数值,且数值列非空的时序数据,建议是使用时序清洗算子处理后的数据。算子后可接任意个数据处理算子,再接表格算子或数据写出算子,形成算子流执行。
二次指数平滑预测算子流
算子的运行结果如图所示
二次指数平滑预测算子运行结果
结果中predicted列取值为false的数据为原有数据,predicted列取值为true的数据为预测数据,predicted_low_value为置信区间下限,predicted_high_value为置信区间上限。
为了非商业用途的科研学者、研究人员及开发者提供学习、交流及实践机器学习技术,推出了一款轻量化且完全免费的Sentosa_DSML社区版。以轻量化一键安装、平台免费使用、视频教学和社区论坛服务为主要特点,能够与其他数据科学家和机器学习爱好者交流心得,分享经验和解决问题。文章最后附上官网链接,感兴趣工具的可以直接下载使用
Sentosa_DSML社区版官网
Sentosa_DSML算子流开发视频