Linear Regression (线性回归)
概述
线性回归是机器学习的一种回归模型,同时也是统计学中的回归模型。回归模型主要被用来预测真实值,相反分类问题主要被用来预测离散的数值,如有癌症或无癌症,薪水超过5k或没有。
任何机器学习模型都有输入、输出、学习算法和损失函数。线性回归的输入可以有1或多个输入变量或者说是特征,输出只允许有一个 (也就是我们的预测值),其公式比较类似于多元一次函数
公式1比如我们要预测一个人的薪水为多少,我们只需要将我们所拥有该用户的相关属性输入进去 (也就是xj) 与相应系数相乘的和便是我们最终预测的该用户的薪水量。
简单线性回归
简单线性回归也就是只拥有一个输入和一个输出,如图1
在图1中,蓝色的点就是我们拥有的数据,其只有一个属性 (如所交税,信用度等), 纵轴是我们预测的值 (如收入薪水),而红色的线就是我们训练好的简单线性回归模型, 我们可以根据输入不同的input数值来预测最终的output。
线性回归损失函数
线性回归和简单线性回归的区别就在于它拥有多个属性来作为输入。其损失函数是平方误差 (square error) 来判断的,我们的目的是让损失函数得到的值最小,也就是要让损失的误差数最小。Square Error的公式如下:
Square Error Formulam是我们拥有的用户数量,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.