lightgbm python数据集参考参数是什么意思?

时间:2019-06-28 09:22:53

标签: machine-learning cross-validation lightgbm

我试图弄清楚如何用python中的lightgbm训练gbdt分类器,但与the official website上提供的示例感到困惑。 按照列出的步骤进行操作,我发现validation_data来自何处,也没有关于valid_data格式的线索,也没有关于使用或不使用它的训练模型的优缺点的线索。 validation data creation step 随之而来的另一个问题是,在文档中,有人说“验证数据应与训练数据对齐”,而在查看数据集详细信息时,我发现还有另一条语句表明“如果这是数据集”为了验证,应将培训数据作为参考。” 我最后的问题是,为什么验证数据应与培训数据保持一致?数据集中参考的含义是什么?在训练中如何使用?对齐目标是通过参考训练数据来实现的吗?这种“参考”策略和交叉验证有什么区别? 希望有人可以帮助我摆脱这个迷宫,谢谢!

2 个答案:

答案 0 :(得分:0)

“验证数据应与培训数据保持一致”的想法很简单: 对训练数据进行的每个预处理,对于验证数据和生产过程,都应以相同的方式进行。这适用于所有ML算法。

例如,对于神经网络,您通常会标准化训练输入(均值减去标准差)。 假设您的变量“年龄”在训练中的平均值为26岁。它将被映射为“ 0”以训练您的神经网络。对于验证数据,您想要以与训练数据相同的方式进行归一化(使用训练的均值和训练的标准),以使验证中的26yo仍映射为0(相同的值->相同的预测)。

这与LightGBM相同。数据将为“ {bucketed”(简而言之,每个连续值将被离散化),并且您希望在训练和验证中将连续值映射到相同的仓位。这些箱将使用“参考”数据集进行计算。

关于未经验证的培训,这是您大多数时候不想做的事情!如果您没有验证来调整诸如“ num_boost_round”之类的参数,则很容易用增强树过度拟合训练数据。

答案 1 :(得分:-1)

一切仍然很棘手 是否可以通过使用和不使用此“ reference =”来分享完整的示例 例如 会有所不同

import lightgbm as lgbm
importance_type_LGB = 'gain'
d_train = lgbm.Dataset(train_data_with_NANs, label= target_train)
d_valid = lgbm.Dataset(train_data_with_NANs, reference= target_train)
lgb_clf = lgbm.LGBMClassifier(class_weight = 'balanced' ,importance_type = importance_type_LGB)
lgb_clf.fit(test_data_with_NANs,target_train)
test_data_predict_proba_lgb = lgb_clf.predict_proba(test_data_with_NANs)

来自

import lightgbm as lgbm
importance_type_LGB = 'gain'
lgb_clf = lgbm.LGBMClassifier(class_weight = 'balanced' ,importance_type = importance_type_LGB)
lgb_clf.fit(test_data_with_NANs,target_train)
test_data_predict_proba_lgb = lgb_clf.predict_proba(test_data_with_NANs)