第一章 机器学习算法之线性回归

第一章 机器学习算法之线性回归

一、前言

在进行线性回归算法之前,有必要说一下什么是回归,他和分类又有什么样的区别。回归和分类都是机器学习的两个大的分支,学术一点说,回归就是对连续值的预测,而分类是对离散值的预测。先说回归,就拿平时我们贷款来说,在你贷款之前,贷款的银行会获取你的信息,他们需要知道你的年龄,职业,学历,健康状况,家庭情况来决定给你贷款多少钱,这里的贷款给你多少钱是一个连续的值,这就是一个回归。再说分类,还拿贷款举例,当银行拿到你的信息是,如果给你的结果是你可以或者不可以贷款这两个选择时,这个问题就变成了一个分类问题,结果是有限的几个选项。回归问题其实可以通过设置阈值转化为分类问题(这也就是所谓的逻辑回归)。

二、线性关系

在谈线性回归之前,我们需要说一下线性这个概念,我们应该都学过这个:
y = k x + b \bm {y=kx+b} y=kx+b
这是一个一次函数(当然了, k ≠ 0 k\neq0 k=0),如果给我们两个点( x 1 x_1 x1, y 1 y_1 y1),( x 2 x_2 x2, y 2 y_2 y2),我们就可以求出 k k k b b b,然后只要给出第三个点的 x 3 x_3 x3的值,就可以求出 y 3 y_3 y3,好,如果这里理解的话,就可以继续往下走了,此时有一个问题,就是如果我有三个原始点( x 1 x_1 x1, y 1 y_1 y1),( x 2 x_2 x2, y 2 y_2 y2),( x 3 x_3 x3, y 3 y_3 y3), 那么我们就需要拟合这一条函数。如下图:
2d
上面我们提到了二维情况,下面我们来说说三维情况,三维情况我们知道两个特征以及一个标签,也就是( x 1 x_1 x1, x 2 x_2 x2, y y y),对于三维的线性关系就是一个平面,如下图:
3d
所以继续往更高维度思考,四维、五维…, 更高维的我们称之为超平面。而线性回归就是要找到这样一个超平面。这样的超平面表示成:
y = w 1 x 1 + w 2 x 2 + w 3 x 3 + . . . + w n x n + b = w T x \bm {y=w_1x_1+w_2x_2+w_3x_3+...+w_nx_n+b=w^Tx} y=w1x1+w2x2+w3x3+...+wnxn+b=wTx
此时,我们将 b b b写成 w 0 w_0 w0,加入一个 x 0 = 1 x_0=1 x0=1
其中, w w w x x x为矩阵:
w = [ w 0 w 1 w 2 w 3 . . . ] , x = [ x 0 x 1 x 2 x 3 . . . ] w= \begin{bmatrix} w_0\\ w_1 \\ w_2 \\ w_3\\ ... \end{bmatrix} ,x= \begin{bmatrix} x_0\\ x_1 \\ x_2\\ x_3\\ ... \end{bmatrix} w=w0w1w2w3...,x=x0x1x2x3...

三、极大似然估计

