机器学习之线性回归

声明:
1、本文仅为学习笔记,不得商用
2、文中所引文献,已在参考资料中说明,但部分来源于网络,出处无可考究,如果文中引用了您的原创,请您私信我
3、如果内容有错误或者不准确的地方请大家指正


#什么是回归

回归分析:是一种统计上分析数据的方法,目的在于了解两个或多个变数间是否相关、相关方向与强度,并建立数学模型以便观察特定变数来预测研究者感兴趣的变数。 —from 维基百科

    对于大部分的回归而言,都是基于线性回归的,对于非线性的回归,我们可以通过一些变换,将非线性的转换为线性的回归,这样有助于我们更好的研究变量之间的关系。
    回归是属于监督学习,回归用来预测输入变量(自变量)和输出变量(因变量)之间的关系。那么我们思考用什么一个评测标准来判断这个模型的好坏?
#损失函数
    统计学习中常见的损失函数有一下几种:损失函数越小,模型的效果就越好。
预测值 f ( X ) f(X) f(X),对应的真实的输出 Y Y Y

0-1损失函数 L ( Y , f ( X ) ) = 0 , Y = f ( X ) L(Y,f(X))=0,Y=f(X) L(Y,f(X))=0,Y=f(X) L ( Y , f ( X ) ) = 1 , Y ≠ f ( X ) L(Y,f(X))=1,Y \neq f(X) L(Y,f(X))=1,Y=f(X)
平方损失函数 L ( Y , f ( X ) ) = ( Y − f ( X ) ) 2 L(Y,f(X))=(Y-f(X))^2 L(Y,f(X))=(Yf(X))2
绝对损失函数 L ( Y , f ( X ) ) = ∣ Y − f ( X ) ∣ L(Y,f(X))=|Y-f(X)| L(Y,f(X))=Yf(X)
对数损失函数 L ( Y , f ( X ) ) = − l o g P ( Y ∣ X ) L(Y,f(X))=-logP(Y|X) L(Y,f(X))=logP(YX)

线性回归

通俗的用公式解释就是:
y = a x + b y=ax+b y=ax+b
    用一个线性的方程去拟合数据。例如如何用下面的一条件去拟合图上的点。
房屋的面积与价格

    我们对初始问题进行延展,房屋的价格除了和房屋的面积以外,还可能和几居室有关,例如,相同的面积时,三居室可能比两居室更贵一些,此时我们需要考虑多个变量的情况。
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_θ (x)=θ_0+θ_1 x_1+θ_2 x_2 hθ(x)=θ0+θ1x1+θ2x2
    此时我们将这些变量称为特征,上述表达式可以解释为,房屋面积特征和房屋几居室特征的线性加权得到房屋的价格,根据上面的思路除了这两个特征还会有一个常数项,此表达式是对上面表达式的延伸。如果将 x 1 x_1 x1 x 2 x_2 x2放在平面上,将 y y y放在纵轴上,此表达式形成的是三维上面的一个平面。
这里写图片描述

    现实生活中可能还有更多的情况需要我们考虑,如果在增加一个变量,该图像可能就变成了四维空间上的一个三维的超平面,我们以此类推可能还有第四个变量,第五个变量等等。总之是一些线性的东西,为了表达方便我们可以认为常数项为 θ 0 ⋅ 1 θ_0⋅1 θ01,将1表示为 x 0 x_0 x0,向量的表达形式如下:
h θ ( x ) = ∑ i = 0 n θ i x i = θ T x h_θ (x)=\sum_{i=0}^{n}θ_ix_i=θ^Tx hθ(x)=i=0nθixi=θTx
x 0 x_0 x0 x n x_n xn可以看做一个列向量, θ 0 θ_0 θ0 θ n θ_n θn可以看做一个列向量

线性回归的损失函数

这里写图片描述

数学表达式:
j ( θ ) = 1 2 ∑ i = 1 n ( h θ ( x ( i ) ) − y ( i ) ) 2 j(θ)=\frac{1}{2}\sum_{i=1}^{n}(h_\theta(x^{(i)})-y^{(i)})^2 j(θ)=21i=1n(hθ(x(i))y(i))2
注意,这里的 i i i是从1开始的。

