SLS机器学习最佳实战:时序预测

为何需要预测?

通过分析序列进行合理预测,做到提前掌握未来的发展趋势,为业务决策提供依据,这也是决策科学化的前提。
时间序列就是按时间顺序排列的一组数据序列。时间序列分析就是发现这组数据的变动规律并用于预测的统计技术。

  • 明天的账单大约多少??(根据在各个云产品中资源消耗量进行预测 ---> 业务稳定)
  • 业务流量预测,明天各个小时的流量如何??(业务在稳定的情况下,也是可以预测的)
  • 某公司的资源组的消耗情况??(何时下发MR任务,导致哪些机器的资源消耗的情况,是具有一定规律,可以进行预测)

序列都可预测么?

  • 明天股票价格是多少,未来一年我买这个股票或者基金会赚多少钱??
  • 预测一下下一期的彩票号码是多少??
  • ......

在大数据时代,相关关系似乎替代了因果关系。然而世界具有复杂性,大数据时代世界似乎被数据统治,是混沌的。相关关系是指当一个数据变化时,另一个数据也可能随之变化,不论是这两个数据也没有必然联系。相关关系有可能是正相关也有可能是负相关,有可能是强相关也有可能是弱相关。因果关系是指当一个作为原因的数据变化时,另一个作为结果的数据在一定程度发生变化,这两个数据存在着必然联系。因果关系可能是线性关系,也可能是非线性关系。
回归模型比相关系数进了一步,它可以解释数据之间作用机制和作用的大小。但回归模型即使通过了各种统计检验,也可能只在一定程度上说明事物之间的因果关系。模型的自变量不一定是原因,因变量不一定是结果。$X_i$与$y_i$之间的因果关系是否成立,还要由统计学所应用领域的专家来判断,如经济学家、管理学家、生物学家、医学家等,并大量的实践得到检验。统计模型只能说包含真正因果关系的可能性较大,二真值在哪里?上帝知道。


我们提供了什么?

image.png

统计学模型

ts_predicate_simple(unixtime, val, nPred, samplePeriod, sampleMethod)
ts_predicate_ar(unixtime, val, p, nPred, samplePeriod, sampleMethod)
ts_predicate_arma(unixtime, val, p, q, nPred, samplePeriod, sampleMethod)
ts_predicate_arima(unixtime, val, p, d, q, nPred, samplePeriod, sampleMethod)

机器学习模型

  • 不对数据做任何处理,直接使用GBRT模型进行预测
ts_regression_predict(unixtime, val, nPred, 'origin', samplePeriod, sampleMethod)
  • 对数据做时序分解,对分解出来的序列分别做预测,在进行整合
ts_regression_predict(unixtime, val, nPred, 'forest', samplePeriod, sampleMethod)
  • 不对数据做任何处理,使用线性模型进行预测
ts_regression_predict(unixtime, val, nPred, 'linear', samplePeriod, sampleMethod)

实际案例

Storage一周预测

UserId:xxxxxxxxxxx and Bucket: xxxxxxxxxxx | 
select date_format(cast(key1[1] as bigint), '%Y-%m-%d %h:%i') as t, key1[2] as src, key1[3] as val from ( 
select ts_regression_predict(EndTime, Storage, 168, 'linear', 1, 'avg') as key  from ( 
select EndTime, sum(Storage) as Storage from log GROUP  by EndTime )), unnest(key) as t(key1)  limit 1000

image.png

NetworkOut一周预测

UserId:xxxxxxxxxxx and Bucket: xxxxxxxxxxx | 
select date_format(cast(key1[1] as bigint), '%Y-%m-%d %h:%i')  as t, key1[2] as src, key1[3] as pred from (
select ts_regression_predict(EndTime, NetworkOut, 168, 'origin', 1, 'avg') as key  from ( 
select EndTime, sum(NetworkOut) as NetworkOut from log GROUP  by EndTime ) ), unnest(key) as t(key1) limit 10000

image.png

GetRequest一周预测

UserId:xxxxxxxxxxx and Bucket: xxxxxxxxxxx | 
select date_format(cast(key1[1] as bigint), '%Y-%m-%d %h:%i') as t, key1[2] as src, key1[3] as pred from ( 
select ts_regression_predict(EndTime, GetRequest, 168, 'origin', 1, 'avg') as key  from ( 
select EndTime, sum(GetRequest) as GetRequest from log GROUP  by EndTime )), unnest(key) as t(key1)  limit 1000

image.png

机柜电量预测

* and  rackId:xxxxxxxxxxx | 
select date_trunc('minute', cast( key1[1] as bigint ) ) as time, key1[2] as source, key1[3] as pred from  ( 
select ts_regression_predict(time, rackTotalPower, 100, 'origin', 1, 'avg') as key from  ( 
select __time__ - __time__ % 1800 as time, sum(rackTotalPower) as rackTotalPower from log GROUP BY  time ) ), unnest(key) as t(key1) limit 10000

image.png


硬广时间

日志进阶

阿里云日志服务针对日志提供了完整的解决方案,以下相关功能是日志进阶的必备良药:

  1. 机器学习语法与函数: https://help.aliyun.com/document_detail/93024.html
  2. 日志上下文查询:https://help.aliyun.com/document_detail/48148.html
  3. 快速查询:https://help.aliyun.com/document_detail/88985.html
  4. 实时分析:https://help.aliyun.com/document_detail/53608.html
  5. 快速分析:https://help.aliyun.com/document_detail/66275.html
  6. 基于日志设置告警:https://help.aliyun.com/document_detail/48162.html
  7. 配置大盘:https://help.aliyun.com/document_detail/69313.html

更多日志进阶内容可以参考:日志服务学习路径


联系我们

纠错或者帮助文档以及最佳实践贡献,请联系:悟冥
问题咨询请加钉钉群:

f5d48178a8f00ad1b8e3fffc73fb9158b3f8fe10_jpeg

猜你喜欢

转载自yq.aliyun.com/articles/675856