3.线性回归

Posted inpluslab-dataplayer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.线性回归相关的知识,希望对你有一定的参考价值。

本文由中山大学In+ Lab整理完成,转载注明出处

团队介绍 传送门

一、序言
在统计学中,线性回归(Linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。线性回归属于监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个线性函数,然后测试这个函数训练的好不好(即此函数是否足够拟合训练集数据),挑选出最好的函数(cost function最小)即可。

二、正文
2.1单变量线性回归
线性回归最典型的一个实例就是预测房价,即房产总价与购买的房屋面积的关系,还可以用来预测买一个移动硬盘的价钱,即移动硬盘的总价和容量大小的关系,这是最简单的一元线性回归,也就是我们所说的单变量线性回归。多变量线性回归只是在单变量线性回归上的扩展,因此我们先来简单介绍一下单变量线性回归。
对于单变量线性回归,其函数模型可以表示为:

我们都知道,房价跟房屋面积肯定是正相关的,但是并不是成正比的,具体的房价受制于多种因素,但最主要的因素是面积,这是毋庸置疑的,移动硬盘也是同样的道理。所以我们可以暂且忽略其他因素,抓住主要矛盾,研究房价与面积的关系,移动硬盘价格和容量的关系。

我们举一个简单的例子来说明,如下为某市的一组不同房屋面积及其对应的房屋总价的数据:

    先根据这些数据画出散点图如下:

我们的任务就是找到一条直线(线性函数)来最好地拟合这些数据,也就是我们前面所说的线性回归。在这个具体的问题中,函数的形式我们已经给出了

所以关键就是要找到最佳的参数值 theta0 和theta1 ,使函数最好地拟合我们的数据。但怎样能够看出线性函数拟合的好不好呢?
我们需要使用到Cost Function/Loss Function(代价/损失函数),代价函数越小,说明线性回归地越好(和训练集拟合地越好),当然最小就是0,即完全拟合。

2.2最小二乘法
线性回归中最常见的是将Least Square作为Cost Function,也就是传说中的最小二乘法。下面我们举个简单的栗子说明一下:
如下图所示,假设我们的数据集有五个数据点,用蓝色的点表示;绿色的直线是我们用来拟合数据集的线性函数模型,因此直线上黄色的点就是在该模型下的预测结果。为了判断模型是否能够很好地拟合数据集,我们可以计算各个蓝点(实际值)与对应的黄点(预测值)的距离之和,这里的距离我们可以用欧式距离来度量,也就是红色线段长度(预测值-实际值)的平方。如果距离之和越小,就说明预测值越接近实际值,也就是我们的模型的拟合效果越好。

体现到数学公式中是这样的:

    其中m是数据的个数,h(x) 是第i个数据的预测值, yi是第i个数据的实际值。
    求解最小二乘问题我们可以直接对Cost Function求导然后求出解析解,也可以使用梯度下降等迭代方法来求解,具体的求解过程就不在这里详细介绍了,这部分只要求大家掌握线性回归以及最小二乘法的基本思想就够啦。

2.3多变量线性回归
前面我们只介绍了单变量的线性回归,即只有一个输入变量,现实世界不可能这么简单,因此此处我们要介绍多变量的线性回归;在前面的房价预测例子中,我们知道,房价其实由很多因素决定,比如房子与市中心的距离,卧室的数量,周围的环境好坏,交通状况等等。不过,多变量线性回归只是单变量的一个拓展。 根据我们前面定义的单变量线性回归模型, 我们可以定义多变量线性回归模型如下:

Cost Function如下:

多变量线性回归的损失函数与单变量线性回归类似,只不过求解的过程要更复杂一些,但基本的思想是一致的。

2.4总结
在本节中,我们介绍了单变量线性回归,以及使用最小二乘法求解出最能够拟合数据集的线性函数模型,并在此基础上介绍了多变量线性回归。线性回归可以说是机器学习算法中最基础也是最简单的一个算法了,理解了算法的核心思想之后不难掌握。

三、延伸阅读
这部分主要介绍一下单变量线性回归的python代码实现过程。训练集来自前面房价预测例子中的数据。
1.导入我们需要用到的python函数库

2.导入训练集数据

3.对训练集进行线性回归

4.画出训练集数据的散点图以及训练得到的线性函数

5.程序运行结果

从中我们可以看到,数据样本点均匀分布在直线的两侧。

四、参考文献
http://blog.csdn.net/xiazdong/article/details/7950084
https://zhuanlan.zhihu.com/p/27442786
https://www.zhihu.com/question/37031188

以上是关于3.线性回归的主要内容,如果未能解决你的问题,请参考以下文章

史诗级干货长文线性回归算法

python入门机器学习,3行代码搞定线性回归

一元线性回归及案例(Python)

Pytorch实现线性回归(API完成)

TensorFlow(01)线性回归

Matlab多元线性回归(Excel可直接替换数据)