zoukankan      html  css  js  c++  java
  • 【Stanford Machine Learning Open Course】3. 线性回归问题两种解法:正规方程组解法 & 梯度下降法

    这里是斯坦福大学机器学习网络课程的学习笔记。课程地址是:https://class.coursera.org/ml-2012-002/lecture/index

     

    如上一节:线性回归问题介绍 中所讲, 解决线性回归问题,其实就是找使成本函数最小值的点。

    成本函数:J(a,b)=1/2m * sum[(a+bx)-y]2

    多特征情况下成本函数为:J(a) = 1/2m *sum( (Xa-y).^2),

                其中X是m*n矩阵,a是n*1特征权重向量,y是n*1向量,m为样本个数,n为特征个数,X(i,j)为第i个样本中第j个特征的值。

    1. 正规化方程组解法:

         要取得J(a)的最小值,只需要求出J(a)关于a的导数为0点即可。

         导数函数,记为J'(a) = 1/m*((Xa-y)T*X)T

         令J'(a)=0, 则a=(XT*X)-1*XT*y,此a就是要求的特征权重。 此方法即为正规方程组解法。

              当m或n值较大时,a=(XT*X)-1*XT*y的计算量很大,O(n3)计算量,此时正规方程组解法就会遇到瓶颈,需要引入其他解法。

    2. 梯度下降法:并不是直接求出最小值点,而是通过一个初始点,一步一步寻找最小值点,寻找的方式是:以最快的下降方向上,以一定步长前进,递归到最小值点。

        其中:

               最快的下降方向为:该点导数为斜率的方向。 

               步长:固定值,可以用0.1, 0.01, 0.001尝试不同值,选取最合适的。

               初始位置:随机指定。

               何时终止:迭代了一定次数,或者成本函数值收敛或足够小。

    3. 正规化方程组解法 P.K.  梯度下降法:

        正规化方程组简洁,但支持数据量小。

        梯度下降法,需要考虑初始值和步长的指定以及特征归一化,但可以支持大数据量。

    问题1:固定步长,会不会在接近最小值点时步长过大?

       答: 不会。因为实际起作用的步长是 步长*斜率值,而越接近最小值点时斜率约接近0,步长*斜率就会变小。

    问题2: 步长大小如何选择?

       答:步长过小会导致成本函数收敛速度慢,过大可能会导致成本函数不收敛。可以用0.1,0.01,0.001这样间隔10倍或者3倍尝试,看成本函数变化曲线。曲线下降太平缓需要加大步长,曲线波动较大、不收敛时需要减小步长。

    转载请注明出处: http://www.cnblogs.com/liyuxia713/
  • 相关阅读:
    https 适配
    SDWebImage 的简单使用方法
    第三方API使用的好习惯
    关于IPicture::Render函数
    标准模板库(STL)MAP容器使用详解
    STL容器
    c++ 遍历map的时候删除元素
    C++的try_catch异常
    Makefile 自动生成头文件的依赖关系 .
    调试过程中,内存泄露检测信息
  • 原文地址:https://www.cnblogs.com/liyuxia713/p/2690812.html
Copyright © 2011-2022 走看看