上一节我们已经说了什么是线性关系,这一小节我们来说说极大似然估计,以便我们可以顺利推导出目标函数。
假设我有一个不透明的袋子,袋子里面有100个均匀混合形状一样但是颜色有黑有白的玻璃球,现在你从袋子里拿了10个玻璃球,发现十个玻璃球有9个黑色的,1个白色的,那么请问,你觉得你拿第11个球的时候是拿到黑色的可能性大还是拿到白色的可能性大,显然是黑色的可能性大,甚至你会觉得拿到黑球的概率就是9/10,这就是一种估计,极大似然估计就是对已经发生的事推出之后发生相同事情的最大可能性。
再举个例子,在过去20年来,每逢五月份江南地区都会出现连续一周的阴雨天气,那么请问,今年五月份江南地区出现连续一周阴雨天气的可能性如何,是不是就非常大了。好,现在来了三个人,小红,小橙,小黄。小红是个江南地区的人,她用十多年的本地成长经验知道,五月连续一周阴雨天气的概率是0.88,小橙是个学霸,她通过搜索江南地区气象资料进行整合,发现五月一周阴雨天气得概率为0.85,小橙询问别人整理统计得到概率为0.79,那么我们就可以大概估计最终概率应该在0.85左右,如果再来100个人进行测量,那么整个概率分布基本服从就是正态分布,而大部分的预测结果就在正态分布的顶点左右,进行测量的人越多,越准确。
我们知道
y ( i ) = θ T x ( i ) \bm {y^{(i)}={\theta}^Tx^{(i)}} y(i)=θTx(i)
由于我们算出来的 y y y是估计值,所以和真实值有误差 ϵ = y ^ − y \epsilon=\widehat{y}-y ϵ=y y,并且误差也遵循正态分布,所以我们有公式
p ( ϵ ( i ) ) = 1 ( a π ) σ e x p ( − ( ϵ ( i ) ) 2 2 σ 2 ) p(\epsilon^{(i)})={1 \over {\sqrt{(a\pi)}\sigma}}exp(-{{({\epsilon^{(i)}})^2}\over{2\sigma^2}}) p(ϵ(i))=(aπ) σ1exp(2σ2(ϵ(i))2)
我们将 ϵ = y ^ − y \epsilon=\widehat{y}-y ϵ=y y代入上式,得:
p ( y ( i ) ∣ x ( i ) ; θ ) = 1 ( a π ) σ e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) p({y^{(i)}|x^{(i)};\theta})={1 \over {\sqrt{(a\pi)}\sigma}}exp(-{{({y^{(i)}-\theta^Tx^{(i)}})^2}\over{2\sigma^2}}) p(y(i)x(i);θ)=(aπ) σ1exp(2σ2(y(i)θTx(i))2)
非常开心的是,正态分布是一个概率分布,而极大似然估计就是一个联合概率密度函数,也就是每个样本概率的乘积,由于误差的概率是一个正态分布,所以概率也就应该在正态分布的均值附近,此时也就达到了最大似然函数的极大值。最大似然函数:
L ( θ ) = ∏ i = 1 n p ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 n 1 ( a π ) σ e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) L(\theta)=\prod_{i=1}^n{p({y^{(i)}|x^{(i)};\theta})}=\prod_{i=1}^n{{1 \over {\sqrt{(a\pi)}\sigma}}exp(-{{({y^{(i)}-\theta^Tx^{(i)}})^2}\over{2\sigma^2}})} L(θ)=i=1np(y(i)x(i);θ)=i=1n(aπ) σ1exp(2σ2(y(i)θTx(i))2)
这里可以对数化将成绩乘积化为求和
l o g L ( θ ) = l o g ∑ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = l o g ∏ i = 1 n 1 ( a π ) σ e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) log{L(\theta)}=log{\sum_{i=1}^m{p({y^{(i)}|x^{(i)};\theta})}=log{\prod_{i=1}^n{{1 \over {\sqrt{(a\pi)}\sigma}}exp(-{{({y^{(i)}-\theta^Tx^{(i)}})^2}\over{2\sigma^2}})}}} logL(θ)=logi=1mp(y(i)x(i);θ)=logi=1n(aπ) σ1exp(2σ2(y(i)θTx(i))2)
进一步化简:
l o g L ( θ ) = m l o g 1 ( a π ) σ − ( 1 σ 2 ) ⋅ 1 2 n ∑ i = 1 n ( y ( i ) − θ T x ( i ) ) 2 log{L(\theta)}=mlog{1 \over {\sqrt{(a\pi)}\sigma}}-({1\over\sigma^2})\cdot{1\over 2n}\sum_{i=1}^n{({y^{(i)}-\theta^Tx^{(i)}})^2} logL(θ)=mlog(aπ) σ1(σ21)2n1i=1n(y(i)θTx(i))2
这个是由最大似然函数得到的,我们自然就需要求上式的最大值,也就是求下式的最小值:
J ( θ ) = 1 2 n ∑ i = 1 n ( y ( i ) − θ T x ( i ) ) 2 J(\theta)={1\over2n}\sum_{i=1}^n{({y^{(i)}-\theta^Tx^{(i)}})^2} J(θ)=2n1i=1n(y(i)θTx(i))2
这就是大名鼎鼎的最小二乘法。

四、目标函数及其正规方程求解

