Merge pull request #28658 from taosdata/feat/contrib
docs: data analysis
This commit is contained in:
commit
d8c880bc61
|
@ -8,11 +8,11 @@ sidebar_label: "ARIMA"
|
||||||
## 功能概述
|
## 功能概述
|
||||||
|
|
||||||
ARIMA 即自回归移动平均模型(Autoregressive Integrated Moving Average, ARIMA),也记作 ARIMA(p,d,q),是统计模型中最常见的一种用来进行时间序列预测的模型。
|
ARIMA 即自回归移动平均模型(Autoregressive Integrated Moving Average, ARIMA),也记作 ARIMA(p,d,q),是统计模型中最常见的一种用来进行时间序列预测的模型。
|
||||||
ARIMA 模型是一种自回归模型,只需要自变量即可预测后续的值。ARIMA 模型要求时序数据**平稳**,或经过差分处理后平稳,如果是不平稳的数据,**无法**获得正确的结果。
|
ARIMA 模型是一种自回归模型,只需要自变量即可预测后续的值。ARIMA 模型要求时间序列**平稳**,或经过差分处理后平稳,如果是不平稳的数据,**无法**获得正确的结果。
|
||||||
|
|
||||||
>平稳的时间序列:其性质不随观测时间的变化而变化。具有趋势或季节性的时间序列不是平稳时间序列——趋势和季节性使得时间序列在不同时段呈现不同性质。
|
>平稳的时间序列:其性质不随观测时间的变化而变化。具有趋势或季节性的时间序列不是平稳时间序列——趋势和季节性使得时间序列在不同时段呈现不同性质。
|
||||||
|
|
||||||
以下参数可以动态输入控制预测过程中生成 合适的 ARIMA 的模型。
|
以下参数可以动态输入,控制预测过程中生成合适的 ARIMA 模型。
|
||||||
|
|
||||||
- p= 自回归模型阶数
|
- p= 自回归模型阶数
|
||||||
- d= 差分阶数
|
- d= 差分阶数
|
||||||
|
@ -21,9 +21,9 @@ ARIMA 模型是一种自回归模型,只需要自变量即可预测后续的
|
||||||
|
|
||||||
### 参数
|
### 参数
|
||||||
分析平台中使用自动化的 ARIMA 模型进行计算,因此每次计算的时候会根据输入的数据自动拟合最合适的模型,然后根据该模型进行预测输出结果。
|
分析平台中使用自动化的 ARIMA 模型进行计算,因此每次计算的时候会根据输入的数据自动拟合最合适的模型,然后根据该模型进行预测输出结果。
|
||||||
|参数名称|说明|必填项|
|
|参数|说明|必填项|
|
||||||
|---|---|---|
|
|---|---|-----|
|
||||||
|period|输入时间序列每个周期包含的数据点个数。如果不设置该参数或该参数设置为 0,将使用非季节性/周期性的 ARIMA 模型预测。|选填|
|
|period|输入时间序列每个周期包含的数据点个数,如果不设置该参数或该参数设置为 0,将使用非季节性/周期性的 ARIMA 模型预测|选填|
|
||||||
|start_p|自回归模型阶数的起始值,0 开始的整数,不推荐大于 10|选填|
|
|start_p|自回归模型阶数的起始值,0 开始的整数,不推荐大于 10|选填|
|
||||||
|max_p|自回归模型阶数的结束值,0 开始的整数,不推荐大于 10|选填|
|
|max_p|自回归模型阶数的结束值,0 开始的整数,不推荐大于 10|选填|
|
||||||
|start_q|移动平均模型阶数的起始值,0 开始的整数,不推荐大于 10|选填|
|
|start_q|移动平均模型阶数的起始值,0 开始的整数,不推荐大于 10|选填|
|
||||||
|
@ -40,11 +40,11 @@ FORECAST(i32, "algo=arima,alpha=95,period=10,start_p=1,max_p=5,start_q=1,max_q=5
|
||||||
|
|
||||||
```json5
|
```json5
|
||||||
{
|
{
|
||||||
"rows": fc_rows, // 预测结果的行数
|
"rows": fc_rows, // 返回结果的行数
|
||||||
"period": period, // 返回结果的周期性,同输入
|
"period": period, // 返回结果的周期性,同输入
|
||||||
"alpha": alpha, // 返回结果的置信区间,同输入
|
"alpha": alpha, // 返回结果的置信区间,同输入
|
||||||
"algo": "arima", // 返回结果使用的算法
|
"algo": "arima", // 返回结果使用的算法
|
||||||
"mse":mse, // 拟合输入时序数据时候生成模型的最小均方误差(MSE)
|
"mse": mse, // 拟合输入时间序列时候生成模型的最小均方误差(MSE)
|
||||||
"res": res // 列模式的结果
|
"res": res // 列模式的结果
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
|
@ -8,13 +8,13 @@ sidebar_label: "HoltWinters"
|
||||||
## 功能概述
|
## 功能概述
|
||||||
HoltWinters 模型又称为多次指数平滑模型(EMA)。适用于含有线性趋势和周期波动的非平稳序列,利用指数平滑法让模型参数不断适应非平稳序列的变化,并对未来趋势进行**短期**预测。
|
HoltWinters 模型又称为多次指数平滑模型(EMA)。适用于含有线性趋势和周期波动的非平稳序列,利用指数平滑法让模型参数不断适应非平稳序列的变化,并对未来趋势进行**短期**预测。
|
||||||
HoltWinters 有两种不同的季节性组成部分,当季节变化在该时间序列中大致保持不变时,通常选择**加法模型**;而当季节变化与时间序列的水平成比例变化时,通常选择**乘法模型**。
|
HoltWinters 有两种不同的季节性组成部分,当季节变化在该时间序列中大致保持不变时,通常选择**加法模型**;而当季节变化与时间序列的水平成比例变化时,通常选择**乘法模型**。
|
||||||
该模型对于返回数据也不提供计算的置信区间范围结果。在 95% 置信区间的上下界结果与预测结果相同。
|
该模型对于返回数据不提供计算的置信区间范围结果,在 95% 置信区间的上下界结果与预测结果相同。
|
||||||
|
|
||||||
|
|
||||||
### 参数
|
### 参数
|
||||||
|
|
||||||
分析平台中使用自动化的 ARIMA 模型进行计算,因此每次计算的时候会根据输入的数据自动拟合最合适的模型,然后根据该模型进行预测输出结果。
|
分析平台中使用自动化的 HoltWinters 模型进行计算,因此每次计算的时候会根据输入的数据自动拟合最合适的模型,然后根据该模型进行预测输出结果。
|
||||||
|参数名称|说明|必填项|
|
|参数|说明|必填项|
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
|period|输入时间序列每个周期包含的数据点个数。如果不设置该参数或该参数设置为 0,将使用一次(简单)指数平滑方式进行数据拟合,并据此进行未来数据的预测|选填|
|
|period|输入时间序列每个周期包含的数据点个数。如果不设置该参数或该参数设置为 0,将使用一次(简单)指数平滑方式进行数据拟合,并据此进行未来数据的预测|选填|
|
||||||
|trend|趋势模型使用加法模型还是乘法模型|选填|
|
|trend|趋势模型使用加法模型还是乘法模型|选填|
|
||||||
|
@ -30,7 +30,7 @@ FORECAST(i32, "algo=holtwinters,period=10,trend=mul,seasonal=mul")
|
||||||
|
|
||||||
```json5
|
```json5
|
||||||
{
|
{
|
||||||
"rows": rows, // 结果的行数
|
"rows": rows, // 返回结果的行数
|
||||||
"period": period, // 返回结果的周期性,该结果与输入的周期性相同,如果没有周期性,该值为 0
|
"period": period, // 返回结果的周期性,该结果与输入的周期性相同,如果没有周期性,该值为 0
|
||||||
"algo": 'holtwinters' // 返回结果使用的计算模型
|
"algo": 'holtwinters' // 返回结果使用的计算模型
|
||||||
"mse": mse, // 最小均方误差(minmum square error)
|
"mse": mse, // 最小均方误差(minmum square error)
|
||||||
|
|
|
@ -13,7 +13,7 @@ sidebar_label: "Anomaly-detection"
|
||||||
|
|
||||||
- k-sigma<sup>[1]</sup>: 即 ***68–95–99.7 rule*** 。***k***值默认为 3,即序列均值的 3 倍标准差范围为边界,超过边界的是异常值。KSigma 要求数据整体上服从正态分布,如果一个点偏离均值 K 倍标准差,则该点被视为异常点.
|
- k-sigma<sup>[1]</sup>: 即 ***68–95–99.7 rule*** 。***k***值默认为 3,即序列均值的 3 倍标准差范围为边界,超过边界的是异常值。KSigma 要求数据整体上服从正态分布,如果一个点偏离均值 K 倍标准差,则该点被视为异常点.
|
||||||
|
|
||||||
|参数名称|说明|是否必选|默认值|
|
|参数|说明|是否必选|默认值|
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
|k|标准差倍数|选填|3|
|
|k|标准差倍数|选填|3|
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ sidebar_label: "Anomaly-detection"
|
||||||
|
|
||||||
- SHESD<sup>[4]</sup>: 带有季节性的 ESD 检测算法。ESD 可以检测时间序列数据的多异常点。需要指定异常点比例的上界***k***,最差的情况是至多 49.9%。数据集的异常比例一般不超过 5%
|
- SHESD<sup>[4]</sup>: 带有季节性的 ESD 检测算法。ESD 可以检测时间序列数据的多异常点。需要指定异常点比例的上界***k***,最差的情况是至多 49.9%。数据集的异常比例一般不超过 5%
|
||||||
|
|
||||||
|参数名称|说明|是否必选|默认值|
|
|参数|说明|是否必选|默认值|
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
|k|异常点在输入数据集中占比,范围是$`1\le K \le 49.9`$ |选填|5|
|
|k|异常点在输入数据集中占比,范围是$`1\le K \le 49.9`$ |选填|5|
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ title: "addins"
|
||||||
sidebar_label: "addins"
|
sidebar_label: "addins"
|
||||||
---
|
---
|
||||||
|
|
||||||
本节说明如何将自己开发的新预测算法和异常检测算法整合到 TDengine 分析平台, 并能够通过 SQL 语句进行调用。
|
本节说明如何将自己开发的预测算法和异常检测算法整合到 TDengine 分析平台,并能够通过 SQL 语句进行调用。
|
||||||
|
|
||||||
## 目录结构
|
## 目录结构
|
||||||
|
|
||||||
|
@ -27,33 +27,35 @@ sidebar_label: "addins"
|
||||||
|
|
||||||
### 类继承约定
|
### 类继承约定
|
||||||
|
|
||||||
异常检测算法需要从 `AbstractAnomalyDetectionService` 继承,并实现其核心抽象方法 `execute`.
|
- 异常检测算法需要从 `AbstractAnomalyDetectionService` 继承,并实现其核心抽象方法 `execute`
|
||||||
预测算法需要从 `AbstractForecastService` 继承,同样需要实现其核心抽象方法 `execute`。
|
- 预测算法需要从 `AbstractForecastService` 继承,同样需要实现其核心抽象方法 `execute`
|
||||||
|
|
||||||
### 类属性初始化
|
### 类属性初始化
|
||||||
每个算法实现的类需要静态初始化两个类属性,分别是
|
每个算法实现的类需要静态初始化两个类属性,分别是:
|
||||||
|
|
||||||
`name`: 的触发调用关键词,全小写英文字母。
|
- `name`:触发调用的关键词,全小写英文字母
|
||||||
`desc`:该算法的描述信息。
|
- `desc`:算法的描述信息
|
||||||
|
|
||||||
### 核心方法输入与输出约定
|
### 核心方法输入与输出约定
|
||||||
|
|
||||||
`execute` 是算法处理的核心方法。调用该方法的时候,`self.list` 已经设置好输入数组。
|
`execute` 是算法处理的核心方法。调用该方法的时候,`self.list` 已经设置好输入数组。
|
||||||
|
|
||||||
异常检测输出结果
|
异常检测输出结果
|
||||||
|
|
||||||
`execute` 的返回值是长度与 `self.list` 相同的数组,数组位置为 -1 的即为异常值点。例如:输入数组是 [2, 2, 2, 2, 100], 如果 100 是异常点,那么返回值是 [1, 1, 1, 1, -1]。
|
`execute` 的返回值是长度与 `self.list` 相同的数组,数组位置为 -1 的即为异常值点。例如:输入数组是 [2, 2, 2, 2, 100], 如果 100 是异常点,那么返回值是 [1, 1, 1, 1, -1]。
|
||||||
|
|
||||||
预测输出结果
|
预测输出结果
|
||||||
|
|
||||||
对于预测算法,`AbstractForecastService` 的对象属性说明如下:
|
对于预测算法,`AbstractForecastService` 的对象属性说明如下:
|
||||||
|
|
||||||
|属性名称|说明|默认值|
|
|属性名称|说明|默认值|
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
|period|输入时序数据的周期性,多少个数据点表示一个完整的周期。如果没有周期性,那么设置为 0 即可| 0|
|
|period|输入时间序列的周期性,多少个数据点表示一个完整的周期。如果没有周期性,那么设置为 0 即可| 0|
|
||||||
|start_ts|预测数据的开始时间| 0|
|
|start_ts|预测结果的开始时间| 0|
|
||||||
|time_step|预测结果的两个数据点之间时间间隔|0 |
|
|time_step|预测结果的两个数据点之间时间间隔|0 |
|
||||||
|fc_rows|预测结果数量| 0 |
|
|fc_rows|预测结果的数量| 0 |
|
||||||
|return_conf|返回结果中是否包含执行区间范围,如果算法计算结果不包含置信区间,那么上界和下界与自身相同| 1|
|
|return_conf|预测结果中是否包含置信区间范围,如果不包含置信区间,那么上界和下界与自身相同| 1|
|
||||||
|conf|执行区间分位数 0.05|
|
|conf|置信区间分位数 0.05|
|
||||||
|
|
||||||
|
|
||||||
预测返回结果如下:
|
预测返回结果如下:
|
||||||
|
|
|
@ -156,7 +156,7 @@ SHOW ANODES;
|
||||||
SHOW ANODES FULL;
|
SHOW ANODES FULL;
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 强制刷新 TDengine 集群中分析算法缓存
|
#### 强制刷新集群中的分析算法缓存
|
||||||
```SQL
|
```SQL
|
||||||
UPDATE ANODE {node_id}
|
UPDATE ANODE {node_id}
|
||||||
UPDATE ALL ANODES
|
UPDATE ALL ANODES
|
||||||
|
|
Loading…
Reference in New Issue