首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据预处理(一)

比较不同标准化方法(scalers)对包含离群值数据集的影响

本章简单介绍几个转化方法对离群值的影响,以及scikit-learn中对应的函数。更加详细的内容会在下章做介绍。

在加利福尼亚房屋数据集中(http://www.dcc.fc.up.pt/~ltorgo/Regression/cal_housing.html), 特征0(街区收入中位数) 和特征5(家庭数量)不仅在取值尺度上有很大区别,特征内部也有很大的离群值。这不但增加了将两个特征可视化的难度,而且会降低很多机器学习算法的预测性能。这些未标准化的数据还会降低基于梯度学习算法的收敛速度,甚至导致不收敛。

其实,很多机器学习算法是假定了数据的每个特征都在零附近取值,并且各个特征间的取值尺度差别不大。尤其是基于指标(metric-based)和基于梯度(gradient-based)的算法会假定数据是标准化了的(特征都在均值周围取值且有单位方差的限制)。基于决策树的算法(decision tree-based)是一个例外,它对任意缩放的数据具有鲁棒性。

下面的例子中使用了不同的标准化(scalers)、变换(transformers)、正则化(normalizers)方法,将数据映射到预定义的范围内。

标准化(scalers)是一种线性变换(更准确的仿射变换),在估计用来移动和缩放特征的参数时,它有所不同。

提供了一种非线性转换,离群值与正常值之间的距离被缩小了。

正则化是对样本特征向量的转换,而不是对特征。

sklearn中的相关函数如下,会在接下来的章节中介绍到:

源数据

每一个转换都会被绘制到两个二维坐标图中:左边的图是整个数据集,右边的图是在省略了离群值之后做了放大。大多数的样本其实集中在[0,10]的收入中位数区间和[0,6]的房屋数量区间内。但是有一些离群值,比如有的街区有超过1200个房屋。对于应用来说,数据预处理可以提升效果。在下文中,给出了对这些离群值的预处理方法和见解。

以下是源数据:

标准化

对应函数。

标准化会去掉均值,将数据压缩到单位方差内。然而,离群值会影响经验方差和偏差的计算结果,压缩后的结果如下左图所示。需要注意的是,离群值在不同的特征上离群的程度不同,这会影响转换后各个特征的分布区间:收入中位数集中在[-2,4]区间,而房屋数量被压缩集中到[-0.2,0.2]。

因此不能保证在离群值存在的情况下平衡各个特征的尺度,如下图:

最大最小标准化

对应函数。

会重新调整数据集,如下图,将所有特征映射到[0,1]。这个转换后,房屋数量主要分布在[0,0.005]区间内。可以看出和都对离群值敏感。

绝对值最大标准化

对应函数。

和相似,不同的是它会将绝对值映射到[0,1]区间内。对于只有正数的数据,两者没有区别。所以也会受到离群值的影响。

Robust标准化

对应函数为。

与以上转化不同的是,这个转化的中心和尺度统计值是基于百分位数值的,因此不会受到个别离群值的影响。因此,这个转化的取值区间比上面提到的转化要大,并且,各个特征的区间会大致相似:转化后,两个特征都大致分布在区间[-2,3]上。当然,离群值还是存在的。如果可以对离群值做剪裁,那么就需要非线性转换。

Quantile Transformer(uniform output)

对数据做非线性转换,每个特征的概率分布函数(probability density function)都会被映射为均匀分布(uniform distribution)。这个例子中,所有的数据都映射到了[0,1]区间内,包括离群值。

和一样,都对离群值有鲁棒性。但不同的是会将所有离群值也压缩到设置好的边界范围内。

Quantile Transformer(Gaussian output)

有一个参数,允许将数据的概率分布函数映射为高斯分布。

正则化

函数为。

以上介绍的转换是对每个特征分别进行处理。而是将每个样本的特征向量缩放到单位范数(范数为1)。如下图所示,所有样本点都映射到单位圆上。因为我们的样本特征都是正数,所以所有数据都映射到了第一象限。

参考文献:

https://blog.csdn.net/simple_the_best/article/details/71167786

https://blog.csdn.net/csmqq/article/details/51461696

http://scikit-learn.org/stable/auto_examples/preprocessing/plot_all_scaling.html#sphx-glr-auto-examples-preprocessing-plot-all-scaling-py

https://blog.csdn.net/u012845311/article/details/65443952

https://blog.csdn.net/ICERON/article/details/80243198

欢迎指正

yuefeng_liu@foxmail.com

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180702G1USFC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券