多元线性回归的引入
之前我们介绍过房价预测问题,当时我们只使用了一个特征:房子的大小,来对房价进行预测,并且我们得到了该线性回归模型的假设函数:
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_\theta(x)=\theta_0+\theta_1x
hθ(x)=θ0+θ1x,如上图所示。但是在实际问题中,能够决定房价的因素(特征 / 变量)肯定不只有一个,所以我们要将之前介绍的线性回归模型推广到更一般的情况,即多元线性回归模型,它更符合实际情况。
如上图所示,我们在原来的基础上,添加了三个特征 / 变量来描述房子,即房间卧室的数量、房屋的楼层以及房子的年龄。
需要注意的是,我们现在开始使用
n
n
n 来表示特征的数量,上述问题中,显然
n
=
4
n=4
n=4;使用
x
i
x^i
xi来表示第
i
i
i 个训练样本的输入特征值,并不是表示
x
x
x 的
i
i
i 次方,对应于上述问题,即表格中的第
i
i
i 行,比如,当
i
=
1
i=1
i=1 时,则有
x
1
=
[
2104
,
5
,
1
,
45
]
x^1=[2104,5,1,45]
x1=[2104,5,1,45](注:
P
r
i
c
e
Price
Price为房价真实值,不属于输入特征),习惯上,我们更愿意把
x
1
x^1
x1 表示成一个向量的形式,即
x
1
=
[
2104
5
1
45
]
x^1=\begin{bmatrix} 2104\\5\\1\\45 \end{bmatrix}
x1=
21045145
,很显然,
x
1
x^1
x1是一个
4
4
4维向量,更一般来说,
x
i
x^i
xi会是一个
n
n
n维向量;使用
x
j
i
x^i_j
xji来表示第
i
i
i 个训练样本中第
j
j
j 个特征量的值,比如,对应到上述问题,就有
x
3
1
=
1
x^1_3=1
x31=1,就相当于索引向量
x
1
x^1
x1 中的第
3
3
3 个元素。
多元线性回归的假设函数
那么,我们现在的假设函数会是什么形式呢?
之前我们线性回归模型的假设函数是 h θ ( x ) = θ 0 + θ 1 x h_\theta(x)=\theta_0+\theta_1x hθ(x)=θ0+θ1x,现在我们考虑多个因素对房价带来的影响,那么,对应的假设函数应该改写成 h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + … + θ n x n h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+…+\theta_nx_n hθ(x)=θ0+θ1x1+θ2x2+…+θnxn,其中, x i x_i xi表示第 i i i 个输入特征值,为了表示方便,我们会再添加一个输入特征值 x 0 x_0 x0,并且令 x 0 = 1 x_0=1 x0=1,即对于每一组训练样本,都有 x 0 i = 1 x^i_0=1 x0i=1,现在,我们再将特征和参数表示成向量的形式,则有 x = [ x 0 x 1 x 2 … x n ] ∈ R n + 1 x=\begin{bmatrix} x_0\\x_1\\x_2\\…\\x_n \end{bmatrix}\in\R^{n+1} x= x0x1x2…xn ∈Rn+1, θ = [ θ 0 θ 1 θ 2 … θ n ] ∈ R n + 1 \theta=\begin{bmatrix} \theta_0\\\theta_1\\\theta_2\\…\\\theta_n \end{bmatrix}\in\R^{n+1} θ= θ0θ1θ2…θn ∈Rn+1
现在我们可以将假设函数表示为 h θ ( x ) = θ T ⋅ x = [ θ 0 , θ 1 , … , θ n ] ⋅ [ x 0 x 1 x 2 … x n ] = θ 0 + θ 1 x 1 + θ 2 x 2 + … + θ n x n h_\theta(x)=\theta^T \cdot x=[\theta_0,\theta_1,…,\theta_n] \cdot \begin{bmatrix} x_0\\x_1\\x_2\\…\\x_n \end{bmatrix}=\theta_0+\theta_1x_1+\theta_2x_2+…+\theta_nx_n hθ(x)=θT⋅x=[θ0,θ1,…,θn]⋅ x0x1x2…xn =θ0+θ1x1+θ2x2+…+θnxn,这就是多特征量情况下假设函数的形式,也就是所谓的多元线性回归。
多元线性回归的代价函数与梯度下降
上图所示是我们多元线性回归中的一些表达式,其中代价函数
J
(
θ
0
,
θ
1
,
…
,
θ
n
)
=
J(\theta_0,\theta_1,…,\theta_n)=
J(θ0,θ1,…,θn)=
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与之前的代价函数表达式一致,只不过参数的数量增加到了
n
n
n 个,当然,上面的表达式中,我们也可以把
θ
0
,
θ
1
,
…
,
θ
n
\theta_0,\theta_1,…,\theta_n
θ0,θ1,…,θn写成向量
θ
\theta
θ 的形式,使表达式看起来更加简洁,即
J
(
θ
)
=
J(\theta)=
J(θ)=
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
更新梯度下降算法
上图就是多元线性回归中梯度下降的样子。
上图是之前只有一个特征时的梯度下降算法对应的参数更新方程,即
n
=
1
n=1
n=1 时
现在,我们将梯度下降算法更新,即将参数更新方程推广到更加一般的情况,即
n
≥
1
n\ge1
n≥1时,对于每一个训练样本
x
i
x^i
xi,我们在更新参数
θ
j
\theta_j
θj时,对应偏导数的在括号外的乘积项应该变为
x
j
i
x^i_j
xji,即第
i
i
i 个训练样本中第
j
j
j 个特征量的值。
现在,我们介绍完了多元线性回归模型,很显然,相比于单特征的情况,特征数量的增多会使得模型变得复杂,同样也会降低我们训练模型的效率,比如在进行梯度下降时,所以之后我们会来谈谈如何提高多元梯度下降收敛的速度。