损失函数的推到

定义误差为 ε \varepsilon ε,那么方程改写为
y ( i ) = θ T x ( i ) + ε ( i ) y^{(i)}=\theta^Tx^{(i)}+\varepsilon^{(i)} y(i)=θTx(i)+ε(i)
     ε ( i ) \varepsilon^{(i)} ε(i)为误差,是独立同分布的,根据中心极限定理可知,服从均值为0,方差为某定值 σ 2 \sigma^2 σ2的高斯分布。实际问题中,很多随机现象可以看做众多因素的独立影响的综合反应,往往近似服从正态分布。比如:测量误差,城市的耗电量。注意:应用前提是多个随机变量的和下面我们用最大似然估计求解误差 ε ( i ) \varepsilon^{(i)} ε(i)
注:中心极限定理与大数定理
    大量相互独立的随机变量,其均值或者和的分布以正态分布为极限(意思就是当样本的数量足够大时接近无穷的时候,采样次数区域无穷大的时候,其均值的分布或者和的分布越接近正态分布),而且无论是什么分布的随机变量,都满足这个定理,同时正态分布的均值等于随机变量的均值。
    大数定理,如果有一堆随机变量,不断的从中采样,获取到了 n n n个采样值, X 1 , X 2 , X 3 . . . X n X_1 ,X_2,X_3...X_n X1,X2,X3...Xn,这 n n n个采样的平均值记做 X n ˉ \bar{X_n} Xnˉ,当 n n n趋向于无穷大的时候,这个采样的平均值就是收敛于这个随机变量的期望值。

p ( ε ( i ) ) = 1 2 π σ exp ⁡ ( − ( ε ( i ) ) 2 2 σ 2 ) p(\varepsilon^{(i)})=\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(\varepsilon^{(i)})^2}{2\sigma^2}) p(ε(i))=2π σ1exp(2σ2(ε(i))2)
替换 ε ( i ) \varepsilon^{(i)} ε(i)
p ( y ( i ) ∣ x ( i ) ; θ ) = 1 2 π σ exp ⁡ ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) p(y^{(i)}|x^{(i)};\theta)=\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}) p(y(i)x(i);θ)=2π σ1exp(2σ2(y(i)θTx(i))2)
求得最大似然函数
L ( θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m 1 2 π σ exp ⁡ ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) 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}) L(θ)=i=1mp(y(i)x(i);θ)=i=1m2π σ1exp(2σ2(y(i)θTx(i))2)
取对数
l ( θ ) = l o g L ( θ ) = l o g ∏ i = 1 m 1 2 π σ exp ⁡ ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) l(\theta)=logL(\theta)=log\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}) l(θ)=logL(θ)=logi=1m2π σ1exp(2σ2(y(i)θTx(i))2)
= ∑ i = 1 m l o g 1 2 π σ exp ⁡ ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) =\sum_{i=1}^{m}log\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}) =i=1mlog2π σ1exp(2σ2(y(i)θTx(i))2)
= ∑ i = 1 m ( l o g 1 2 π σ − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) =\sum_{i=1}^{m}(log\frac{1}{\sqrt{2\pi}\sigma}-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}) =i=1m(log2π σ12σ2(y(i)θTx(i))2)
= m l o g 1 2 π σ − 1 σ 2 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 =mlog\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{\sigma^2}\frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^Tx^{(i)})^2 =mlog2π σ1σ2121i=1m(y(i)θTx(i))2
我们要取得 l ( θ ) l(\theta) l(θ)的最大值,由于 m m m σ \sigma σ均为定值,所以我们可以将求 l ( θ ) l(\theta) l(θ)的最大值转化为求 j ( θ ) j(\theta) j(θ)的最小值
j ( θ ) = 1 2 ∑ i = 1 n ( h θ ( x ( i ) ) − y ( i ) ) 2 j(θ)=\frac{1}{2}\sum_{i=1}^{n}(h_\theta(x^{(i)})-y^{(i)})^2 j(θ)=21i=1n(hθ(x(i))y(i))2
增加惩罚因子的损失函数
L 1 L1 L1正则化
j ( θ ) = 1 2 ∑ i = 1 n ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ i = 1 n ∣ θ i ∣ j(θ)=\frac{1}{2}\sum_{i=1}^{n}(h_\theta(x^{(i)})-y^{(i)})^2 + \lambda \sum_{i=1}^{n}|\theta_{i}| j(θ)=21i=1n(hθ(x(i))y(i))2+λi=1nθi
L 2 L2 L2正则化
j ( θ ) = 1 2 ∑ i = 1 n ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ i = 1 n θ i 2 j(θ)=\frac{1}{2}\sum_{i=1}^{n}(h_\theta(x^{(i)})-y^{(i)})^2+\lambda \sum_{i=1}^{n}\theta_{i}^{2} j(θ)=21i=1n(hθ(x(i))y(i))2+λi=1nθi2

