作者: 时晴

说起"炼丹"最耗时的几件事,首先就能想到的就是数据清洗,特征工程,还有调参.特征工程真的是老生常谈了,但是特征工程又是最重要的一环,这一步做不好怎么调参也没用.在特征工程中,做特征缩放是非常重要的,如下图所示:

我们可以看到,在没做特征缩放前,用kmeans跑出的聚类结果就如图所示,以y=0为分界线,上面是一类,下面是一类,相当的离谱.主要原因就是y值的取值范围很大,从-4000~4000,而x轴只有-5~20,熟悉kmeans算法都清楚该算法中距离度量用的是欧式距离,因此x轴的数值就变得无关紧要.所以数据预处理没做好,很多模型都将不生效.值得注意的是,scaling在数据预处理中并不是强制的,习惯用树模型的朋友们也很清楚对树模型而言,scaling对效果毫无影响.但是对于一些对距离敏感的算法影响就比较大了,如KNN,SVM,PCA,NN等.

Scaling的目的很简单,一方面是使得每列特征“范围”更接近,另一方面是让计算变得更加简单,如梯度下降在特征缩放后,将缩放的更快,效果更好,所以对于线性回归,逻辑回归,NN都需要做特征缩放:

特征缩放有很多种,我们介绍最常见的4种:

  • StandardScaler

  • RobustScaler

  • MinMaxScaler

  • MaxAbsScaler

1、StandardScaler

这种scale方法大家最熟悉了,通过减去均值再除以方差进行标准化.需要注意的是异常值对于这种scale方法的伤害是毁灭性的,因为异常值影响均值.如果你的数据是正太分布或接近正太分布,并且没有特别异常的值,可以使用该方法进行缩放.

from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import StandardScaler
df_scale = StandardScaler().fit_transform(df)

让我们看下该缩放方法,对有偏态分布的数据会产生什么影响.

我们发现,对偏态分布的数据缩放后并没有改变其分布.我们对数据做次log再缩放呢?

from sklearn.preprocessing import StandardScaler
import numpy as np
df_log = np.log(df)
df_scale = StandardScaler().fit_transform(df_log)

我们发现log使得数据接近正态分布,StandardScaler使得数据变成了标准正态分布,这种方法往往表现的更好并且降低了异常值的影响.

2、RobustScaler

from sklearn.preprocessing import RobustScaler

RobustScaler是基于中位数的缩放方法,具体是减去中位数再除以第3分位数和第一分位数之间的差值.如下所示:

因为该缩放方法用了分位点的差值,所以它降低了异常值的影响,如果你发现数据有异常值,并且懒得去修正它们,就用这种缩放方法吧.我们对比下异常值对StandardScaler和RobustScaler的影响.

我们很容易发现StandardScaler使得异常值更接近均值了,但是在RobustScaler后,异常值还是显得比较异常.

3、MinMaxScaler

from sklearn.preprocessing import MinMaxScaler

MinMaxScaler使得数据缩放到0~1之间,缩放由最小值和最大值决定,因此会受到异常值影响.并且对新出现的最大最小值并不友好.

4、MaxAbsScaler

from sklearn.preprocessing import MaxAbsScaler

该缩放方法不会破坏数据的稀疏性,也不会改变数据的分布,仅仅把数据缩放到了-1~1之间.MaxAbsScaler就是让每个数据Xi/|Xmax|,值得注意的是,该方法对异常值也相当敏感.

总结一下:

StandardScaler: 不适用于有异常值的数据;使得均值为0.

RobustScaler: 适用于有异常值的数据.

MinMaxScaler: 不适用于有异常值的数据;使得数据缩放到0~1.

MaxAbsScaler: 不适用于有异常值的数据;使得数据缩放到-1~1.


往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑黄海广老师《机器学习课程》课件合集
本站qq群851320808,加入微信群请扫码:

