机器学习经典算法(1)-线性回归

由于部分公式较长,手机端无法完整显示,建议使用PC端阅读博客。

1. 模型假设

  首先,我们来看一个例子,假设某用户向银行贷款,银行可以根据以往多个用户的信息,(在这里,假定每个用户的信息涉及工资、年龄以及贷款额度),结合该用户的个人信息,初步预测其贷款额度值。

用户编号工资年龄额度
140002510000
250002315000
36000488000
4200003040000
5300005060000

  这个预测过程首先根据以往的数据信息拟合一个函数模型,然后利用某用户的个人信息,通过该拟合模型预测出最终的结果值,这就是一个线性回归过程。

  假设 Θ 1 \Theta_1 Θ1是年龄的参数, Θ 2 \Theta_2 Θ2是工资的参数,那么需要拟合的平面函数如下:
h Θ ( x ) = Θ 0 + Θ 1 x 1 + Θ 2 x 2 (1) h_\Theta (x)=\Theta_0+\Theta_1x_1+\Theta_2x_2\tag{1} hΘ(x)=Θ0+Θ1x1+Θ2x2(1)

  整合一下上面的公式:
h Θ ( x ) = ∑ i = 0 n Θ i x i = Θ T x (2) h_\Theta (x)=\sum_{i=0}^n\Theta_ix_i=\Theta^Tx\tag{2} hΘ(x)=i=0nΘixi=ΘTx(2)

  以上拟合的这个函数,即我们需要得到的线性回归预测模型。然而,要根据已有的数据,拟合出这个函数,即找到最优的 Θ \Theta Θ值,这是线性回归问题中的关键,在后续的内容中我们将进行详细讲解。

  补充:将上面公式转换成矩阵形式,可以使得计算过程更高效。

2.目标函数

  接下来,我们先提出误差这个概念,在预测过程中,真实值与预测值之间的误差是不可能避免的,这里我们用 ε ( i ) \varepsilon ^{(i)} ε(i) 来表示误差。那么,对于每个样本,实际上满足以下公式:
y i = Θ T x ( i ) + ε ( i ) (3) y^i=\Theta^Tx^{(i)}+\varepsilon^{(i)}\tag{3} yi=ΘTx(i)+ε(i)(3)

  对误差进行分析,误差 ε ( i ) \varepsilon ^{(i)} ε(i)是独立同分布的,同时服从均值为0方差为 σ 2 \sigma ^2 σ2的高斯分布。具体来说,

  1. 独立:e.p. 张三和李四来贷款,他俩之间的行为本身是没有任何影响的;

  2. 同分布:e.p. 他俩去的是同一家银行,因此从银行层面来说,对他们是“同等”看待的,即根据他们的工资和年龄,公平公正的给予其相应的贷款额度;

  3. 高斯分布:e.p. 银行很可能会多给,也可能会少给,但大多数情况下这个浮动不会太大。极少情况下幅度比较大,这也符合正常情况。 (高斯分布即正太分布,正常情况下的随机分布)

  由于误差服从均值为0高斯分布,可得到以下公式:
p ( ε ( i ) ) = 1 2 π σ e x p ( − ( ε ( i ) ) 2 2 σ 2 ) (4) p(\varepsilon^{(i)})=\frac{1}{\sqrt{2\pi}\sigma }exp(-\frac{(\varepsilon ^{(i)})^2}{2\sigma ^2})\tag{4} p(ε(i))=2π σ1exp(2σ2(ε(i))2)(4)

  将(3)式代入(4)式可得到
p ( y ( i ) ∣ x ( i ) ; Θ ) = 1 2 π σ e x p ( − ( y ( i ) − Θ T x ( i ) ) 2 2 σ 2 ) (5) p(y^{(i)}|x^{(i)};\Theta)=\frac{1}{\sqrt{2\pi}\sigma }exp(-\frac{(y^{(i)}-\Theta^Tx^{(i)})^2}{2\sigma ^2})\tag{5} p(y(i)x(i);Θ)=2π σ1exp(2σ2(y(i)ΘTx(i))2)(5)

  这样便得到了关于 y ( i ) y^{(i)} y(i)的条件概率 p ( y ( i ) ∣ x ( i ) ; Θ ) p(y^{(i)}|x^{(i)};\Theta) p(y(i)x(i);Θ),这里要使得预测值更接近于真实值,即条件概率 p ( y ( i ) ∣ x ( i ) ; Θ ) p(y^{(i)}|x^{(i)};\Theta) p(y(i)x(i);Θ)越大越好。

  我们假设用于训练的样本为 m m m个,那么可通过找到最大似然估计,得到最优的解。

  根据似然函数
L ( Θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; Θ ) = ∏ i = 1 m 1 2 π σ e x p ( − ( y ( i ) − Θ T x ( i ) ) 2 2 σ 2 ) (6) L(\Theta)=\prod _{i=1}^{m}p(y^{(i)}|x^{(i)};\Theta)=\prod _{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma }exp(-\frac{(y^{(i)}-\Theta^Tx^{(i)})^2}{2\sigma ^2})\tag{6} L(Θ)=i=1mp(y(i)x(i);Θ)=i=1m2π σ1exp(2σ2(y(i)ΘTx(i))2)(6)

  由于正态分布中累乘不利于计算,这里采用一个小技巧,利用对数形式将式(6)简化。在对数形式中,可以将累乘转换成累加,利于计算,且不影响其函数单调性。

  对数似然函数
l o g L ( Θ ) = l o g ∏ i = 1 m 1 2 π σ e x p ( − ( y ( i ) − Θ T x ( i ) ) 2 2 σ 2 ) (7) logL(\Theta)=log\prod _{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma }exp(-\frac{(y^{(i)}-\Theta^Tx^{(i)})^2}{2\sigma ^2})\tag{7} logL(Θ)=logi=1m2π σ1exp(2σ2(y(i)ΘTx(i))2)(7)

  进一步将上式化简:
l o g L ( Θ ) = ∑ i = 1 m l o g 1 2 π σ e x p ( − ( y ( i ) − Θ T x ( i ) ) 2 2 σ 2 ) = m l o g 1 2 π σ − 1 2 σ 2 ∑ i = 1 m ( y ( i ) − Θ T x ( i ) ) 2 (9) \begin{aligned} logL(\Theta)&=\sum _{i=1}^{m}log\frac{1}{\sqrt{2\pi}\sigma }exp(-\frac{(y^{(i)}-\Theta^Tx^{(i)})^2}{2\sigma ^2})\\ &=mlog\frac{1}{\sqrt{2\pi} \sigma }-\frac{1}{2\sigma^2}\sum_{i=1}^m(y^{(i)}-\Theta^Tx^{(i)})^2 \end{aligned}\tag{9} logL(Θ)=i=1mlog2π σ1exp(2σ2(y(i)ΘTx(i))2)=mlog2π σ12σ21i=1m(y(i)ΘTx(i))2(9)

  要让上面的式(9)取到最大,就需要让式(10)最小,从而求得 Θ \Theta Θ值。(在式(9)中,与 Θ \Theta Θ有关的主要是负号后面的部分,因此,对式(9)求最大,可以对式(10)求最小。)
J ( Θ ) = 1 2 ∑ i = 1 m ( y ( i ) − Θ T x ( i ) ) 2 (10) J(\Theta)=\frac{1}{2}\sum_{i=1}^m(y^{(i)}-\Theta^Tx^{(i)})^2\tag{10} J(Θ)=21i=1m(y(i)ΘTx(i))2(10)

  这里一般可采用最小二乘法求解。

  补充,让似然函数越大越好,是让预测值成为真实值的可能性越大越好。

  由以上可以得到其目标函数为
J ( Θ ) = 1 2 ∑ i = 1 m ( y ( i ) − Θ T x ( i ) ) 2 = 1 2 ( X Θ − y ) T ( X Θ − y ) (11) J(\Theta)=\frac{1}{2}\sum_{i=1}^m(y^{(i)}-\Theta^Tx^{(i)})^2=\frac{1}{2}(X\Theta-y)^T(X\Theta-y)\tag{11} J(Θ)=21i=1m(y(i)ΘTx(i))2=21(XΘy)T(XΘy)(11)

  求偏导:

