在如今深度学习盛行的时代,很多同学在学模型算法的时候会自动忽略一些简单的模型。

        但是往往,这些简单基础的算法模型也能在解决问题时起到至关重要的作用。

        今天,就带大家用5分钟的时间一起来了解线性模型。

线性模型我们主要讲解两个:线性回归和逻辑回归。他们对应我们生活中最常见的预测分类问题。

        在讲解之前,先给大家补充一些知识。

一.知识补充

1.1基本概念

        我们在接触模型算法之后,经常听到有人说建模建模,到底什么是建模?其实说白了,就是生成一个函数。举一个例子来说:我要毕业了,为了感谢老师对我的栽培,我打算给老师买一个西瓜,但是我没有什么经验,不会挑选西瓜,你作为精通算法的同学,帮我解决眼前这个困难。

        这个时候,你很自然的就想到,可以用建模解决。将一堆好瓜的特征数据作为输入,然后训练模型。当我想要为老师挑选一个好瓜时,我只需要把我挑选的这个瓜的特征输入进模型,就能知道是不是好瓜了。很好,问题解决了。我们详细看一下这个过程。

        这是你用来作为输入的数据集,有三组有标签的西瓜样本,这三个西瓜中前两个样本是好瓜,最后一个样本是坏瓜。我将这些数据输入进去,训练模型。我们前面说了,训练模型其实最后就是得出了一个函数,假如我得到的函数是:

f_{good}=0.2\cdot x_{tiandu}+0.1\cdot x_{cuidu}+0.6\cdot x_{seze}+0.1\cdot x_{zhongliang}

        其中x的那些下角标都是拼音,就是上面的特征。这个函数就是我得到的模型,以后我只需要将每个特征值输入函数,就能知道它是否是好瓜了。

        那么有同学又要问了,既然是函数,我训练模型的时候又在训练什么?我们看上面那个模型的每一个特征前面都有一个小数,这些小数就是参数,训练模型就是在找这些参数。

        那上面我们举例子的那个函数就是线性函数,我们建立线性模型其实最后就是得出一个这样的线性函数。因为这个函数很易懂,同学们一下子就能看出来这些参数是西瓜被判断为好瓜时,各个特征的重要性占比,因此它也具有很好的可解释性。

1.2模型评估

        这里我先不做过多解释,先给大家讲解一下模型评估的集中方法。

        首先先来讲回归模型的评估方法。评估回归模型有很多方法,这里给大家介绍四种方法:均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)、可决系数。

        然后是分类模型的评估方法。这里介绍四种:准确率和错误率、查全率和查准率以及F_{1}、ROC和AUC、代价敏感错误率和代价曲线。

        因为篇幅的关系,这里我们先简单说一下均方误差,剩下的也会讲解,不过不在这章。

        均方误差的公式很简单,但是它有两种情况,一种是单变量的情况,一般用于一元线性回归。另一种是多变量情况,一般用于多元线性回归。

        其实最核心的原理就是,真实值与预测值差的平方。

二.线性回归

2.1基本概念

        在我们的日常生活中常常会遇到一些预测问题,比如在节假日和恶劣天气预测快递送达时间等等。对于预测问题,我们分成两种大的情况,一种是回归,一种是分类。今天我们要讲的就是线性回归模型。

        那到底什么是线性回归?“线性回归”试图学得一个线性模型来尽可能准确的预测实值输出标记。说白了,就是通过已知的数据拟合一个线性函数。

        如果定义你没理解,那我们来看几何意义。上面的蓝色小点就是我们手里有的真实值,橙色的小点是我们通过线性回归得出的预测值,图中的红线就是我们的线性回归模型。

        我们进行线性回归其实就是通过这些蓝色小点(真实值),找到一条线(线性函数)能够让蓝色的小点尽可能全部落在线上。

