wuzhiwuweisun 2020-09-11
注:本文只是借用新冠肺炎全球确诊人数作为历史数据,来介绍SAP Analytics Cloud基于机器学习的Time Series Forecasting功能,并没有对现实世界中新冠肺炎的发展趋势做出任何实际预测。
Jerry之前的文章 SAP Analytics Cloud和SAP Cloud for Customer的集成 介绍过,我们最近在做一个项目,通过微信小程序在SAP Cloud for Customer里创建数据,并使用SAP Analytics Cloud对这些数据进行分析和预测。
作为一款用于商业智能和协作式企业计划的解决方案,SAP Analytics Cloud结合了预测分析和机器学习技术的强大功能,能够帮助企业相关人员制定明智的决策,实现更卓越的业务成果。
作为SAP Analytics Cloud的突出亮点之一,我们希望能够在项目里尝试其强大的基于机器学习的数据预测功能。SAP Analytics Cloud里基于机器学习的功能点有不少,本文先介绍从使用步骤上来说最简单的Time Series Forecasting(基于时间序列的智能预测)功能。
该功能通俗地说,就是利用过去一段时间产生的历史数据,利用机器学习算法,预测出最近的将来可能会发生的数据。至于背后算法的原理,使用SAP Analytics Cloud的用户一般都不会去关心。
为了体验SAP Analytics Cloud的Time Series Forecasting功能,我选择了全球新型冠状肺炎病毒逐日确诊的人数作为历史数据,并使用SAP Analytics Cloud对其增长趋势进行预测。从下载新冠肺炎确诊人数的历史数据,到最后看到预测的数据,总共耗时不超过20分钟,这说明SAP Analytics Cloud的时间序列预测功能是相当容易操作的。
操作思路如下:
(1) 从相关网站下载新冠肺炎确诊人数的历史数据。 (2) 将历史数据导入SAP Analytics Cloud,创建Model. (3) 基于Model创建Story,在Story里创建一个Line Chart控件,使用该控件提供的Time Series Forecasting即可。
从下面这个网站下载新冠肺炎确诊人数的历史数据:
https://ourworldindata.org/covid-sources-comparison
下载到本地是一个csv文件,其中有三个数据源,分别来自Johns Hopkins(美国一所常青藤大学), 世界卫生组织WHO和ECDC(欧洲疾病预防和控制中心). 我们选择其中一列即可,本文我选择Johns Hopkins提供的数据。
从csv文件导入到SAP Analytics Cloud生成Model的步骤我就不逐一截图了:
其间有个小问题,SAP Analytics Cloud里支持的Date类型的Dimension的格式如下:
而csv文件导入到SAP Analytics Cloud后,日期列的格式为MMM DD, YYYY的格式,不属于SAP Analytics Cloud支持的日期格式中的任何一种,因此无法直接将这一列设置成类型为Date的Dimension.
所以我们首先要将这一列的数据转换成SAP Analytics Cloud支持的日期格式,比如转换成DD-MM-YYYY, 即日,月和年之间用“-”分割。
首先将原始的MMM DD,YYYY根据逗号拆分成新的三列:MMM,DD和YYYY:
即下图的Date_3, Date_2和Date_2_2, 这三列相当于编程代码里的中间变量:
然后再创建新的一列,编辑公式如下,将刚才生成的日,月和年三列的内容用“-”连接起来。
CONCAT(CONCAT(CONCAT([DD],'-'),CONCAT([MMM],'-')),[YYYY])
最后生成的经过公式计算后的列位于下图最右边,此时YYYY,MMM和DD这三列的使命已经完成,可以删除了。
这个模型创建好之后,基于该模型创建一个Story,在空白的页面里插入一个Line Chart(线状图):
新冠肺炎的确诊人数选择为Measure,日期选择为Dimension:
SAP Analytics Cloud会默认将Date这个日期类型的Dimension对应的数据进行汇总(Aggregation),因此我将层级结构设置为4,这样得到的统计图表如下图所示:
再选择Drill Down on Date,就能看到每一天的明细数据了:
比如在3月18日这天,全球新冠肺炎的确诊人数快接近43万了。
此时如果要查看SAP Analytics Cloud根据历史数据预测出最近的将来可能会到达的数据,只需要在Line Chart里选择Forecast->Automatic Forecast:
预测完成,SAP Analytics Cloud将这次预测的质量评分为最高分5分,预测出了未来三天即3月19日,3月20日,3月21日的全球确诊人数。
同样的,我们可以设置过滤器,仅仅查看SAP Analytics Cloud根据过去的历史数据,预测出某一个国家未来三天可能达到的确诊数字:
例如,根据SAP Analytics Cloud的预测,美国的确诊人数将在3月19日这一天达到一万。
在Forecast的高级选项里,还能切换使用其他的算法,比如Linear Regression(线性回归)和Triple Exponential Smoothing(指数平滑法)进行预测。
关于SAP Analytics Cloud Time Series Forecasting背后使用的机器学习算法和不同的预测算法之间的区别,SAP官网上有概要介绍:
https://www.sapanalytics.cloud/resources-your-guide-to-time-series-forecasting/
随着Jerry项目的进行,我会继续分享在项目中学到的SAP Analytics Cloud相关知识。最后希望新冠肺炎在全球的肆虐能早日结束,大家都能回复到正常的生活工作状态中来。感谢阅读。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":