计算机系统应用教程网站

网站首页 > 技术文章 正文

快乐8第24271期训练与验证 快乐八2021248期

btikc 2024-12-29 01:42:54 技术文章 22 ℃ 0 评论

训练结果

之前的旧模型 0.4,iv012(24个特征):

KS: 0.0177准确率: 0.2482精确率: 0.2482召回率: 1.0000F1分数: 0.3978

[15, 9, 12, 21, 38, 19, 7, 49, 25, 52, 53, 54, 26, 64, 72, 79, 11, 32, 27, 41]

新0.4 iv0.012(修正后的结果)

KS: 0.0180准确率: 0.2482精确率: 0.2482召回率: 1.0000f1分数: 0.3978

[61, 5, 66, 63, 41, 58, 67, 72, 32, 47, 1, 70, 45, 21, 52, 27, 74, 26, 4, 43]


遗传算法优化LGB模型(iv corr筛选后)结果:

[44, 10, 66, 38, 16, 74, 18, 70, 2, 79, 67, 23, 73, 43, 69, 56, 1, 42, 13, 48]

有点懵,为什么训练和test set效果差这么多,过拟合了?那试一试全量吧

遗传算法优化LGB模型(全量特征):

[49, 30, 4, 22, 47, 2, 67, 39, 7, 50, 11, 60, 70, 54, 64, 25, 40, 78, 20, 61]

看看到底是全量的好用,还是iv corr筛选后再用遗传算法好用

结论



旧模型 0.4,iv012(24个特征):7中1

新0.4 iv0.012(修正后的结果):3中1

遗传算法优化LGB模型(iv corr筛选后):3中1,5中2,9中3

遗传算法优化LGB模型(全量特征):6中1,9中2,11中4


全军覆没。看来kfold的使用有待提高

KFold 优化与最终完整全量数据训练

1. KFold 优化与最终训练的差异

在优化阶段使用 KFold 交叉验证有助于更加准确和稳定地评估模型的表现。而在最终模型阶段,则直接使用完整数据进行训练,因为目的是得到最优的最终模型,不再需要反复评估。这种方式的优势在于:

  1. 更可靠的评估:KFold 把数据集分为多个折叠,每次用不同的部分来训练和测试,这样可以减小单次划分导致的偏差。
  2. 避免过拟合:通过多次训练和验证,可以更好地评估模型的泛化能力。

在 KFold 交叉验证过程中,得到的最优参数实际上是对训练集划分后每次评估得到的参数的平均效果,这并不一定是对于完整训练集的最佳参数。其本质是通过 KFold 得到更稳定的结果,而不是说这个参数在整体数据上一定是最优的。

2. 为什么最终模型训练没有使用 KFold

在最终模型训练阶段,你直接使用完整的训练集来训练一个模型,并对测试集进行预测:

  1. 目标不同:优化阶段的目的是找到最优的特征组合和参数,而最终模型的训练目的是使用这些找到的参数在尽可能多的数据上进行训练,以得到一个用于生产或预测的模型。
  2. 最大化数据使用:在优化时,你通过 KFold 保留部分数据用于验证。但在最终模型训练时,你希望最大化地使用所有的训练数据,以提高模型的性能和泛化能力。如果你再用 KFold 交叉验证,那么一部分数据将不会被用于最终的模型训练,这样做的模型可能并不是用最多数据训练出来的最强模型。
  3. 单一预测模型:最终模型的目标是对新数据进行预测,这时并不需要再多次训练得到多个模型的预测均值,而是希望得到一个稳定的模型来直接对测试数据进行预测。

3. 参数在 KFold 和整体训练时可能的差异

正如你提到的,优化得到的参数是在 KFold 训练下效果最优的,但这不一定是整体数据上的最优参数。因为在 KFold 中,训练集和验证集的划分会影响模型对不同数据分布的适应性。因此,KFold 得到的最优参数更多的是一种折中方案,能适应不同折叠的训练和测试数据的划分。

但是,经验上,KFold 找到的参数组合通常具有较好的泛化性能,这意味着它们在最终整体训练集上的表现也可能会很好。因此,在实际应用中,大部分人会使用在 KFold 上找到的最优参数,直接用完整的数据集训练最终的模型。

总结

  1. 优化阶段:使用 KFold 交叉验证的最优参数,可以让模型参数在多个数据分布下有较好的泛化能力,从而更可靠地选择最优的参数。
  2. 最终模型训练:直接使用完整的训练集,是为了最大化模型性能,尽量减少数据分割带来的信息损失,得到用于生产或预测的最终模型。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表