特征预处理:归一化/标准化/缺失值

转载于https://www.pianshen.com/article/3411681144/

感谢

什么时候需要标准化和归一化?

那么是否任何情况都有必要进行标准化归一化呢?答案是否定的。我们所熟知的决策树、随机森林等概率模型,就不需要。因为它们并不关心变量的值,而是关心变量的分布和变量之间的条件概率。

当变量的值影响模型的训练效果时,我们使用,否则不需要。

有时候,我们必须要特征在0到1之间,此时就只能用归一化。有种svm可用来做单分类,里面就需要用到归一化,由于没有深入研究,所以我把链接放上,感兴趣的可以自己看。

当然,也不是所有的模型都需要做归一的,比如模型算法里面有没关于对距离的衡量,没有关于对变量间标准差的衡量。比如decision tree 决策树,他采用算法里面没有涉及到任何和距离等有关的,所以在做决策树模型时,通常是不需要将变量做标准化的。


举例:

Kmeans,KNN一些涉及到距离有关的算法,或者聚类的话,都是需要先做变量标准化的。

KNN,欧氏距离要计算变量之间的距离,变量量级不统一,影响模型,故使用标准化。

 逻辑回归是不是用正则

如果你不用正则,那么,标准化并不是必须的,如果你用正则,那么标准化是必须的。(暗坑3)
为什么呢?
因为不用正则时,我们的损失函数只是仅仅在度量预测与真实的差距,加上正则后,我们的损失函数除了要度量上面的差距外,还要度量参数值是否足够小。而参数值的大小程度或者说大小的级别是与特征的数值范围相关的。假如不同的特征的数值范围不一样,有的是0到0.1,有的是100到10000,那么,每个特征对应的参数大小级别也会不一样,在L1正则时,我们是简单将参数的绝对值相加,因为它们的大小级别不一样,就会导致L1最后只会对那些级别比较大的参数有作用,那些小的参数都被忽略了。

如果不用正则,那么标准化对逻辑回归有什么好处吗?

答案是有好处,进行标准化后,我们得出的参数值的大小可以反应出不同特征对样本label的贡献度,方便我们进行特征筛选。如果不做标准化,是不能这样来筛选特征的。

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

标准化/归一化的好处

2.1 提升模型精度

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

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

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

2.2 提升收敛速度

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

为什么标准化后的建模时间会短呢?这时候就要说起寻找系数最优解-梯度下降法。

标准化前,由于变量的单位相差很大,导致了椭圆型的梯度轮廓。标准化后,把变量变成统一单位,产生了圆形轮廓。由于梯度下降是按切线方向下降,所以导致了系统在椭圆轮廓不停迂回地寻找最优解,而圆形轮廓就能轻松找到了。

还有一种比较极端的情况,有时没做标准化,模型始终找不到最优解,一直不收敛。


注意点:

  • 归一化
    就是将训练集中某一列数值特征(假设是第i列)的值缩放到0和1之间。方法如下所示:

  • 标准化
    就是将训练集中某一列数值特征(假设是第i列)的值缩放成均值为0,方差为1的状态。

  • (归一化和标准化的相同点都是对某个特征(column)进行缩放(scaling)而不是对某个样本的特征向量(row)进行缩放)

  • 标准化是更常用的手段,归一化的应用场景是有限的。(1.标准化更好保持了样本间距。当样本中有异常点时,归一化有可能将正常的样本“挤”到一起去2、标准化更符合统计学假设)

  • 做标准化有什么注意事项吗?

    最大的注意事项就是先拆分出test集,不要在整个数据集上做标准化,因为那样会将test集的信息引入到训练集中,这是一个非常容易犯的错误!


     一、特征预处理是采用特定的统计方法(数学方法)将数据转化成算法要求的数字。

1.数值型数据:

归一化(将原始数据变换到[0,1]之间)
标准化(把数据转化到均值为0,方差为1的范围内)
缺失值(将缺失值处理成均值、中位数等)

2.类别型数据:

降维(将多指标转化为少数几个综合指标)
PCA(降维的一种)

3.时间类型:

时间的切分名

 二、数值型

1、归一化

缺点:

容易受异常值的影响,即非常容易受最大值和最小值的影响,若有一个异常值很大,则会导致其他数据变得非常小,因此这种方法的鲁棒性(稳定性)比较差,只适合数据量比较精确,比较小的情况。

2、标准化

常用的方法是z-score标准化,经过处理后的数据均值为0,标准差为1,满足标准正太分布,标准正太分布如下:

3、缺失值的处理skl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值