zoukankan      html  css  js  c++  java
  • 归一化输入向量

    1.为什么需要归一化?维基百科给出的解释:1)归一化后加快了梯度下降求最优解的速度;2)归一化有可能提高精度。

    1)加快梯度下降求解速度

      斯坦福机器学习视频做了很好的解释:https://class.coursera.org/ml-003/lecture/21

          如下图所示,蓝色的圈圈图代表的是两个特征的等高线。其中左图两个特征X1和X2的区间相差非常大,X1区间是[0,2000],X2区间是[1,5],其所形成的等高线非常尖。当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛;

          而右图对两个原始特征进行了归一化,其对应的等高线显得很圆,在梯度下降进行求解时能较快的收敛。

          因此如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。

    2)归一化提高精度

      对于一些依赖于样本距离的应用来说,比如KNN,通过求解与样本之间的距离来进行分类。这时候如果样本过大,那么它将占有主导作用,可能会影响分类的结果。

    2.归一化的类型

    1)线性归一化

    x' = frac{x - 	ext{min}(x)}{	ext{max}(x)-	ext{min}(x)}

          这种归一化方法比较适用在数值比较集中的情况。这种方法有个缺陷,如果max和min不稳定,很容易使得归一化结果不稳定,使得后续使用效果也不稳定。实际使用中可以用经验常量值来替代max和min。

    2)标准差标准化

      经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:

      其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

    3)非线性归一化

         经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括 log、指数,正切等。需要根据数据分布的情况,决定非线性函数的曲线,比如log(V, 2)还是log(V, 10)等。

    非学无以广才,非志无以成学! 【Magic_chao

  • 相关阅读:
    2012年的结束
    学习嵌入式的点滴(一)
    面试的点滴(一)
    学习嵌入式的点滴(二)
    DB2 SQL脚本批量执行(转)
    联邦数据库的一个例子(转)
    在 DB2 9.7 for Linux, UNIX, and Windows 上运行 Oracle 应用程序(转)
    WINDOWS批处理命令详解(转)
    SQL1159 Initialization error with DB2 .NET Data Provider, reason code 2;reason code 10
    Oracle Package中的包变量的使用(转)
  • 原文地址:https://www.cnblogs.com/logo-88/p/8995732.html
Copyright © 2011-2022 走看看