【机器学习】漫谈特征缩放相关推荐

  1. 机器学习如何计算特征的重要性_机器学习之特征缩放

    今天本来要发一篇推荐以下吴恩达的机器学习课程,结果过不了审核,..... 没办法这里简单提一下:课程地址:https://study.163.com/course/courseMain.htm?cou ...

  2. 机器学习基础-特征缩放交叉验证法-05

    特征缩放交叉验证法 过拟合(Overfitting)正则化(Regularized)

  3. 机器学习特征工程之特征缩放+无量纲化:数据标准化(StandardScaler)

    机器学习特征工程之特征缩放+无量纲化:数据标准化(StandardScaler) 在Andrew Ng的机器学习课程里面,讲到使用梯度下降的时候应当进行特征缩放(Feature Scaling).进行 ...

  4. 机器学习特征工程之特征缩放+无量纲化:最小最大缩放(MinMaxScaler)

    机器学习特征工程之特征缩放+无量纲化:最小最大缩放(MinMaxScaler) 在Andrew Ng的机器学习课程里面,讲到使用梯度下降的时候应当进行特征缩放(Feature Scaling).进行缩 ...

  5. 机器学习特征工程之特征缩放+无量纲化:最大绝对值缩放(MaxAbsScaler)

    机器学习特征工程之特征缩放+无量纲化:最大绝对值缩放(MaxAbsScaler) 在Andrew Ng的机器学习课程里面,讲到使用梯度下降的时候应当进行特征缩放(Feature Scaling).进行 ...

  6. 1.5 特征缩放-机器学习笔记-斯坦福吴恩达教授

    特征缩放 引子 在前一章节中,对房屋售价进行预测时,我们的特征仅有房屋面积一项,但是,在实际生活中,卧室数目也一定程度上影响了房屋售价.下面,我们有这样一组训练样本: 注意到,房屋面积及卧室数量两个特 ...

  7. 机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程

    机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程) 目录(?)[+] 一多变量的线性回归 二批处理 三特征缩放 四正规方程 五多变量非线性回归 一.多变量的线性回归 在#机 ...

  8. 吴恩达机器学习(二)多元线性回归(假设、代价、梯度、特征缩放、多项式)

    目录 0. 前言 1. 假设函数(Hypothesis) 2. 代价函数(Cost Function) 3. 梯度下降(Gradient Descent) 4. 特征缩放(Feature Scalin ...

  9. ng机器学习视频笔记(三) ——线性回归的多变量、特征缩放、标准方程法

    ng机器学习视频笔记(三) --线性回归的多变量.特征缩放.标准方程法 (转载请附上本文链接--linhxx) 一.多变量 当有n个特征值,m个变量时,h(x)= θ0+θ1x1+θ2x2-+θnxn ...

最新文章

  1. C++ 笔记(22)— STL string 类(字符串赋值、访问、拼接、查找、翻转、大小写转换)
  2. Ionic Mac 环境配置
  3. 面试官 | 线程间是如何通信的?
  4. 开学季|计算机专业的你看过来!
  5. 程序—java年月日转换
  6. 代码中的时间格式问题究竟该如何处理?
  7. java 接口嵌套接口_Java接口嵌套
  8. [转载] python实现基本算法之插入排序(Insertion Sort)
  9. SCCM2012 R2实战系列之五:发现方法
  10. 子窗口和父窗口交互 (转)
  11. Atitit mybatis3 注解模式使用总结 目录 1. mybatisdemo 1 1.1. /ormMybatis3demo/src/db.properties 1 1.2. /ormMyb
  12. 精进:如何成为一个很厉害的人--作者:采铜
  13. 【特效】UE4 Niagara 制作爆炸特效
  14. messenger支持查找附近的人功能吗_玩微信,附近的人,是否双方都在查找附近的人,才能显示?...
  15. 公务员计算机职称有哪些,2017职称考试有哪些
  16. 浏览器支持base64编码
  17. 组态王bitset用法_宇电AI系列仪表和组态王在产品检测装置中的应用
  18. JavaScript window对象之atob()和btoa()
  19. 谈一谈对JS闭包的理解
  20. java哪个软件编程好学吗_java编程好学吗?

热门文章

  1. (转)Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别
  2. C语言与sqlserver数据库
  3. MySQL内核:InnoDB存储引擎 卷1
  4. SQL中几个比较重要的系统表
  5. STM32下载库资料
  6. 第十次ScrumMeeting博客
  7. GCD -- 倒计时
  8. C# Winform中DataGridView的DataGridViewCheckBoxColumn CheckBox选中判断
  9. 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞
  10. 如何能让mediawiki实现共享