原文:http://cs229.stanford.edu/not…
为了使我们的住宅更有趣,我们可以考虑一个稍微更丰富的数据集,我们也知道每个房间的卧室数量:
$$
此处的输入特征 x 是一个在 R^{2} 空间的二维向量,例如 x_{1}^{i} 就是训练集中第 i 个房屋的面积,而 x_{2}^{i} 就是训练集中第 i 个房屋的卧室数目。
$$
(通常来说,设计一个学习算法的时候,选择哪些输入特征都取决于你,所以当你在波特兰收集房屋的信息数据时,也完全可以选择包含其他的特征,例如房屋是否有壁炉,卫生间的数量等等。关于特征筛选的内容会在后面的章节进行更详细的介绍,不过目前来说就暂时先用给定的这两个特征了。)
$$
要进行这个监督学习任务,我们必须得决定如何在计算机里面对这个函数 / 假设 h 进行表示。作为起始的选择,我们把 y 近似为
$$
$$
一个以 x 为变量的线性函数(linear function):h_{\theta}\left (x \right)=\theta _{0}+\theta _{1}x_{1}+\theta _{2}x_{2}
$$
$$
这里的 \theta _{i} 是参数(parameters),也被叫作权重(weights),用来参数化从 X 到 Y 的线性函数映射空间。为了避免混淆,
$$
$$
我们可以把 h_{\theta}(x) 里面的 \theta 省略掉,简写成 h(x)。为了简化符号,我们还引入了约定使 x_{0}=1, 于是 h(x) 就可以表示成:
$$
$$
h\left (x \right)=\sum \theta _{i}x_{i} 等式右边的 \theta 和 x 都是向量,等式中的 n 是输入的特征变量的个数(不包括 x_{0})。
$$
$$
现在,给定了一个训练集了,咱们怎么来挑选 / 学习参数 \theta 呢?一个看上去比较合理的方法就是让 h(x) 尽量逼近 y,至少对已有
$$
$$
的训练样本能适用。用公式的方式来表示的话,就要定义一个函数,来衡量对于每个不同的 \theta 值,预测值 h(x^{(i)}) 与实际对应的
$$
$$
y^{i} 有多接近。我们据此定义了一个 成本函数(cost function),有的中文文献亦称之为代价函数:
$$
$$
J\left (\theta \right)=1/2\sum \left (h _{\theta}\left (x^{(i)} \right )-y^{(i)}\right )^{2}
$$
如果之前你接触过线性回归,你会发现这个函数和 普通最小二乘法(ordinary least squares)拟合模型中的最小二乘法成本函数非常相似。不管你之前是否接触过它,我们先继续往下看,以后就会发现这是一个更广泛的算法家族中的一个特例。