1.线性回归模型
m
m
m个样本,每个样本有
n
n
n维特征和一个标签
y
y
y,可以用数学表示如下:
(
x
1
1
,
x
2
1
,
x
3
1
,
.
.
.
,
x
n
2
,
y
2
)
,
(
x
1
2
,
x
2
2
,
x
3
2
,
.
.
.
,
x
n
2
,
y
2
)
,
.
.
.
,
(
x
1
m
,
x
2
m
,
x
3
m
,
.
.
.
,
x
n
m
,
y
m
)
(x_{1}^{1},x_{2}^{1},x_{3}^{1},...,x_{n}^{2}, y^{2} ),(x_{1}^{2},x_{2}^{2},x_{3}^{2},...,x_{n}^{2}, y^{2} ),...,(x_{1}^{m},x_{2}^{m},x_{3}^{m},...,x_{n}^{m}, y^{m} )
(x11,x21,x31,...,xn2,y2),(x12,x22,x32,...,xn2,y2),...,(x1m,x2m,x3m,...,xnm,ym)
上式中,上角标代表第
i
i
i个样本,下角标代表第
i
i
i个样本的第
j
j
j个维度。
对于以上样本,可以假设一个多元一次方程来表示
y
y
y和
x
x
x之间的关系:
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
θ
3
x
3
+
.
.
.
+
θ
n
x
n
h_{\theta }(x) =\theta_{0}+\theta_{1}x_{1} +\theta_{2}x_{2}+\theta_{3}x_{3}+...+\theta_{n}x_{n}
hθ(x)=θ0+θ1x1+θ2x2+θ3x3+...+θnxn
为了使表示更简洁,给每个样本添加一个
x
0
=
1
x_{0}=1
x0=1,模型可以表示为下:
h
θ
(
x
)
=
∑
i
=
1
n
θ
i
x
i
h_{\theta }(x) =\sum_{i=1}^{n}\theta _{i} x_{i}
hθ(x)=i=1∑nθixi
用矩阵写出上式为:
h
θ
(
X
)
=
X
θ
h_{\theta }(\mathbf{X} ) =\mathbf{X\theta }
hθ(X)=Xθ
其
中
,
X
∈
R
m
×
n
,
θ
∈
R
n
×
1
,
h
θ
(
X
)
∈
R
m
×
1
其中,\mathbf{X}\in R^{m\times n},\theta\in R^{n\times 1},h_{\theta }(\mathbf{X} )\in R^{m\times 1}
其中,X∈Rm×n,θ∈Rn×1,hθ(X)∈Rm×1。
2.损失函数
h
θ
(
x
)
h_{\theta }(\mathbf{x} )
hθ(x)是假设模型,真实模型未知。因此,引出损失函数这个概念。即损失函数是衡量假设模型和真实模型之间的距离的函数。
线性回归的损失函数为均方误差:
J
(
θ
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
J(\theta )=\frac{1}{2m} \sum_{i=1}^{m}(h_{\theta }(x^{i})-y^{i})
J(θ)=2m1i=1∑m(hθ(xi)−yi)
上式中,
1
2
\frac{1}{2}
21是为了简化计算添加的。
用矩阵表示线性回归的损失函数为:
J
(
θ
)
=
1
2
(
X
θ
−
Y
)
T
(
X
θ
−
Y
)
J(\mathbf{\theta } )=\frac{1}{2}(\mathbf{X\theta-Y} )^{T} (\mathbf{X\theta-Y} )
J(θ)=21(Xθ−Y)T(Xθ−Y)
其中,
X
∈
R
m
×
n
,
θ
∈
R
n
×
1
,
Y
∈
R
m
×
1
,
J
(
θ
)
∈
R
\mathbf{X} \in R^{m\times n},\mathbf{\theta }\in R^{n\times 1} , \mathbf{Y}\in R^{m\times 1} ,J(\theta )\in R
X∈Rm×n,θ∈Rn×1,Y∈Rm×1,J(θ)∈R。
3.参数学习方法之最小二乘法和梯度下降法
损失函数越小,说明假设模型和真实模型越接近,即假设模型越好。
所以,对于线性回归,使
J
(
θ
)
J(\theta)
J(θ)越小的
θ
\theta
θ,所表示的模型
h
θ
(
x
)
h_{\theta }(x)
hθ(x)效果越好。即参数学习的过程为极小化损失函数
J
(
θ
)
J(\theta)
J(θ)。常用的解法有两种:
(1)最小二乘法
当样本容量较小,并且可以求出解析解的时候,一般用最小二乘法:
arg
min
θ
J
(
θ
)
=
1
2
(
X
θ
−
Y
)
T
(
X
θ
−
Y
)
\arg\min _{\theta }J(\theta )=\frac{1}{2}(\mathbf{X\theta-Y} )^{T} (\mathbf{X\theta-Y} )
argθminJ(θ)=21(Xθ−Y)T(Xθ−Y)
要求
∂
J
∂
θ
\frac{\partial J}{\partial \theta }
∂θ∂J,标量对向量求导,使用矩阵微分:
d
J
(
θ
)
=
t
r
(
d
J
(
θ
)
)
=
1
2
t
r
[
d
(
(
X
θ
−
Y
)
T
(
X
θ
−
Y
)
)
]
,
标
量
的
迹
=
1
2
t
r
[
d
(
X
θ
−
Y
)
T
(
X
θ
−
Y
)
+
(
X
θ
−
Y
)
T
d
(
X
θ
−
Y
)
]
,
矩
阵
乘
法
=
1
2
t
r
[
(
X
d
θ
)
T
(
X
θ
−
Y
)
]
+
1
2
t
r
[
(
X
θ
−
Y
)
T
X
d
θ
]
,
迹
的
转
置
=
1
2
t
r
[
(
X
θ
−
Y
)
T
X
d
θ
]
+
1
2
t
r
[
(
X
θ
−
Y
)
T
X
d
θ
]
,
迹
的
转
置
=
t
r
[
(
X
θ
−
Y
)
T
X
d
θ
]
,
合
并
同
类
项
\begin{aligned} dJ(\theta )&=tr(dJ(\theta ))=\frac{1}{2}tr[d((\mathbf{X\theta-Y} )^{T} (\mathbf{X\theta-Y} ))],标量的迹\\ &=\frac{1}{2}tr[d(\mathbf{X\theta-Y} )^{T} (\mathbf{X\theta-Y} )+(\mathbf{X\theta-Y} )^{T} d(\mathbf{X\theta-Y} )],矩阵乘法\\ &=\frac{1}{2}tr[(\mathbf{X}d\theta )^{T} (\mathbf{X\theta-Y} )]+\frac{1}{2}tr[(\mathbf{X\theta-Y} )^{T}\mathbf{X}d\theta],迹的转置\\ &=\frac{1}{2}tr[(\mathbf{X\theta-Y} )^{T}\mathbf{X}d\theta]+\frac{1}{2}tr[(\mathbf{X\theta-Y} )^{T}\mathbf{X}d\theta],迹的转置\\ &=tr[(\mathbf{X\theta-Y} )^{T}\mathbf{X}d\theta],合并同类项 \end{aligned}
dJ(θ)=tr(dJ(θ))=21tr[d((Xθ−Y)T(Xθ−Y))],标量的迹=21tr[d(Xθ−Y)T(Xθ−Y)+(Xθ−Y)Td(Xθ−Y)],矩阵乘法=21tr[(Xdθ)T(Xθ−Y)]+21tr[(Xθ−Y)TXdθ],迹的转置=21tr[(Xθ−Y)TXdθ]+21tr[(Xθ−Y)TXdθ],迹的转置=tr[(Xθ−Y)TXdθ],合并同类项
根据矩阵微分和导数的关系,可得:
∂
J
(
θ
)
∂
θ
=
(
(
X
θ
−
Y
)
T
X
)
T
=
X
T
(
X
θ
−
Y
)
=
0
\frac{\partial J(\theta )}{\partial \theta } =((\mathbf{X\theta-Y} )^{T}\mathbf{X})^{T}= \mathbf{X}^{T}(\mathbf{X\theta-Y} )=0
∂θ∂J(θ)=((Xθ−Y)TX)T=XT(Xθ−Y)=0
最终求得:
θ
=
(
X
T
X
)
−
1
X
T
Y
\theta =(\mathbf{X^{T} X} )^{-1} \mathbf{X^{T} Y}
θ=(XTX)−1XTY
也就是说,当
X
T
X
\mathbf{X^{T} X}
XTX的逆矩阵存在时,可以直接求出最终的参数
θ
\theta
θ。
(2)梯度下降法
当样本量过大或逆矩阵不存在时,一般使用梯度下降法迭代求出参数值。
由(1)可知,第
k
k
k次迭代时,
∂
J
k
∂
θ
k
\frac{\partial J_{k} }{\partial \theta _{k} }
∂θk∂Jk的梯度向量为:
∂
J
k
∂
θ
k
=
X
T
(
X
θ
k
−
Y
)
\frac{\partial J^{k} }{\partial \theta ^{k} } =\mathbf{X}^{T}(\mathbf{X\theta ^{k} -Y} )
∂θk∂Jk=XT(Xθk−Y)
则第
k
+
1
k+1
k+1次迭代值为:
θ
k
+
1
=
θ
k
−
λ
X
T
(
X
θ
k
−
Y
)
\theta ^{k+1}=\theta ^{k}-\lambda \mathbf{X}^{T}(\mathbf{X\theta ^{k} -Y} )
θk+1=θk−λXT(Xθk−Y)
其中,$\lambda $为步长,可以通过一维搜索确定。
4.线性回归流程(梯度下降法)
输入:样本集
X
∈
R
m
×
n
\mathbf{X} \in R^{m\times n}
X∈Rm×n,精度阈值
ϵ
\epsilon
ϵ,步长
λ
\lambda
λ,要预测的样本
x
\mathbf{x}
x。
输出:预测结果
h
(
x
)
h(\mathbf{x})
h(x)。
(1)初始化迭代轮数
k
=
1
k=1
k=1,参数向量
θ
1
∈
R
n
×
1
\theta ^{1} \in R^{n\times 1}
θ1∈Rn×1。
(2)求出第
k
k
k次迭代的梯度向量:
∂
J
(
θ
k
)
∂
θ
k
=
X
T
(
X
θ
k
−
Y
)
\frac{\partial J(\theta ^{k} )}{\partial \theta ^{k}} =\mathbf{X}^{T}(\mathbf{X\theta ^{k} -Y} )
∂θk∂J(θk)=XT(Xθk−Y)
(3)在第
k
k
k次迭代中,如果向量
∂
J
(
θ
k
)
∂
θ
k
\frac{\partial J(\theta ^{k} )}{\partial \theta ^{k}}
∂θk∂J(θk)中的每个分量都小于
ϵ
\epsilon
ϵ,迭代停止,转(5);否则,令:
θ
k
+
1
=
θ
k
−
λ
X
T
(
X
θ
k
−
Y
)
,
k
=
k
+
1
\theta ^{k+1}=\theta ^{k}-\lambda \mathbf{X}^{T}(\mathbf{X\theta ^{k} -Y} ),k=k+1
θk+1=θk−λXT(Xθk−Y),k=k+1
(4)重复(2)、(3)直到迭代停止,得最终参数向量
θ
∗
\theta ^{*}
θ∗。
(5)将要预测的样本
x
\mathbf{x}
x带到假设函数中可得到最终预测结果:
h
(
x
)
=
x
θ
∗
h(\mathbf{x})=\mathbf{x}\theta ^{*}
h(x)=xθ∗