【ML】线性回归及梯度下降法

线性回归模型

  假设我们有如下关于信贷额度的一组数据:

工资年龄额度
40002520000
80003070000
50002835000
75003350000
120004085000

  这里额度(记为变量 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)(1in)
其中,参数 θ 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=1nXinμ=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(θ)=(yXθ)T(yXθ)
可写向量形式:
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=1n(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的充分必要条件为:

  1. ∇ x f ( x ∗ ) = 0 \nabla_xf(x^*)=0 xf(x)=0
  2. 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))v0,vRn

凸优化问题条件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)(yXθ)=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(yX,θ)=(2π)n/2σnexp[σ2/2(yXθ)T(yXθ)]
似然函数是在给定参数下,数据出现的可能性,
L ( θ ) = f ( y ∣ X , θ ) L(\theta)=f(y|X,\theta) L(θ)=f(yX,θ)
对数似然函数,
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(yXθ)T(yXθ)
极大化对数似然函数,
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(θ)=(yXθ)T(yXθ)

这说明:在假设 ϵ ∼ 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=1i=1n(yiyˉ)2i=1n(y^iyi)2
R 2 R^2 R2越接近于1模型拟合的越好。


梯度下降法

  梯度下降法又称最速下降法,是求解无约束优化问题的数值优化方法,设有无约束优化问题
min ⁡ x f ( x ) \min_{x}f(x) xminf(x)
最优化方法的基本迭代格式为:

  1. 给定最优解的一个初始估计 x ( 0 ) x^{(0)} x(0) k = 0 k=0 k=0
  2. 如果 x ( k ) x^{(k)} x(k)满足对最优解估计的终止条件,停止迭代;
  3. 确定一个改善 x ( k ) x^{(k)} x(k)的修正量 s ( k ) s^{(k)} s(k)
  4. 得到最优解的一个更好的估计 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 limkx(k)xx(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)

为确保所得到的是最优解满意的估计,往往采用两个或几个收敛准则同时使用的方法。

梯度下降法取函数值下降最快的方向作为下降方向:

  1. 给出 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
  2. 计算 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))<ϵ,则停止;
  3. 线性搜索步长因子 α k \alpha_k αk
  4. 迭代 x ( k + 1 ) = x ( k ) + α k d k x^{(k+1)}=x^{(k)}+\alpha_kd_k x(k+1)=x(k)+αkdk
  5. 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(xx(k))+o(xx(k)) x − x ( k ) = α d k x-x^{(k)}=\alpha d_k xx(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(xx(k))+o(αdk) 可知,下降方向为 { d k ∣ ∇ f ( x ( k ) ) T d k < 0 } \{d_k|\nabla f(x^{(k)})^Td_k<0\} {dkf(x(k))Tdk<0}, 最速下降方向: min ⁡ d k ∇ f ( x ( k ) ) T d k \min_{d_k}\nabla f(x^{(k)})^Td_k mindkf(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>dkf(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=1n(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)} θjJ(θ)=n1i=1n(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=1n(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=ll+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(YXθ)


学习率

  学习率对应于迭代算法中的步长,反映每次下降的幅度。学习率越小,达到收敛所需要的迭代次数越多,学习率太大损失函数可能不会下降,推荐采用下学习率,多次迭代,或者尝试变学习率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值