zoukankan      html  css  js  c++  java
  • 正则化、归一化含义解析

    原文地址 http://sobuhu.com/ml/2012/12/29/normalization-regularization.html

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

    前言


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

    一、正则化(Regularization)


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

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

    L(yi,f(xi))=yisigmoid(xi)

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

    为了解决过拟合问题,通常有两种办法:

    第一是减少样本的特征(即维度);

    第二就是我们这里要说的”正则化“(又称为”惩罚“,penalty)。

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

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

    后面的niλw2i就是正则化项,其中λ越大表明惩罚粒度越大,等于0表示不做惩罚,N表示所有样本的数量,n表示参数的个数。

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

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

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

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

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

    二、归一化(Normalization)


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

    • 面积(S):150 平方米

    • 年代(Y):5 年

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

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

    distance=λ|Δ|

    其中|Δ|表示梯度的模,λ表示步长,如果两个向量的取值范围差别特别大,那么这两个向量的图像会显得很“细长”:

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

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

    xi=xix¯xmaxxmin

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

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

    后记


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

  • 相关阅读:
    lambda表达式查询经验:IN 和groupby的使用
    Sql server 查询指定时间区间工作日数、休息日数等日期操作
    ASP.NET MVC用存储过程批量添加修改数据
    .NET十五周年生日快乐 (3月7日发布Visual Studio 2017正式版?)
    浅谈 MVC中的ViewData、ViewBag和TempData
    ASP.NET给前端动态添加修改 CSS样式JS 标题 关键字
    元宵节大家来猜灯谜,祝元宵节快乐!
    Visual Studio 2017 RC 初探安装
    MySql存储过程的使用
    准备熟悉Kaggle -菜鸟进阶
  • 原文地址:https://www.cnblogs.com/walccott/p/4956960.html
Copyright © 2011-2022 走看看