尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

TDengine TDgpt 模型评估工具 analytics_compare 实战:预测与异常检测模型回测指南

TDengine TDgpt 模型评估工具 analytics_compare 实战:预测与异常检测模型回测指南 TDengine TDgpt 模型评估工具 analytics_compare 实战预测与异常检测模型回测指南【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengineanalytics_compare是 TDgptTDengine 的时序数据分析智能体提供的模型有效性评估工具它使用 TDengine 中真实存储的时序数据作为回测依据以量化指标对比不同预测模型、异常检测模型的表现。本文以 TDgpt 企业版内置的该工具为主线完整讲解其配置文件analytics.ini、预测模型回测、异常检测模型回测的端到端操作流程并结合仓库中对应的算法源码与样例数据说明每个配置项、每个参数背后的实现细节帮助你在接入或自研算法时快速建立一套可复用的模型选型基准。注意该工具仅在TDgpt 企业版中提供开源版本TDgpt OSS不可用。仓库 tools/tdgpt 中保留了完整的算法实现与样例数据可用于理解其评估对象与评估逻辑。工具定位与评估原理TDgpt 面向时序数据提供预测forecast、异常检测anomaly detection、数据补全imputation等分析能力其算法库既包括 statsmodels 等经典统计模型也包括 PyTorch、Keras 等机器学习/深度学习框架详见 TDgpt 简介。面对同一个数据集不同算法、不同参数组合的效果差异很大analytics_compare正是为此设计的离线评测台预测模型用均方误差MSE衡量预测值与真实值的偏差后续还将增加 MAPE、MAE 指标异常检测模型用查准率precision与查全率recall衡量检出结果与人工标注annotation的吻合度。它的工作方式是读库 → 跑模型 → 出报告从 TDengine 中读取指定表的时间序列数据按照analytics.ini中配置的算法清单逐一执行回测最后输出 Excel 报告预测为fc_result.xlsx异常检测为ad_result.xlsx。报告首个工作表列出每个算法的名称、调用参数、指标与耗时若开启绘图开关后续工作表还会为每个模型附上可视化结果图。一、环境准备与基础配置评估工具通过 shell 调用 TDgpt 安装路径下misc目录中的analytics_compare.py并读取同目录或指定位置的analytics.ini配置文件。执行时必须使用 TDgpt 虚拟环境中的 Python否则会因缺少依赖库而启动失败。1.1 配置 TDengine 连接analytics.ini的第一部分是[taosd]段用于指定评估工具访问的 TDengine 服务[taosd] host 127.0.0.1 user root password taosdata conf /etc/taos/taos.cfg配置项含义hosttaosd 服务主机名默认本机127.0.0.1user登录用户名默认rootpassword登录密码默认taosdataconfTDengine 客户端配置文件路径通常为/etc/taos/taos.cfg1.2 配置评估输入数据[input_data]段指定回测所用的数据来源[input_data] db_name test table_name passengers column_name val, _c0配置项含义db_name用于评估的数据库名称table_name读取数据的表名column_name读取的列名val为数据值列_c0为时间戳列_c0是 TDengine 内置的时间戳主列名评估工具需要同时拿到时间戳 数值两列才能构造出完整的时间序列。二、评估预测分析模型预测模型评估的完整流程是加载样例数据 → 配置[forecast]段 → 调用工具 → 检查fc_result.xlsx。2.1 加载样例数据仓库在 tools/tdgpt/resource/sample-fc.sql 提供了预测评估样例数据。该文件创建数据库test并在其中建立passengers表ts timestamp, val int写入从 1949-01-01 到 1960-12-01 共 144 条月度数据这是经典的 AirPassengers 航空公司旅客量数据集——具有明显的年度周期性和增长趋势非常适合检验周期类预测算法的能力。在 TDgpt 安装目录的resource目录下执行taos -f sample-fc.sql2.2 配置预测评估参数在analytics.ini中追加[forecast]段[forecast] period 12 rows 10 start_time 1949-01-01T00:00:00 end_time 1960-12-01T00:00:00 res_start_time 1730000000000 gen_figure true [forecast.algos] holtwinters{trend:add, seasonal:add} arima{time_step: 3600000, start_p: 0, max_p: 5, start_q: 0, max_q: 5}各配置项含义配置项含义period评估数据每个周期的数据点数量此处 12 表示按 12 个月为一个周期年周期rows预测生成结果的数据点数量即向前预测多少步start_time/end_time评估用数据的时间范围应与样例数据范围1949-01-01 至 1960-12-01一致res_start_time返回结果的时间戳起始值毫秒控制输出预测结果的时间起点gen_figure是否绘制预测结果图true/false[forecast.algos]参与评估的预测模型及参数按算法名{参数:值}格式逐行列出2.3 调用评估工具python3 ./analytics_compare.py forecast2.4 解读结果执行完成后程序目录下生成fc_result.xlsx。第一个工作表为模型运行结果包含 4 个指标模型名称algorithm、执行调用参数params、均方误差MSE、执行时间elapsed_time。参考输出如下algorithmparamsMSEelapsed_time(ms.)holtwinters{trend:add, seasonal:add}351.622125.1721arima{time_step:3600000, start_p:0, max_p:10, start_q:0, max_q:10}433.70945577.9187MSE 越小表示预测越接近真实值但同时也需要结合执行耗时综合判断上例中 holtwinters 不仅 MSE 更低耗时也远小于 arima。若gen_figure为true后续工作表会为每个模型单独绘制真实值 vs 预测值对比图便于直观观察趋势与周期是否拟合良好2.5 从源码理解预测算法参数[forecast.algos]中列出的算法与 TDgpt 算法库一一对应。以 holtwinters 为例其实现位于 tools/tdgpt/taosanalytics/algo/fc/holtwinters.py底层封装了 statsmodels 的ExponentialSmoothing与SimpleExpSmoothingtrend与seasonal参数仅接受add加法或mul乘法两种取值见源码第 26-35 行的合法性校验当两者均为空时退化为简单指数平滑SimpleExpSmoothing存在季节成分时算法会把配置中的period作为seasonal_periods传入ExponentialSmoothing第 53-58 行因此period的取值会直接影响季节项拟合质量。ARIMA 算法则位于 tools/tdgpt/taosanalytics/algo/fc/arima.pytime_step指定数据点的时间间隔毫秒start_p/max_p与start_q/max_q控制自回归阶数与移动平均阶数的搜索范围。除这两个示例算法外TDgpt 的预测算法库还包含ces、ets、prophet、theta以及chronos、gpt、moirai、timemoe、timesfm等模型见 tools/tdgpt/taosanalytics/algo/fc均可作为[forecast.algos]的候选对象。三、评估异常检测模型异常检测评估使用**查全率recall与查准率precision**两个指标衡量模型有效性前提是先用人工标注anno_res给出数据集中真实的异常点位置。3.1 加载样例数据仓库在 tools/tdgpt/resource/sample-ad.sql 提供了异常检测样例数据创建表ad_sample(ts timestamp, val int)并写入 17 个数据点。执行taos -f sample-ad.sql3.2 配置异常检测评估参数在analytics.ini中追加[ad]段[ad] start_time 2021-01-01T01:01:01 end_time 2021-01-01T01:01:11 gen_figure true anno_res [9] [ad.algos] ksigma{k: 2} iqr{} grubbs{} lof{algorithm:auto, neighbors: 3}配置项含义start_time/end_time数据集时间范围需覆盖被测数据gen_figure是否绘制检测结果标注图anno_res人工标注的异常点位置从 0 开始计数是评估的标准答案[ad.algos]参与比较的异常检测模型及参数提示仓库中 tools/tdgpt/resource/sample-ad.sql 样例数据的时间戳从1577808000000毫秒开始实际使用时请将start_time/end_time设置为覆盖你数据真实时间范围的取值保证读取到完整序列。3.3 标注异常点anno_res是异常检测评估的关键输入必须人工确认测试数据中哪些位置是异常再按零基位置填入。例如样例数据中第 10 个数据点下标为 9为异常点则标注[9]若第 1 个点下标 0和第 10 个点下标 9都是异常点则标注[0, 9]。标注错误会直接导致 precision/recall 失真。3.4 调用评估工具python3 ./analytics_compare.py anomaly-detection3.5 解读结果执行完成后生成ad_result.xlsx第一个工作表包含 5 个指标模型名称、执行调用参数、查准率precision、查全率recall、执行时间。参考输出如下algorithmparamsprecision(%)recall(%)elapsed_time(ms.)ksigma{k:2}1001000.453iqr{}1001002.727grubbs{}1001002.811lof{algorithm:auto, neighbors:3}004.660该结果清晰地展示了模型选择的必要性同样是默认参数ksigma/iqr/grubbs 对样例数据完全命中而 lof 在该小样本上的 precision 与 recall 均为 0。若gen_figure为true后续工作表会绘制每个模型的检测标注图直观对比哪些点被识别为异常下图为 ksigma 的检测结果标注3.6 从源码理解异常检测算法参数四个示例算法在仓库中均有对应实现位于 tools/tdgpt/taosanalytics/algo/adksigmaksigma.py即 k-σ3σ准则计算序列的均值与标准差后得到[mean - k*std, mean k*std]区间落在区间外的点判定为异常。源码第 17 行默认k_val3配置文件传入{k: 2}即收紧阈值、检出更多点iqriqr.py四分位距法基于数据分布的分位数构造异常区间无需额外参数grubbsgrubbs.pyGrubbs 检验适用于单变量数据中单个离群点的检测loflof.py局部离群因子Local Outlier Factor通过密度比较识别局部异常neighbors控制近邻数量algorithm指定近邻搜索算法。TDgpt 的异常检测算法库还内置了shesdshesd.py以及基于 pyod 的ecod、hbos、copod、iforest、pca见 pyod_stat.py均可加入[ad.algos]参与横向对比。四、使用建议与注意事项务必使用虚拟环境的 PythonTDgpt 依赖 statsmodels、pmdarima、pyod 等库直接调用系统 Python 会因缺少依赖而启动失败进入虚拟环境后调用其python3执行analytics_compare.py评估数据需真实覆盖算法场景[input_data]的数据范围、周期数与[forecast]中的period、start_time/end_time必须与数据实际形态匹配否则季节项与预测起点都会失真人工标注是异常检测评估的基准anno_res采用零基位置务必基于对业务数据的确认填写它是计算 precision/recall 的标准答案指标要结合耗时一起看MSE 或 precision/recall 反映准确性elapsed_time 反映计算成本两者需综合权衡这也正是analytics_compare把两类指标放在同一张表里的用意适用范围说明analytics_compare.py本体仅随 TDgpt 企业版分发本开源仓库不包含该脚本但评估对象——预测与异常检测算法、样例数据sample-fc.sql、sample-ad.sql——均可在 tools/tdgpt 中查看你可以基于同样的数据集和算法参数在企业版环境中复现本文的全部评估结果。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表