1. 线性回归模型
之前我们讨论过房价预测问题,房价预测实际上是一种回归问题,也就是说我们的目的是得到一个连续值输出,下图是根据房子大小 Size 和 对应的房价 Price 所画出的散点图。
现在,我们的问题是输入房子的大小,给出其房价的预测值。很显然,这是一个监督学习的例子,因为我们事先已经知道数据集中不同大小房子的正确房价。
如上图所示,我们现在有一个数据集,它被称为训练集,以住房价格为例,我们有一个房价的训练集,我们的工作就是从这个数据中学习如何预测房价。
其中,符号 m 表示训练样本的数量,在下面的表格中,样本数 m 就是表格的行数;符号 x 表示输入变量或者输入特征,也就是表格中的第一列;符合 y 表示输出变量,也就是我要预测的目标变量,对应于表格中的第二列。
现在,我们使用
(
x
,
y
)
(x, y)
(x,y) 来表示一组训练样本,对应表格中的一行。当我们要表示一个特定的训练样本时,我们使用
(
x
i
,
y
i
)
(x^i, y^i)
(xi,yi) 来表示第 i 个训练样本,指的是表格中的第 i 行。
上图的描述的是监督学习算法的工作流程,我们首先向学习算法提供训练集,比如说我们的房价训练集,学习算法的任务是输出一个函数,通常用小写 h 来表示,h 表示 假设函数(hypothesis),假设函数 h 的作用就是把房子的大小作为输入变量 x ,它会输出对应的预测值 y,所以 h 是一个引导从 x 到 y 的函数。
在房价预测问题中,我们选择使用线性模型来拟合房价与房子大小的关系,所以对应假设函数的表达式也就是 h θ ( x ) = θ 1 ∗ x + θ 0 h_θ(x)=θ_1*x+θ_0 hθ(x)=θ1∗x+θ0,预测 y 是关于 x 的线性函数,一般这种模型被称为线性回归,这个例子很显然是一个一元线性回归模型或者单变量线性回归模型。
那么,为什么我们使用线性函数来拟合房价问题呢? 有时候我们会想使用更加复杂的,你如非线性的函数,但是由于这种线性的情况是学习的基础,所以我们将从这个例子开始,先拟合线性函数,然后我们将在这个基础上,最终处理更复杂的模型以及学习更复杂的学习算法。
2、代价函数
在线性回归中,我们有这样一个训练集,其中
h
θ
(
x
)
h_\theta(x)
hθ(x)被称为假设函数,我们将
θ
0
,
…
,
θ
i
\theta_0,…,\theta_i
θ0,…,θi称为模型参数,我们现在就来讨论,如何选择模型参数。
在上图中,我们给出了几种参数的取值组合,很显然,对于不同的参数,我们会得到不同的假设函数。
在线性回归中,我们有一个训练集,我们要做的就是得出
θ
0
和
θ
1
\theta_0和\theta_1
θ0和θ1这两个参数的值,来让假设函数表示的直线尽量地与这些数据点很好的拟合。
那么,我们如何得出 θ 0 和 θ 1 \theta_0和\theta_1 θ0和θ1的值来使它尽可能的拟合数据呢?
显然,我们的目标是希望得到的参数使预测值越接近真实值越好,即预测值与真实值之间的差异越小越好,如果我们将预测值与真实值之间的差异定义为一个变量的话,则在线性回归中,我们实际要解决的是一个最小化问题。
2.1 代价函数的数学定义
对于房价问题,我们先给出其目标函数
θ
0
θ
1
m
i
n
m
i
z
e
\large_{\;\;\;\;\theta_0\,\theta1}^{minmize}
θ0θ1minmize
1
2
m
\,\Large1\over {2m}
2m1
∑
i
=
1
m
\large\sum_{i=1}^m
∑i=1m
(
h
θ
(
x
i
)
−
y
i
)
2
(h_\theta(x^i)-y^i)^2
(hθ(xi)−yi)2
其中, h θ ( x i ) = θ 1 ∗ x i + θ 0 h_θ(x^i)=θ_1*x^i+θ_0 hθ(xi)=θ1∗xi+θ0, θ 0 θ 1 m i n m i z e \large_{\;\;\;\;\theta_0\,\theta1}^{minmize} θ0θ1minmize 表示关于 θ 0 和 θ 1 \theta_0和\theta_1 θ0和θ1的最小化过程。这意味着我们要找到 θ 0 和 θ 1 \theta_0和\theta_1 θ0和θ1的值来使上述表达式的值最小,很显然,对于确定的训练集而言, x i x^i xi的取值是已知的,所以说这个表达式的值会因为 θ 0 和 θ 1 \theta_0和\theta_1 θ0和θ1的变化而变化。因此,简单的说,我们正在把这个问题变成:找到能使我的训练集中预测值和真实值的差的平方的和的 1 2 m \,\Large1\over {2m} 2m1 最小的 θ 0 和 θ 1 \theta_0和\theta_1 θ0和θ1的值。显然,这将是我线性回归的整体目标函数。
我们定义一个函数
J
(
θ
0
,
θ
1
)
J(\theta_0,\theta_1)
J(θ0,θ1),它的表达式如下:
J
(
θ
0
,
θ
1
)
=
J(\theta_0,\theta_1)=
J(θ0,θ1)=
1
2
m
\,\Large1\over {2m}
2m1
∑
i
=
1
m
\large\sum_{i=1}^m
∑i=1m
(
h
θ
(
x
i
)
−
y
i
)
2
(h_\theta(x^i)-y^i)^2
(hθ(xi)−yi)2
那么,现在我们想要做的就是关于
θ
0
和
θ
1
\theta_0和\theta_1
θ0和θ1对函数
J
(
θ
0
,
θ
1
)
J(\theta_0,\theta_1)
J(θ0,θ1)求最小值,即
θ
0
θ
1
m
i
n
m
i
z
e
\large_{\;\;\;\;\theta_0\,\theta1}^{minmize}
θ0θ1minmize
J
(
θ
0
,
θ
1
)
J(\theta_0,\theta_1)
J(θ0,θ1)
这就是代价函数,这个代价函数也可被称为平方误差函数,之所以,我们要求出误差的平方和,是因为平方误差代价函数对于大多数问题,特别是线性回归问题,都是一个合理的选择,当然,我们也有其他的代价函数也能够很好的发挥作用。