控制微调级别
1. 导入包
首先,我们导入所需的包并初始化 Nixtla 客户端
👍 使用 Azure AI 端点
要使用 Azure AI 端点,请记住同时设置
base_url
参数
nixtla_client = NixtlaClient(base_url="you azure ai endpoint", api_key="your api_key")
2. 加载数据
时间戳 | 值 | |
---|---|---|
0 | 1949-01-01 | 112 |
1 | 1949-02-01 | 118 |
2 | 1949-03-01 | 132 |
3 | 1949-04-01 | 129 |
4 | 1949-05-01 | 121 |
现在,我们将数据分割成训练集和测试集,以便在改变 finetune_depth
时衡量模型的性能。
接下来,我们微调 TimeGPT 并改变 finetune_depth
来衡量其对性能的影响。
3. 使用 finetune_depth
进行微调
📘 Azure AI 中可用的模型
如果您正在使用 Azure AI 端点,请确保设置
model="azureai"
nixtla_client.forecast(..., model="azureai")
对于公共 API,我们支持两种模型:
timegpt-1
和timegpt-1-long-horizon
。默认使用
timegpt-1
。关于如何以及何时使用timegpt-1-long-horizon
,请参阅本教程。
如上所述,finetune_depth
控制 TimeGPT 模型中有多少参数会在您的特定数据集上进行微调。如果值设置为 1,则只有少量参数会进行微调。设置为 5 意味着模型的所有参数都将进行微调。
对于具有复杂模式的大型数据集,使用较大的 finetune_depth
值可以带来更好的性能。然而,它也可能导致过拟合,在这种情况下,预测的准确性可能会下降,我们将在下面的小实验中看到这一点。
唯一 ID | 指标 | TimeGPT_depth1 | TimeGPT_depth2 | TimeGPT_depth3 | TimeGPT_depth4 | TimeGPT_depth5 | |
---|---|---|---|---|---|---|---|
0 | 0 | mae | 22.675540 | 17.908963 | 21.318518 | 24.745096 | 28.734302 |
1 | 0 | mse | 677.254283 | 461.320852 | 676.202126 | 991.835359 | 1119.722602 |
从上面的结果可以看出,finetune_depth
为 2 时取得了最好的结果,因为它具有最低的 MAE 和 MSE。
另请注意,当 finetune_depth
为 4 和 5 时,性能会下降,这是过拟合的明显迹象。
因此,请记住微调可能需要一些反复试验。您可能需要根据您的特定需求和数据的复杂性来调整 finetune_steps
的数量和 finetune_depth
的级别。通常,对于大型数据集,较高的 finetune_depth
效果更好。在本教程中,由于我们预测的是一个非常短的单个序列,增加深度导致了过拟合。
建议在微调过程中监控模型的性能并根据需要进行调整。请注意,更多的 finetune_steps
和更大的 finetune_depth
值可能会导致更长的训练时间,如果管理不当,可能会导致过拟合。