开发者学堂课程【场景实践 - 基于机器学习进行收入预测分析:阿里云 PAI 预测算法模块介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/526/detail/7090
阿里云 PAI 预测算法模块介绍
内容介绍:
一、DataWorks
二、阿里云机器学习 PAI
三、x13_arima
四、x13_auto_arima
五、其他组件
一、DataWorks
阿里云中数据加工的功能模块,还有预测算法所设计的功能模块。
DataWorks 是阿里云推出的大数据领域 PaaS ,是一站式的 DW 能力平台,提供数据集成、数据开发、数据管理、数据治理的全方位的产品服务。
DataWorks 主要提供的功能点:数据开发、数据管理、作业调度。
数据开发包括可视化的业务流程设计器,使用拖拽组件方法实现数据加工流程,在组件内部写 circle 实现数据加工逻辑。它提供在线测试的功能,以及提供多人协同开发的功能。
数据管理功能包括数据加工、数据生命周期,数据权限管理等。
作业调度包括在线运维、为离线任务监控报警等等。
DataWorks 的数据开发流程,在 marks computer 里整体数据加工过程一般如下:数据产生 数据收集与存储 数据分析与处理 数据提取 数据展现与分享。
看流程图五个模块中间三个模块框显示数据开发。
其实是三个模块通过 date works 来实现,另外两个模块使用阿里云和其他部分模块来实现。比如数据产生,业务系统每天会产生大量的结构化数据。这些数据就存储在业务系统中所对应的数据库。包括 MySQL 还有阿里云自己的库。数据产生之,需要把这些数据收集到 marks computer 存储起来。
比如可以直接使用 data works 任务开发模块中的数据同步组件,将数据从阿里云的库同步到 marks computer 。之后可以进行数据分析处理。
数据分析处理同样也可以使用 dataworks 里面的 odps 模块进行处理。
分析处理后的结果、数据需要同步到业务系统。
最终展示数据可以通过一些报表、地理信息系统等多种方式来展示。阿里云有另外的一些产品,比如 quickbi 来实现。
二、阿里云机器学习 PAI
1.概念
阿里云机器学习 PA 是一站式的机器学习平台,包括了数据处理、特征工程、常规机器学习算法、深度学习框架、模型评估与预测一整套机器学习相关的服务。目前阿里云进行学习,一般可以用在比如营销类场景金融类场景、文本类场景、非结构化处理场景,还有一些其他的场景。
阿里云机器学习 PAI 上手比较简单,通过在底层的分布式算法封装,提供可视化操作环境,让数据挖掘的创新过程简单起来。
另外阿里云是用比较丰富的算法将 PAI 里面通用工程、统计分析、继续学习预测评估、时间序列,包含一整套的机器学习算法。
另外,阿里云提供一站式的机器学习体验。 PAI 除了提供模型训练功能之外,还提供了在线预测、离线调度的功能。同时,阿里云还支持主流的深度学习框架。
2.分类
机器学习 PAI 组件种类多样。
源/目标类组件,这类组件是机器学习时,负责具体的数据源是从哪里取数,或者最终的结果收到哪些目标表里,即整体数据如何同步。
数据预处理组件,在机器学习的时候,数据做的各种处理,包括随机采样,分层采样和并类拆分、缺失值填充等等。
特征工程类组件包括随机检测、偏好计算、异常检测等。
统计类组件包括直方图、散点图,全表统计、仲裁检验。
机器学习的组件包括线性回归、协同过滤、回归模型评估。
组件相互组合也可以实现时间序列的预测功能。
除此之外,还有深度学习类的组件,文本分析类组件,网络分析类组件,金融板块类组件,时间序列的组件。
深度学习类组件要使用,需要单独开通。使用深度学习框架训练数据之前,就将训练的数据上传到阿里云指定的 oss 中。算法运行的时候从指定的 oss 读取数据。
文本分析的组件一般情况下适用于比如新闻分类、关键词提取、文章摘要、文本内容分析等等。
网络分析的组件主要就是包括单元最短路径、标签传播聚类、技术三角形数深度。
金融类板块包括分箱、数据转换模型、评分卡预测、 PSI 等。
时间序列组件包括 x13_arima、x13_auto_arima。
这两个组件是阿里云提供的时间序列算法相关的组件,可以直接使用,比较方便。
三、x13_arima
1.定义
x13_arima 基于开源的 X—13ARIMA- SEATS 封装的针对于季节性调整 xarima 算法。下图是 x13_arima 算法的命令行格式的例子。
x13_arima 各个参数的含义:
input Table name 输入表,是此次的预测是基于哪个表数据来进行预测。
input TablePartitions 是选择分区。如果分区表提到默认是所有分区。但是想进行某几个分区预测,选需要的分区预测即可。
seqColName 时系列。输入表中的数据是基于什么顺序排序,是一个排序字段。
valueColName 数值列,这一列就是预测,基于这些数据来进行最终预测。
groupColName 分组链,指的就是基于哪些字段进行分类。比如想把某些数据当成一个组预算,另外一部分数据使用另外的组来进行计算,此时就需要使用参数。
所有的参数 p dq 参数是一个主动的调整参数。 p dq 非负数,范围是0到36。
这一页基本都是一些可选参数,必选参数有预测输出表和详细信息表。预测输入表就是保持最终的预测输出结果。详细信息表的保持模型的一些相关信息,比如参数,评估结果,训练日志等等。
其他的各种参数,比如实际平度表示提供的数据,预测角度就是最终预测出几个月的数据或者是几个季度的数据。即记录条数。
另外的参数,比如预测置信水平,最大次数容忍度等等系统有相关的默认值,一般不需要进行调整。
2.时序格式
时序格式主要包括4种。当参数 frequency 是12的时候,1949.2表示1949年的第二个月。当参数是四的时候,1949.2表示就是1949年第二个季度。当参数是七的时候。1949.2表示就是1949周的第二天。当参数是一的时候,1946.1表示的就是1949。
时序格式的样式需要在做预测的时候,根据实际的数据周期进行调整。
3.输出表
x13_arima 主要有预测输入表和详细信息表。
预测输出表主要包括预测日期、预测结论、预测结论上下线。
预测详细信息表包括模型、评估结果、训练日志、训练参数等。
这两个表就是 x13_arima 的输出,具体需要使用哪个表,然后直接引用相关的输出端口。
四、x13_auto_arima
这个模型选择过程如下:
如果实际频度 fz 等于1,默认使用。当实际频度大于1,默认使用(0,1,1)(0,1,1)。如果设置了 diff 和季节性差分大 D ,则使用 Unit root text 确定 diff 和季节性产生大 D 。
根据 BIC 准则选择最合适的模型, pq 最大值,季节性 pq 最大值在这一步起作用。
使用必修检测进行比较模型。如果两个模型均不可以接受,则使用(3, d ,1)(0, D ,1)模型进行预测。下图为例。
这是 x13_auto_arima 算法的一些参数。
大部分参数与 x13 _arima 的参数一样。比如输入表、整个分区、时序列、数值列、时序开始日期。
需要注意四点。 pq 最大值选0和4之间的整数,季节性 pq 最大值可以选择0到2的整数。
差分 d 最大值、季节性差分 d 最大值、差分 d 、季节性差分 d 都是可选参数,可选范围在0到2或者0到1之间。
注意差分 d 与季节性差分 d 需要同时设置。这两个值设置之后,差分 d 最大值、季节性差分 d 最大值会被忽略。
其余参数和 x13 _arima 一样。两个输出一个是预测输入表,另外一个是详细信息表。而且 x13_auto _arima 的输出两张表与 x13 _arima 的输出两个表的结构、保存内容也一致。
在使 x13_auto _arima 模型的时候需要注意,如果提供的预测数据时域差分 diff 然后不固定,或者训练没有收敛,方差为 D 的情况下,模型训练出现异常,可能就会调用均值模型,所有的预测结果是训练数据的均值。
获取异常信息,可以在 logview 中检查单独节点,查看 stderr 文件。
五、其他模型
前面讲了阿里云的两个时间序列组件,这两个组件是阿里云提供,可以直接使用。除此之外,还可以使用阿里云学习中提供的其他组件,组合使用来完成一个时间序列。
时间序列的四个要素长期趋势、循环变动、季节变动、不规则变动。另外还有序列平均值,总共五个参数。时间序列其实可以拆分为上述这几个参数。
而时间序列可以分为这五个参数的加法模型或者是五个参数的乘法模型。当这些因素的影响是独立的,相互不影响的,一般使用加法模型,就是U加T加S加C加R。
当因素相互影响,就会使用乘法模型, U 乘 T 乘以 S 乘以 C 乘以 R 。大多数情况下,乘法模型更符合现实。
看一下如何使用阿里云产品来实现时间序列方法。
首先看一下相关的组件,其实时间序列乘法模型通过阿里云PAI来实现的话,主要就用到如下相关组件。
线性回归是分析因变量自变量里面的线性回归的保险。
预测组件是专门用于模型预测的组件。两个输入,一个训练模型,一个是预测数据,输出就是一个预测结果。传统的数据挖掘算法一般都采用该组件来结算。
归一化处理组件就是将数据表中的某一列或者某几类艳按照比例映射到0到1的一个区间之内。
拆分组件对输入表或分区进行按比例拆分,输出两张表。
缺失值填充组件一般就是将空值或者是字段替换成指定的值。可以是均值、最大值、最小值或自定义。
回归模型评估组件就是基于预测结果和原始数据评价回归算法的一个结果,包括指标和残差直返图。
脚本组件。 SQL 脚本支持是1到2个输入,1个输出。 SQL 脚本组件只能写入单条社会语句。
这些组件实现时间序列乘法模型的整体思路:
通过拆分组件将历史数据,拆分成训练集和测试集。然后在训练集里面设置自变量,因变量。通过线性回归分析回归方程的系数。然后计算出的回归系数,使用预测组件来进行预测。预测出来的值和真实值去比较,这样就可以通过回归模型评估组件进行评估,得到误差。
有误差值,就可以通过 SQL 脚本组件来计算时间序列分解模型中里面参数:序列的平均值、长期趋势、循环变动、季节变动、不规律变动参数由于预测时为1,所以后续一般不会去预测。