文章目录
线性回归是利用数理统计中回归分析来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。
回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。
如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。
一、单变量线性回归
单变量线性回归(Univariate linear regression)又称一元线性回归(Linear regression with one variable)。
1.1 监督学习算法工作流程
1.2 线性回归模型表示
假设函数(Hypothesis)
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_{\theta}(x)=\theta_{0}+\theta_{1} x
hθ(x)=θ0+θ1x,其中θ是模型参数,x是输入变量/特征。y是输出/目标变量。
1.3 代价函数
代价函数(Cost function)也叫平方误差函数或平方误差代价函数。它的作用是为我们的训练样本 (
x
x
x,
y
y
y) 选择
θ
0
,
θ
1
\theta_{0}, \theta_{1}
θ0,θ1,使得
h
θ
(
x
)
h_{\theta}(x)
hθ(x)更接近于
y
y
y。
代价函数:
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J\left(\theta_{0}, \theta_{1}\right)=\frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}
J(θ0,θ1)=2m1∑i=1m(hθ(x(i))−y(i))2
其中,m是训练样本的数量。我们的目标是
m
i
n
i
m
i
z
e
minimize
minimize
J
(
θ
0
,
θ
1
)
J\left(\theta_{0}, \theta_{1}\right)
J(θ0,θ1),
得到
θ
0
,
θ
1
\theta_{0}, \theta_{1}
θ0,θ1的值。
1.4 梯度下降
梯度下降(Gradient descent)是一个用来求函数极小值的算法,将使用梯度下降算法来求出代价函数
J
(
θ
0
,
θ
1
)
J\left(\theta_{0}, \theta_{1}\right)
J(θ0,θ1)的最小值。但当选择不同的初始参数组合,可能会找到不同的局部最小值。梯度下降算法的实现:
Repeat until convergence
{
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
(
\left\{\theta_{j}:=\theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}} J\left(\theta_{0}, \theta_{1}\right) \quad(\right.
{θj:=θj−α∂θj∂J(θ0,θ1)( for
j
=
0
j=0
j=0 and
j
=
1
)
}
\left.j=1)\right\}
j=1)}
其中,
α
\alpha
α是学习率,用来控制梯度下降时的步长。若
α
\alpha
α很大,则说明梯度下降会很迅速;若
α
\alpha
α很小,则说明梯度下降会很缓慢。并且上式中
θ
0
,
θ
1
\theta_{0}, \theta_{1}
θ0,θ1需同时更新(Simultaneous update)。
对于上图来说,只有一个参数 θ 1 \theta_{1} θ1,当运行梯度下降接近局部最小值时,导数项 d d θ 1 J ( θ 1 ) \frac{d}{d \theta_{1}} J\left(\theta_{1}\right) dθ1dJ(θ1) 越小,步长 α \alpha α 会自动减小,直到到达最低点 ( α = 0 ) (\alpha=0) (α=0),不需要另外减小 α \alpha α 。
梯度下降的缺点:
1.只能知道导数方向,不知道与最优点的距离;
2.不能保证全局最优性。
1.5 线性回归的梯度下降
线性回归模型:
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_{\theta}(x)=\theta_{0}+\theta_{1} x
hθ(x)=θ0+θ1x
代价函数:
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J\left(\theta_{0}, \theta_{1}\right)=\frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}
J(θ0,θ1)=2m1i=1∑m(hθ(x(i))−y(i))2
梯度下降算法:
Repeat until convergence
{
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
(
\left\{\theta_{j}:=\theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}} J\left(\theta_{0}, \theta_{1}\right)(\right.
{θj:=θj−α∂θj∂J(θ0,θ1)( for
j
=
0
j=0
j=0 and
j
=
1
)
}
\left.j=1)\right\}
j=1)}
用梯度下降算法实现线性回归模型代价函数的最小化:
min
θ
0
,
θ
1
J
(
θ
0
,
θ
1
)
\min _{\theta_{0}, \theta_{1}} J\left(\theta_{0}, \theta_{1}\right)
θ0,θ1minJ(θ0,θ1)
推导可得
θ
0
,
θ
1
\theta_{0}, \theta_{1}
θ0,θ1 的更新公式:
∂ ∂ θ j J ( θ 0 , θ 1 ) = ∂ ∂ θ j 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = ∂ ∂ θ j 1 2 m ∑ i = 1 m ( θ 0 + θ 1 x ( i ) − y ( i ) ) 2 \frac{\partial}{\partial \theta_{j}} J\left(\theta_{0}, \theta_{1}\right)=\frac{\partial}{\partial \theta_{j}} \frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}=\frac{\partial}{\partial \theta_{j}} \frac{1}{2 m} \sum_{i=1}^{m}\left(\theta_{0}+\theta_{1} x^{(i)}-y^{(i)}\right)^{2} ∂θj∂J(θ0,θ1)=∂θj∂2m1∑i=1m(hθ(x(i))−y(i))2=∂θj∂2m1∑i=1m(θ0+θ1x(i)−y(i))2
{ θ 0 j = 0 : ∂ ∂ θ 0 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) θ 1 j = 1 : ∂ ∂ θ 1 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x ( i ) \left\{\begin{array}{ll} \theta_{0} \quad j=0: & \frac{\partial}{\partial \theta_{0}} J\left(\theta_{0}, \theta_{1}\right)=\frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) \\ \theta_{1} \quad j=1: & \frac{\partial}{\partial \theta_{1}} J\left(\theta_{0}, \theta_{1}\right)=\frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x^{(i)}\end{array}\right. {θ0j=0:θ1j=1:∂θ0∂J(θ0,θ1)=m1∑i=1m(hθ(x(i))−y(i))∂θ1∂J(θ0,θ1)=m1∑i=1m(hθ(x(i))−y(i))x(i)
Repeat until convergence { θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) θ 1 : = θ 1 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x ( i ) } \left\{\begin{array}{l}\theta_{0}:=\theta_{0}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) \\ \theta_{1}:=\theta_{1}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x^{(i)}\end{array}\right\} {θ0:=θ0−αm1∑i=1m(hθ(x(i))−y(i))θ1:=θ1−αm1∑i=1m(hθ(x(i))−y(i))x(i)}
二、多变量线性回归
2.1 多维特征
假设函数
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
…
+
θ
n
x
n
=
θ
T
X
h_{\theta}(x)=\theta_{0}+\theta_{1} x_{1}+\theta_{2} x_{2}+\ldots+\theta_{n} x_{n}=\theta^{T} X
hθ(x)=θ0+θ1x1+θ2x2+…+θnxn=θTX, 其中
n
n
n 是特征数量,
θ
\theta
θ 是模型参数,
x
x
x 是输入变量/特征,
θ
\theta
θ 和
x
x
x 都是
n
+
1
n+1
n+1 维向量。
X
=
[
x
0
x
1
⋯
x
n
]
θ
=
[
θ
0
θ
1
⋯
θ
n
]
X=\left[\begin{array}{c} x_{0} \\ x_{1} \\ \cdots \\ x_{n} \end{array}\right] \quad \theta=\left[\begin{array}{c} \theta_{0} \\ \theta_{1} \\ \cdots \\ \theta_{n} \end{array}\right]
X=⎣⎢⎢⎡x0x1⋯xn⎦⎥⎥⎤θ=⎣⎢⎢⎡θ0θ1⋯θn⎦⎥⎥⎤
2.2 多变量梯度下降
Hypothesis
:
h
θ
(
x
)
=
θ
T
X
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
…
+
θ
n
x
n
: h_{\theta}(x)=\theta^{T} X=\theta_{0}+\theta_{1} x_{1}+\theta_{2} x_{2}+\ldots+\theta_{n} x_{n}
:hθ(x)=θTX=θ0+θ1x1+θ2x2+…+θnxn
Parameters
:
θ
0
,
θ
1
,
…
,
θ
n
: \theta_{0}, \theta_{1}, \ldots, \theta_{n}
:θ0,θ1,…,θn
Cost function:
J
(
θ
)
=
J
(
θ
0
,
θ
1
,
…
,
θ
n
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J(\theta)=J\left(\theta_{0}, \theta_{1}, \ldots, \theta_{n}\right)=\frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}
J(θ)=J(θ0,θ1,…,θn)=2m1∑i=1m(hθ(x(i))−y(i))2
Gradient descent: Repeat
{
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
)
}
\left\{\theta_{j}:=\theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}} J(\theta)\right\}
{θj:=θj−α∂θj∂J(θ)}
New algorithm
(
n
≥
1
)
:
(n \geq 1):
(n≥1): Repeat
{
θ
j
:
=
θ
j
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
)
}
\left\{\theta_{j}:=\theta_{j}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i))}\right\}
{θj:=θj−αm1∑i=1m(hθ(x(i))−y(i))xj(i))}
2.2.1 特征缩放
特征缩放(Feature scaling)是为了确保特征在一个相近的范围内, 使得算法更快收敛。可以使用均值归一化的方法实现特征缩放。
均值归一化:
x
n
=
x
n
−
μ
n
S
n
x_{n}=\frac{x_{n}-\mu_{n}}{S_{n}}
xn=Snxn−μn
其中,
μ
n
\mu_{n}
μn 是平均值,
S
n
S_{n}
Sn 是标准差。
2.2.2 学习率
梯度下降算法收敛所需要的迭代次数根据模型的不同而不同,我们可以通过绘制迭代次数和代价 函数的图来观察算法在何时趋于收敛。如果在一次迭代中,
J
(
θ
)
J(\theta)
J(θ) 的值小于
1
0
−
3
ε
\frac{10^{-3}}{\varepsilon}
ε10−3, 则可以说此次迭代是收敛的。 学习率
α
\alpha
α 的选择:
α
\alpha
α 太小收敛很慢;
α
\alpha
α 太大:每一次迭代中
J
(
θ
)
J(\theta)
J(θ) 可能不总是下降的,可能会导致最后不收敛;
选择
α
\alpha
α 时, 可以尝试
…
,
0.001
,
0.003
,
0.01
,
0.03
,
0.1
,
0.3
,
1
,
…
\ldots, 0.001,0.003,0.01,0.03,0.1,0.3,1, \ldots
…,0.001,0.003,0.01,0.03,0.1,0.3,1,… 等值。
2.3 特征和多项式回归
多项式回归可以用线性回归的方法来拟合,非常复杂的函数,甚至是非线性函数都可以。
假设函数 h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 = θ 0 + θ 1 ( h_{\theta}(x)=\theta_{0}+\theta_{1} x_{1}+\theta_{2} x_{2}+\theta_{3} x_{3}=\theta_{0}+\theta_{1}( hθ(x)=θ0+θ1x1+θ2x2+θ3x3=θ0+θ1( feature ) + θ 2 ( feature ) 2 + θ 3 ( feature ) 3 )+\theta_{2}(\text { feature })^{2}+ \theta_{3}(\text { feature })^{3} )+θ2( feature )2+θ3( feature )3 。其中, x 1 = ( x_{1}=( x1=( feature ) , x 2 = ( feature ) 2 , x 3 = ( feature ) 3 ), x_{2}=(\text { feature })^{2},x_{3}=(\text { feature })^{3} ),x2=( feature )2,x3=( feature )3
2.4 正规方程
正规方程(Normal Equation)是一种求
θ
\theta
θ 的解析解法, 它是通过求解方程
∂
∂
θ
j
J
(
θ
j
)
=
0
\frac{\partial}{\partial \theta_{j}} J\left(\theta_{j}\right)=0
∂θj∂J(θj)=0 来找出使 得代价函数最小的参数的
θ
\theta
θ 不需要进行特征缩放。 使用正规方程解出:
θ
=
(
X
T
X
)
−
1
X
T
y
\theta=\left(X^{T} X\right)^{-1} X^{T} y
θ=(XTX)−1XTy
θ
=
(
X
T
X
)
−
1
X
T
y
\theta=\left(X^{T} X\right)^{-1} X^{T} y
θ=(XTX)−1XTy 的推导过程:
J
(
θ
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J(\theta)=\frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}
J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2
将上式转化为矩阵表达形式:
J
(
θ
)
=
1
2
(
X
θ
−
y
)
T
(
X
θ
−
y
)
=
1
2
(
θ
T
X
T
−
y
T
)
(
X
θ
−
y
)
=
1
2
(
θ
T
X
T
X
θ
−
θ
T
X
T
y
−
(
y
T
X
)
T
−
y
T
y
)
\begin{aligned} J(\theta) &=\frac{1}{2}(X \theta-y)^{T}(X \theta-y)=\frac{1}{2}\left(\theta^{T} X^{T}-y^{T}\right)(X \theta-y) \\ &=\frac{1}{2}\left(\theta^{T} X^{T} X \theta-\theta^{T} X^{T} y-\left(y^{T} X\right)^{T}-y^{T} y\right) \end{aligned}
J(θ)=21(Xθ−y)T(Xθ−y)=21(θTXT−yT)(Xθ−y)=21(θTXTXθ−θTXTy−(yTX)T−yTy)
接下来对
J
(
θ
)
J(\theta)
J(θ) 求偏导(提示:
d
A
B
d
B
=
A
T
,
d
X
T
A
X
d
X
=
2
A
X
\frac{d A B}{d B}=A^{T}, \frac{d X^{T} A X}{d X}=2 A X
dBdAB=AT,dXdXTAX=2AX )
∂
J
(
θ
)
∂
θ
=
1
2
(
2
X
T
X
θ
−
X
T
y
−
(
y
T
X
)
T
−
0
)
=
1
2
(
2
X
T
X
θ
−
X
T
y
−
X
T
y
−
0
)
=
X
T
X
θ
−
X
T
y
令
∂
J
(
θ
)
∂
θ
=
0
,
则
θ
=
(
X
T
X
)
−
1
X
T
y
\begin{array}{c} \frac{\partial J(\theta)}{\partial \theta}=\frac{1}{2}\left(2 X^{T} X \theta-X^{T} y-\left(y^{T} X\right)^{T}-0\right) \\ =\frac{1}{2}\left(2 X^{T} X \theta-X^{T} y-X^{T} y-0\right) \\ =X^{T} X \theta-X^{T} y \\ \text { 令 } \frac{\partial J(\theta)}{\partial \theta}=0, \text { 则 } \theta=\left(X^{T} X\right)^{-1} X^{T} y \end{array}
∂θ∂J(θ)=21(2XTXθ−XTy−(yTX)T−0)=21(2XTXθ−XTy−XTy−0)=XTXθ−XTy 令 ∂θ∂J(θ)=0, 则 θ=(XTX)−1XTy
梯度下降与正规方程的比较:
梯度下降 | 正规方程 |
---|---|
需要选择 α \alpha α | 不需要选择 α \alpha α |
需要多次迭代 | 一次运算得出 |
当特征数量n大时也能较好适用 | 需要计算 ( X T X ) − 1 \left(X^{T} X\right)^{-1} (XTX)−1, 当特征数量n大时会很慢 |
适应于各种类型的模型 | 只适用于线性模型,不适合Logisic回归等其他模型 |