machine-learning - 归一化会降低集成方法的模型性能吗?
问题描述
归一化(例如 z 评分)是机器学习中常见的预处理方法。我正在分析数据集并使用随机森林或 XGBOOST 框架等集成方法。
现在我比较模型使用
- 非标准化特征
- z 评分特征
使用交叉验证,我在这两种情况下都观察到,max_depth
参数越高,训练误差就越小。
对于 1. 情况,测试误差也会减小并在某个 MAE 处饱和:
在这个问题中:https ://datascience.stackexchange.com/questions/16225/would-you-recommend-feature-normalization-when-using-boosting-trees讨论了基于树的方法不需要标准化。但是上面的例子表明它具有严重的影响。
所以我对此有两个问题:
- 这是否意味着即使测试误差减少,也可能使用基于集成的方法进行过度拟合?
- 在使用集成方法时,像 z 评分这样的归一化是否应该是常见的做法?
- 归一化方法是否有可能降低模型性能?
谢谢!
解决方案
在没有任何代码或数据的情况下,很难看到发生了什么。
归一化可能有帮助,也可能没有帮助,具体取决于特定数据以及如何应用归一化步骤。基于树的方法应该足够健壮以处理原始数据。在您的交叉验证中,您的代码是否为每个折叠分别进行规范化?在 cv 之前进行单次归一化可能会导致严重的泄漏。
如果深度值非常高,您将拥有一个更复杂的模型,该模型可以很好地拟合训练数据,但无法泛化到新数据。我倾向于选择从 2 到 5 的最大深度。如果我无法获得合理的模型,我会将精力转向特征工程,而不是试图过多地调整超参数。
推荐阅读
- c - 如何获得矩阵乘法器 C 程序的未知矩阵的正确尺寸?
- python - 使用 Pandas 导入 Excel 文件时出现 KeyError
- ffmpeg - ffmpeg 不生成调色板
- asp.net-core - Identity Server 4 用户模拟
- gruntjs - Grunt + Postcss + autoprefixer 不添加供应商前缀
- reason - 在 ReasonReact 中解构鼠标移动事件
- java - 如何使用java复制curl命令?
- linux - 在 Linux 上解码 mmap() 标志
- android - Android Studio 服务 onServiceConnected() 在 onBind() 时从未调用过
- git - 如何在 centos 7 中设置 GIT PATH?