归一化会降低集成方法的模型性能吗?

归一化,例如z-score,是机器学习中常见的预处理方法。我正在分析一个数据集,并使用像随机森林或XGBOOST框架这样的集成方法。

现在我比较使用

  1. 未归一化的特征
  2. z-score归一化的特征

通过交叉验证,我观察到在两种情况下,随着max_depth参数的增加,训练误差都会减少。

对于第一种情况,测试误差也随之下降,并在某个MAE值处达到饱和:

enter image description here

然而,对于z-score归一化的特征,测试误差完全没有减少的趋势。enter image description here

在以下问题中:https://datascience.stackexchange.com/questions/16225/would-you-recommend-feature-normalization-when-using-boosting-trees讨论了基于树的方法不需要归一化。但上面的例子显示归一化有严重影响。

因此,我有以下两个问题:

  1. 这是否意味着即使测试误差减少,基于集成的方法也可能发生过拟合?
  2. 在使用集成方法时,z-score这样的归一化应该成为常规做法吗?
  3. 归一化方法是否可能降低模型性能?

谢谢!


回答:

在没有代码或数据的情况下,很难看出发生了什么。

归一化是否有帮助取决于特定数据以及归一化步骤的应用方式。基于树的方法应该足够Robust来处理原始数据。在你的交叉验证中,你的代码是否对每个折叠单独进行归一化?在交叉验证前进行一次归一化可能会导致显著的数据泄露。

当深度值非常高时,你将得到一个更加复杂的模型,它会很好地拟合训练数据,但无法很好地泛化到新数据。我倾向于使用2到5的最大深度。如果我无法得到一个合理的模型,我会转向特征工程,而不是尝试过多调整超参数。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注