损失函数的求解

常规方程法

在对参数 θ \theta θ,进行求解之前,我们需要做一些变换方便我们求解,我们将 j ( θ ) j(θ) j(θ)用向量表示。我们将 m m m n n n维样本组成矩阵 X X X,每个样本拥有 n n n维,而参数 θ \theta θ则是一个 n × 1 n×1 n×1的列向量, 误差 ε ( i ) \varepsilon^{(i)} ε(i)是一个 m × 1 m×1 m×1的向量,求误差的平方和可以用 ( ε ( i ) ) T ( ε ( i ) ) (\varepsilon^{(i)})^T(\varepsilon^{(i)}) (ε(i))T(ε(i))
j ( θ ) = 1 2 ( X θ − y ) T ( X θ − y ) j(\theta)=\frac{1}{2}(X\theta-y)^T(X\theta-y) j(θ)=21(Xθy)T(Xθy)
下面我们对 j ( θ ) j(\theta) j(θ)求梯度
∇ θ j ( θ ) = ∇ θ ( 1 2 ( X θ − y ) T ( X θ − y ) ) \nabla_{\theta}j(\theta)=\nabla_{\theta}(\frac{1}{2}(X\theta-y)^T(X\theta-y)) θj(θ)=θ(21(Xθy)T(Xθy))
= ∇ θ ( 1 2 ( θ T X T − y T ) ( X θ − y ) ) =\nabla_{\theta}(\frac{1}{2}(\theta^TX^T-y^T)(X\theta-y)) =θ(21(θTXTyT)(Xθy))
= ∇ θ ( 1 2 ( θ T X T X θ − θ T X T y − y T X θ + y T y ) ) =\nabla_{\theta}(\frac{1}{2}(\theta^TX^TX\theta-\theta^TX^Ty-y^TX\theta+y^Ty)) =θ(21(θTXTXθθTXTyyTXθ+yTy))
= 1 2 ( 2 X T X θ − X T y − ( y T X ) T ) =\frac{1}{2}(2X^TX\theta-X^Ty-(y^TX)^T) =21(2XTXθXTy(yTX)T)
= X T X θ − X T y → 0 求 驻 点 =X^TX\theta-X^Ty\rightarrow0求驻点 =XTXθXTy0
θ = ( X T X ) − 1 X T y \theta=(X^TX)^{-1}X^Ty θ=(XTX)1XTy
求解 θ \theta θ时的问题,如果不可逆怎么办?为了防止 X T X X^TX XTX不可逆或者过拟合模型(过度复杂的模型)的出现,增加 λ λ λ扰动,也可以叫做惩罚因子,这个就是正则化。
θ = ( X T X + λ I ) − 1 X T y \theta=(X^TX+\lambda I)^{-1}X^Ty θ=(XTX+λI)1XTy
加入 λ \lambda λ扰动是有很大意义的,首先 X T X X^TX XTX是半正定的,对于任意的实数 λ > 0 λ>0 λ>0 X T X + λ I X^TX+\lambda I XTX+λI正定,从而可逆,保证回归公式一定有意义。
θ \theta θ其实是一个 n × 1 n×1 n×1的列向量

