02-监督学习应用.梯度下降
约定符号:
m = 训练样本数
X = 输入变量(特征)
Y = 输出变量(目标变量)
(X,Y) = 表示一个样本
$\left ( X^{(i)},Y^{(i)} \right )$ = 第i个样本(上标i不是指数)
用线性表示则是:
$h\left ( X \right )=\Theta _{0}+\Theta _{1}X$
$\Theta$称为学习算法的参数
如果有2个特征则写成:
$h\left ( X \right )=\Theta _{0}+\Theta _{1}X_{1}+\Theta _{2}X_{2}$
这里的X是一个输入特征
如果需要让假设h对$\Theta$依赖,则写成
$h _{\Theta}\left ( X \right )=\Theta _{0}+\Theta _{1}X_{1}+\Theta _{2}X_{2}$
如果假设$X_{0}$=1,则公式可以简写成:
$h_{\Theta }\left ( X \right )=\sum\limits_{i=0}^{2}\Theta _{i}X_{i}=\Theta ^{T}X$
最后一个符号n表示所有的特征数目,也就是X的个数。
则公式可以写成:
$h_{\Theta }\left ( X \right )=\sum\limits_{i=0}^{n}\Theta _{i}X_{i}=\Theta ^{T}X$
我们要做的事情就是要让$\left ( h_{\Theta }\left ( X^{(i)} \right )-Y^{(i)} \right )^{2}$最小,也就是预测值减去实际值的平方最小,也就是误差最小
为了简化运算,引入一个$J\left ( \Theta \right )$函数:
$J\left ( \Theta \right ) = \frac{1}{2}\sum\limits_{i=0}^{m}\left ( h_{\Theta }\left ( X^{(i)} \right )-Y^{(i)} \right )^{2}$
我们所要做的是要是一个关于$ \Theta$ 函数$J\left ( \Theta \right )$的值最小化,
如果我们初始化一个$ \Theta$ 为$\Theta=\vec{0}$,然后不断地去改变$\Theta$的向量,使得函数$J\left ( \Theta \right )$的值不断减小,直到我们找到了一个$\Theta$使得$J\left ( \Theta \right )$函数取到了最小值。
那么要按照什么方向寻找$\Theta$,并得到$J\left ( \Theta \right )$的最小值呢?
我们需要根据$J\left ( \Theta \right )$函数的最陡峭的部分往下走,最陡峭的部分也就是梯度。
梯度下降:
$\Theta _{i}:=\Theta _{i}-\alpha \frac{\partial }{\partial \Theta _{i}}J\left ( \Theta \right )$
求导之后为:
$\Theta _{i}:=\Theta _{i}-\alpha \left ( h_{\Theta }\left( X \right )-Y \right )X_{i}$
称之为更新函数,$\alpha$为学习速度,表示朝着最低点迈步的大小。
这里的冒号表示赋值
所以我们要做的是,将$\Theta$按照梯度下降的方法,最后使得$J\left ( \Theta \right )$收敛,也就是找到了$J\left ( \Theta \right )$的最小值。
如果样本数很多:
就要用到梯度下降方法的一些分类方法:
随机梯度算法,样本少,速度快,不收敛
批量梯度算法,样本多,速度慢,收敛。
另外一种计算$\Theta$的方法:
$\Theta =\left ( X^{T}X \right )^{-1}X^{T}Y$
但是$\Theta$不一定可以直接求出来。