文章目录
1.代价函数(cost function)
1.1 代价函数图像
上图两个坐标表示参数
θ
0
\theta_0
θ0和
θ
1
\theta_1
θ1,它们是动态变化的。
通常使用contour figure(等高线线)来描述上面的3D图像:
在右图的等高线中,每个圆圈上面的点的值是一致的。当前红色点处于参数 θ 0 = 800 , θ 1 = − 0.15 \theta_0 = 800, \theta_1 = -0.15 θ0=800,θ1=−0.15对应于左图的直线,但这时候的直线没有很好拟合数据。
2.gradient descent(梯度下降)
- 微积分:calculus
- 导数:derivatives
- 收敛:converge
- 不收敛:diverge
梯度下降更新公式:
θ
j
:
=
θ
j
−
α
∂
J
(
θ
0
,
θ
1
)
∂
θ
j
,
(
f
o
r
j
=
0
a
n
d
=
1
)
\theta_j := \theta_j-\alpha \frac{\partial J(\theta_0, \theta_1)}{\partial \theta_j}, (for ~ j = 0~and~= 1)
θj:=θj−α∂θj∂J(θ0,θ1),(for j=0 and =1)
上面两个参数需要同步更新,也就是说在一次迭代中,这两个参数是同时更新的。假设首先需要更新参数
θ
1
\theta_1
θ1,其cost function为:
θ
1
:
=
θ
1
−
α
∂
J
(
θ
1
)
∂
θ
1
(
2
−
1
)
\theta_1 := \theta_1-\alpha \frac{\partial J(\theta_1)}{\partial \theta_1}~~~~~(2-1)
θ1:=θ1−α∂θ1∂J(θ1) (2−1)
同时其cost function的函数图像为:
2.1 正导数:positive derivative
当利用公式(2-1)可以求得导数为positive number,则 θ 1 \theta_1 θ1会偏向于向最小值移动。
2.2 负导数:negative derivatvie
同样的,求得的导数会出现negative number,则使得更新之后的 θ 1 \theta_1 θ1也会偏向于最小值。
2.3 线性回归的梯度下降(gradient descent of linear regression )
在线性回归中,通常使用square error(平方误差)来计算代价函数:
h
θ
(
x
(
i
)
)
=
θ
0
+
θ
1
x
(
i
)
h_{\theta}(x^{(i)}) = \theta_0 + \theta_1 x^{(i)}
hθ(x(i))=θ0+θ1x(i)
J
(
θ
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
(
2
−
2
)
J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2 ~~~~~(2-2)
J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2 (2−2)
公式中
y
(
i
)
y^{(i)}
y(i)代表真实样本的值,
h
θ
j
(
x
(
i
)
)
h_{\theta_j}(x^{(i)})
hθj(x(i))则代表线性回归模型的预测值。
m
m
m为data set中的样本数。
- 为什么要在分子上加上2呢?这是因为在求解partial derivative(偏导数)中可以化简出比较简便的形式。
最后可以分别求得两个参数的partial derivative:
j
=
0
:
∂
∂
θ
0
J
(
θ
)
=
∂
∂
θ
0
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
=
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
j=0:\frac{\partial}{\partial \theta_0} J(\theta) = \frac{\partial}{\partial \theta_0} \frac{1}{2m} \sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2 = \frac{1}{m} \sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})
j=0:∂θ0∂J(θ)=∂θ0∂2m1i=1∑m(hθ(x(i))−y(i))2=m1i=1∑m(hθ(x(i))−y(i))
j = 1 : ∂ ∂ θ 1 J ( θ ) = ∂ ∂ θ 1 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ∗ x ( i ) j=1:\frac{\partial}{\partial \theta_1} J(\theta) = \frac{\partial}{\partial \theta_1} \frac{1}{2m} \sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2 = \frac{1}{m} \sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)}) * x^{(i)} j=1:∂θ1∂J(θ)=∂θ1∂2m1i=1∑m(hθ(x(i))−y(i))2=m1i=1∑m(hθ(x(i))−y(i))∗x(i)
- Batch:每完成一次梯度更新,则默认为完成了一个batch。在batch里面,梯度更新会计算所有的 m m m个样本。
3.矩阵的介绍
- 单位(identity)矩阵: I I I(对角矩阵都为1)
- 转置矩阵
- 矩阵的逆(matrix inverse):
A A − 1 = A − 1 A = I AA^{-1} = A^{-1}A = I AA−1=A−1A=I
其中矩阵 A A A的维度为 m × m m \times m m×m,它必定是一个方阵。如果一个矩阵没有逆矩阵,则称为奇异矩阵(Singular matrix),元素为0的矩阵就是一个奇异矩阵。
4.多元线性回归和其梯度下降
4.1 多元线性回归
之间已经简要叙述过简单的线性回归模型,其公式为:
h
θ
(
x
(
i
)
)
=
θ
0
+
θ
1
x
(
i
)
h_{\theta}(x^{(i)}) = \theta_0 + \theta_1 x^{(i)}
hθ(x(i))=θ0+θ1x(i)
为了引出多元线性回归模型,引入一个预测房价的问题,其具体的特征如下:
在上面的房价预测问题中,共有4个特征:size,房间数量,楼层,使用年限,需要预测的是:价格。
- n n n:共有n个特征
- x ( i ) x^{(i)} x(i):表示在数据集中的第 i i i个样本
- x j ( i ) x^{(i)}_j xj(i):表示在第 i i i个样本中,第 j j j个特征。
最后可以列出多元线性回归模型:
h
θ
(
x
)
=
θ
0
x
0
+
θ
1
x
1
+
θ
2
x
2
+
⋯
+
θ
n
x
n
=
θ
T
x
h_{\theta}(x) = \theta_0 x_0 + \theta_1 x_1 + \theta_2 x_2 + \dots + \theta_n x_n \\ = \theta^{T}x
hθ(x)=θ0x0+θ1x1+θ2x2+⋯+θnxn=θTx
其中,
θ
\theta
θ和
x
x
x都为一维向量,同时
x
0
=
1
x_0=1
x0=1。
4.2 多元线性回归的梯度下降
在2.3节中已经简单介绍了线性回归的梯度下降,那么多元线性回归的梯度下降也是一样的,在一次迭代的过程当中,需要更新所有的参数
θ
\theta
θ:
θ
j
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
.
.
.
,
θ
n
)
\theta_j = \theta_j - \alpha \frac{\partial}{\partial \theta_j} J(\theta_0,...,\theta_n)
θj=θj−α∂θj∂J(θ0,...,θn)
具体的,上述公式中的偏导数可以化简为:
θ
j
:
=
θ
j
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
j
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
\theta_j := \theta_j - \alpha \frac{1}{m} \sum^{m}_{i=1} (h_{\theta}(x^{(i)}_j) - y^{(i)}) x^{(i)}_j
θj:=θj−αm1i=1∑m(hθ(xj(i))−y(i))xj(i)
4.3 多元线性回归的梯度下降——特征缩放
在原始的算法当中,不同特征之间的取值范围不同,会造成gradient descent时收敛过慢。例如,假设存在两个特征:房子的面积和房子的年龄。房子面积
x
1
x_1
x1的取值范围在**(1-2000),而房子年龄
x
2
x_2
x2的取值范围为(1-10)**。这两个特征对应的参数为:
θ
1
,
θ
2
\theta_1,\theta_2
θ1,θ2。它们的代价函数contour图像如下:
可以看出
θ
1
\theta_1
θ1的取值范围会比
θ
2
\theta_2
θ2要小,这是因为只要改变一点点的
θ
1
\theta_1
θ1,则代价函数
J
(
θ
)
J(\theta)
J(θ)会影响比较大,所以它的取值会比较小。
这时候如果利用梯度下降算法,它会收敛速度比较慢。而如果把这两个特征进行缩放,缩放到0-1之间,这时候图像会变成:
此时收敛速度加快,能够更快找到全局最优点。缩放特征有两种比较常见的方法:
-
最大最小归一化:
x ( i ) = x ( i ) − m i n m a x − m i n x^{(i)} = \frac{x^{(i)}- min}{max-min} x(i)=max−minx(i)−min
首先找出该特征所有值的最大值和最小值,然后按照公式对每个特征值进行缩放。 -
Z-score标准化:
x ( i ) = x ( i ) − μ σ x^{(i)} = \frac{x^{(i)}- \mu}{\sigma} x(i)=σx(i)−μ
其中 μ \mu μ为均值, σ \sigma σ为方差
4.4 多项式回归
有些数据不能简单用多元线性回归来进行拟合,这时候可以利用多项式回归来进行拟合。
具体的,polynomial regression可以拟合下图:
可以用下面公式表示
θ
0
+
θ
1
x
+
θ
2
x
2
+
θ
3
x
3
\theta_0 + \theta_1x + \theta_2 x^2 + \theta_3 x^3
θ0+θ1x+θ2x2+θ3x3
也即是说可以用cubic model(三次模型)来拟合曲线,同时作为多项式回归方程。