2.2具体步骤

        理解了线性回归,我们现在来看具体如何找到线性函数,如何建立这个线性模型。

        我们采用反推法来思考。我们最终的目的是得到一个线性函数f(x)=\omega_{1} x_{1}+\omega _{2}x_{2}+b,在这个函数中,x我们已知了,因此我们需要确定参数\omega和b。

        这样就将问题转换到了如何确定参数上。在解决这个问题之前,我们想这样一件事。在训练模型的时候,到达什么样的程度,我们才能说模型已经训练好了,这个“好”应该如何度量评价呢?这就涉及到了回归模型评估方法,这里我们使用上面介绍的均方误差。

        因为我们上面说了,均方误差其实就是真实值与预测值的差的平方,那我们预测值就是\omega x+b,这样,我们就将这两个未知参数带到了均方误差中。

        接下来我们思考,既然均方误差是用来评估回归模型的,我们一定希望模型分数越高越好,对于均方误差,它衡量的是真实值与预测值的差距,我们希望它越小越好,因此,我们又将问题转化成了,让均方误差尽可能小。

        这时,让均方误差最小化求解未知参数是我们的任务,那我们用什么方法求解?常见的方法有两种,一种是直接法,通过最小二乘法,直接求出闭式解。另一种是间接法,通过梯度下降法,迭代得出最优解。

        这里我们先讲解最小二乘法。

        最小二乘法是通过直接求偏导,然后求出闭式解。没有迭代的过程,一般在编程中,不会使用这种方法,因此这里我们着重讲解一下梯度下降法。

        梯度下降求解主要分为这样几个步骤:首先初始化参数,也就是赋初值。然后算出预测值。接着算损失,求偏导,结合步长更新参数,一直迭代。直到到达迭代次数或者损失过小停止。

        我们通过一道例题一起理解一下。现在我们的线性函数是y_{p}=bx+a,我们先给初始化,a=0.45、b=0.75,接着我们将x带入函数中,算出y_{p}。接着我们来算损失,这里损失函数我们没有选用均方误差,而是选用SSE,SSE=\frac{1}{2}(y-y_{p})^{2},将真实值和预测值带入SSE公式中,算出损失,并将所有x的损失加到一起得到0.677。

        接着我们对SSE分别求a和b的偏导。其实梯度就是一个向量,我们这里求的偏导,就是梯度。\frac{\partial SSE}{\partial a}=-(y-y_{p})\frac{\partial SSE}{\partial b}=-(y-y_{p})x,将相应值带入到偏导公式中,最后再求和。

        这里,我们引入步长。步长的值一般题目会给,在编程中,我们会让步长小一些,这样会让模型学的更细。这里,我们让步长为0.01,既\alpha =0.01,接着就是更新参数a、b。我们更新参数只需将相应值带入公式即可。

a'=a-\alpha \cdot \frac{\partial SSE}{\partial a}

b'=b-\alpha \cdot \frac{\partial SSE}{\partial b}

        接下来就是不断迭代,不断重复前几步,直到满足前面说的停止条件。

2.3扩展

        前面我们说了一元线性回归,但是在生活中还有多维度和非线性的问题,因此我们来扩展一下多元线性回归和非线性回归。

        其实学会了一元线性回归之后,多元线性回归就好理解多了。

        我们一元的时候是拟合了一条线,那现在多元,应该拟合一个面。这时我们的x和y都是许多数,相对的,我们的参数也应该变的很多,数量一多,我们自然就想到了用矩阵表示。

        剩下的就和一元没什么不一样了。需要注意的是,现在涉及到矩阵之后,我们在计算时可能会出现求取逆矩阵,当矩阵不是满秩时,是不能直接求的。

        接下来我们来看非线性的情况。对于前面的所有情况,都是让我们的预测值y_{p}尽可能靠近真实值y,最终形成了线性函数y=y_{p},那如果我让预测值去拟合真实值的变形呢。

        我们可以让预测值去拟合\ln y等一切变形。为什么可以这样操作呢?因为我们需要的是值,而不是最低点或者最小值,因此,尽管是\ln y但是y值仍然是它。

        在数学中,我们最期望也最想要看到的就是可导可微的函数,因此我们希望在变形时尽可能变成可导可微的函数。

        我们把这样的形式称为“广义线性函数”,其中我们做的变形g(\cdot )成为联系函数。

        好的,这就是线性回归,接下来会继续带大家梳理线性模型,我们下一章见。

更多推荐