线性回归(Linear Regression)
单变量线性回归 (Linear regression with one variable / Univariate linear regression) 多变量线性回归 (Linear regression with multiple variables / Multivariate linear regression)
标记符号:
m
m
m — 训练样本的数量
x
x
x — 输入变量/特征
y
y
y — 输出变量
(
x
,
y
)
(x,y )
( x , y ) — 一个训练样本
(
x
(
i
)
,
y
(
i
)
)
(x^{(i)}, y^{(i)})
( x ( i ) , y ( i ) ) — 第
i
i
i 个训练样本
n
n
n — 特征的数量
x
(
i
)
x^{(i)}
x ( i ) — 第
i
i
i 个样本输入
x
j
(
i
)
x_j^{(i)}
x j ( i ) — 第
i
i
i 个样本输入的第
j
j
j 个特征
假设函数(Hypothesis)
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 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n
另外的定义
x
0
=
1
x_0=1
x 0 = 1 ,那么假设函数就可以通过两个向量的乘积来表示:
x
=
[
x
0
x
1
x
2
.
.
.
x
n
]
θ
=
[
θ
0
θ
1
θ
2
.
.
.
θ
n
]
x=\begin{bmatrix}x_0\\x_1\\x_2\\.\\.\\.\\x_n\end{bmatrix}\qquad \theta=\begin{bmatrix}\theta_0\\\theta_1\\\theta_2\\.\\.\\.\\\theta_n\end{bmatrix}
x = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ x 0 x 1 x 2 . . . x n ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤ θ = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ θ 0 θ 1 θ 2 . . . θ n ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤
h
θ
(
x
)
=
θ
0
x
0
+
θ
1
x
1
+
.
.
.
θ
n
x
n
=
θ
T
x
\begin{aligned} h_\theta(x) &=\theta_0x_0+\theta_1x_1+...\theta_nx_n\\ &=\theta^Tx \end{aligned}
h θ ( x ) = θ 0 x 0 + θ 1 x 1 + . . . θ n x n = θ T x
代价函数(Cost Function)
J
(
θ
0
,
θ
1
,
.
.
.
,
θ
n
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
−
y
(
i
)
)
)
2
J(\theta_0,\theta_1,...,\theta_n)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)}-y^{(i)}))^2
J ( θ 0 , θ 1 , . . . , θ n ) = 2 m 1 i = 1 ∑ m ( h θ ( x ( i ) − y ( i ) ) ) 2
梯度下降(Gradient Descent )
“Batch” Gradient Descent “Batch”: Each step of gradient descent uses all the training examples.
n
n
n 个特征的梯度下降一般算法:
r
e
p
e
a
t
u
n
t
i
l
c
o
n
v
e
r
g
e
n
c
e
{
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
.
.
.
θ
n
)
}
\begin{aligned} & repeat\;until\;convergence\;\{\\ & \qquad \theta_j:=\theta_j-\alpha \frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1...\theta_n)\\ & \}\\ \end{aligned}
r e p e a t u n t i l c o n v e r g e n c e { θ j : = θ j − α ∂ θ j ∂ J ( θ 0 , θ 1 . . . θ n ) }
α
\alpha
α (Learning rate): 控制参数
θ
\theta
θ 变化的快慢
如果
α
\alpha
α 太小,梯度下降就会太慢
如果
α
\alpha
α 太大,在跌倒中,有可能越过最低点,代价函数
J
(
θ
)
J(\theta)
J ( θ ) 可能会上升; 最后不能收敛(converge),甚至发散(diverge)。
对于
α
\alpha
α , 可以这样一次乘三倍的去尝试
.
.
.
,
0.001
,
0.003
,
0.01
,
0.03
,
0.1
,
0.3
,
1
,
.
.
.
...,0.001,0.003,0.01,0.03,0.1,0.3,1,...
. . . , 0 . 0 0 1 , 0 . 0 0 3 , 0 . 0 1 , 0 . 0 3 , 0 . 1 , 0 . 3 , 1 , . . .
梯度(Gradient) 也就是下降速度,表示为斜率,每个参数按照不同方向的斜率,尽快的下降。越接近最小值,变化速率也会随着斜率的减小自动的减小。
J
(
θ
0
,
θ
1
.
.
.
θ
n
)
=
1
2
m
∑
i
=
1
m
(
θ
0
+
θ
1
x
1
(
i
)
+
.
.
.
+
θ
n
x
n
(
i
)
−
y
(
i
)
)
2
∂
∂
θ
j
J
(
θ
0
,
θ
1
.
.
.
θ
n
)
=
J
(
θ
0
+
θ
1
x
1
(
i
)
+
.
.
.
θ
n
x
n
(
i
)
−
y
(
i
)
)
∗
x
j
(
i
)
\begin{aligned} J(\theta_0,\theta_1...\theta_n)&=\frac{1}{2m}\sum_{i=1}^{m}(\theta_0+\theta_1x_1^{(i)}+...+\theta_nx_n^{(i)}-y^{(i)})^2 \\ \frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1...\theta_n)&=J(\theta_0+\theta_1x_1^{(i)}+...\theta_nx_n^{(i)}-y^{(i)})*x_j^{(i)} \end{aligned}
J ( θ 0 , θ 1 . . . θ n ) ∂ θ j ∂ J ( θ 0 , θ 1 . . . θ n ) = 2 m 1 i = 1 ∑ m ( θ 0 + θ 1 x 1 ( i ) + . . . + θ n x n ( i ) − y ( i ) ) 2 = J ( θ 0 + θ 1 x 1 ( i ) + . . . θ n x n ( i ) − y ( i ) ) ∗ x j ( i )
梯度下降很容易陷入局部最优,只要初始值偏离一点,最后也可能会落在不同的最优处。
但是对于线性回归来说,所有的函数都是凸函数,也就是说局部最优就是全局最优。
特征缩放(Feature Scaling)
在多元线性回归中,两个变量范围相差太大,每一次迭代的步子都可能会非常小,也就需要很多的迭代次数。
特征缩放的目的是让所有的变量
x
i
x_i
x i 取值都在
−
1
≤
x
i
≤
1
-1\le x_i\le 1
− 1 ≤ x i ≤ 1 之间。吴恩达给出的上下限:
(
−
3
,
3
)
,
(
−
1
3
,
1
3
)
(-3,3), (-\frac{1}{3},\frac{1}{3})
( − 3 , 3 ) , ( − 3 1 , 3 1 )
扫描二维码关注公众号,回复:
8804100 查看本文章
均值归一(Mean normalization):
x
i
=
x
i
−
μ
i
s
i
x_i=\frac{x_i-\mu_i}{s_i}
x i = s i x i − μ i
μ
i
=
x
i
的平均值
\mu_i= x_i\text{的平均值}
μ i = x i 的平均值
s
i
=
x
i
的取值范围
(
m
a
x
−
m
i
n
)
s_i = x_i\text{的取值范围}\qquad (max-min)
s i = x i 的取值范围 ( m a x − m i n )
多项式回归(Polynomial regression)
对于多项式模型的假设函数,如:
h
θ
=
θ
0
+
θ
1
x
+
θ
2
x
2
+
θ
3
x
3
h_\theta=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3
h θ = θ 0 + θ 1 x + θ 2 x 2 + θ 3 x 3 ,可以令
x
1
=
x
,
x
2
=
x
2
,
x
3
=
x
3
x_1=x,x_2=x^2,x3=x^3
x 1 = x , x 2 = x 2 , x 3 = x 3 ,然后使用普通线性回归的梯度下降即可。
通常需要特征缩放。
正规方程(Normal Equation)
对于
m
m
m 个样本,
n
n
n 个特征 的训练,我们可以表示
m
m
m 个输入
x
(
i
)
x^{(i)}
x ( i ) 和一个输出
y
y
y 把所有的特征向量
x
(
i
)
x^{(i)}
x ( i ) 构造出设计矩阵(design matrix)
X
X
X 。
x
(
i
)
=
[
x
0
i
x
1
i
x
2
i
.
.
.
x
n
i
]
∈
R
n
+
1
X
=
[
(
x
(
1
)
)
T
(
x
(
2
)
)
T
.
.
.
(
x
(
m
)
)
T
]
y
=
[
y
(
1
)
y
(
2
)
.
.
.
y
(
m
)
]
x^{(i)}= \begin{bmatrix} x_0^{i}\\ x_1^{i}\\ x_2^{i}\\ .\\ .\\ .\\ x_n^{i}\\ \end{bmatrix}\in \mathbb{R}^{n+1} \qquad\qquad X= \begin{bmatrix} (x^{(1)})^T\\ (x^{(2)})^T\\ .\\ .\\ .\\ (x^{(m)})^T \end{bmatrix} \qquad\qquad y= \begin{bmatrix} y^{(1)}\\ y^{(2)}\\ .\\ .\\ .\\ y^{(m)}\\ \end{bmatrix}
x ( i ) = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ x 0 i x 1 i x 2 i . . . x n i ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤ ∈ R n + 1 X = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ ( x ( 1 ) ) T ( x ( 2 ) ) T . . . ( x ( m ) ) T ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤ y = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ y ( 1 ) y ( 2 ) . . . y ( m ) ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤ 那么就可以神奇的得到向量
θ
\theta
θ ,里面的数就是最优的参数。
θ
=
(
X
T
X
)
−
1
X
T
y
\theta=(X^TX)^{-1}X^Ty
θ = ( X T X ) − 1 X T y
与梯度下降相比,正则化不需要计算出
α
\alpha
α ,也不需要多次的迭代。但如果
n
n
n 太大,它的效率也不高,因为
X
T
X
X^TX
X T X 是一个
n
×
n
n\times n
n × n 的矩阵,求逆的复杂度是
O
(
n
3
)
O(n^3)
O ( n 3 )
一般情况下
X
T
X
X^TX
X T X 都是可以求逆的,就算不可以求逆,
O
c
t
a
v
e
Octave
O c t a v e 里的函数
p
i
n
v
pinv
p i n v 也能够计算出逆。
不可求逆的一般原因:
特征之间线性依赖,存在多余的特征
特征过多 (
m
≤
n
m\le n
m ≤ n )
删除掉无关特征,或者使用正则化(regularization)
参考资料
[1].吴恩达机器学习 第二章-单变量线性回归 [2].吴恩达机器学习 第五章-多变量线性回归 [3].黄海广博士笔记