回归分析: 是研究一个变量关于另一个(或一些)变量的具体依赖关系的计算方法和理论。
一些符号:
m: 训练数据的大小
x: 输入变量,是向量
y: 输出变量,是实数
(x,y): 一个训练实例
x(i),y(i)
: 第i个训练集,i是上标而不是指数
假设训练集中的数据使用线性回归解决,则假设函数为:
hθ(x)=∑i=0nθixi=θTx(1)
这里x是向量,n是x的长度(输入变量个数)
从而,定义目标函数(即要优化的函数):
J(θ)=12∑i=1m(hθ(x(i))−y(i))2(2)
m为样本个数,我们找出使这个函数最小的参数值,就的到了拟合训练的最佳参数。
使用梯度下降法来求参数,更新规则为:
θj:=θj−α∂∂θjJ(θ)(3)
当只有一个训练实例时,上式变为:
θj:=θj−α(hθ(x)−y)xj(4)
这被称为最小二乘法(LMS, least mean squares),也被称为Widrow-Hoff学习规则。
考虑所有m个训练集,规则变为:
θj:=θj−α∑i=0m(hθ(x(i))−y(i))x(i)j(5)
运用这个规则直到收敛,就是批梯度下降算法(batch gradient descent)。其中,收敛的判断有两种,一是判断两次迭代后参数的变化,二是判断两次迭代后目标函数的变化,规则中的 α 是学习速率,这个需要在实践中进行调整,其值过小会导致迭代多次才能收敛,其值过大会导致越过最优点发生震荡现象。
梯度下降算法会导致局部极值点的产生,解决这个问题的方法是随机进行初始化,寻找多个最优点,然后在这些最优点中找最终结果。
对于公式5,当数据量较大时,每迭代一次就要遍历全部数据一次,这样算法运行速度会很慢,为解决这个问题,一般采用如下办法:
RepeatUntilConverge{Fori=1tom{θj:=θj−α(hθ(x(i))−y(i))x(i)j(foreveryj)}}
意为更新参数时,不必遍历整个数据集,只需要一个实例便足够了。该算法可以达到很高的效果,但是会导致遍历次数增多,不能精确收敛到最优值等问题。该方法被称为增量梯度下降(incremental gradient descent)或随机梯度下降(stochastic gradient descent)。
梯度下降算法是求目标函数最优值的一种解法。我们可以直接求出参数值而不用迭代方法,这种方法称为正规方程法。