乐趣区

吴恩达Coursera机器学习 – Chapter 2 单变量线性回归

Chapter 2 – 单变量线性回归 (Linear Regression with One Variable)
定义

单变量
数据集或假设函数的特征值只有一个

线性回归
求解回归问题的方程是线性方程(自变量仅为一次)

模型建立
假设函数
以下图所示的训练集为例:

假设:

m 代表训练集中实例的数量(4 个)

x 代表特征 / 输入变量(大小 / 平方尺)

y 代表目标变量 / 输出变量(价格 /1000 美元)

(x, y) 代表训练集中的实例

(x (i), y (i)) 代表第 i 个观察实例(如 i = 2 时,为(1416, 232))

h 代表学习算法的函数,也称为假设(hypothesis)对于单变量线性回归问题,我们一般将其假设为:$h_\theta(x)=\theta_0+\theta_1x$

那么问题来了,假设了 $h(x)$ 函数后,怎么求 θ 组合($\theta_{0}$ 和 $\theta_{1}$)呢?
一般而言,思想是将现有的 $x$ 集代入 $h(x)$,比较各 $y$ 值与 $h(x)$ 值之间的误差(建模误差)。在不断调整 $θ$ 组合后,找到使得总误差最小的那个 θ 组合。而衡量误差的方法是建立代价函数。(可能讲解的不规范,见谅~□~||)
代价函数(平方误差函数)
$$
J\left(\theta_{0}\ ,\theta_{1}\ \right) = \frac{1}{2m}\sum_{i = 1}^{m}{\left(h_{\theta}(x^{(i)}) – y^{(i)}\right)}^{2}
$$
这个函数看起来有点像方差的计算公式,但还是有区别的……
首先,它不是和平均值作比较,而是和“标准答案”作比较。再次,算出平方和后的式子乘以 $\frac{1}{2m}$ 而非 $\frac{1}{m}$。

疑问:为什么乘的是 $\frac{1}{2m}$?猜想:可能是因为后面梯度下降算法计算 $min(J\left( \theta_{0},\ \theta_{1}\ \right))$ 时,会求偏导,从而消去分母中的 2。

既然有了代价函数,我们如何求他的最小值呢?
针对二元函数求最小值 / 极值,在高等数学里,在有约束条件和无约束条件下,分别提供了两种求解的办法,概括来讲,前者就是拉格朗日乘数法,后者则是计算二阶偏导后判断。这当然不能满足我们这门课的要求啦,下面将介绍一种很重要的新方法,梯度下降!
梯度下降
该算法的公式如下:
$repeat\ until\ convergence\ \{\\ \quad \theta_j :=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)\quad(for\ j=0\ and\ j=1)\\\}$
这里引入了一个新的变量,学习率 α。我们可以将这个公式类比为一次函数 $y = kx+b$。

$\frac{\partial}{\partial\theta_{j}}J(\theta_{0},\theta_{1})$ 即为斜率 k;
α 代表一次迭代中,在 $\theta_{j}$ 方向上应该移动多大程度;
而:= 右边的和左边的 $\theta_{j}$ 分别代表这次迭代前和后的 $\theta_{j}$ 值。

对于大括号内的式子,我是这样理解的:在每次迭代中,先算出 $\theta_{0},\theta_{1}$ 在各自方向上,应移动多大的距离才能使代价函数下降的最大,全部算完后同时更新各 $\theta_{j}$ 的值。(若不同时,一次迭代中 $\theta$ 集会变化多次,求出来的 $\theta$ 也就失去了意义)
整个式子会一直重复下去,直至各 $\theta_{j}$ 收敛到某个值,这就是我们需要的 $\theta$ 组合(之一)!

疑问:既然梯度下降算法只能求出局部最小值,那如何求解全局最小值呢?猜想:首先,在单变量线性回归问题中,或许 $J\left(\theta_{0}\ ,\theta_{1}\ \right)$ 的局部最小值就是全局最小值(没证明过,不确定)。但如果在其他回归问题的方程中就不一定了,这时候,正如课程中所说,我们应尝试完所有的参数组合(或尽可能多吧),求出所有局部最小值,并比较其中某个参数组合是否为全局最小值。

问题又来了,怎么判断 $θ_j$ 是否收敛,α 又该怎么取?
这个问题其实在第四章会回答。对于前者,一种 $\theta_{j}$ 收敛的判断依据是:代价函数 $J\left(\theta_{0}\ ,\theta_{1}\right)$ 的变化低于某一阈值。因为即便学习率 α 不变,随着 J(θ) 的减小,$\frac{\partial}{\partial\theta_{j}}J(\theta_{0},\ \theta_{1})$ 也会减小(在 α 值合适时),如下图。我们假设在第 300~400 次迭代的过程中,某次迭代后,$J\left(\theta_{0}\ ,\theta_{1}\right)$ 变化小于该阈值,就退出循环,输出 $\theta$ 组合。
α 的取值会对迭代次数和 $J\left(\theta_{0}\ ,\theta_{1}\right)$ 是否能收敛产生很大影响,Andrew Ng 老师给的建议是尝试不同的 α 值:0.01, 0.03, 0.1, 0.3, 1, 3 等

求解 θ 组合
最后一步(算是),我们将代价函数代入梯度下降函数内。在此之前,要解决的是 $\frac{\partial}{\partial\theta_{j}}J(\theta_{0},\theta_{1})$ 的求解。这里需要高等数学中求偏导的基础知识,计算过程就省略不写了。
回头整理梯度下降的算法,我的第一个机器学习算法就诞生啦!名为“批量梯度下降”:

退出移动版