梯度下降法

什么是梯度?
在多元函数里面,对多元函数的每个参数求偏导数,偏导数用向量的形式表示出来就是梯度。某个点梯度的含义是这个点函数变化增加最快的方向,沿着梯度的方向可以更快的找到梯度的最大值。而这里我们想找到 L o s s Loss Loss函数的最小值,所以需要沿着梯度的负方向进行。
几何意义:一个点的梯度是这个函数变化最快的地方,也就是在这个点,沿着梯度的方向,函数增加最快,也就是沿着函数的方向能够快速的找到函数的最大值点,或者反过来沿着梯度的反方向找到函数的最小值点。
确保公式有意义后,我们再来考虑一个问题,就是求逆,实际中当特征特别多的时候,运算比较复杂,我们介绍另一种求解方法梯度下降法。
算法流程:

  1. 初始化 θ \theta θ(随机初始化)
  2. 进行迭代,新的 θ \theta θ能够使得 j ( θ ) j(\theta) j(θ)更小
  3. 如果 j ( θ ) j(\theta) j(θ)能够继续减小,返回(2)
    θ j : = θ j − α ∂ ∂ θ j j ( θ ) \theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}j(\theta ) θj:=θjαθjj(θ)

其中 α \alpha α称为学习率或步长
在这个运算中最主要的就是求解 j ( θ ) j(\theta) j(θ)的梯度,即梯度方向
∂ ∂ θ j j ( θ ) = ∂ ∂ θ j 1 2 ( h θ ( x ) − y ) 2 \frac{\partial}{\partial\theta_j}j(\theta)=\frac{\partial}{\partial\theta_{j}}\frac{1}{2}(h_\theta(x)-y)^2 θjj(θ)=θj21(hθ(x)y)2
= 2 1 2 ( h θ ( x ) − y ) ∂ ∂ θ j ( h θ ( x ) − y ) =2\frac{1}{2}(h_\theta(x)-y)\frac{\partial}{\partial\theta_j}(h_\theta(x)-y) =221(hθ(x)y)θj(hθ(x)y)
= ( h θ ( x ) − y ) x j =(h_\theta(x)-y)x_j =(hθ(x)y)xj
    注意,梯度下降很有可能收敛到局部的最小值,但是对于线性回归问题,梯度下降收敛到全局最小值,而不是局部最小值。因此,假设学习率 α \alpha α不是太大时,关于线性回归的梯度下降总能收敛到全局最小值,因为目标函数 j ( θ ) j(\theta) j(θ)是一个凸函数,所及局部最小值就是全局最小值。
    梯度下降分为批处理的梯度下降和随机梯度下降。我们经常用到的是随机梯度下降

批处理的梯度下降

θ j : = θ j + α ∑ i = 1 m ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) \theta_j:=\theta_j+\alpha\sum_{i=1}^{m}(y^{(i)}-h_\theta(x^{(i)}))x_j^{(i)} θj:=θj+αi=1m(y(i)hθ(x(i)))xj(i)
    由于批处理的梯度下将算法必须扫描所有的样本而这样做仅仅是走了一小步,如果 m m m足够大的话,这个代价还是比较大的

随机梯度下降

for i = 1 i=1 i=1 to m m m
θ j : = θ j + α ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) \theta_j:=\theta_j+\alpha(y^{(i)}-h_\theta(x^{(i)}))x_j^{(i)} θj:=θj+α(y(i)hθ(x(i)))xj(i)
    随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条的样本,就已经将 θ \theta θ迭代到最优解了。
    注意,此时可能不会收敛到真正的最小值,而是在 j ( θ ) j(\theta) j(θ)的最小值附近进行震荡。在实际中,找到一个离最小值很接近的值已经可以了。由于这些原因,当训练集比较大时,随机梯度下降算法更值得推荐


参考资料:
[1] 李航《统计学习方法》清华大学出版社
[2] 周志华 《机器学习》 清华大学出版社

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值