1.0 模型之母
线性回归模型虽然看起来非常简单,但实际上,线性回归模型可以说是最重要的数学模型之一,很多模型都是建立在它的基础之上,可以被称为是“模型之母”。
之前介绍的kNN算法属于分类(Classification),即label为离散的类别型(categorical variable),如:颜色类别、手机品牌、是否患病等。而简单线性回归是属于回归(regression),即label为连续数值型(continuous numerical variable),如:房价、股票价格、降雨量等。
所谓简单线性回归,是指以线性方程的形式来描述一个特征(自变量)和label(因变量)之间的关联关系。线性方程,简单理解就是自变量的幂指数为1且只进行相加运算。简单线性回归的一般形式如下:。
对于每个样本点,根据线性方程有。
那么若回归方程预测效果越好,则预测值与真实值之间的差距应当越小。考虑到正负抵消与可导性,可以使用距离的概念来度量二者的差距。考虑所有的m个样本点,则有,而模型预测的目标就是求上式的最小值。
2.0 损失函数
损失函数(loss function),就是衡量模型的拟合结果与实际结果之间的差距部分,有时也被称为效用函数(utility function)。在确定完损失函数之后,通过最优化损失函数,得到相应的参数取值,最终获得机器学习模型。
简单线性回归的损失函数形式即为,而此时的目标就是求时的和。
近乎所有参数学习算法都是这样的套路,区别是模型不同,建立的目标函数不同,优化的方式也不同。
3.0 最小二乘法
简单线性回归模型就是求损失函数的,这里求最小值就是最小二乘法的“最小”,“二乘”的意思就是平方。
使用最小二乘法的简单线性回归推导过程,设,分别对a和b进行求导,如下:
......(1)
......(2)
由(2)可推,,进一步化简有
......(3)
把(3)代入(1),则可得:
......(4)
由于,代入(4)中并适当 增添辅助项,得:
最终得简单线性回归的各项系数为:
4.0 (简单)线性回归的评价指标
由前面可知线性回归的损失函数形式为,那么当数据集的长度增加是,损失势必然也是随之增加的。为了消除数据量大小带来的影响,就需要了解均方差等指标的概念。
4.1 均方误差MSE
均方差MSE(mean squared error),通过对损失求均值来消除数据量的影响,。
sklearn中的MSE:
from sklearn.metrics import mean_squared_error
mean_squared_error(y_test, y_predict)
4.2 均方根误差RMSE
由于预测损失或误差有时需要进行解读,此时平方计算后的数值在单位上不具备可解释性(如万元变成万元平方),因此需要急性开方,此时得到的值为均方根误差(root mean square error),。
sklearn中没有RMSE的直接计算方法,可手动对MSE开方。
4.3 平均绝对误差MAE
从距离的角度看,均方误差计算的是预测值与真实值之间的欧式距离,当然还可以使用曼哈顿距离来描述这一误差,这就是平均绝对误差(mean absolute error),。
sklearn中的MAE:
from sklearn import mean_absolute_error
mean_absolute_error(y_test, y_predict)
4.4 R squared
对于分类模型,模型的各评价指标是在0-1之间取值,但RMSE和MAE没有这样的性质,因此RMSE和MAE就有这样的局限性。此外,当预测标签的量纲不同时,如身高和体重,一个模型的RMSE值是4.9(公斤) ,一个模型的RMSE是10(厘米)。此时无法判断哪个模型预测得更准确,因为二者的量纲根本就不是一类东西。
以上的局限性,可以使用指标R Squared解决,即。
分子其实就是模型预测的所有误差或损失。分布是标签真实值的方差,也可以理解为用均值去估计所有预测值所产生的误差,是一个基准模型(baseline model)。使用baseline模型产生的错误较多,使用回归模型的错误较少。因此用1减去较少的错误除以较多的错误,实际上是衡量了回归模型拟合住数据的地方,即没有产生错误的相应指标。
因此;越大越好;当时,说明回归模型等效于基准模型;当
时,说明回归模型不如基准模型,还有可能数据间没有任何线性关系。
sklearn中的R Squared:
from sklearn.metrics import r2_score
r2_score(y_test, y_predict)