From 3b3ad317f4c7129e265486e2df0111a0644ba172 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Mon, 18 Nov 2024 09:25:46 +0800 Subject: [PATCH 1/8] Update 03-data-density.md --- .../06-TDgpt/05-anomaly-detection/03-data-density.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/zh/06-advanced/06-TDgpt/05-anomaly-detection/03-data-density.md b/docs/zh/06-advanced/06-TDgpt/05-anomaly-detection/03-data-density.md index f52c12b07e..629ba57756 100644 --- a/docs/zh/06-advanced/06-TDgpt/05-anomaly-detection/03-data-density.md +++ b/docs/zh/06-advanced/06-TDgpt/05-anomaly-detection/03-data-density.md @@ -1,6 +1,6 @@ --- -title: "数据密度方法" -sidebar_label: "数据密度方法" +title: "数据密度算法" +sidebar_label: "数据密度算法" --- ### 基于数据密度的检测方法 From 0ddf5391d54e479ec003cb22a29fddb9682f5e54 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Mon, 18 Nov 2024 09:26:03 +0800 Subject: [PATCH 2/8] Update 02-statistics-approach.md --- .../06-TDgpt/05-anomaly-detection/02-statistics-approach.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/zh/06-advanced/06-TDgpt/05-anomaly-detection/02-statistics-approach.md b/docs/zh/06-advanced/06-TDgpt/05-anomaly-detection/02-statistics-approach.md index 10d296d2dd..463f2a398d 100644 --- a/docs/zh/06-advanced/06-TDgpt/05-anomaly-detection/02-statistics-approach.md +++ b/docs/zh/06-advanced/06-TDgpt/05-anomaly-detection/02-statistics-approach.md @@ -1,6 +1,6 @@ --- -title: "统计学方法" -sidebar_label: "统计学方法" +title: "统计学算法" +sidebar_label: "统计学算法" --- - k-sigma[1]: 即 ***68–95–99.7 rule*** 。***k***值默认为 3,即序列均值的 3 倍标准差范围为边界,超过边界的是异常值。KSigma 要求数据整体上服从正态分布,如果一个点偏离均值 K 倍标准差,则该点被视为异常点. From 76d427108899d5f94d55b7bdd83f8a87c2e3f881 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Mon, 18 Nov 2024 09:29:53 +0800 Subject: [PATCH 3/8] Update 02-management.md --- docs/zh/06-advanced/06-TDgpt/02-management.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/zh/06-advanced/06-TDgpt/02-management.md b/docs/zh/06-advanced/06-TDgpt/02-management.md index 07f1136549..cc85b158c4 100644 --- a/docs/zh/06-advanced/06-TDgpt/02-management.md +++ b/docs/zh/06-advanced/06-TDgpt/02-management.md @@ -5,6 +5,7 @@ sidebar_label: "安装部署" ### 环境准备 使用 TDgpt 的高级时序数据分析功能需要在 TDengine 集群中安装部署 AI node(Anode)。Anode 可以运行在 Linux/Windows/MacOS 等平台上,同时需要 3.10 或以上版本的 Python 环境支持。 +> 部署 ANode 需要 TDengine Enterprise 3.3.4.3 及以后版本,请首先确认安装的版本。 ### 安装及卸载 不同操作系统上安装及部署 Anode 有一些差异,主要是卸载操作、安装路径、服务启停等方面。本文以 Linux 系统为例,说明安装部署的流程。 From 84903c4a4a8e90d86e0adc84882b578adfcc0193 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Mon, 18 Nov 2024 09:30:43 +0800 Subject: [PATCH 4/8] Update 02-management.md --- docs/zh/06-advanced/06-TDgpt/02-management.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/06-advanced/06-TDgpt/02-management.md b/docs/zh/06-advanced/06-TDgpt/02-management.md index cc85b158c4..de52dc2cf0 100644 --- a/docs/zh/06-advanced/06-TDgpt/02-management.md +++ b/docs/zh/06-advanced/06-TDgpt/02-management.md @@ -5,7 +5,7 @@ sidebar_label: "安装部署" ### 环境准备 使用 TDgpt 的高级时序数据分析功能需要在 TDengine 集群中安装部署 AI node(Anode)。Anode 可以运行在 Linux/Windows/MacOS 等平台上,同时需要 3.10 或以上版本的 Python 环境支持。 -> 部署 ANode 需要 TDengine Enterprise 3.3.4.3 及以后版本,请首先确认安装的版本。 +> 部署 Anode 需要 TDengine Enterprise 3.3.4.3 及以后版本,请首先确认搭配 Anode 使用的 TDengine 能够支持 Anode。 ### 安装及卸载 不同操作系统上安装及部署 Anode 有一些差异,主要是卸载操作、安装路径、服务启停等方面。本文以 Linux 系统为例,说明安装部署的流程。 From 1d033418f84c99400e7e5ecbc88c80ab0b48a4ba Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Mon, 18 Nov 2024 09:47:20 +0800 Subject: [PATCH 5/8] Update index.md --- docs/zh/06-advanced/06-TDgpt/06-dev/index.md | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/docs/zh/06-advanced/06-TDgpt/06-dev/index.md b/docs/zh/06-advanced/06-TDgpt/06-dev/index.md index c6e6e9097a..cc7f902290 100644 --- a/docs/zh/06-advanced/06-TDgpt/06-dev/index.md +++ b/docs/zh/06-advanced/06-TDgpt/06-dev/index.md @@ -68,20 +68,12 @@ SELECT COUNT(*) FROM foo ANOMALY_DETECTION(col_name, 'algo=name') ## 添加具有模型的分析算法 -基于统计学的分析算法可以直接针对输入时间序列数据进行分析,整体分析流程比较快捷,但是某些深度学习算法对于输入数据的训练需要较长的时间,并且形成相应的模型。这种情况下,同一个分析算法对应不同的输入数据集有不同的分析模型。 +基于统计学的分析算法可以直接针对输入时间序列数据进行分析,但是某些深度学习算法对于输入数据需要较长的时间训练,并且生成相应的模型。这种情况下,同一个分析算法对应不同的输入数据集有不同的分析模型。 将具有模型的分析算法添加到 Anode 中,首先需要在 `model` 目录中建立该算法对应的目录(目录名称可自拟),将采用该算法针对不同的输入时间序列数据生成的训练模型均需要保存在该目录下,同时目录结构要在分析算法中确定,以便能够固定加载该目录下的分析模型。如下图所示,针对不同的数据集,采用自编码器(Autoencoder)训练的数据异常检测算法模型均保存在该目录下。为了确保模型能够正常读取加载,要求存储的模型使用`joblib`库进行序列化保存。 -调用已经保存的模型,需要首先调用`set_params`方法,并在参数中指定调用模型的名称 `{"model": "ad_encoder_keras"}` 即可调用该模型进行计算。调用方式如下: +调用已经保存的模型,需要在调用参数中增加指定模型名称,以便能够调用正确的模型,示例 SQL 语句如下所示。 -```python -def test_autoencoder_ad(self): - # 获取特定的算法对象 - # ... - - # 指定调用的模型,该模型是之前针对该数据集进行训练获得 - s.set_params({"model": "ad_encoder_keras"}) - - # 执行检查动作,并返回结果 - r = s.execute() +```SQL +--- 在 options 中增加 model 的名称,ad_autoencoder_foo, 针对 foo 数据集(表)训练的采用自编码器的异常检测模型进行异常检测 +SELECT COUNT(*), _WSTART FROM foo ANOMALY_DETECTION(col1, 'algo=encoder, model=ad_autoencoder_foo'); ``` - From 10e97506373aacd9c7d420235bf2dfa0dfe98661 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Mon, 18 Nov 2024 09:55:39 +0800 Subject: [PATCH 6/8] Update 03-holtwinters.md --- docs/zh/06-advanced/06-TDgpt/04-forecast/03-holtwinters.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/zh/06-advanced/06-TDgpt/04-forecast/03-holtwinters.md b/docs/zh/06-advanced/06-TDgpt/04-forecast/03-holtwinters.md index 38662ca2b3..7e92a8ae1a 100644 --- a/docs/zh/06-advanced/06-TDgpt/04-forecast/03-holtwinters.md +++ b/docs/zh/06-advanced/06-TDgpt/04-forecast/03-holtwinters.md @@ -23,11 +23,16 @@ HoltWinters 有两种不同的季节性组成部分,当季节变化在该时 参数 `trend` 和 `seasonal`的均可以选择 `add` (加法模型)或 `mul`(乘法模型)。 ### 示例及结果 -针对 i32 列进行数据预测,输入列 i32 每 10 个点是一个周期,趋势采用乘法模型,季节采用乘法模型 +针对 i32 列进行数据预测,输入列 i32 每 10 个点是一个周期,趋势参数采用乘法模型,季节参数采用乘法模型 ``` FORECAST(i32, "algo=holtwinters,period=10,trend=mul,seasonal=mul") ``` +完整的调用SQL语句如下: +```SQL +SELECT _frowts, FORECAST(i32, "algo=holtwinters, peroid=10,trend=mul,seasonal=mul") from foo +``` + ```json5 { "rows": rows, // 返回结果的行数 From 163d315b650785899290e467ea2a645189530870 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Mon, 18 Nov 2024 09:57:38 +0800 Subject: [PATCH 7/8] Update 02-arima.md --- docs/zh/06-advanced/06-TDgpt/04-forecast/02-arima.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/zh/06-advanced/06-TDgpt/04-forecast/02-arima.md b/docs/zh/06-advanced/06-TDgpt/04-forecast/02-arima.md index d34d2f8be9..469f557984 100644 --- a/docs/zh/06-advanced/06-TDgpt/04-forecast/02-arima.md +++ b/docs/zh/06-advanced/06-TDgpt/04-forecast/02-arima.md @@ -38,6 +38,11 @@ ARIMA 模型是一种自回归模型,只需要自变量即可预测后续的 FORECAST(i32, "algo=arima,alpha=95,period=10,start_p=1,max_p=5,start_q=1,max_q=5") ``` +完整的调用SQL语句如下: +```SQL +SELECT _frowts, FORECAST(i32, "algo=arima,alpha=95,period=10,start_p=1,max_p=5,start_q=1,max_q=5") from foo +``` + ```json5 { "rows": fc_rows, // 返回结果的行数 From f28d5efae8465b12accd8fb90a7d5ed11d048f2a Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Mon, 18 Nov 2024 10:49:35 +0800 Subject: [PATCH 8/8] Update index.md --- .../06-advanced/06-TDgpt/04-forecast/index.md | 41 ++++++++++++++----- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/docs/zh/06-advanced/06-TDgpt/04-forecast/index.md b/docs/zh/06-advanced/06-TDgpt/04-forecast/index.md index 41461a26fd..5d791fb598 100644 --- a/docs/zh/06-advanced/06-TDgpt/04-forecast/index.md +++ b/docs/zh/06-advanced/06-TDgpt/04-forecast/index.md @@ -5,6 +5,27 @@ description: 预测算法 时序数据预测处理以持续一个时间段的时序数据作为输入,预测接下来一个连续时间区间内时间序列数据趋势。用户可以指定输出的(预测)时间序列数据点的数量,因此其输出的结果行数不确定。为此,TDengine 使用新函数 `FORECAST` 提供时序数据预测服务。基础数据(用于预测的历史时间序列数据)是该函数的输入,预测结果是该函数的输出。用户可以通过 `FORECAST` 函数调用 Anode 提供的预测算法提供的服务。 +在后续章节中,使用时序数据表`foo`作为示例,介绍预测和异常检测算法的使用方式,`foo` 表的模式如下: + +|列名称|类型|说明| +|---|---|---| +|ts| timestamp| 主时间戳列| +|i32| int32| 4字节整数,设备测量值 metric| + +```bash +taos> select * from foo; + ts | k | +======================================== + 2020-01-01 00:00:12.681 | 13 | + 2020-01-01 00:00:13.727 | 14 | + 2020-01-01 00:00:14.378 | 8 | + 2020-01-01 00:00:15.774 | 10 | + 2020-01-01 00:00:16.170 | 16 | + 2020-01-01 00:00:17.558 | 26 | + 2020-01-01 00:00:18.938 | 32 | + 2020-01-01 00:00:19.308 | 27 | +``` + ### 语法 ```SQL FORECAST(column_expr, option_expr) @@ -54,16 +75,16 @@ FROM foo; taos> select _flow, _fhigh, _frowts, forecast(i32) from foo; _flow | _fhigh | _frowts | forecast(i32) | ======================================================================================== - 10.5286684 | 41.8038254 | 2020-01-01 00:01:35.001 | 26 | - -21.9861946 | 83.3938904 | 2020-01-01 00:01:36.001 | 30 | - -78.5686035 | 144.6729126 | 2020-01-01 00:01:37.001 | 33 | - -154.9797363 | 230.3057709 | 2020-01-01 00:01:38.001 | 37 | - -253.9852905 | 337.6083984 | 2020-01-01 00:01:39.001 | 41 | - -375.7857971 | 466.4594727 | 2020-01-01 00:01:40.001 | 45 | - -514.8043823 | 622.4426270 | 2020-01-01 00:01:41.001 | 53 | - -680.6343994 | 796.2861328 | 2020-01-01 00:01:42.001 | 57 | - -868.4956665 | 992.8603516 | 2020-01-01 00:01:43.001 | 62 | - -1076.1566162 | 1214.4498291 | 2020-01-01 00:01:44.001 | 69 | + 10.5286684 | 41.8038254 | 2020-01-01 00:01:35.000 | 26 | + -21.9861946 | 83.3938904 | 2020-01-01 00:01:36.000 | 30 | + -78.5686035 | 144.6729126 | 2020-01-01 00:01:37.000 | 33 | + -154.9797363 | 230.3057709 | 2020-01-01 00:01:38.000 | 37 | + -253.9852905 | 337.6083984 | 2020-01-01 00:01:39.000 | 41 | + -375.7857971 | 466.4594727 | 2020-01-01 00:01:40.000 | 45 | + -514.8043823 | 622.4426270 | 2020-01-01 00:01:41.000 | 53 | + -680.6343994 | 796.2861328 | 2020-01-01 00:01:42.000 | 57 | + -868.4956665 | 992.8603516 | 2020-01-01 00:01:43.000 | 62 | + -1076.1566162 | 1214.4498291 | 2020-01-01 00:01:44.000 | 69 | ```