基本概念
- 训练集 ''(Training set)''
$$ (x{(0)},y{(0)}),(x{(1)},y{(1)}),(x{(2)},y{(2)}).....(x{(i)},y{(i)}) $$
- 假设函数''(Hypothesis fuction)''
$$ h_\theta(x)=\theta_0 + \theta_1x $$
- 代价函数''(Cost fuction)''
:线性回归的目标是让 假设函数与训练集尽量的拟合,使得代价函数最小,前面的 \( 1/2 \)的作用是因为平方误差函数求导之后正好抵消,使得在梯度下降里面的偏导数项系数正好为1
$$ J(\theta_0, \theta_1) = \frac{1}{2m} \sum_{i=1}{m}(h_\theta(x{(i)}) - y{(i)})2 $$
递归下降算法
以 $$ \theta_0 , \theta_1, J(\theta_0,\theta_1) $$画坐标系, 会得到类似下面的图像, 实际上对于线性的假设函数来说,整个图像会是一个弓形图,
从任何地方会收敛到同一个最优点。
递归下降的公式为,其中 j 为 0 和 1, \( \alpha \)叫做learning rate, 在几何上表现为每次下降的步长
$$ \theta_j := \theta_j - \alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1) $$
线性回归&递归下降公式推导
推导过程的重点就是算代价函数 \( J(\theta_0,\theta_1) \)关于 \( \theta_0 \)和 \( \theta_1 \)的偏导数
\( \theta_0 \)的推导
\begin{align}
\theta_0 & := \theta_0 - \alpha\frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1) \\
& = \theta_0 - \alpha\frac{\partial}{\partial\theta_0} \frac{1}{2m} \sum_{i=1}{m}(h_\theta(x{(i)}) - y{(i)})2 \\
& = \theta_0 - (\alpha \frac{1}{2m} * 2 * \sum_{i=1}{m}(h_\theta(x{(i)}) - y^{(i)})) * \frac{\partial}{\partial\theta_0}(h_\theta(x^{(i)}) - y^{(i)}) \\
& = \theta_0 - \frac{\alpha}{m} * \sum_{i=1}{m}(h_\theta(x{(i)}) - y^{(i)})
\end{align}
\( \theta_1 \)的推导
\begin{align}
\theta_0 & := \theta_0 - \alpha\frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1) \\
& = \theta_0 - \alpha\frac{\partial}{\partial\theta_0} \frac{1}{2m} \sum_{i=1}{m}(h_\theta(x{(i)}) - y{(i)})2 \\
& = \theta_0 - (\alpha \frac{1}{2m} * 2 * \sum_{i=1}{m}(h_\theta(x{(i)}) - y^{(i)})) * \frac{\partial}{\partial\theta_0}(h_\theta(x^{(i)}) - y^{(i)}) \\
& = \theta_0 - \frac{\alpha}{m} * \sum_{i=1}{m}(h_\theta(x{(i)}) - y^{(i)})
\end{align}
结论
收敛算法为:
试验
octave:> x = load('ex2x.dat');
octave:> y = load('ex2y.dat');
octave:> figure % open a new figure window
octave:> plot(x, y, 'o');
octave:> ylabel('Height in meters')
octave:> xlabel('Age in years')
Spark MLlib的递归下降
CONTINUING