正则化、归一化含义解析

正则化(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两个概念。

转载自http://sobuhu.com/ml/2012/12/29/normalization-regularization.html

时间: 2024-08-28 20:06:15

正则化、归一化含义解析的相关文章

iReport默认参数和变量的含义解析【转】

iReport默认参数和变量的含义解析[转] http://uule.iteye.com/blog/775338 参考:http://blog.csdn.net/terryzero/article/details/4005858 $V{PAGE_NUMBER} 代表当前页数(可以是页码也可以是页数,通过TextField的计算时间的不同值来设置) $V{PAGE_COUNT} 当前页面中记录的数目 对于$V{PAGE_NUMBER}:当evaluationTime="Now"时,即是计

【ABAP系列】SAP ABAP SY-SUBRC的含义解析

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP SY-SUBRC的含义解析 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 使用SELECT语句选择查询:SY-SUBRC = 0: 至少有一行数据,当ENDSELECT语句执行完,SY-DBCNT中保存着记录的个数.SY-SUBRC = 4: 没有数据.SY-SUBRC = 8:

【Python】if __name__ == '__main__' 含义解析

相信大家在看别人的python程序时,可能会在大部分的程序后看到标题这段代码,这里解释下它的意义.总的来说,这句代码的作用就是既能保证当前的.py文件直接运行,也能保证其可以作为模块被其他.py文件导入. 下面我将通过几个例子帮助大家理解 demo1.py # encoding=utf-8 # -*- coding: UTF-8 -*- # print(__name__) 输出结果: 查看类型: 这说明__name__本身其实就是一个变量,不过比较特殊. 实际上,它是在程序执行前就被创建并赋值的

select_shape_proto算子的几种特征模式含义解析

select_shape_proto是一个非常有用的region筛选算子,但是由于难以理解,因此一般人使用得不是太多. 算子签名如下: select_shape_proto(Regions, Pattern : SelectedRegions : Feature, Min, Max : ) 其中Feature可以取这7种模式:'distance_center'.'distance_contour'.'distance_dilate'.'fits'.'overlaps_rel'.'overlaps

机器学习基础篇——矩阵特征值分解含义解析及应用

特征值与特征向量的几何意义: 矩阵的乘法是什么,别只告诉我只是"前一个矩阵的行乘以后一个矩阵的列",还会一点的可能还会说"前一个矩阵的列数等于后一个矩阵的行数才能相乘",然而,这里却会和你说--那都是表象. 矩阵乘法真正的含义是变换,我们学<线性代数>一开始就学行变换列变换,矩阵乘法就是线性变换,若以其中一个向量A为中心,则B的作用主要是使A发生如下变化: 伸缩 clf;     %用来清除图形的命令 A = [0, 1, 1, 0, 0;... 1, 

Ad-hoc queries含义解析

Ad hoc含义 没有预先计划或者按很低的计划或不可预期的事件 或者表明所形容的事物是一个权宜之计.不周密的计划或者是一个即兴举办的活动 Ad hoc queries(即席查询) 即席查询(Ad Hoc)是用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表.即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而即席查询是由用户自定义查询条件的. 在数据仓库领域有一个概念叫Ad hoc queries,中文一般翻译为"即席查询". 即席查询是指那些

矩阵特征值分解与奇异值分解含义解析及应用

此文有一半转载自他出,主要在这进行个整理,具体内容文中都有相关的转载链接. 特征值与特征向量的几何意义 矩阵的乘法是什么,别只告诉我只是"前一个矩阵的行乘以后一个矩阵的列",还会一点的可能还会说"前一个矩阵的列数等于后一个矩阵的行数才能相乘",然而,这里却会和你说--那都是表象. 矩阵乘法真正的含义是变换,我们学<线性代数>一开始就学行变换列变换,那才是线代的核心--别会了点猫腻就忘了本--对,矩阵乘法 就是线性变换,若以其中一个向量A为中心,则B的作用

top命令行含义解析

快捷键"1"可以快速切换显示所有cpu的信息 快捷键'x'可以高亮显示当前排序列 shift+方向键:可以快速切换排序的列 top -c 显示完整命令 load含义解释:http://www.ruanyifeng.com/blog/2011/07/linux_load_average_explained.html us:用户空间占用CPU的百分比 sy:内核空间占用CPU的百分比 ni(nice):改变过优先级的进程占用CPU的百分比 id(idle):空闲CPU百分比 wa(wait

Qualcomm手机NV中某些项的含义解析

1. tdscdma_op_plmn_list<NvEfsItem fullpathname="/nv/item_files/modem/nas/tdscdma_op_plmn_list" name="UNKNOWN" mapping="direct" encoding="dec" index="0">4,100,240,0,100,240,32,100,240,112,100,240,128,