机器学习入门 4-7 数据归一化

  • 2019 年 11 月 13 日
  • 笔记

本系列是《玩转机器学习教程》一个整理的视频笔记。本小节主要介绍数据归一化(Feature Scaling)。

为什么要进行数据归一化

下面使用肿瘤的例子:

通过欧拉距离衡量两个样本之间的距离,虽然两个样本的肿瘤大小是5倍,肿瘤发现时间是2倍,但是计算两个样本之间距离的时候,由于量纲不同,距离被肿瘤发现的天数所主导。

如果我们把肿瘤发现的时候调整为年的话:

此时两个样本之间的距离又被肿瘤大小所主导,将肿瘤发现的时间转换为年的话,0.55-0.27差值变的特别的小,而在这个量纲下,5-1又相对特别的,因此如果不对数据进行一些基本的处理的话,直接计算两个样本之间的距离很有可能是有偏差的,不能非常好的同时反映样本中每一个特征的重要程度,正是因为如此,我们需要对数据进行归一化的处理。

这里说一下什么是有明显边界情况,比如有一组特征是学生的考试分数,分数显然就是有明显的边界,他的最小值可能就是0分,最大值可能为100分。还有一个例子,比如图像像素的每一个像素点,他的像素范围通常是[0, 255]之间。但是这些拥有明显边界情况的受outlier的影响比较大。

还有一类情况就是没有明显的边界,比如收入问题,没有固定的收入范围,有的人收入极其高,一旦有了这个outlier对使用最值归一化的影响就比较大,比如大多数人的月收入是1万块钱,有一个人的月收入是100万元,如果使用最值归一化将其映射到0-1之间的话,哪个100万元的特征一定是1,大多数人由于是1万元左右,因此被归一化到0.01左右,可想而知,这种映射结果是不够好的,相应的改进方式是使用均值方差归一化(standardization):

均值方差归一化比较实用数据分布没有明显边界,有可能存在outlier的情况,但是在有明显分布边界的情况下表现也是非常好的。老师的建议:除非前面学生考试分数,图像的像素这种有非常明确的特征分布边界的情况,一般情况,我们都使用均值方差归一化就可以。

下面先使用最值归一化:

均值方差归一化: