为何需要预测?
通过分析序列进行合理预测,做到提前掌握未来的发展趋势,为业务决策提供依据,这也是决策科学化的前提。
时间序列就是按时间顺序排列的一组数据序列。时间序列分析就是发现这组数据的变动规律并用于预测的统计技术。
- 明天的账单大约多少??(根据在各个云产品中资源消耗量进行预测 ---> 业务稳定)
- 业务流量预测,明天各个小时的流量如何??(业务在稳定的情况下,也是可以预测的)
- 某公司的资源组的消耗情况??(何时下发MR任务,导致哪些机器的资源消耗的情况,是具有一定规律,可以进行预测)
序列都可预测么?
- 明天股票价格是多少,未来一年我买这个股票或者基金会赚多少钱??
- 预测一下下一期的彩票号码是多少??
- ......
在大数据时代,相关关系似乎替代了因果关系。然而世界具有复杂性,大数据时代世界似乎被数据统治,是混沌的。相关关系是指当一个数据变化时,另一个数据也可能随之变化,不论是这两个数据也没有必然联系。相关关系有可能是正相关也有可能是负相关,有可能是强相关也有可能是弱相关。因果关系是指当一个作为原因的数据变化时,另一个作为结果的数据在一定程度发生变化,这两个数据存在着必然联系。因果关系可能是线性关系,也可能是非线性关系。
回归模型比相关系数进了一步,它可以解释数据之间作用机制和作用的大小。但回归模型即使通过了各种统计检验,也可能只在一定程度上说明事物之间的因果关系。模型的自变量不一定是原因,因变量不一定是结果。$X_i$与$y_i$之间的因果关系是否成立,还要由统计学所应用领域的专家来判断,如经济学家、管理学家、生物学家、医学家等,并大量的实践得到检验。统计模型只能说包含真正因果关系的可能性较大,二真值在哪里?上帝知道。
我们能预测什么?
SLB产品中,某用户的
- 某实例小时级别最大链接数预测
- 某实例小时级别每秒链接数预测
- 某实例每小时的QPS量预测
- 某实例每小时入向流量预测
- 某实例每小时出向流量预测
OSS产品中,某用户的
- 小时级别存储量预测
- 小时级别外网流量、CDN回源流量预测
- 小时级别Get请求和Put请求数量的预测
ECS产品中,某用的使用情况
- 某用户在某集群中60min/30min/15minCPU使用情况的预测
- 某用户在某集群中60min/30min/15minIO延迟情况的预测
- 具有相对稳定的业务规律的时序数据(>=15min的数据点)能更好的预测
我们提供了什么?
统计学模型
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)
实际案例
用户存储量的预测
select ts_regression_predict(EndTime, Storage, 168, 'linear', 1, 'avg') from (
select EndTime, sum(Storage) as Storage from log GROUP by EndTime ) limit 1000
用户外网流量的预测
select ts_regression_predict(EndTime, NetworkOut, 168, 'origin', 1, 'avg') from (
select EndTime, sum(NetworkOut) as NetworkOut from log GROUP by EndTime ) limit 10000
用户Get请求数量的预测
select ts_regression_predict(EndTime, GetRequest, 168, 'origin', 1, 'avg') from (
select EndTime, sum(GetRequest) as GetRequest from log GROUP by EndTime) limit 1000
机柜电量预测
select ts_regression_predict(time, rackTotalPower, 100, 'origin', 1, 'avg') from (
select __time__ - __time__ % 1800 as time, sum(rackTotalPower) as rackTotalPower from log GROUP BY time ) limit 10000
SLB中各个指标的预测情况
相关文献
- Autoregressive–moving-average model
- Time Series Analysis - 时间序列分析
- 随机过程与应用
- STL Decompose
- Gradient Boosting
- Gradient Boosted Regression Trees
- Web-Search Ranking with Initialized Gradient Boosted Regression Trees
- A General Boosting Method and its Application to Learning Ranking Functions for Web Search
硬广时间
日志进阶
阿里云日志服务针对日志提供了完整的解决方案,以下相关功能是日志进阶的必备良药:
- 机器学习语法与函数: https://help.aliyun.com/document_detail/93024.html
- 日志上下文查询:https://help.aliyun.com/document_detail/48148.html
- 快速查询:https://help.aliyun.com/document_detail/88985.html
- 实时分析:https://help.aliyun.com/document_detail/53608.html
- 快速分析:https://help.aliyun.com/document_detail/66275.html
- 基于日志设置告警:https://help.aliyun.com/document_detail/48162.html
- 配置大盘:https://help.aliyun.com/document_detail/69313.html
更多日志进阶内容可以参考:日志服务学习路径。
联系我们
纠错或者帮助文档以及最佳实践贡献,请联系:悟冥
问题咨询请加钉钉群: