Linear Regression (线性回归)

2018-06-08  本文已影响197人  倒着念

概述

线性回归是机器学习的一种回归模型,同时也是统计学中的回归模型。回归模型主要被用来预测真实值,相反分类问题主要被用来预测离散的数值,如有癌症或无癌症,薪水超过5k或没有。

任何机器学习模型都有输入、输出、学习算法和损失函数。线性回归的输入可以有1或多个输入变量或者说是特征,输出只允许有一个 (也就是我们的预测值),其公式比较类似于多元一次函数

公式1

比如我们要预测一个人的薪水为多少,我们只需要将我们所拥有该用户的相关属性输入进去 (也就是xj) 与相应系数相乘的和便是我们最终预测的该用户的薪水量。

简单线性回归

简单线性回归也就是只拥有一个输入和一个输出,如图1

在图1中,蓝色的点就是我们拥有的数据,其只有一个属性 (如所交税,信用度等), 纵轴是我们预测的值 (如收入薪水),而红色的线就是我们训练好的简单线性回归模型, 我们可以根据输入不同的input数值来预测最终的output。

线性回归损失函数

线性回归和简单线性回归的区别就在于它拥有多个属性来作为输入。其损失函数是平方误差 (square error) 来判断的,我们的目的是让损失函数得到的值最小,也就是要让损失的误差数最小。Square Error的公式如下:

Square Error Formula

m是我们拥有的用户数量,h(x)就是我们上面提到的线性回归模型的公式,通过预测值和真实值的差开平方,该值一定大于等于0,通过除以用户总数,我们就得到了平均损失值。大家会有一个问题,就是为什么还要除以2 ?其原因是为了对其求导的简便化 (Mathematically convenient) ,加上2和不加上2并不会影响我们最终的判断。

线性回归学习算法

梯度下降方法

上一节我们已经学习到了梯度下降算法,这一节我们就会用它来让我们的模型进行学习。我们对线性回归的损失函数进行求偏导,可以得到

公式2

令其公式2等于0,通过它进行梯度下降,就可以训练出我们最终的想要的模型

Normal Equation (正规方程)方法

正规方程也就是通过矩阵的方式来求得相应系数,我们分别用X来表示我们得到的所有数据, y用来表示所有数据中的预测值

表1

例如表1,我们总共有4个数据和3个属性 (薪水为预测值,即为y值),那么我们的X, y分别为

矩阵,向量表达形式

其中,男用1表示,女用0表示。

这样我们就可以用正规方程表示线性回归模型的公式和损失函数了,同时令损失函数的偏导函数等于0,我们就可以推导出正规方程方法的学习公式,其公式分别为

线性回归基于MXNet代码

导入库

导入库

设置环境

设置环境

模拟数据

制造数据

构建线性回归模型

构建模型相关代码

梯度下降学习算法

梯度下降学习算法代码

引用参考

Andrew Ng. Machine Learning. https://www.coursera.org/learn/machine-learning/.

Ben Lambert. Deriving Least Squares Estimators. https://www.youtube.com/watch?v=Hi5EJnBHFB4.

MXNet. Linear Regression from Scratch. https://gluon.mxnet.io/chapter02_supervised-learning/linear-regression-scratch.html.

上一篇下一篇

猜你喜欢

热点阅读