上面说道我们经过极大似然估计最终得到了一个二乘式,也就说我们的目标就是使二乘式最小。
而这个二乘式就是我们的目 标函数:
J ( θ ) = 1 2 n ∑ i = 1 n ( y ( i ) − θ T x ( i ) ) 2 = 1 2 ( X θ − y ) T ( X θ − y ) J(\theta)={1\over 2n}\sum_{i=1}^n{({y^{(i)}-\theta^Tx^{(i)}})^2}={1\over 2}(X\theta-y)^T(X\theta-y) J(θ)=2n1i=1n(y(i)θTx(i))2=21(Xθy)T(Xθy)
就是简单地化简为两个矩阵相乘,这样可以将累加去掉,更方便操作同时看着也舒服许多
下面要进行的是,对 θ \theta θ求偏导(因为 θ \theta θ是一个矩阵,相当于多元函数,所以是偏导),操作如下:
∇ θ J ( θ ) = ∇ θ ( 1 2 ( X θ − y ) T ( X θ − y ) ) = ∇ θ ( 1 2 ( θ T X T − y T ) ( X θ − y ) ) = ∇ θ ( 1 2 ( θ 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 \begin{array}{cc} \nabla_\theta J(\theta)=\nabla_\theta({1\over2}(X\theta-y)^T(X\theta-y))=\nabla_\theta({1\over2}(\theta^TX^T-y^T)(X\theta-y))\\=\nabla_\theta({1\over2}(\theta X^TX\theta-\theta^TX^Ty-y^TX\theta+y^Ty))\\={1\over 2}(2X^TX\theta-X^Ty-{(y^TX)}^T)=X^TX\theta-X^Ty \end{array} θJ(θ)=θ(21(Xθy)T(Xθy))=θ(21(θTXTyT)(Xθy))=θ(21(θXTXθθTXTyyTXθ+yTy))=21(2XTXθXTy(yTX)T)=XTXθXTy
求导的目的就是让导数等于零从而可以计算出极值点,所以:
θ = ( X T X ) − 1 X T y \theta={(X^TX)}^{-1}X^Ty θ=(XTX)1XTy
当然这个时候出现了一个逆函数,也就是说 X X X必须是满秩(不是满秩怎么办,不急,后面会说)。这个称为正规方程。不得不说,上面的 θ \theta θ是可以求解的,这就是我们需要的结果,到此,我们的线性回归就计算完毕了,第六节我们会谈一谈线性回归的优化问题

五、目标函数的梯度下降法求解

上一节说道我们需要求最小二乘法(目标函数)的最小值(这句话说起来好别扭),通过对目标函数的求导进行得出一个正规方程进行计算,但是对于特征值比较多的情况,正规方程求解的计算量可以达到 O ( n 3 ) O(n^3) O(n3)。这个时候就需要一个新的方法叫做梯度下降法,梯度下降法不仅可以用在线性回归上,还可以用在逻辑回归上。他的主要思想是通过迭代的方法让函数收敛到一个最小值。
具体算法如下:
首先选取一个初始点
求这一点在几个方向上的梯度最大值
设置学习率更新初始点
下面我们从一个二维函数开始看起
假设我们有一个二次函数: y = x 2 y=x^2 y=x2,并且我们不知道它的最低点是 ( 0 , 0 ) (0,0) (0,0)
那么我们首先选取一个初始点为 ( 1 , 1 ) (1,1) (1,1)
然后我们发现这一点的导数: y ′ = 2 x y'=2x y=2x,二维情况下肯定也就只有这个方向梯度最大(毕竟只有这一个梯度)。
然后又我们设置一个学习率: α = 0.4 \alpha=0.4 α=0.4
所以此时便可以迭代出一个新的点的横坐标(): x ( 1 ) = x − α ⋅ y ′ ( 1 ) = 0.2 x^{(1)}=x-\alpha\cdot y'(1)=0.2 x(1)=xαy(1)=0.2
以此类推:
x ( 2 ) = x ( 1 ) − α ⋅ y ′ ( 0.2 ) = 0.04 x ( 3 ) = x ( 2 ) − α ⋅ y ′ ( 0.04 ) = 0.008 . . . \begin{array}{cc} x^{(2)}=x^{(1)}-\alpha\cdot y'(0.2)=0.04\\ x^{(3)}=x^{(2)}-\alpha\cdot y'(0.04)=0.008\\ ... \end{array} x(2)=x(1)αy(0.2)=0.04x(3)=x(2)αy(0.04)=0.008...
你会发现,迭代之后逐渐趋近最低点
这里我们需要的就是目标函数的梯度(对于一维来说也就是导数),梯度的方向就是变化率最大的方向,梯度的值就是变化率最大方向对应的变化率,上面小节我们已经知道了目标函数以及梯度:
J ( θ ) = 1 2 ∑ i = 1 n ( y ( i ) − θ T x ( i ) ) 2 = 1 2 ( X θ − y ) T ( X θ − y ) ∇ θ J ( θ ) = X T X θ − X T y \begin{array}{cc} J(\theta)={1\over2}\sum_{i=1}^n{({y^{(i)}-\theta^Tx^{(i)}})^2}={1\over2}(X\theta-y)^T(X\theta-y)\\ \nabla_\theta J(\theta)=X^TX\theta-X^Ty \end{array} J(θ)=21i=1n(y(i)θTx(i))2=21(Xθy)T(Xθy)θJ(θ)=XTXθXTy
这个时候我们就可以按照上面的思路对 θ \theta θ进行迭代,此时 X X X以及 y y y均是已知的常数矩阵。
但是啊但是,梯度下降法很容易陷入局部最优,这个问题目前也比较棘手,没有特别好的解决方法。

六、评估方法

当我们得出我们的参数 θ \theta θ之后,我们需要使用一定的评估方式进行评估,判断这个方法好不好,有多好,数据的选择能不能再优化等,最常用的评估方式为:
R 2 = 1 − ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 ∑ i = 1 m ( y ˉ ( i ) − y ( i ) ) 2 R^2=1-{{\sum_{i=1}^m{(\widehat{y}^{(i)}-y^{(i)})}^2}\over {\sum_{i=1}^m{(\bar{y}^{(i)}-y^{(i)})}^2}} R2=1i=1m(yˉ(i)y(i))2i=1m(y (i)y(i))2
这个结果越接近1,则表示我们拟合的结果越好。

七、岭回归和Lasso回归

之前我们提到几个问题:

  • 如果 X X X不是满秩,我们便无法求 X X X的逆矩阵,也就无法通过正规函数求解
  • 在进行机器学习的过程中发生过拟合

为了解决上面的问题,便出现了岭回归以及Lasso回归,其实这两个方法很简单,就是在原来的线性回归目标函数后面加一个正则化项以增加模型的泛化能力:
岭回归目标函数:
J ( θ ) = 1 2 n ∑ i = 1 n ( y ( i ) − θ T x ( i ) ) 2 + λ ∣ ∣ ω ∣ ∣ 2 2 = 1 2 ( X θ − y ) T ( X θ − y ) + λ 2 ∑ n = 1 n θ 2 \begin{array}{cc} J(\theta)={1\over 2n}\sum_{i=1}^n{({y^{(i)}-\theta^Tx^{(i)}})^2}+\lambda{||\omega||}^2_2\\={1\over 2}(X\theta-y)^T(X\theta-y)+{\lambda\over 2}\sum_{n=1}^n{\theta}^2 \end{array} J(θ)=2n1i=1n(y(i)θTx(i))2+λω22=21(Xθy)T(Xθy)+2λn=1nθ2
Lasso回归目标函数
J ( θ ) = 1 2 n ∑ i = 1 n ( y ( i ) − θ T x ( i ) ) 2 + λ ∣ ∣ ω ∣ ∣ 1 = 1 2 ( X θ − y ) T ( X θ − y ) + λ ∑ n = 1 n ∣ θ ∣ \begin{array}{cc} J(\theta)={1\over 2n}\sum_{i=1}^n{({y^{(i)}-\theta^Tx^{(i)}})^2}+\lambda||\omega||_1 \\={1\over 2}(X\theta-y)^T(X\theta-y)+\lambda\sum_{n=1}^n|\theta| \end{array} J(θ)=2n1i=1n(y(i)θTx(i))2+λω1=21(Xθy)T(Xθy)+λn=1nθ

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值