用途与适用负载
逐棵拟合残差,学习滞后、日历与协变量的非线性关系。可预测均值附近的点值,也可直接训练分位数目标。
历史数据与运行条件
至少 lags + 4×min_samples_leaf + 1 点;direct 模式再增加 horizon−1 点。
输入应是等间隔、无缺口且数值有限的序列。输出保留输入指标单位,例如 CPU 核、内存字节或每秒请求数;采样步长决定步数对应的真实时间。最低样本数仅表示可运行,不代表预测可靠。
支持协变量:使用同一时间网格上的其他指标,特征仅取预测起点之前的值;未来协变量沿用最后观测值,不是假设已知未来业务量。
参数说明
窄屏可左右滑动参数表,查看完整说明。
| 参数 / 类型 | 默认值 / 范围 / 单位 | 含义与使用 |
|---|---|---|
lagsint | 必填,无默认值 ≥ 1; ≤ 2000; steps | 滞后步数,仅使用目标步之前的值。 |
calendar_featuresbool | false 无额外范围限制 | 是否加入 UTC 日/周周期的正余弦特征。 |
n_estimatorsint | 100 ≥ 1; ≤ 1000 | 树的数量。 |
learning_ratefloat | 0.1 ≥ 0.001; ≤ 1 | 每棵树的收缩系数。 |
max_depthint | 3 ≥ 1; ≤ 8 | 单棵树最大深度。 |
min_samples_leafint | 5 ≥ 1 | 叶子最少样本数。 |
objectivestring | "squared" squared / quantile | squared = 平方误差点预测;quantile = alpha 分位数,用于峰值/容量保护,需单独验证覆盖率。 |
alphafloat | 0.9 ≥ 0.01; ≤ 0.99 | 原生分位目标的分位点,仅 objective=quantile 时使用。 |
training_window_stepsint | 5000 ≥ 0; steps | 只用最近多少个样本训练,限制训练耗时;0 = 全部历史。 |
covariate_lagsint | 3 ≥ 1; ≤ 48; steps | 输入指标集里每个协变量取最近多少步的值作为特征(仅用目标步之前的值;未来步沿用最后观测值)。没有协变量时忽略。 |
multi_stepstring | "recursive" recursive / direct | 多步预测方式:recursive = 一个模型逐步往前滚,把上一步的预测当下一步的输入(误差会累积,视野越长越向均值收敛);direct = 每个锚点步长各训练一个模型,直接预测那一步,只用已观测的值,不累积误差,但训练成本约为锚点数倍。 |
direct_anchorsint | 8 ≥ 2; ≤ 60 | 直接多步时有多少个步长拥有自己的模型(从第 1 步到最后一步均匀取点,中间的步长线性插值);视野不超过它时每一步都有自己的模型。仅 multi_step=direct 时使用。 |
配置示例
在“算法管理”编辑参数。以下仅为参数对象,不是 config.yaml 全文;周期示例按 5 分钟采样,需按实际步长调整。未列出的可选参数使用上表默认值。
JSON
{
"lags": 24,
"n_estimators": 100,
"learning_rate": 0.1,
"max_depth": 3,
"training_window_steps": 5000,
"multi_step": "recursive",
"objective": "squared"
}调参与取舍
learning_rate 越小通常需要更多树。alpha 只在 objective=quantile 时表示分位点,与 EWMA 的 alpha 不同。先单独比较原生分位目标或保形校准,避免无意叠加两层上偏。
通用参数:变化重置与分位校准
| 参数 / 类型 | 默认值 / 范围 / 单位 | 含义与使用 |
|---|---|---|
reset_on_changebool | false 无额外范围限制 | 水平突变后重置:检测历史里最后一次水平突变(发布、扩缩容、流量切换),只用突变之后的历史预测。关闭时用全部历史(现状)。突变之后至少要有 6 步才会被确认;突变后的历史不够算法所需时,取算法所需的最新一段。 |
change_thresholdfloat | 8 ≥ 3; ≤ 50 | 突变阈值:突变幅度(扣除前一段趋势后)超过噪声的多少倍才算,越大越不容易误报,噪声由相邻步变化的稳健标准差估计。仅 reset_on_change=true 时使用。 |
change_min_shiftfloat | 0.2 ≥ 0; ≤ 5 | 最小突变幅度:突变至少是水平的这个比例(0.2 = 20%),很干净的序列上的微小跳变不算。仅 reset_on_change=true 时使用。 |
quantile_levelfloat | 0 ≥ 0; ≤ 0.99 | 推荐分位数:0 = 点预测(现状);0.9 等 = 预测「实际值有约 90% 的把握不超过」的线(保形预测:用本算法在这个负载最近几个窗口里的真实误差校准,需要更多历史和时间)。必须大于 0.5。 |
calibration_windowsint | 8 ≥ 3; ≤ 50 | 校准窗口数:用最近多少个历史窗口测本算法的误差;越多越稳,也越慢(每个窗口多跑一次预测)。仅推荐分位数大于 0 时使用。 |
quantile_level 是 0~1 的分位点,percentile 是 1~100 的百分数,二者不是同一参数。分位校准会额外运行历史预测;增加校准窗口前检查历史与运行预算,覆盖率是评估目标而非保证。
在模块中使用
- 保存参数,检查历史窗口、采样步长和预测范围。
- 打开模块的“启用预测”;固定算法只运行指定方法,动态算法使用平台已启用的方法。
- 先运行滚动回测,通过版本晋升后才会采用;修改影响模型版本的参数后重新回测。
- 在仅观察或仅推荐下检查误差、峰值低估、耗时与采用原因,再分别授权准入和副本执行。
历史不足、参数不合法、运行超时或输出无效时,检查算法运行原因;没有合格预测时按模块的固定周期、兜底与保护规则处理。