▽ Θ 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 Θ + y T y ) ) = ▽ Θ ( 1 2 ( Θ T X T X Θ − Θ T X T y − y T X Θ + y T y ) ) = 1 2 ( 2 X T X Θ − X T y − ( y T X ) T ) = X T X Θ − X T y . (12) \begin{aligned} \triangledown_{\Theta}J(\Theta)&=\triangledown_{\Theta}\frac{1}{2}(X\Theta-y)^T(X\Theta-y)=\triangledown_{\Theta}\frac{1}{2}(\Theta^TX^T-y^T)(X\Theta-y)\\ &=\triangledown_{\Theta}(\frac{1}{2}(\Theta^TX^TX\Theta-\Theta^TX^Ty-y^TX\Theta+y^Ty))\\ &=\triangledown_{\Theta}(\frac{1}{2}(\Theta^TX^TX\Theta-\Theta^TX^Ty-y^TX\Theta+y^Ty))\\ &=\frac{1}{2}(2X^TX\Theta-X^Ty-(y^TX)^T)\\ &=X^TX\Theta-X^Ty \end{aligned}.\tag{12} ΘJ(Θ)=Θ21(XΘy)T(XΘy)=Θ21(ΘTXTyT)(XΘy)=Θ(21(ΘTXTXΘΘTXTyyTXΘ+yTy))=Θ(21(ΘTXTXΘΘTXTyyTXΘ+yTy))=21(2XTXΘXTy(yTX)T)=XTXΘXTy.(12)

  令偏导等于0,可得
Θ = ( X T X ) − 1 X T y (13) \Theta=(X^TX)^{-1}X^Ty\tag{13} Θ=(XTX)1XTy(13)

  这里所求得的解,即为我们需要找到的参数,但其实很多回归任务中, X T X X^TX XTX并不一定是可逆的,即上式不一定能够求解。在机器学习中,对于本类问题一般采用梯度下降法进行求解。

3. 梯度下降法

  简单介绍一下梯度下降法的思想,详细讲解可参考(待更新连接)。

  这里形象的描述一下,假设要寻找山谷的最低处,那么应该如何以最快的方式找到呢?

  主要分为以下几步:

  1. 找到最合适的方向(对目标函数求偏导);

  2.沿着最合适的方向走一小步(更新参数);

  3.重复迭代步骤1和步骤2,最终找到最低处(找到最优解)。

4. 梯度下降法求解目标函数

  由上面的推导得到要求解的目标函数为
J ( Θ ) = 1 2 ∑ i = 1 m ( y ( i ) − Θ T x ( i ) ) 2 (14) J(\Theta)=\frac{1}{2}\sum_{i=1}^m(y^{(i)}-\Theta^Tx^{(i)})^2\tag{14} J(Θ)=21i=1m(y(i)ΘTx(i))2(14)

  对目标函数求偏导,即寻找梯度方向
∂ J ( Θ ) ∂ Θ j = − 1 m ∑ i = 1 m ( y i − h Θ ( x i ) ) x j i (15) \frac{\partial J(\Theta)}{\partial\Theta_j}=-\frac{1}{m}\sum_{i=1}^{m}(y^i-h_{\Theta}(x^i))x_j^i\tag{15} ΘjJ(Θ)=m1i=1m(yihΘ(xi))xji(15)

   x j i x_j^i xji在这里表示第 i i i个样本的第 j j j个属性,即对某一个样本, x j x_j xj对应公式(1)中的 x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3

  这里讲解三种梯度下降法的方式

  1.批量梯度下降法

  批量梯度下降法容易得到最优解,但由于每次考虑所有样本,速度很慢。

Θ j ′ = Θ j + 1 m ∑ i = 1 m ( y i − h Θ ( x i ) ) x j i (16) {\Theta}'_j=\Theta_j+\frac{1}{m}\sum_{i=1}^m(y^i-h_\Theta(x^i))x_j^i\tag{16} Θj=Θj+m1i=1m(yihΘ(xi))xji(16)

  2.随机梯度下降法

  在随机梯度下降法中,每一次迭代一个样本,即式(15)中的 m m m取1,迭代速度快,但不能保证每一次都朝着收敛的方向更新
Θ j ′ = Θ j + ( y i − h Θ ( x i ) ) x j i (17) {\Theta}'_j=\Theta_j+(y^i-h_\Theta(x^i))x_j^i\tag{17} Θj=Θj+(yihΘ(xi))xji(17)

  3.小批量梯度下降法

  每次更新使用一小部分数据来算,即式(15)中的 m m m取 16 (在这里,数字的选择视情况而定,后面的内容有提到),迭代速度比较快,并且收敛也比较快,较为常用。
Θ j ′ = Θ j + α 1 16 ∑ k = i i + 15 ( y ( k ) − h Θ ( x ( k ) ) ) x j ( k ) (18) {\Theta}'_j=\Theta_j+\alpha\frac{1}{16} \sum_{k=i}^{i+15}(y^{(k)}-h_\Theta(x^{(k)}))x_j^{(k)}\tag{18} Θj=Θj+α161k=ii+15(y(k)hΘ(x(k)))xj(k)(18)

  公式中假定一个小批量为16个数据,比较常见的为16、32、64、128,这个在很多时候还得考虑内存和效率问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值