zoukankan      html  css  js  c++  java
  • 02-监督学习应用.梯度下降

    约定符号:

    m = 训练样本数

    X = 输入变量(特征)

    Y = 输出变量(目标变量)

    (X,Y) = 表示一个样本

    $left ( X^{(i)},Y^{(i)} ight )$ = 第i个样本(上标i不是指数)

     用线性表示则是:

    $hleft ( X ight )=Theta _{0}+Theta _{1}X$

    $Theta$称为学习算法的参数

    如果有2个特征则写成:

    $hleft ( X ight )=Theta _{0}+Theta _{1}X_{1}+Theta _{2}X_{2}$

    这里的X是一个输入特征

    如果需要让假设h对$Theta$依赖,则写成

    $h _{Theta}left ( X ight )=Theta _{0}+Theta _{1}X_{1}+Theta _{2}X_{2}$

     如果假设$X_{0}$=1,则公式可以简写成:

                      $h_{Theta }left ( X ight )=sumlimits_{i=0}^{2}Theta _{i}X_{i}=Theta ^{T}X$

     最后一个符号n表示所有的特征数目,也就是X的个数。

    则公式可以写成:

            $h_{Theta }left ( X ight )=sumlimits_{i=0}^{n}Theta _{i}X_{i}=Theta ^{T}X$

    我们要做的事情就是要让$left ( h_{Theta }left ( X^{(i)} ight )-Y^{(i)} ight )^{2}$最小,也就是预测值减去实际值的平方最小,也就是误差最小

    为了简化运算,引入一个$Jleft ( Theta  ight )$函数:

                            $Jleft ( Theta  ight ) = frac{1}{2}sumlimits_{i=0}^{m}left ( h_{Theta }left ( X^{(i)} ight )-Y^{(i)} ight )^{2}$

    我们所要做的是要是一个关于$ Theta$ 函数$Jleft ( Theta  ight )$的值最小化,

    如果我们初始化一个$ Theta$ 为$Theta=vec{0}$,然后不断地去改变$Theta$的向量,使得函数$Jleft ( Theta  ight )$的值不断减小,直到我们找到了一个$Theta$使得$Jleft ( Theta  ight )$函数取到了最小值。

    那么要按照什么方向寻找$Theta$,并得到$Jleft ( Theta  ight )$的最小值呢?

    我们需要根据$Jleft ( Theta  ight )$函数的最陡峭的部分往下走,最陡峭的部分也就是梯度。

    梯度下降:

          $Theta _{i}:=Theta _{i}-alpha frac{partial }{partial Theta _{i}}Jleft ( Theta  ight )$

     求导之后为:

          $Theta _{i}:=Theta _{i}-alpha left ( h_{Theta }left( X  ight )-Y ight )X_{i}$

    称之为更新函数,$alpha$为学习速度,表示朝着最低点迈步的大小。

     这里的冒号表示赋值

    所以我们要做的是,将$Theta$按照梯度下降的方法,最后使得$Jleft ( Theta  ight )$收敛,也就是找到了$Jleft ( Theta  ight )$的最小值。

    如果样本数很多:

    就要用到梯度下降方法的一些分类方法:

    随机梯度算法,样本少,速度快,不收敛

    批量梯度算法,样本多,速度慢,收敛。

    另外一种计算$Theta$的方法:

                $Theta =left ( X^{T}X ight )^{-1}X^{T}Y$

    但是$Theta$不一定可以直接求出来。

  • 相关阅读:
    [转]WebForm中使用MVC
    [转]外贸出口流程图
    [转]查看SQL Server被锁的表以及如何解锁
    [转]RDL Report in Visual Studio New page per Record
    [转]Sql Server Report Service 的部署问题
    [转]ASP.NET MVC4中@model使用多个类型实例的方法
    [转]告别写计划的烦恼!一页纸四步打造出一份牛逼的商业计划
    [转]LINQ: Using INNER JOIN, Group and SUM
    [转] 比特币『私钥』『公钥』『钱包地址』间的关系
    [转]SQL SERVER数据库删除LOG文件和清空日志的方案
  • 原文地址:https://www.cnblogs.com/Mjerry/p/9687795.html
Copyright © 2011-2022 走看看