橘智橘智
bestwater
预计阅读时间:2分钟39秒

AutoGluon打一打时序比赛

AutoGluon对时序的支持似乎不太好,目前来看使用AutoGluon参与的时序比赛效果都很一般,学习为主吧

0
0

一、环境准备

1. 安装AutoGluon

%%time
!pip install autogluon.timeseries > /dev/null 2>&1

2. 导入依赖库

from autogluon.timeseries import TimeSeriesDataFrame, TimeSeriesPredictor 

二、数据加载与预处理


1. 读取训练数据

df_train = pd.read_csv('/kaggle/input/open-data-day-2025-dates-types-classification/train_labels.csv')

2. 转换数据

# 把普通的 pandas.DataFrame 转换为 TimeSeriesDataFrame,这是 AutoGluon 时序预测模型所需的数据结构
data = TimeSeriesDataFrame.from_data_frame( 
    df_train, 
    id_column="ID",
    timestamp_column="timestamp",   
)

3. 拆分训练集和测试集

train_data, test_data = data.train_test_split(total_day)

4. 拆分训练集和测试集

train_data, test_data = data.train_test_split(total_day)

三、AutoGluon模型

3.1、构建一个 AutoGluon 的时序预测模型

# 快速构建已知协变量(辅助特征)
known_covariates = [col for col in train_data.columns if col != 'future_7d_login_days']

predictor = TimeSeriesPredictor( 
    prediction_length=total_day,         # 预测步长
    path="autogluon",                    # 模型输出路径
    target="future_7d_login_days",       # 预测目标列
    eval_metric="SMAPE",                 # 评估指标
    freq="D",                            # 时间频率
    known_covariates_names=known_covariates,  # 已知协变量(辅助特征)
)

3.2、AutoGluon训练

predictor.fit(
    train_data,            # 训练数据
    num_val_windows=5,     # 5 个滑动验证窗口
    hyperparameters={      #  Chronos 系列模型参数
        "Chronos": [
            # Zero-shot model WITHOUT covariates
            {
                "model_path": "bolt_small",
                "ag_args": {"name_suffix": "ZeroShot"},
            },
            # Chronos-Bolt (Small) combined with CatBoost on covariates
            {
                "model_path": "bolt_small",
                "covariate_regressor": "CAT",
                "target_scaler": "standard",
                "ag_args": {"name_suffix": "WithRegressor"},
            },
        ],
    },
    enable_ensemble=False,  # 单独评估每个模型
    verbosity=4,            # 日志等级
    time_limit=time_limit,  # 训练时间上限
)

3.3、查看 AutoGluon 训练完成后所有模型的表现对比表

leaderboard = predictor.leaderboard()
leaderboard


四、进行预测

4.1、预测

predictions = predictor.predict(predict_data,known_covariates=test_data[known_covariates])

4.2、可视化预测结果

predictor.plot(
    data=predict_data,
    predictions=predictions,
    item_ids=predict_data.item_ids[:2],
    max_history_length=200,
)

五、参考链接

AutoGluon官方链接

Kaggle时序比赛AutoGluon开源代码  

六、总结

AutoGluon对时序的支持似乎一般,也可能是本人研究未深导致,如果之后有合适的比赛,将会继续尝试

评论