转:归一化与正则化

正则化、归一化含义解析



2012-12-29

正则化(Regularization)、归一化(也有称为正规化/标准化,Normalization)是对数据尽心预处理的方式,他们的目的都是为了让数据更便于我们的计算或获得更加泛化的结果,但并不改变问题的本质,下面对他们的作用分别做一下科普,如有不正确之处,求指正!

前言



需要注意的是,这些名词在不同的领域含义也有点区别,这里仅仅指的是在进行机器学习研究的时候所使用的意义。

一、正则化(Regularization)



李航博士在《统计学习方法》中提到,统计学习的三要素是模型、策略和算法,在机器学习领域,这个“模型”就是我们要求解的概率分布或决策函数。

假设我们现在要求一个逻辑回归问题,首先我们要做的是假设一个函数,可以覆盖所有的可能:y=wx,其中w为参数向量,x为已知样本的向量,如果用$y{i}表示第i个样本的真实值,用f(x{i})$表示样本的预测值,那么我们的损失函数可以定义为:

L(yi,f(xi))=yi−sigmoid(xi)

这里可以不用关心这个函数是什么意思,就知道代表误差就行了。对于该模型y=wx的所有样本的损失平均值成为“经验风险”(empirical risk)或”经验损失”(empirical loss)。很显然,经验风险最小化(empirical risk minimization,ERM)就是求解最优模型的原则。为了达到这个目的,模型的设定会越来越复杂,最后造成该模型只适用于当前的样本集(即over-fitting,过拟合)。

为了解决过拟合问题,通常有两种办法,第一是减少样本的特征(即维度),第二就是我们这里要说的”正则化“(又称为”惩罚“,penalty)。

正则化的一般形式是在整个平均损失函数后增加一个正则项(L2范数正则化,也有其他形式的正则化,他们的作用也不同):

Rerm=1N(∑iNL(yi,f(xi))+∑inλw2i)

后面的$\sum{i}^{n}\lambda w{i}^2就是正则化项,其中\lambda$越大表明惩罚粒度越大,等于0表示不做惩罚,N表示所有样本的数量,n表示参数的个数。

从下面的图中,可以很明显的看出正则化函数的作用:

λ=0的情况,即没有正则化

λ=1的情况,即合适的惩罚

λ=100,过度惩罚,出现欠拟合问题

上面提到,我们还有其他形式的正则化,如L1范式正则化,可以用来筛选参数,这个日后再通过额外的文章来介绍。

二、归一化(Normalization)



我们在对数据进行分析的时候,往往会遇到单个数据的各个维度量纲不同的情况,比如对房子进行价格预测的线性回归问题中,我们假设房子面积(平方米)、年代(年)和几居室(个)三个因素影响房价,其中一个房子的信息如下:

  • 面积(S):150 平方米
  • 年代(Y):5 年

假设我们把该问题作为一个逻辑回归问题y=wx来求解,使用梯度下降来求解w的最优值。

效率比较高的梯度下降方法中,每次下降应该尽可能的往最优点靠近,假设下降距离函数为:

$$distance = \lambda \Delta^* $$
其中$ \Delta^* 表示梯度的模,\lambda$表示步长,如果两个向量的取值范围差别特别大,那么这两个向量的图像会显得很“细长”:

我们的梯度在寻找最优值的时候,由于图像“细长”,所以要来回找垂直线,两个维度范围相差的越大,梯度下降的越慢,还可能永远无法收敛。

为了解决这个问题,假如我们把所有的数据范围都是用归一化处理在0到1的区间内(也可以是0到10等其他范围,但一般是0到1),如使用以下归一化公式:

x\*i=xi−x¯xmax−xmin

我们的图像就会变得更加“正圆”一些:

我们可以很清楚的看到 ,梯度会更加快速的找到最优点。

后记



其实这篇文章写之前,我还纠结了很久“标准化(Standardization)”这个概念,最后请教了很多人,发现大家最常用的还是归一化和正则化两个概念。不同的场合大家的称谓也不同,总结起来还是按照英文来说比较没有歧义:Normalization和Regularization两个概念。

时间: 2024-08-17 06:22:07

转:归一化与正则化的相关文章

关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化

一.标准化(Z-Score),或者去除均值和方差缩放 公式为:(X-mean)/std  计算时对每个属性/每列分别进行. 将数据按期属性(按列进行)减去其均值,并处以其方差.得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1. 实现时,有两种不同的方式: 使用sklearn.preprocessing.scale()函数,可以直接将给定数据进行标准化. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 >>> from skle

[Scikit-Learn] - 数据预处理 - 归一化/标准化/正则化

reference: http://www.cnblogs.com/chaosimple/p/4153167.html 一.标准化(Z-Score),或者去除均值和方差缩放 公式为:(X-mean)/std  计算时对每个属性/每列分别进行. 将数据按期属性(按列进行)减去其均值,并处以其方差.得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1. 实现时,有两种不同的方式: 使用sklearn.preprocessing.scale()函数,可以直接将给定数据进行标准化. 1

使用sklearn进行数据预处理 —— 归一化/标准化/正则化

一.标准化(Z-Score),或者去除均值和方差缩放 公式为:(X-mean)/std  计算时对每个属性/每列分别进行. 将数据按期属性(按列进行)减去其均值,并处以其方差.得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1. 实现时,有两种不同的方式: 使用sklearn.preprocessing.scale()函数,可以直接将给定数据进行标准化. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 >>> from skle

数据归一化,标准化,正则化

http://blog.csdn.net/pipisorry/article/details/52247379 http://webdataanalysis.net/data-analysis-method/data-normalization/ http://www.csuldw.com/2015/11/15/2015-11-15%20normalization/ http://blog.csdn.net/Dream_angel_Z/article/details/49406573 http:

正则化、归一化含义解析

正则化(Regularization).归一化(也有称为正规化/标准化,Normalization)是对数据尽心预处理的方式,他们的目的都是为了让数据更便于我们的计算或获得更加泛化的结果,但并不改变问题的本质,下面对他们的作用分别做一下科普,如有不正确之处,求指正! 前言 需要注意的是,这些名词在不同的领域含义也有点区别,这里仅仅指的是在进行机器学习研究的时候所使用的意义. 一.正则化(Regularization) 李航博士在<统计学习方法>中提到,统计学习的三要素是模型.策略和算法,在机器

kaggle Titanic心得

Titanic是kaggle上一个练手的比赛,kaggle平台提供一部分人的特征,以及是否遇难,目的是预测另一部分人是否遇难.目前抽工作之余,断断续续弄了点,成绩为0.79426.在这个比赛过程中,接触并了解了一些数据挖掘比赛的基本流程,现记录一下. 1. 分析数据 因为数据量比较小,train有800多条数据,test有400多条数据,因此这里用了execl的数据透视表分析. 同时python提供pandas库,可以很好的分析数据. 2. 缺失值填充 关于Age,Fare,Embarked三个

系列5-多入单出的一层神经网络能做什么

全套教程请点击:微软 AI 开发教程 知识点 多元线性回归 输入层的矩阵运算设计 样本数据归一化 提出问题 假设有如下这样一个问题:有1000个样本,每个样本有三个特征值,一个标签值.想让你预测一下给定任意三个特征值组合,其y值是多少? 样本序号 1 2 3 4 ... 1000 样本特征值1 1 4 2 4 ... 2 样本特征值2 3 2 6 3 ... 3 样本特征值3 96 100 54 72 ... 69 样本标签值y 434 500 321 482 ... 410 这就是典型的多元线

深入浅出计算机组成原理:解读TP-设计和拆解一块ASIC芯片(第33讲)

一.引子 过去几年,最知名.最具有实用价值的ASIC就是TPU了.各种解读TPU论文内容的文章网上也很多.不过,这些文章更多地是从机器学习或者AI的角度,来讲解TPU. 上一讲,我为你讲解了FPGA和ASIC,讲解了FPGA如何实现通过“软件”来控制“硬件”,以及我们可以进一步把FPGA设计出来的电路变成一块ASIC芯片. 不过呢,这些似乎距离我们真实的应用场景有点儿远.我们怎么能够设计出来一块有真实应用场景的ASIC呢?如果要去设计一块ASIC,我们应该如何思考和拆解问题呢?今天,我就带着你一

使用Tensorflow搭建回归预测模型之二:数据准备与预处理

前言: 在前一篇中,已经搭建好了Tensorflow环境,本文将介绍如何准备数据与预处理数据. 正文: 在机器学习中,数据是非常关键的一个环节,在模型训练前对数据进行准备也预处理是非常必要的. 一.数据准备: 一般分为三个步骤:数据导入,数据清洗,数据划分. 1.数据导入: 数据存放在原始格式多种多样,具体取决于用于导入数据的机制和数据的来源.比如:有*.csv,*.txt,*xls,*.json等. 2.数据清洗: 数据清洗主要发现并纠正数据中的错误,包含检查数据的一致性,数据的无效值,以及缺