Python机器学习多元线性回归模型

2017年8月18日15:47:47 发表评论 13,613

前言

在上一篇文章《机器学习简单线性回归模型》中我们讲解分析了Python机器学习中单输入的线性回归模型,但是在实际生活中,我们遇到的问题都是多个条件决定的问题,在机器学习中我们称之为多元或多输入的问题,在性回归分析中,通常也都是多输入的问题。下面我们就来简单的分析一下多元情况下的线性回归分析问题。

多元回归模型

我门首先看一个运输公司的运输时间的数据实例:

Python机器学习多元线性回归模型

上表中的数据是运输公司的运输时间和运送英里数、次数、车型的关系数据,从这个数据中我们可以知道,影响时间的因素有3个,并且其关系呈现出基本的线性关系,这就是典型的多元线性问题。细心的同学可能可以看出来,在这数据中,英里数、次数和车型相比其类型有点差异,英里数和次数都是一个有大小的数字,其大小直接影响时间,但是车型不是一个有数值的特征值,车型是以类别来分的,其数值只是其车型的代表数字而已,是不能直接拿来用的,所以我们后面会将,将类别的数据归一化,转换为可用的数据。

很明显与简单的单输入模型想比,其区别在于输入的个数是单个还是多个。我们首先看一下单输入的时候的回归方程:y = ax + b ,我们的方程中只有a和b两个参数,自变量只有x一个,因变量只有y一个,我们从这个方程中来推导一下元回归方程应该是什么样的呢?假设现在有n个输入,那么也就是有多个自变量x,我们可以记为x1、x2、x3.......,那么从上式中可以推导出,其参数肯定也不止a和b两个,每个x的旁边都乘上了一个参数a,所以我们多元回归方程如下:

Python机器学习多元线性回归模型

这里的a和b都便是我们训练模型得到的最佳参数值。

同样,我们的参数也可以像简单的单输入的回归方程一样来确定,也是通过最小二乘法,不过此时的运算将上述到多维空间,设计到线性代数和矩阵运算,还是比较复杂的,公式我们这里就不做推导了,其推导流程跟单输入的类似,我们可以将参数a和x放在向量矩阵中,使用最小二乘法的推导方式来得出。最小二乘法的理论推导在上一篇文章中已经给出了,不明白的同学可以再去看一下。其基本结论如下:

Python机器学习多元线性回归模型

上式中的X'是军阵X的转置,-1代表逆矩阵。

多元线性回归Python应用

下面我们使用上面的运输公司的例子来讲一下在Python中我们如何来对多元线性进行建模预测,其实在sklearn中已经为我们封装好了这么一个类,我们直接调用就可以了。下面看我们的例子

Python机器学习多元线性回归模型

首先呢,我们前面说过,车型是类别,不是数值,我们需要进行数据处理,其处理方式便是将车型归一化,比如这里的0,我们将化为100,这里的1我们化为010,这里的2我们化为001,最终处理过的数据如下:

Python机器学习多元线性回归模型

因为数据比较少,所以这里我们是手工修改的,若数据量比较大的话可以在Python中调用函数来进行数据的预处理,前面的文章中也有实例,这里就不多说了。我们将这个文件保存为csv,在Python中使用该数据集来进行建模。

首先我们来进行数据的读取:

我么使用了numpy中的genfromtext方法来进行数据的读取,其读取到的结果如下:

Python机器学习多元线性回归模型

读取到了数据之后我们就将数据分为特征值X和标记,然后使用sklearn中的linear_model来进行建模:

最终输出结果如下:

Python机器学习多元线性回归模型

补充

在前面介绍的时候其实有几个概念没有讲下面补充说一下,在回归问题中,有三概念方程:

  • 多元回归模型:

Python机器学习多元线性回归模型

其中ε是误差其为正太分布形式。

  • 多元回归方程:

Python机器学习多元线性回归模型

该方程即为多元回归模型的均值,其误差均值为0

  • 估计多元回归方程:

Python机器学习多元线性回归模型

该方程便是我们通过训练得出来的线性回归方程。

结束语

本文中的例子比较简单,数据比较少,只是一个简单的训练预测实例,并没有牵扯到误差分析和模型的评估,在下一篇文章中我们将使用大量数据的数据集,构造线性回归模型,并且讲解在线性的情况下,如何评估模型,以及评估的法。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: