数据归一化、标准化和正则化

1. 归一化(Normalization)

将数据集中某一列数值特征的值缩放到0-1区间内:
在这里插入图片描述
x是指一列的值,x_i是列中的每一个,min(x)是这一列的最小值,max(x)是这一列的最大值。
当要求特征必须是在0-1之间的,此时必须要使用归一化。

2. 标准化(Standardization)

将数据集中某一列数值特征的值缩放成平均值为0,标准差为1的状态:
在这里插入图片描述

!深坑
求mean并不存在什么异议,但是求std时就会有问题了,涉及到分母中是n还是(n-1)。

(1) 如果对一维数组x=[1,2,3]求std,那么np.std(x)=x.std()=0.8164……,这个结果是不正确的,一定要设置ddof=1,因为该方法中分母为(n-ddof),而默认的ddof=0,所以设置ddof=1才能满足公式中分母为(n-1);
(2) 如果对多维数组x=[[1,0,2],[-1,0,-2]]求std,因为在数据集中对**列**进行标准化才有意义,所以np.std(x,axis=0)=x.std(axis=0)=[1,0,2],这时候不用再设置ddof=1;如果不设置axis=0,那么则认为对全部数字求std,与对x=[1,0,2,-1,0,-2]求std没区别,所以仍然需要设置ddof=1;

与归一化相比,标准化的使用更为常见,原因如下:

  • 标准化更好的保持了样本间距。当样本中有异常点时,归一化有可能将正常的值“挤”到一起去,而标准化则不会。例如[1,2,10000],假设10000是异常值,那么归一化之后就变成了[0, 0,0001, 1],正常的1,2就会被“挤”到一起去。如果不幸的是1和2的分类标签还是相反的,那么,当我们用梯度下降来做分类模型训练时,模型会需要更长的时间收敛,因为将样本分开需要更大的努力!但是标准化的结果是[-0.70721286,0.7070007,1.41421356],不会将样本“挤到”一起去;
  • 标准化更符合统计学假设。对于一个数值特征来说,很大可能它是服从正太分布的,而标准化是基于这个假设,将正态分布调整为标准正态分布;

3. 正则化(Regularization)

将数据集中某一个样本缩放成单位标准:
在这里插入图片描述

正则化(normalization)与归一化和标准化不同,归一化和标准化是对数据集中的列进行的操作,而正则化是对数据集中的行进行的操作。
常见的正则化是L2正则化,即使用L2范数,这也就是将向量单位化的过程。

4. 面试问题:

第一步:逻辑回归必须要使用标准化吗?
这取决于我们是不是使用正则化项,如果使用正则,那么标准化是必须的,如果不使用正则,标准化并不是必须的。
目标函数 = 损失函数 + 正则化项,损失函数只是度量预测与真实值之间的差距,而正则化项会度量参数值是否足够小,参数值的大小程度与特征值的范围是相关的。比如用体重预测身高,身高=体重*w,如果体重用kg来衡量和用吨来衡量,w就会变化1000倍;另外对于不同的特征,如果一个特征的范围是0-1,另一个特征的范围是100-1000,那么每个特征对应的参数级别也会不同,在L1正则中,是将所有的参数相加,由于参数的级别不同,导致L1最后只对那些级别较大的参数起作用,级别较小的参数都被忽略了。
第二步:不使用正则化项,标准化对逻辑回归有好处吗?
当然有好处!标准化后,得到的参数可以反映不同特征对label的贡献程度,方便进行特征筛选,如果不进行标准化,是不能这样来筛选特征的。
第三步:做标准化有什么注意事项吗?
最大的注意事项就是将整个datasets划分成train和test,然后对train上的数据进行标准化,因为如果在整个datasets上进行标准化,就会将test的信息引入train。

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值