机器学习日记(2)
本次我们将以单变量线性回归为起点,讨论其算法及机器学习的一些指标。
单变量线性回归(Linear Regression with One Variable)
让我们通过一个例子来开始:这个例子是预测住房价格的,我们要使用一个数据集,数据集包含俄勒冈州波特兰市的住房价格。在这里,我要根据不同房屋尺寸所售出的价格,画出我的数据集。比方说,如果你朋友的房子是 1250 平方尺大小,你要告诉他们这房子能卖多少钱。那么,你可以做的一件事就是构建一个模型,也许是条直线,从这个数据模型上来看,也许你可以告诉你的朋友,他能以大约 220000(美元)左右的价格卖掉这个房子。这就是监督学习回归算法的一个例子。
假使我们回归问题的训练集(Training Set)如下表所示:
我们将要用来描述这个回归问题的标记如下: 𝑚 代表训练集中实例的数量
𝑥 代表特征/输入变量
𝑦 代表目标变量/输出变量
(𝑥, 𝑦) 代表训练集中的实例
(𝑥(𝑖), 𝑦(𝑖)) 代表第𝑖 个观察实例
ℎ 代表学习算法的解决方案或函数也称为假设(hypothesis)
这就是一个监督学习算法的工作方式,我们可以看到这里有我们的训练集里房屋价格我们把它喂给我们的学习算法,学习算法的工作了,然后输出一个函数,通常表示为小写 ℎ表示。ℎ 代表 hypothesis(假设),ℎ表示一个函数,输入是房屋尺寸大小,就像你朋友想出售的房屋,因此 ℎ 根据输入的 𝑥值来得出 𝑦 值,𝑦 值对应房子的价格 因此,ℎ 是一个从𝑥 到 𝑦 的函数映射。那么我们该如何表达 ℎ?
一种可能的表达方式为:ℎ𝜃(𝑥) = 𝜃0 + 𝜃1𝑥,因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题。
代价函数(Cost Function)
而在单变量线性回归问题中,我们会引入一些术语,我们现在要做的便是为我们的模型选择合适的参数(parameters)𝜃0 和 𝜃1,在房价问题这个例子中便是直线的斜率和在𝑦 轴上的截距。我们选择的参数决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差(modeling error)。
我们暂时将建模误差的平方和定义为代价函数,代价函数也被称作平方误差函数,有时也被称为平方误差代价函数。代价函数的作用是将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”。我们之所以要求出误差的平方和,是因为误差平方代价函数,对于大多数问题,特别是回归问题,都是一个合理的选择。还有其他的代价函数也能很好地发挥作用,但是平方误差代价函数可能是解决回归问题最常用的手段了。
我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数, 即使得代价函数
最小,最小化“损失”。
为了使代价函数取到最小值,我们不妨先绘制当 取𝜃0=0,𝜃1作为唯一变量时𝐽(𝜃1)关于𝜃1的二维图像,可以看出:𝜃1=1时,模型与训练函数完美拟合,此时可以取得代价函数𝐽(𝜃1)为最小值0。
同样地我们以𝜃0和𝜃1为变量绘制一个等高线图,三个坐标分别为𝜃0和𝜃1 和𝐽(𝜃0, 𝜃1):
可以看出在三维空间中存在一个使得𝐽(𝜃0, 𝜃1)最小的点,存在于弓型图形的最底部,这便是我们希望取到的点。从此便有自然而然地出现一个问题:我们应该如何去接近、取到这一点呢?
梯形下降(Gradient Descent)
梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数𝐽(𝜃0, 𝜃1) 的最小值。
梯度下降背后的思想是:开始时我们随机选择一个参数的组合(Ǘ