You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为LSTM调参的Optuna函数添加5折交叉验证并输出AUC?

解决方案:给LSTM超参数调优的Optuna目标函数添加5折交叉验证

首先需要导入必要的库,然后修改目标函数以满足需求:

步骤1:导入依赖库

import time
from sklearn.model_selection import KFold
from sklearn.metrics import roc_auc_score
# 确保create_model函数已定义,且X_train、y_train、X_test、y_test数据集已准备完成

步骤2:修改后的Optuna目标函数

def objective(trial):
    start_time = time.time()
    # 初始化5折交叉验证器,开启洗牌保证数据分布均匀
    kf = KFold(n_splits=5, shuffle=True, random_state=42)
    train_aucs = []
    
    # 执行5折交叉验证,计算每折训练集的AUC
    for fold, (train_idx, val_idx) in enumerate(kf.split(X_train)):
        # 拆分当前折的训练和验证数据(仅在训练集内部拆分)
        X_fold_train, X_fold_val = X_train[train_idx], X_train[val_idx]
        y_fold_train, y_fold_val = y_train[train_idx], y_train[val_idx]
        
        # 为每折创建全新模型,避免跨折权重复用
        model = create_model(trial)
        model.fit(X_fold_train, y_fold_train, epochs=15, verbose=0)
        
        # 计算当前折训练集的AUC并收集
        y_fold_train_pred = model.predict(X_fold_train)
        fold_train_auc = roc_auc_score(y_fold_train, y_fold_train_pred)
        train_aucs.append(fold_train_auc)
    
    # 计算训练集5折的平均AUC
    avg_train_auc = sum(train_aucs) / len(train_aucs)
    
    # 使用全部训练数据训练最终模型,计算测试集AUC(测试集不拆分)
    final_model = create_model(trial)
    final_model.fit(X_train, y_train, epochs=15, verbose=0)
    y_test_pred = final_model.predict(X_test)
    test_auc = roc_auc_score(y_test, y_test_pred)
    
    end_time = time.time()
    elapsed_time = end_time - start_time
    
    # 输出迭代信息
    print(f"迭代编号: {trial.number}")
    print(f"训练集5折平均AUC: {avg_train_auc:.4f}")
    print(f"测试集AUC: {test_auc:.4f}")
    print(f"超参数: {trial.params}")
    print(f"耗时: {elapsed_time:.2f} 秒")
    print("-" * 50)
    
    # 返回测试集AUC作为Optuna的优化目标(可根据需求改为返回avg_train_auc)
    return test_auc

关键改动说明

  • 5折交叉验证实现:用KFold拆分训练集,每折都创建全新模型训练,避免权重共享导致的结果偏差
  • 训练集平均AUC计算:收集每折训练数据的AUC值,最后求平均值并输出
  • 测试集AUC计算:用当前超参数组合在全部训练数据上训练最终模型,再对固定的测试集进行预测和AUC计算
  • 输出优化:调整打印内容,清晰展示迭代编号、训练集平均AUC、测试集AUC、超参数和耗时

内容的提问来源于stack exchange,提问作者dingaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 02:46:25