zoukankan      html  css  js  c++  java
  • 随机梯度下降法

    刚刚看完斯坦福大学机器学习第四讲(牛顿法),也对学习过程做一次总结吧。

    一、误差准则函数与随机梯度下降:

    数学一点将就是,对于给定的一个点集(X,Y),找到一条曲线或者曲面,对其进行拟合之。同时称X中的变量为特征(Feature),Y值为预测值。

    如图:


    一个典型的机器学习的过程,首先给出一组输入数据X,我们的算法会通过一系列的过程得到一个估计的函数,这个函数有能力对没有见过的新数据给出一个新的估计Y,也被称为构建一个模型。

    我们用X1、X2...Xn 去描述feature里面的分量,用Y来描述我们的估计,得到一下模型:


    我们需要一种机制去评价这个模型对数据的描述到底够不够准确,而采集的数据x、y通常来说是存在误差的(多数情况下误差服从高斯分布),于是,自然的,引入误差函数:


    关键的一点是如何调整theta值,使误差函数J最小化。J函数构成一个曲面或者曲线,我们的目的是找到该曲面的最低点:


    假设随机站在该曲面的一点,要以最快的速度到达最低点,我们当然会沿着坡度最大的方向往下走(梯度的反方向)

    用数学描述就是一个求偏导数的过程:


    这样,参数theta的更新过程描述为以下:

       (α表示算法的学习速率)

    二、算法实现与测试:

    通过一组数据拟合 y = theta1*x1 +theta2*x2

    #Python 3.3.5
    # matrix_A  训练集
    matrix_A = [[1,4], [2,5], [5,1], [4,2]]
    Matrix_y = [19,26,19,20]
    theta = [2,5]
    #学习速率
    leraing_rate = 0.005
    loss = 50
    iters = 1
    Eps = 0.0001
    while loss>Eps and iters <1000 :
        loss = 0
        for i in range(3) :
            h = theta[0]*matrix_A[i][0] + theta[1]*matrix_A[i][1] 
            theta[0] = theta[0] + leraing_rate*(Matrix_y[i]-h)*matrix_A[i][0]
            theta[1] = theta[1] + leraing_rate*(Matrix_y[i]-h)*matrix_A[i][1]
        for i in range(3) :
            Error = 0
            Error = theta[0]*matrix_A[i][0] + theta[1]*matrix_A[i][1] - Matrix_y[i]
            Error = Error*Error
            loss = loss +Error
        iters = iters +1
    print ('theta=',theta)
    print ('iters=',iters)
    求解结果:
    >>> 
    theta= [2.9980959216157945, 4.001522800837675]
    iters= 75
    但如果对输入数据添加一些噪声

    matrix_A = [[1.05,4], [2.1,5], [5,1], [4,2]]
    求解结果为:

    >>> 
    theta= [3.0095950685197725, 3.944718521027671]
    iters= 1000
    可见在有噪声的情况下,要及时调整模型误差精度、迭代次数上限,一期达到我们的需求。

    以上图片和公式均摘自:梯度下降法

    本博客迁移至:dataminingclub


  • 相关阅读:
    SQL语句——入门级
    使用Java Servlet进行简单登录
    Java简单聊天室
    Java网络编程(二)关于Socket的一些个人想法
    Java网络编程(一)
    Java多线程(三)锁对象和线程池
    Java多线程(二)同步与等待唤醒
    Java多线程(一)初步了解
    IO流(三)其他流与File类
    IO流(二)字符流
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6205068.html
Copyright © 2011-2022 走看看