• 梯度下降02


    多重特征

    多个特征下的线性回归问题又称为:多元线性回归。这里有几个专用名词需要解释一下:

    • (x_{j}^{i})表示第i个训练样本中的第j歌特征值
    • (x^i)表示第i个训练样本的所有特征,一般是以列向量来表示。
    • m表示的是训练集的个数

    多元形式下的假设函数可以设为:(h_ heta(x)= heta_0+ heta_1x_1+ heta_2x_2+...+ heta_nx_n)这里更直观的表示这个函数,我们将( heta_0)看作房子的基本价格,将( heta_1)看为每平方米的价格,将( heta_2)看为每层的价格,等等。此时(x_1)表示的是房子的平方米,(x_2)为房屋的楼层数,等等。将其以矩阵的形式表达为:

    (h_{ heta}(x)=[ heta_0 heta_1 ... heta_n]egin{bmatrix}x_0\ x_1\..\ end{bmatrix}= heta^Tx)

    多变量下的梯度下降法

    梯度下降的表现形式相同,这里将特征数拓广至n个:(重复运行直至集聚)

    ![mul-var convergrnce](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fgcsgf29fpj209w05daa5.jpg)
    可以使用一下公式代表:$ heta_j := heta_j - alphafrac{1}{m}sum_{i=1}^{m}(h_ heta(x^{(i)})-y^{(i)})cdot x_j^{(i)}$其中j=0、1、...n

    具体的,可以通过下图对单变量和多特征变量下的梯度算法进行比较:

    ![grad descent](http://wx4.sinaimg.cn/mw690/7b8d2108gy1fgcsgfo84xj20ft08j3zw.jpg)

    梯度下降之特征缩放

    我们可以同过将输入的值统一在同一个范围内以加速梯度下降的运算速度。这是因为参数( heta)在较小的数集中相比较大的数集变化快,且较大的数集下,会出现很长时间的震荡现象(即在最小值附近徘徊)。这里介绍一种有效的方式,主要通过改变输入的值在相同的范围内以规避以上的不利现象。

    理想的情况 为:(-1leq x_{(i)}leq1)(-0.5leq x_{(i)}leq0.5)

    当然,这些并不是必要的步骤,但是这里我们是推荐这样处理,因为它对加速算法的运算帮助很大。

    主要有两种技术以统一变量:特征缩放均值归一化处理

    特征缩放将输入变量除以输入值的范围(即最大值减去最小值),从而在一个新的范围只有1。均值归一化包括从输入变量的值减去输入变量的平均值,从而使输入变量的新平均值为零,具体如下:

    (x_i := frac{x_i-mu _i}{s_i})

    式中的(mu_i)表示输入特征值得平均值,(s_i)可为取值范围(最大-最小),或可为标准差。

    比如:对于(x_i)代表房价,其范围为100-2000,其平均值为1000,有:

    (x_i := frac{price-mu _i}{s_i})

    梯度下降之学习速率

    调试梯度下降:将每一步计算出的代价函数(J( heta))绘出图形,当代价函数函数有上升趋势时,或许你该降低你的学习速率(alpha)取值。

    当每一步下的代价函数的计算值在缩减,且缩减小于某个值E(这里E的取值一般小于(10^{-3}),此时可以说明代价函数已经收敛(汇集),但一般该限值E很难确定。

    ![alpha](http://wx1.sinaimg.cn/mw690/7b8d2108gy1fgctjdk1pqj20dp070aan.jpg)
    可以说明:当学习速率$alpha$足够下,代价函数每一步都会在减少。
    ![learning rate](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fgctjdwwvuj20e3075dgc.jpg)
    总结一下:如果学习速率$alpha$的取值过小会导致汇集很慢,同样当该值较大时,可等导致每一步并不都是递增,从而不会汇聚。

    一定要确保你的梯度下降运行的正确

    多特征与多项式回归

    我们可以将多个特征组合为一个,比如:我们可以将(x_1)(x_2)组合成一个(x_3=x_1*x_2) 此外还可以将特征进行平方、立方等,这样做的原因是:我们基于线性回归的假设方程不足以很好的适应所有数据集。例如:起初的假设函数为:(h_ heta(x)= heta_0+ heta_1x_1),我们可以在此基础之上增加一个平方项和立方项为:(h_ heta(x)= heta_0+ heta_1x_1+ heta_1x_1^2+ heta_1x_1^3)

    这里需要注意:当利用多项式回归时,不可忘记在上一部分所谈到的特征缩放,因为立方项与平方后的特征值是很大的,这不利于算法的快捷运算

    版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
  • 相关阅读:
    php+redis简易消息队列
    Linux关闭selinux的方法(临时关闭和永久关闭)
    Linux清理buff/cache
    Centos禁止ping的设置方法
    浅谈mysql触发器
    mysql中left join right join inner join用法分析
    mysql主从配置详解(图文)
    mysql中的几种判断语句
    mysql锁表处理方法
    Mysql里的order by与索引
  • 原文地址:https://www.cnblogs.com/SrtFrmGNU/p/6958578.html
Copyright © 2020-2023  润新知