机器学习数据预处理-标准化/归一化方法

机器学习数据预处理——标准化/归一化方法

通常,在Data Science中,预处理数据有一个很关键的步骤就是数据的标准化。这里主要引用sklearn文档中的一些东西来说明,主要把各个标准化方法的应用场景以及优缺点总结概括,以来充当笔记。

首先,我要引用我自己的文章Feature Preprocessing on Kaggle里面关于Scaling的描述

Tree-based models doesn’t depend on scaling

Non-tree-based models hugely depend on scaling

一、标准化/归一化的好处

1.1 提升模型精度

在机器学习算法的目标函数(例如SVM的RBF内核或线性模型的l1和l2正则化),许多学习算法中目标函数的基础都是假设所有的特征都是零均值并且具有同一阶数上的方差。如果某个特征的方差比其他特征大几个数量级,那么它就会在学习算法中占据主导位置,导致学习器并不能像我们说期望的那样,从其他特征中学习。

举一个简单的例子,在KNN中,我们需要计算待分类点与所有实例点的距离。假设每个实例点(instance)由n个features构成。如果我们选用的距离度量为欧式距离,如果数据预先没有经过归一化,那么那些绝对值大的features在欧式距离计算的时候起了决定性作用,soga。

从经验上说,归一化是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。

1.2 提升收敛速度

对于线性model来说,数据归一化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。

比较这两个图,前者是没有经过归一化的,在梯度下降的过程中,走的路径更加的曲折,而第二个图明显路径更加平缓,收敛速度更快。

  • 对于神经网络模型,避免饱和是一个需要考虑的因素,通常参数的选择决定于input数据的大小范围。

二、标准化/归一化方法

sklearn的preprocessing提供了可以满足需求的归一化方法:

2.1 StandardScaler

标准化数据通过减去均值然后除以方差(或标准差),这种数据标准化方法经过处理后数据符合标准正态分布,即均值为0,标准差为1,转化函数为:

扫描二维码关注公众号,回复: 5064032 查看本文章

x =(x -

猜你喜欢

转载自blog.csdn.net/wuxiaosi808/article/details/81456468