橘智橘智
FakeOrange
预计阅读时间:1分钟47秒

数据分析2.9 —— 数据标准化 Normalization

针对不同场景使用不同模型需要不同的数据处理方式

0
0



前言



特征缩放在机器学习中是一个关键步骤,但并不是所有模型都需要进行缩放。本节将根据不同的模型和数据特点,提供适当的缩放策略,并重点分析梯度提升决策树(GBDT)对异常值的敏感性。



1. 特征缩放与模型的关系



对缩放敏感的模型(需要特征缩放)


这些模型依赖于欧几里得距离、梯度优化或线性代数计算,因此对特征范围的差异非常敏感。


  • 逻辑回归 & 线性回归
    • 特点:基于梯度下降优化,数据的分布对收敛速度有较大影响。
    • 推荐缩放方法:StandardScalerMinMaxScaler
  • 支持向量机(SVM)
    • 特点:支持向量机通过计算特征空间的距离来分类,因此缩放会影响分类边界的定位。
    • 推荐缩放方法StandardScaler
  • K-近邻(KNN) & K-均值(K-Means)
    • 特点:此类模型依赖于特征间的距离计算,因此缩放会影响模型性能。
    • 推荐缩放方法:MinMaxScalerStandardScaler


对缩放不敏感的模型(无需特征缩放)


这些模型主要依赖规则或树结构进行决策,而不依赖于距离或线性假设。


  • 决策树(Decision Tree)
    • 特点:通过特征的分裂进行划分,不依赖于特征的距离。
    • 推荐缩放方法:不需要
  • 随机森林(Random Forest)
    • 特点:多个决策树的集成,整体对特征的尺度变化不敏感。
    • 推荐缩放方法:不需要
  • 朴素贝叶斯(Naive Bayes)
    • 特点:基于特征的条件概率分布,特征的尺度变化不会影响模型。
    • 推荐缩放方法 不需要



2. 梯度提升决策树(GBDT)的异常值敏感性



虽然单独的决策树对异常值有较强的鲁棒性,但梯度提升决策树(GBDT),如 XGBoost、LightGBM、CatBoost 等,可能对目标值(y)或某些特征的异常值非常敏感,原因如下:


  • 回归任务中的目标值异常:GBDT在优化损失函数(如均方误差 MSE)时,对异常值非常敏感,可能导致模型过度关注异常点。解决方案:使用鲁棒的损失函数,如 Huber Loss 或 Quantile Loss。


from sklearn.ensemble import GradientBoostingRegressor
model = GradientBoostingRegressor(loss="huber")


  • 特征中存在极端值:特征的极端值可能影响树的分裂点选择,导致模型对这些特征过拟合。解决方案:使用 RobustScaler 或对特征进行 log 变换进行缩放或标准化。


  • 极端样本权重或不平衡分布:样本的权重较大或特征存在极端值时,可能影响分裂的方向。解决方案:调整样本权重,或者对异常值进行处理,如截断或删除。



3. GBDT 的参数调优与异常值应对



在使用 GBDT 时,可以通过调整以下参数来减弱异常值的影响:


  • 学习率(learning_rate):降低学习率可以减缓模型对异常值的过拟合。


  • 最大增量步长(max_delta_step):控制每次更新的最大步长,避免梯度更新过大导致过拟合。


  • 目标函数(objective):将默认的目标函数替换为鲁棒性更强的函数(如 Huber 或 Log-Cosh)。




4. 不同缩放方式的适用场景



data/78df2c1f-e442-415d-a382-fa7925af0c4b/4bf56004-2725-4cf9-bd99-65b1195b7155image.png



5. 总结



对于决策树、随机森林等模型,通常不需要进行特征缩放。然而,在回归任务中,GBDT 对目标值和特征的异常值可能会特别敏感,需特别关注缩放方法和损失函数的选择。


对于基于梯度优化的模型,特征缩放通常是必要的。选择合适的缩放方法不仅能加快模型的收敛速度,还能有效提高模型的性能。

评论