AI训练营-baseline代码中参数精读

发布时间 2023-07-27 22:40:29作者: Dk只能爬
# 数据准备
train_dataset = pd.read_csv("./train.csv") # 原始训练数据。
test_dataset = pd.read_csv("./test.csv") # 原始测试数据(用于提交)。

submit = pd.DataFrame() # 定义提交的最终数据。
submit["序号"] = test_dataset["序号"] # 对齐测试数据的序号。

MAE_scores = dict() # 定义评分项。

# 模型训练
pred_labels = list(train_dataset.columns[-34:]) # 需要预测的标签。因为要预测的是温度,所以是后三十四个
train_set, valid_set = train_test_split(train_dataset, test_size=0.2) # 拆分数据集。train_dataset是要划分的数据集,test_size是测试集的比例,默认为0.2(即20%的数据用于测试)

# 设定 LightGBM 训练参,查阅参数意义:https://lightgbm.readthedocs.io/en/latest/Parameters.html
lgb_params = {
        'boosting_type': 'gbdt',#梯度提升树
        'objective': 'regression',#回归
        'metric': 'mae',#评估指标为平均绝对误差MAE
        'min_child_weight': 5,#控制每个叶子节点上的最小样本权重总和,用于防止过拟合
        'num_leaves': 2 ** 5, #2的5次方,每棵决策树有32个结点

较大的num_leaves值可以增加模型的复杂度,从而提供更强大的拟合能力,但也可能导致过拟合。相反,较小的num_leaves值可以减少模型的复杂度,从而降低过拟合的风险,但可能会降低模型的表达能力。

        'lambda_l2': 10,#指定L2正则化项的权重,用于控制模型的复杂度。较大的值可以防止过拟合。
        'feature_fraction': 0.8,#指定每次迭代中随机选择的特征比例,用于加速训练并降低过拟合的风险
        'bagging_fraction': 0.8,#指定每次迭代中随机选择的样本比例,用于加速训练并降低过拟合的风险
        'bagging_freq': 4,
        'learning_rate': 0.05, #学习率控制每次迭代中模型参数的更新幅度。较小的学习率可以使模型更稳定,但可能需要更多的迭代次数
        'seed': 2003,
        'nthread' : 16,
        'verbose' : -1,
    }