我试图弄清楚如何在 python 中使用 lightgbm 训练 gbdt 分类器,但对 the official website 上提供的示例感到困惑。
按照列出的步骤,我发现validation_data 无处不在,并且没有关于valid_data 格式的线索,也没有关于有或没有它的训练模型的优点或效用的线索。
随之而来的另一个问题是,在文档中,说“验证数据应该与训练数据对齐”,而我查看数据集详细信息时,发现还有另一条语句显示“如果这是数据集对于验证,应使用训练数据作为引用”。
我的最后一个问题是,为什么验证数据应该与训练数据保持一致? Dataset中reference的含义是什么,在训练过程中如何使用?对齐目标是否通过对训练数据的引用集来完成?这个“引用”策略和交叉验证有什么区别?
希望有人能帮我走出这个迷宫,谢谢!
最佳答案
“验证数据应该与训练数据保持一致”的想法很简单:
你对训练数据所做的每一次预处理,你都应该以同样的方式来处理验证数据和生产过程。这适用于每个 ML 算法。
例如,对于神经网络,您通常会标准化您的训练输入(除以均值并除以标准差)。
假设您有一个变量“年龄”,训练中的平均年龄为 26 岁。它将映射到“0”以训练您的神经网络。对于验证数据,您希望以与训练数据相同的方式标准化(使用训练平均值和训练标准),以便验证中的 26yo 仍然映射到 0(相同值 -> 相同预测)。
LightGBM 也是如此。数据将是“bucketed ”(简而言之,每个连续值都将被离散化)并且您希望在训练和验证中将连续值映射到相同的 bin。这些 bin 将使用“引用”数据集进行计算。
关于未经验证的培训,这是您大多数时候不想做的事情!如果您没有验证来调整诸如“num_boost_round”之类的参数,则很容易使用增强树过拟合训练数据。
关于machine-learning - lightgbm python 数据集引用参数是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56804254/