5分钟带你读懂机器学习---线性模型(一)
在如今深度学习盛行的时代,很多同学在学模型算法的时候会自动忽略一些简单的模型。
但是往往,这些简单基础的算法模型也能在解决问题时起到至关重要的作用。
今天,就带大家用5分钟的时间一起来了解线性模型。
线性模型我们主要讲解两个:线性回归和逻辑回归。他们对应我们生活中最常见的预测分类问题。
在讲解之前,先给大家补充一些知识。
一.知识补充
1.1基本概念
我们在接触模型算法之后,经常听到有人说建模建模,到底什么是建模?其实说白了,就是生成一个函数。举一个例子来说:我要毕业了,为了感谢老师对我的栽培,我打算给老师买一个西瓜,但是我没有什么经验,不会挑选西瓜,你作为精通算法的同学,帮我解决眼前这个困难。
这个时候,你很自然的就想到,可以用建模解决。将一堆好瓜的特征数据作为输入,然后训练模型。当我想要为老师挑选一个好瓜时,我只需要把我挑选的这个瓜的特征输入进模型,就能知道是不是好瓜了。很好,问题解决了。我们详细看一下这个过程。

这是你用来作为输入的数据集,有三组有标签的西瓜样本,这三个西瓜中前两个样本是好瓜,最后一个样本是坏瓜。我将这些数据输入进去,训练模型。我们前面说了,训练模型其实最后就是得出了一个函数,假如我得到的函数是:
其中x的那些下角标都是拼音,就是上面的特征。这个函数就是我得到的模型,以后我只需要将每个特征值输入函数,就能知道它是否是好瓜了。
那么有同学又要问了,既然是函数,我训练模型的时候又在训练什么?我们看上面那个模型的每一个特征前面都有一个小数,这些小数就是参数,训练模型就是在找这些参数。
那上面我们举例子的那个函数就是线性函数,我们建立线性模型其实最后就是得出一个这样的线性函数。因为这个函数很易懂,同学们一下子就能看出来这些参数是西瓜被判断为好瓜时,各个特征的重要性占比,因此它也具有很好的可解释性。
1.2模型评估
这里我先不做过多解释,先给大家讲解一下模型评估的集中方法。
首先先来讲回归模型的评估方法。评估回归模型有很多方法,这里给大家介绍四种方法:均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)、可决系数。
然后是分类模型的评估方法。这里介绍四种:准确率和错误率、查全率和查准率以及、ROC和AUC、代价敏感错误率和代价曲线。
因为篇幅的关系,这里我们先简单说一下均方误差,剩下的也会讲解,不过不在这章。
均方误差的公式很简单,但是它有两种情况,一种是单变量的情况,一般用于一元线性回归。另一种是多变量情况,一般用于多元线性回归。


其实最核心的原理就是,真实值与预测值差的平方。
二.线性回归
2.1基本概念
在我们的日常生活中常常会遇到一些预测问题,比如在节假日和恶劣天气预测快递送达时间等等。对于预测问题,我们分成两种大的情况,一种是回归,一种是分类。今天我们要讲的就是线性回归模型。
那到底什么是线性回归?“线性回归”试图学得一个线性模型来尽可能准确的预测实值输出标记。说白了,就是通过已知的数据拟合一个线性函数。

如果定义你没理解,那我们来看几何意义。上面的蓝色小点就是我们手里有的真实值,橙色的小点是我们通过线性回归得出的预测值,图中的红线就是我们的线性回归模型。
我们进行线性回归其实就是通过这些蓝色小点(真实值),找到一条线(线性函数)能够让蓝色的小点尽可能全部落在线上。
2.2具体步骤
理解了线性回归,我们现在来看具体如何找到线性函数,如何建立这个线性模型。
我们采用反推法来思考。我们最终的目的是得到一个线性函数,在这个函数中,x我们已知了,因此我们需要确定参数
和b。
这样就将问题转换到了如何确定参数上。在解决这个问题之前,我们想这样一件事。在训练模型的时候,到达什么样的程度,我们才能说模型已经训练好了,这个“好”应该如何度量评价呢?这就涉及到了回归模型评估方法,这里我们使用上面介绍的均方误差。

因为我们上面说了,均方误差其实就是真实值与预测值的差的平方,那我们预测值就是,这样,我们就将这两个未知参数带到了均方误差中。
接下来我们思考,既然均方误差是用来评估回归模型的,我们一定希望模型分数越高越好,对于均方误差,它衡量的是真实值与预测值的差距,我们希望它越小越好,因此,我们又将问题转化成了,让均方误差尽可能小。
这时,让均方误差最小化求解未知参数是我们的任务,那我们用什么方法求解?常见的方法有两种,一种是直接法,通过最小二乘法,直接求出闭式解。另一种是间接法,通过梯度下降法,迭代得出最优解。
这里我们先讲解最小二乘法。

最小二乘法是通过直接求偏导,然后求出闭式解。没有迭代的过程,一般在编程中,不会使用这种方法,因此这里我们着重讲解一下梯度下降法。
梯度下降求解主要分为这样几个步骤:首先初始化参数,也就是赋初值。然后算出预测值。接着算损失,求偏导,结合步长更新参数,一直迭代。直到到达迭代次数或者损失过小停止。

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

接着我们对SSE分别求a和b的偏导。其实梯度就是一个向量,我们这里求的偏导,就是梯度。,
,将相应值带入到偏导公式中,最后再求和。

这里,我们引入步长。步长的值一般题目会给,在编程中,我们会让步长小一些,这样会让模型学的更细。这里,我们让步长为0.01,既,接着就是更新参数a、b。我们更新参数只需将相应值带入公式即可。
接下来就是不断迭代,不断重复前几步,直到满足前面说的停止条件。
2.3扩展
前面我们说了一元线性回归,但是在生活中还有多维度和非线性的问题,因此我们来扩展一下多元线性回归和非线性回归。
其实学会了一元线性回归之后,多元线性回归就好理解多了。

我们一元的时候是拟合了一条线,那现在多元,应该拟合一个面。这时我们的x和y都是许多数,相对的,我们的参数也应该变的很多,数量一多,我们自然就想到了用矩阵表示。
剩下的就和一元没什么不一样了。需要注意的是,现在涉及到矩阵之后,我们在计算时可能会出现求取逆矩阵,当矩阵不是满秩时,是不能直接求的。
接下来我们来看非线性的情况。对于前面的所有情况,都是让我们的预测值尽可能靠近真实值
,最终形成了线性函数
,那如果我让预测值去拟合真实值的变形呢。

我们可以让预测值去拟合等一切变形。为什么可以这样操作呢?因为我们需要的是值,而不是最低点或者最小值,因此,尽管是
但是
值仍然是它。
在数学中,我们最期望也最想要看到的就是可导可微的函数,因此我们希望在变形时尽可能变成可导可微的函数。

我们把这样的形式称为“广义线性函数”,其中我们做的变形成为联系函数。
好的,这就是线性回归,接下来会继续带大家梳理线性模型,我们下一章见。
更多推荐
所有评论(0)