Batch Norm常用方法
在运用一些机器学习算法的时候不可避免地要对数据进行特征缩放(feature scaling),比如:在随机梯度下降(stochastic gradient descent)算法中,特征缩放有时能提高算法的收敛速度。
特征缩放的目标就是数据规范化,使得特征的范围具有可比性。它是数据处理的预处理,对后面的使用数据具有关键作用。
机器算法为什么要特征缩放?
- 特征缩放还可以使机器学习算法工作的更好。比如在K近邻算法中,分类器主要是计算两点之间的欧几里得距离,如果一个特征比其它的特征有更大的范围值,那么距离将会被这个特征值所主导。因此每个特征应该被归一化,比如将取值范围处理为0到1之间。
- 第二个原因则是,特征缩放也可以加快梯度收敛的速度。
"标准化"和"归一化"这两个中文词要指代四种Feature scaling(特征缩放)方法。
数据的归一化和缩放非常重要,会影响到特征选择和对真实业务问题的判定。
特征缩放的方法
调节比例(Rescaling)(不免疫outlier)
这种方法是将数据的特征缩放到[0,1]或[-1,1]之间,使得完整向量具有长度1。缩放到什么范围取决于数据的性质。对于这种方法的公式如下:
x′=x−min(x)max(x)−min(x)x^\prime = \frac{x-min(x)}{max(x)-min(x)} x′=max(x)−min(x)x−min(x)
xxx是最初的特征值,x′x^\primex′是缩放后的值。
适用场景:
- 如果对输出结果范围有要求,用归一化
- 如果数据较为稳定,不存在极端的最大最小值,用归一化
缺点:这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。
from sklearn.preprocessing import MinMaxScaler#初始化一个scaler对象
scaler = MinMaxScaler()#调用scaler的fit_transform方法,把我们要处理的列作为参数传进去
data['标准化后的A列数据'] = scaler.fit_transform(data['A列数据'])
平均值规范化(Mean normalization)(不免疫outlier)
x′=x−mean(x)max(x)−min(x)x^\prime = \frac{x-mean(x)}{max(x)-min(x)} x′=max(x)−min(x)x−mean(x)
适用场景:矩阵分解
标准化(Standardization)(不免疫outlier)
特征标准化使每个特征的值有零均值(zero-mean)和单位方差(unit-variance)。这个方法在机器学习地算法中被广泛地使用。例如:SVM,逻辑回归和神经网络。这个方法的公式如下:
x′=x−mean(x)std(x)x^\prime=\frac{x-mean(x)}{std(x)} x′=std(x)x−mean(x)
标准差的定义为:
std(x)=∑(x−mean(x))2nstd(x)=\sqrt{\frac{\sum(x-mean(x))^2}{n}} std(x)=n∑(x−mean(x))2
适用场景:
- SVM、LR、神经网络
- 如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响
# 方法1
from sklearn.proprocessing import scale
df_train['feature'] = scale(df_train['feature'])# 方法2
# 一般会把train和test集放在一起做标准化,或者在train集上做标准化后,用同样的标准化器去标准化test集,此时可以用scaler
from sklearn.proprocessing import StandardScaler
scaler = StandardScaler().fit(df_train)
scaler.transform(df_train)
scaler.transform(df_test)
缩放到单位长度(Scaling to unit length)(不免疫outlier)
x′=x∥x∥x^\prime = \frac{x}{\left \| x \right \|} x′=∥x∥x
就是除以向量的欧拉长度( the Euclidean length of the vector),二维范数。相当于每个组件除以向量的欧几里德(也就是欧拉)长度。
这种方式在TansE中比较常见。
绝对值标准化(不免疫outlier)
专为稀疏数据而生。将每个要素缩放到[-1,1]范围,它不会移动/居中数据,因此不会破坏任何稀疏性。该估计器单独地缩放每个特征,使得训练集中的每个特征的最大绝对值将是1.0。该缩放器也可以应用于稀疏CSR或CSC矩阵
鲁棒性标准化(免疫outlier)
专为异常值而生。标准差标准化(第一种,最常用的那种)对数据中出现的异常值处理能力不佳,因此诞生了robust_scale,这种不怕异常值扰动的数据缩放法。此Scaler根据分位数范围(默认为IQR:Interquartile Range)删除中位数并缩放数据。 IQR是第1四分位数(第25个分位数)和第3个四分位数(第75个分位数)之间的范围。
Batch Norm常用方法相关推荐
- dropout,batch norm 区别 顺序
20210614 https://www.cnblogs.com/hutao722/p/9946047.html 深度学习基础系列(九)| Dropout VS Batch Normalization ...
- 吴恩达深度学习(53)-Batch Norm 为什么奏效?
https://www.toutiao.com/a6640433472697532942/ 2019-01-04 07:35:33 Batch Norm 为什么奏效?(Why does Batch N ...
- Batch Norm、Layer Norm、Instance Norm、Group Norm、Switchable Norm总结
转自https://blog.csdn.net/qq_41997920/article/details/89945972 目录 1.综述 1. BN 2. LN 3. IN 4. GN 5. SN 2 ...
- 2.3.2 Batch Norm介绍
正则化网络的激活函数 Batch归一化会使你的参数搜索变得很容易,使神经网络对超参数选择变得更加稳定.超参数范围会更庞大,工作效率也会更好.也会让你训练出更为深层次的神经网络.下面我们具体介绍一下Ba ...
- 40_pytorch Batch Norm
1.37.Batch Normalization,批规范化 1.37.1.Batch Norm介绍 1.37.2.Intuitive explanation 1.37.3.Intuitive expl ...
- 02.改善深层神经网络:超参数调试、正则化以及优化 W3. 超参数调试、Batch Norm和程序框架(作业:TensorFlow教程+数字手势预测)
文章目录 1. 探索TensorFlow库 1.1 线性函数 1.2 计算 sigmoid 1.3 计算损失函数 1.4 One_Hot 编码 1.5 用0,1初始化 2. 用TensorFlow建立 ...
- 02.改善深层神经网络:超参数调试、正则化以及优化 W3. 超参数调试、Batch Norm和程序框架
文章目录 1. 调试处理 2. 为超参数选择合适的范围 3. 超参数调试的实践 4. 归一化网络的激活函数 5. 将 Batch Norm 拟合进神经网络 6. Batch Norm 为什么奏效 7. ...
- 机器学习、深度学习实战细节(batch norm、relu、dropout 等的相对顺序)
cost function,一般得到的是一个 scalar-value,标量值: 执行 SGD 时,是最终的 cost function 获得的 scalar-value,关于模型的参数得到的: 1. ...
- 详解常用的Batch Norm、Group Norm,Layer norm、Instance Norm
本文主要分析cv中常用的batch norm, group norm方法,由于目标检测中不常见,因此只是简单介绍并理解Layer norm和Instance Norm的概念.首先cv中用的最多的肯定是 ...
最新文章
- 这种有序神经元,像你熟知的循环神经网络吗?
- java 实体类包含list 怎么取值_舅舅是面试官,偷偷告诉你们面试官最爱问的Java面试题...
- 2019年平面设计趋势
- C++子类析构时要调用父类的析构函数吗?
- python中不包不包括_Unittest-断言列表中的一组项包含在(或不包含在)另一个lis中...
- where T:new() 是什么意思
- 特征提取与检测(五) : LBP特征
- python 爬虫论_python爬虫——论抓包的正确姿势和学好Javascript的重要性(1)
- css文本行高是哪个属性_css属性行高line-height的用法详解
- 惯性室内导航入门之PDR (步行者航位推算)
- 学计算机人都很自私,心理学家:内心极度虚伪的人,往往都有这三个特征,趁早远离!...
- IBM 中国研究院面试经历
- 七个合法学习黑客技术的网站,让你从萌新成为大佬
- 一文深入分析|RCU原理
- 汽车轮毂识别项目介绍
- 小米机型TWRP_recovery合集分享-支持米9等新机
- Revit插件推荐[四]
- 神奇的smallcodeking...
- 从零开始搭建webpack的vue生产/开发环境
- Delphi之东进数字语音卡(SS1)可复用源码
热门文章
- FuncT,TResult泛型委托
- Flex与.NET互操作(八):使用FluorineFx网关实现远程访问
- 浅析三种特殊进程:孤儿进程,僵尸进程和守护进程
- Loadrunner基础:Loadrunner Vuser基本概念和应用
- PHP的break与continue
- PHP通过CURL或file_get_contents请求第三方地址
- asp.netkg117《计算机网络》教学网站的设计与实现,《计算机网络》教学网站的设计与实现 毕业论文.doc...
- PHP5.2至5.6的新增功能详解
- 清官谈mysql中utf8和utf8mb4区别,请使用utf8mb4
- mysql集群session_Jetty9.2.2集群Session共享