归一化会降低集成方法的模型性能吗?
Can normalization decrease model performance of ensemble methods?
标准化,例如z-scoring 是机器学习中常用的预处理方法。
我正在分析数据集并使用集成方法,如随机森林或 XGBOOST 框架。
现在我比较模型使用
- 非标准化特征
- z 得分特征
使用交叉验证,我观察到在这两种情况下,max_depth
参数越高,训练误差越小。
对于第一种情况,测试误差也在某个 MAE 处下降并达到饱和:
然而,对于 z-scored 特征,测试误差根本没有减少。
在这个问题中:https://datascience.stackexchange.com/questions/16225/would-you-recommend-feature-normalization-when-using-boosting-trees讨论了基于树的方法不需要规范化。但是上面的例子表明它有严重的影响。
所以我有两个问题:
- 这是否意味着即使测试误差减少,基于集成的方法也可能过度拟合?
- 在使用集成方法时,像 z-scoring 这样的标准化是否应该始终是常见的做法?
- 标准化方法是否可能降低模型性能?
谢谢!
在没有任何代码或数据的情况下,很难看出发生了什么。
归一化可能有帮助,也可能没有帮助,具体取决于特定数据以及如何应用归一化步骤。
基于树的方法应该足够健壮以处理原始数据。
在您的交叉验证中,您的代码是否对每个折叠分别进行标准化?
在 cv 之前进行单一归一化可能会导致严重泄漏。
如果深度值非常高,您将拥有一个更复杂的模型,可以很好地拟合训练数据,但无法推广到新数据。
我倾向于选择 2 到 5 之间的最大深度。
如果我不能得到一个合理的模型,我会把精力转向特征工程,而不是试图过多地调整超参数。
标准化,例如z-scoring 是机器学习中常用的预处理方法。 我正在分析数据集并使用集成方法,如随机森林或 XGBOOST 框架。
现在我比较模型使用
- 非标准化特征
- z 得分特征
使用交叉验证,我观察到在这两种情况下,max_depth
参数越高,训练误差越小。
对于第一种情况,测试误差也在某个 MAE 处下降并达到饱和:
然而,对于 z-scored 特征,测试误差根本没有减少。
在这个问题中:https://datascience.stackexchange.com/questions/16225/would-you-recommend-feature-normalization-when-using-boosting-trees讨论了基于树的方法不需要规范化。但是上面的例子表明它有严重的影响。
所以我有两个问题:
- 这是否意味着即使测试误差减少,基于集成的方法也可能过度拟合?
- 在使用集成方法时,像 z-scoring 这样的标准化是否应该始终是常见的做法?
- 标准化方法是否可能降低模型性能?
谢谢!
在没有任何代码或数据的情况下,很难看出发生了什么。
归一化可能有帮助,也可能没有帮助,具体取决于特定数据以及如何应用归一化步骤。 基于树的方法应该足够健壮以处理原始数据。 在您的交叉验证中,您的代码是否对每个折叠分别进行标准化? 在 cv 之前进行单一归一化可能会导致严重泄漏。
如果深度值非常高,您将拥有一个更复杂的模型,可以很好地拟合训练数据,但无法推广到新数据。 我倾向于选择 2 到 5 之间的最大深度。 如果我不能得到一个合理的模型,我会把精力转向特征工程,而不是试图过多地调整超参数。