【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
一、算法简介
线性回归算法(Linear Regression),即LR算法。
再讲解LR算法之前,我们先学习一下什么是线性?什么是非线性?
我们首先用弄清楚什么是线性,什么是非线性。
- 线性函数的定义是:一阶或零阶多项式。
- 特征是一维时,线性模型在二维空间构成一条直线;
- 特征是二维时,线性模型在三维空间中构成一个平面;
- 特征是三维时,则最终模型在四维空间中构成一个体;以此类推…
那么回归又是什么意思呢?
- 回归:人们在测量事物的时候因为客观条件所限,求得的都是测量值,而不是事物真实的值。
- 为了能够得到真实值,无限次的进行测量,最后通过这些测量数据计算回归到真实值,这就是回归的由来。
通俗的说就是用一个函数去逼近这个真实值,那又有人问了,线性回归不是用来做预测吗?是的,通过大量的数据我们是可以预测到真实值的。
二、算法原理
线性回归:就是能够用一个直线较为精确地描述数据之间的关系,这样当出现新的数据的时候,就能够预测出一个简单的值。
线性回归才是真正用于回归的,而不像logistic回归是用于分类,基本思想是用梯度下降法对最小二乘法形式的误差函数进行优化。
线性回归一般用于解决什么问题
寻找到数据与数据之间的规律所在,从而就可以模拟出结果,也就是对结果进行预测。
解决的就是通过已知的数据得到未知的结果。例如:对房价的预测、判断信用评价、电影票房预估等。
三、算法要点
1、一元线性回归
在中学的时候,我们都学过二元一次方程。我们将y作为因变量,x作为自变量,得到方程:
y = ax + b
当给定参数 a
和 b
的时候,画在坐标图内是一条直线(这就是“线性”的含义)。
当我们只用一个x来预测y,就是一元线性回归。
线性回归就是要找一条直线,并且让这条直线尽可能地拟合图中的数据点。
2、损失函数
由于理论和实际之间会存有一定得误差,我们使用μ
用来代表误差。
此时方程变成了:
y = ax +b + μ
残差,就是真实值和预测值间的差值(也可以理解为差距、距离),用公式表示是:
计算的值,再将其平方(为了消除负号),对于我们数据中的每个点如此计算一遍,再将所有的
相加,就能量化出拟合的直线和实际之间的误差。
用公式表示就是:
这个公式是残差平方和,也叫均方误差(MSE),还叫欧氏距离(用于计算点间的距离,记住这个名称,以后我们会经常提到),在机器学习中它是回归问题中最常用的损失函数。
这里的这个损失函数就是著名的最小二乘损失函数,这里还涉及一个概念叫最小二乘法,这里不再展开了。
我们要使得最接进真实值。
这个问题就转换为使损失函数取最小值。那么如何解决这个转化后的问题呢?这又牵扯到一个概念:梯度下降(Radient Descent)
3、最小二乘法
在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线的欧式距离最小之后最小。
4、梯度下降法
梯度是一个向量,即有方向有大小,它的方向是最大方向导数的方向,它的值是最大方向导数的值。
从任意点开始,在该点对目标函数求导,沿着导数方向(梯度)“走”(下降)一个给定步长,如此循环迭代,直至“走”到导数为0的位置,则达到极小值。
四、优缺点
线性回归的几个特点:
- 优点:
(1)思想简单,实现容易。建模迅速,对于小数据量、简单的关系很有效;
(2)是许多强大的非线性模型的基础。
(3)线性回归模型十分容易理解,结果具有很好的可解释性,有利于决策分析。
(4)蕴含机器学习中的很多重要思想。
(5)能解决回归问题。
- 缺点:
(1)对于非线性数据或者数据特征间具有相关性多项式回归难以建模.
(2)难以很好地表达高度复杂的数据。
来源:oschina
链接:https://my.oschina.net/u/3938912/blog/3143621