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$不一定可以直接求出来。

原文地址:https://www.cnblogs.com/Mjerry/p/9687795.html