线性回归模型
假设我们有如下关于信贷额度的一组数据:
工资 | 年龄 | 额度 |
---|---|---|
4000 | 25 | 20000 |
8000 | 30 | 70000 |
5000 | 28 | 35000 |
7500 | 33 | 50000 |
12000 | 40 | 85000 |
这里额度(记为变量
y
y
y)是我们想要预测的,而工资(
x
1
x_1
x1)、年龄(
x
2
x_2
x2)是我们可获得的、与贷款额度直接有关的,假设它们之间是线性相关的,建立如下的线性模型可以准确描述他们之间的关系:
y
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
ϵ
y=\theta_0+\theta_1x_1+\theta_2x_2+\epsilon
y=θ0+θ1x1+θ2x2+ϵ
根据已有数据估计出未知参数,之后,给定任何一个人的工资、年龄信息,都可以对其信贷额度作出合理预测,这是一个回归问题。倘若我们只想知道要不要给这个人贷款,这就变成了一个分类问题。
- 样本:数据集的每一行;
- 特征:数据集的某几列(工资、年龄),是易获得的,作为输入信息;
- 标签:关注的信息,想要作出预测(额度);
- 参数: θ 0 \theta_0 θ0称为偏置项,对最后结果影响较小; θ i \theta_i θi反映第 i i i个特征对标签的影响程度。
- 误差项:样本总是有噪声的,包括数据获取过程中存在的误差、计算误差等等。
记:样本量
n
n
n,自变量数量
p
p
p,因变量
y
y
y,自变量
x
1
,
.
.
,
x
p
x_1,..,x_p
x1,..,xp;因变量、自变量的观测数据:
y
n
×
1
=
(
y
(
1
)
,
.
.
.
,
y
(
n
)
)
T
y_{n\times1}=(y^{(1)},...,y^{(n)})^T
yn×1=(y(1),...,y(n))T,
X
n
×
p
=
(
x
(
1
)
,
.
.
.
,
x
(
n
)
)
T
X_{n\times p}=(x^{(1)},...,x^{(n)})^T
Xn×p=(x(1),...,x(n))T,其中
{
x
(
i
)
=
(
x
1
i
,
.
.
.
,
x
p
i
)
,
y
(
i
)
}
\{x^{(i)}=(x^i_1,...,x^i_p),y^{(i)}\}
{x(i)=(x1i,...,xpi),y(i)}表示第
i
i
i个样本,可写一般地线性回归模型:
y
=
X
θ
+
ϵ
y=X\theta+\epsilon
y=Xθ+ϵ
对每个样本有:
y
(
i
)
=
θ
T
x
(
i
)
+
ϵ
(
i
)
(
1
≤
i
≤
n
)
y^{(i)}=\theta^Tx^{(i)}+\epsilon^{(i)} \quad (1\leq i\leq n)
y(i)=θTx(i)+ϵ(i)(1≤i≤n)
其中,参数
θ
p
×
1
=
(
θ
1
,
.
.
.
,
θ
p
)
T
\theta_{p\times1}=(\theta_1,...,\theta_p)^T
θp×1=(θ1,...,θp)T,误差项
ϵ
n
×
1
=
(
ϵ
(
1
)
,
.
.
.
,
ϵ
(
n
)
)
T
\epsilon_{n\times1}=(\epsilon^{(1)},...,\epsilon^{(n)})^T
ϵn×1=(ϵ(1),...,ϵ(n))T。
建立线性回归模型的变量需满足假设:
- 线性性: 单个自变量对因变量的影响是线性的,即, x i x_i xi变化一个单位,自变量变化 θ i \theta_i θi个单位,与自变量的绝对值无关;
- 可加性:单个自变量对因变量的影响与其他自变量无关;
- 自变量之间相互独立;
- 误差项 ϵ ∼ N ( 0 , σ 2 ) \epsilon\sim\mathcal{N}(0,\sigma^2) ϵ∼N(0,σ2); ϵ ( i ) \epsilon^{(i)} ϵ(i)相互独立,均取自正态分布 ϵ ∼ N ( 0 , σ 2 I ) \epsilon\sim\mathcal{N}(0,\sigma^2I) ϵ∼N(0,σ2I)。
为什么假设误差项服从正态分布?
- 中心极限定理:独立同分布的随机变量 X 1 , . . . , X n , . . . X_1,...,X_n,... X1,...,Xn,...具有有限的期望 E [ X i ] = μ E[X_i]=\mu E[Xi]=μ和方差 V a r ( X i ) = σ 2 Var(X_i)=\sigma^2 Var(Xi)=σ2,则当 n n n很大时,随机变量 Y n = ∑ i = 1 n X i − n μ n σ = X ˉ − E [ X ˉ ] V a r ( X ˉ ) Y_n=\frac{\sum_{i=1}^nX_i-n\mu}{\sqrt{n}\sigma}=\frac{\bar{X}-E[\bar{X}]}{Var(\bar{X})} Yn=nσ∑i=1nXi−nμ=Var(Xˉ)Xˉ−E[Xˉ]近似地服从标准正态分布 N ( 0 , 1 ) \mathcal{N}(0,1) N(0,1)。
- 一些现象受到许多相互独立的随机因素的影响,如果每个因素所产生的影响都很微小时,总的影响可以看作是服从正态分布的。
参数估计
1. 最小二乘法
思想:极小化残差平方和,
min
θ
J
(
θ
)
=
(
y
−
X
θ
)
T
(
y
−
X
θ
)
\min_{\theta} J(\theta)=(y-X\theta)^T(y-X\theta)
θminJ(θ)=(y−Xθ)T(y−Xθ)
可写向量形式:
min
θ
J
(
θ
)
=
∑
i
=
1
n
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
\min_{\theta} J(\theta)=\sum_{i=1}^n(y^{(i)}-\theta^Tx^{(i)})^2
θminJ(θ)=i=1∑n(y(i)−θTx(i))2
无约束优化问题最优性条件:
设 f ( x ) : Ω → R , Ω ∈ R n f(x):\Omega\rightarrow\mathbb{R},\Omega\in\mathbb{R}^n f(x):Ω→R,Ω∈Rn为连续可微函数,无约束优化问题 min x ∈ Ω f ( x ) \min_{x\in\Omega} f(x) x∈Ωminf(x)存在局部极小值 x ∗ x^* x∗的充分必要条件为:
- ∇ x f ( x ∗ ) = 0 \nabla_xf(x^*)=0 ∇xf(x∗)=0
- x ∗ x^* x∗处的Hessian矩阵半正定,即 v T ( ∇ 2 f ( x ∗ ) ) v ≥ 0 , ∀ v ∈ R n v^T(\nabla^2f(x^*))v\geq0,\forall v\in \mathcal{R}^n vT(∇2f(x∗))v≥0,∀v∈Rn。
凸优化问题条件2自然成立。
这是一个凸优化问题,极值点即为最优点。
∂
∂
θ
J
(
θ
)
=
2
(
−
X
T
)
(
y
−
X
θ
)
=
X
T
X
θ
−
X
T
y
=
0
\frac{\partial}{\partial\theta}J(\theta)=2(-X^T)(y-X\theta)=X^TX\theta-X^Ty=0
∂θ∂J(θ)=2(−XT)(y−Xθ)=XTXθ−XTy=0
在
X
T
X
X^TX
XTX可逆的条件下有,
θ
=
(
X
T
X
)
−
1
X
T
y
\theta=(X^TX)^{-1}X^Ty
θ=(XTX)−1XTy
∂ a T b ∂ θ = ∂ a T ∂ θ b + ∂ b T ∂ θ a \frac{\partial a^T b}{\partial\theta}= \frac{\partial a^T}{\partial\theta}b+\frac{\partial b^T}{\partial\theta}a ∂θ∂aTb=∂θ∂aTb+∂θ∂bTa, ∂ ( A x ) T ∂ x = A T \frac{\partial (Ax)^T}{\partial\ x}=A^T ∂ x∂(Ax)T=AT
2. 最大似然估计
由假设,
ϵ
∼
N
(
0
,
σ
2
I
)
\epsilon\sim\mathcal{N}(0,\sigma^2I)
ϵ∼N(0,σ2I),
ϵ
\epsilon
ϵ概率密度函数:
ϕ
(
ϵ
)
=
(
2
π
)
−
n
/
2
σ
−
n
e
x
p
[
−
σ
2
/
2
ϵ
T
ϵ
]
\phi(\epsilon)=(2\pi)^{-n/2}\sigma^{-n}exp[-\sigma^2/2\epsilon^T\epsilon]
ϕ(ϵ)=(2π)−n/2σ−nexp[−σ2/2ϵTϵ]
在给定
X
X
X、
θ
\theta
θ条件下,
y
y
y的概率密度函数为:
f
(
y
∣
X
,
θ
)
=
(
2
π
)
−
n
/
2
σ
−
n
e
x
p
[
−
σ
2
/
2
(
y
−
X
θ
)
T
(
y
−
X
θ
)
]
f(y|X,\theta)=(2\pi)^{-n/2}\sigma^{-n}exp[-\sigma^2/2(y-X\theta)^T(y-X\theta)]
f(y∣X,θ)=(2π)−n/2σ−nexp[−σ2/2(y−Xθ)T(y−Xθ)]
似然函数是在给定参数下,数据出现的可能性,
L
(
θ
)
=
f
(
y
∣
X
,
θ
)
L(\theta)=f(y|X,\theta)
L(θ)=f(y∣X,θ)
对数似然函数,
log
L
(
θ
)
=
−
n
/
2
log
(
2
π
)
−
n
log
(
σ
)
−
σ
2
/
2
(
y
−
X
θ
)
T
(
y
−
X
θ
)
\log L(\theta)=-n/2\log(2\pi)-n\log(\sigma)-\sigma^2/2(y-X\theta)^T(y-X\theta)
logL(θ)=−n/2log(2π)−nlog(σ)−σ2/2(y−Xθ)T(y−Xθ)
极大化对数似然函数,
max
θ
log
L
(
θ
)
⟺
min
θ
J
(
θ
)
=
(
y
−
X
θ
)
T
(
y
−
X
θ
)
\max_{\theta}\log L(\theta)\Longleftrightarrow\min_{\theta} J(\theta)=(y-X\theta)^T(y-X\theta)
θmaxlogL(θ)⟺θminJ(θ)=(y−Xθ)T(y−Xθ)
这说明:在假设 ϵ ∼ N ( 0 , σ 2 I ) \epsilon\sim\mathcal{N}(0,\sigma^2I) ϵ∼N(0,σ2I)下,线性回归模型的最大似然估计等价于最小二乘估计。
评估方法
R
2
=
1
−
∑
i
=
1
n
(
y
^
i
−
y
i
)
2
∑
i
=
1
n
(
y
i
−
y
ˉ
)
2
R^2=1-\frac{\sum_{i=1}^n(\hat{y}_i-y_i)^2}{\sum_{i=1}^n(y_i-\bar{y})^2}
R2=1−∑i=1n(yi−yˉ)2∑i=1n(y^i−yi)2
R
2
R^2
R2越接近于1模型拟合的越好。
梯度下降法
梯度下降法又称最速下降法,是求解无约束优化问题的数值优化方法,设有无约束优化问题
min
x
f
(
x
)
\min_{x}f(x)
xminf(x)
最优化方法的基本迭代格式为:
- 给定最优解的一个初始估计 x ( 0 ) x^{(0)} x(0), k = 0 k=0 k=0;
- 如果 x ( k ) x^{(k)} x(k)满足对最优解估计的终止条件,停止迭代;
- 确定一个改善 x ( k ) x^{(k)} x(k)的修正量 s ( k ) s^{(k)} s(k);
- 得到最优解的一个更好的估计 x ( k + 1 ) = x ( k ) + s ( k ) x^{(k+1)}=x^{(k)}+s^{(k)} x(k+1)=x(k)+s(k),令 k = k + 1 k=k+1 k=k+1,转步骤2。
修正量 s ( k ) : s^{(k)}: s(k):
单调下降算法:先确定一个下降方向 d ( k ) d^{(k)} d(k),再确定一个下降步长 α ( k ) \alpha^{(k)} α(k)控制下降幅度,即 s ( k ) = α ( k ) d ( k ) s^{(k)}=\alpha^{(k)}d^{(k)} s(k)=α(k)d(k);非单调下降算法仅要求若干步后函数值下降。
迭代停止准则:
- 设置最大迭代次数,即设置 k k k的上界;
- ∣ ∣ ∇ f ( x ( k ) ∣ ∣ ≤ ϵ ||\nabla f(x^{(k)}||\leq\epsilon ∣∣∇f(x(k)∣∣≤ϵ,给定精度 ϵ \epsilon ϵ;【合理性:最优性条件 ∇ f ( x ) = 0 \nabla f(x)=0 ∇f(x)=0】
-
∣
∣
x
(
k
+
1
)
−
x
(
k
)
∣
∣
≤
ϵ
||x^{(k+1)}-x^{(k)}||\leq\epsilon
∣∣x(k+1)−x(k)∣∣≤ϵ,对具有超线性收敛的算法比较合适;
- 算法超线性收敛: lim k → ∞ ∣ ∣ x ( k + 1 ) − x ∗ ∣ ∣ ∣ ∣ x ( k ) − x ∗ ∣ ∣ = 0 \lim_{k\rightarrow\infty}\frac{||x^{(k+1)}-x^*||}{||x^{(k)}-x^*||}=0 limk→∞∣∣x(k)−x∗∣∣∣∣x(k+1)−x∗∣∣=0
- 算法超线性收敛时, ∣ ∣ x ( k + 1 ) − x ( k ) ∣ ∣ ||x^{(k+1)}-x^{(k)}|| ∣∣x(k+1)−x(k)∣∣ 是 ∣ ∣ x ( k + 1 ) − x ∗ ∣ ∣ ||x^{(k+1)}-x^*|| ∣∣x(k+1)−x∗∣∣的一个估计。
-
∣
f
(
(
k
+
1
)
)
−
f
(
(
k
)
)
∣
≤
0
|f(^{(k+1)})-f(^{(k)})|\leq0
∣f((k+1))−f((k))∣≤0,对于快速收敛的算法很有效。
- f ( x ) f(x) f(x)二次连续可微时, ∣ f ( ( k + 1 ) ) − f ( ( k ) ) ∣ = O ( ∣ ∣ x ( k + 1 ) − x ( k ) ∣ ∣ 2 ) |f(^{(k+1)})-f(^{(k)})|=O(||x^{(k+1)}-x^{(k)}||^2) ∣f((k+1))−f((k))∣=O(∣∣x(k+1)−x(k)∣∣2)
为确保所得到的是最优解满意的估计,往往采用两个或几个收敛准则同时使用的方法。
梯度下降法取函数值下降最快的方向作为下降方向:
- 给出 x ( 0 ) ∈ R n x^{(0)}\in\mathcal{R}^n x(0)∈Rn, 0 ≤ ϵ ≪ 1 0\leq \epsilon\ll1 0≤ϵ≪1, k = 0 k=0 k=0;
- 计算 d k = − ∇ f ( x ( k ) ) d_k=-\nabla f(x^{(k)}) dk=−∇f(x(k)),若 ∣ ∣ ∇ f ( x ( k ) ) ∣ ∣ < ϵ ||\nabla f(x^{(k)})||<\epsilon ∣∣∇f(x(k))∣∣<ϵ,则停止;
- 线性搜索步长因子 α k \alpha_k αk;
- 迭代 x ( k + 1 ) = x ( k ) + α k d k x^{(k+1)}=x^{(k)}+\alpha_kd_k x(k+1)=x(k)+αkdk
- k = k + 1 k=k+1 k=k+1,转步骤2.
注:文中,向量 x x x范数 ∣ ∣ x ∣ ∣ = ∑ i x i 2 ||x||=\sum_{i}x_i^2 ∣∣x∣∣=∑ixi2,内积 < x , y > = ∑ i x i y i = x T y <x,y>=\sum_{i}x_iy_i=x^Ty <x,y>=∑ixiyi=xTy。
为什么负梯度方向是下降最快的方向
解释1:
【定理】若函数
f
f
f在点
P
0
P_0
P0可微,则
f
f
f在点
P
0
P_0
P0处沿任一方向
l
l
l的方向导数均存在,且方向导数与梯度具有满足:
f
l
(
P
0
)
=
∇
f
(
P
0
)
l
0
=
∣
∇
f
(
P
0
)
∣
c
o
s
θ
f_l(P_0)=\nabla f(P_0)l_0=|\nabla f(P_0)|cos\theta
fl(P0)=∇f(P0)l0=∣∇f(P0)∣cosθ
θ
\theta
θ是梯度方向与
l
l
l的夹角。
由定理知:
θ
=
0
\theta=0
θ=0时,方向导数取最大值,即梯度方向是函数值增长最快的方向;
θ
=
π
\theta=\pi
θ=π时,方向导数取最小值,即负梯度方向是函数值下降最快的方向。
解释2:
设函数
f
f
f在
x
(
k
)
x^{(k)}
x(k)附近连续可微,在
x
(
k
)
x^{(k)}
x(k)处的泰勒展开为:
f
(
x
)
=
f
(
x
(
k
)
)
+
∇
f
(
x
(
k
)
)
T
(
x
−
x
(
k
)
)
+
o
(
∣
∣
x
−
x
(
k
)
∣
∣
)
f(x)=f(x^{(k)})+\nabla f(x^{(k)})^T(x-x^{(k)})+o(||x-x^{(k)}||)
f(x)=f(x(k))+∇f(x(k))T(x−x(k))+o(∣∣x−x(k)∣∣) 令
x
−
x
(
k
)
=
α
d
k
x-x^{(k)}=\alpha d_k
x−x(k)=αdk,可写上式,
f
(
x
(
k
)
+
α
d
k
)
=
f
(
x
(
k
)
)
+
∇
f
(
x
(
k
)
)
T
(
x
−
x
(
k
)
)
+
o
(
∣
∣
α
d
k
∣
∣
)
f(x^{(k)}+\alpha d_k)=f(x^{(k)})+\nabla f(x^{(k)})^T(x-x^{(k)})+o(||\alpha d_k||)
f(x(k)+αdk)=f(x(k))+∇f(x(k))T(x−x(k))+o(∣∣αdk∣∣) 可知,下降方向为
{
d
k
∣
∇
f
(
x
(
k
)
)
T
d
k
<
0
}
\{d_k|\nabla f(x^{(k)})^Td_k<0\}
{dk∣∇f(x(k))Tdk<0}, 最速下降方向:
min
d
k
∇
f
(
x
(
k
)
)
T
d
k
\min_{d_k}\nabla f(x^{(k)})^Td_k
mindk∇f(x(k))Tdk
由柯西施瓦茨不等式,
∣
∇
f
(
x
(
k
)
)
T
d
k
∣
=
∣
<
∇
f
(
x
(
k
)
)
,
d
k
>
∣
≤
∣
∣
d
k
∣
∣
∣
∣
∇
f
(
x
(
k
)
)
∣
∣
|\nabla f(x^{(k)})^Td_k|=|<\nabla f(x^{(k)}),d_k>|\leq ||d_k||||\nabla f(x^{(k)})||
∣∇f(x(k))Tdk∣=∣<∇f(x(k)),dk>∣≤∣∣dk∣∣∣∣∇f(x(k))∣∣ 等式成立当且仅当
∇
f
(
x
(
k
)
)
\nabla f(x^{(k)})
∇f(x(k))与
d
k
d_k
dk共线,显然负梯度方向最小,梯度方向最大。
梯度下降法求解线性模型参数
线性回归模型的参数估计问题可转换为求解无约束优化问题:
min
θ
J
(
θ
)
=
1
2
n
∑
i
=
1
n
(
y
(
i
)
−
h
θ
(
x
(
i
)
)
)
2
,
h
θ
(
x
(
i
)
)
=
θ
T
x
(
i
)
\min_{\theta} J(\theta)=\frac{1}{2n}\sum_{i=1}^n(y^{(i)}-h_\theta(x^{(i)}))^2,\quad h_\theta(x^{(i)})=\theta^Tx^{(i)}
θminJ(θ)=2n1i=1∑n(y(i)−hθ(x(i)))2,hθ(x(i))=θTx(i)
梯度函数,
∂
∂
θ
j
J
(
θ
)
=
−
1
n
∑
i
=
1
n
(
y
(
i
)
−
h
θ
(
x
(
i
)
)
)
x
j
(
i
)
\frac{\partial}{\partial\theta_j}J(\theta)=-\frac{1}{n}\sum_{i=1}^n(y^{(i)}-h_\theta(x^{(i)}))x_j^{(i)}
∂θj∂J(θ)=−n1i=1∑n(y(i)−hθ(x(i)))xj(i)
注:这里
J
(
θ
)
J(\theta)
J(θ)对之前的作了一个平均,将误差视作一种损失,那这里的
J
(
θ
)
J(\theta)
J(θ)就是平均损失函数。
根据使用的样本量的不同,有以下3种梯度下降法:
- 批量梯度下降:利用所有样本计算,已得到最优解,但速度慢。 θ j k + 1 = θ j k + η 1 n ∑ i = 1 n ( y ( i ) − h θ j k ( x ( i ) ) ) x j ( i ) \theta_j^{k+1}=\theta_j^k+\eta\frac{1}{n}\sum_{i=1}^n(y^{(i)}-h_{\theta_j^{k}}(x^{(i)}))x_j^{(i)} θjk+1=θjk+ηn1i=1∑n(y(i)−hθjk(x(i)))xj(i)
- 随机梯度下降法:随机选择一个样本计算,速度快,但不能保证每次都是沿着收敛的方向。 θ j k + 1 = θ j k + η ( y ( i ) − h θ j k ( x ( i ) ) ) x j ( i ) \theta_j^{k+1}=\theta_j^{k}+\eta(y^{(i)}-h_{\theta_j^{k}}(x^{(i)}))x_j^{(i)} θjk+1=θjk+η(y(i)−hθjk(x(i)))xj(i)
- 小批量梯度下降法:选择一小部分样本计算,计算量小,比较实用。 θ j k + 1 = θ j k + η 1 10 ∑ i = l l + 9 ( y ( i ) − h θ j k ( x ( i ) ) ) x j ( i ) \theta_j^{k+1}=\theta_j^k+\eta\frac{1}{10}\sum_{i=l}^{l+9}(y^{(i)}-h_{\theta_j^{k}}(x^{(i)}))x_j^{(i)} θjk+1=θjk+η101i=l∑l+9(y(i)−hθjk(x(i)))xj(i)
矩阵形式的更新公式:
θ
n
e
w
=
θ
+
η
1
n
X
T
(
Y
−
X
θ
)
\theta^{new}=\theta+\eta\frac{1}{n}X^T(Y-X\theta)
θnew=θ+ηn1XT(Y−Xθ)
学习率
学习率对应于迭代算法中的步长,反映每次下降的幅度。学习率越小,达到收敛所需要的迭代次数越多,学习率太大损失函数可能不会下降,推荐采用下学习率,多次迭代,或者尝试变学习率。