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