线性回归的可解释性
下面先使用sklearn封装好的线性模型在整个数据集上进行拟合:
上面使用了波士顿房价的13个特征,通过在全部数据集上进行拟合,不进行train_test_split方法是因为此时我们并不需要验证模型的性能,只是对得到结果的系数进行解释。
此时多元线性模型在整个波士顿房产的数据集上得到系数(即coef_得到的结果)中有正有负。正负代表的就是这些特征和我们最终预测的那个目标,也就是房价的相关性。
- 如果对应特征的系数为正,则表示此特征与目标房价为正相关,也就是这个特征值越大,最终得到的房价整体越高;
- 如果对应特征的系数为负,则表示此特征与目标房价为负相关,也就是这个特征值越大,最终得到的房价整体越低。
而系数绝对值的大小就决定了影响最终目标房价程度,因此接下对这些系数进行一下排序:
因为此时没有将系数取绝对值,因此此时排在最前面的是最小的负数,在负数中负数越小,相应的负数绝对值结果也就越大,也就是负相关程度特别的高,最右边的就是正相关程度比较高的特征值。
接下来有了相应的特征相关程度的排序,接下来将这些特征映射到对应的特征名称中:
为了进行可解释性,下面通过DESCR获取特征名称相对应的具体含义。查看对应的“RM”就是房间数量,换句话说,通过线性回归拟合数据得到的结果可以知道,房间数量越高的相应的房屋价格也就越高。此时查看第二大的特征“CHAS”,表示房屋是否临河,临河相应的特征值就为1,不临河的话为0,此时的"CHAS"为第二个正相关特征,也就是说“CHAS”值为1得到的房产价格就越高。
前面介绍的两个特征都是排序结果正相关最大的两个特征,下面看看负相关的特征,在负相关的特征中,与房价相关程度最高的负相关特征是"NOX",这个特征的含义房子周边的一氧化碳浓度,也就是说,一氧化碳浓度越高相应的房屋价格越低。负相关中第二大的特征“DIS”,距离5个波士顿劳务中心相应的加权平均的距离,他也是和房屋价格是负相关的,也就是这个加权平均的值越小房价越高,相应的值越大对应的房价越低。
前面介绍的就是线性回归对于我们的数据有可解释性,更重要的是获得这种可解释性之后,我们可以有针对性的采集更多的特征,来更好的描述这个房价。前面说的第一个正相关特征"RM",房间数量,很大程度上房间的数量也决定了房子的大小,包括房子多少平米,房子有多少层,院子有多大,我们可以相应的采集这些特征,进一步来看能不能得到更好的预测波士顿房价的模型。相应的“NOX”一氧化碳浓度和相应的房价呈负相关,我们可以采集房屋周边是否有产生这些有毒气体的化工程,采集这些特征来更好的预测波士顿房价,这就是线性回归对数据的可解释性。
即使你的数据使用线性回归法预测的结果不够好,但是我们通过这样的方式,首先看一看数据特征和预测目标的线性关系,相应的系数有多大,这样做也是非常有意义的。所以从某种角度上来讲,我们拿到一组数据之后,先使用线性的方式试试看,总之是没有坏处的。
线性回归总结
当然线性回归算法在预测模型的时候同样需要使用测试集,用训练数据集训练出模型,不同于前面介绍的kNN算法,此时的模型是一个实实在在的模型,所谓的模型就可以写成y = θTx,有了这个模型之后就可以基于这个模型对测试数据集进行预测,将模型在测试集上的预测结果和真实的结果进行比较,使用R2的方式来衡量回归模型的优劣。
这里需要注意的是在使用线性回归算法的时候,对数据是有一个假设的:数据和最终的输出结果之间有一定的线性关系,这个线性关系越强,线性回归算法得到的结果相应的也就越好。在kNN中没有这种对数据的假设,虽然如此,但是当数据真的和输出结果有比较强的线性关系的话,线性回归算法是要比kNN算法要好的,而且从某个维度上来讲,是好不少的,当然在处理非线性回归问题上,只需要将线性回归算法稍作修改即可解决非线性回归的问题。
线性回归最大的优点就是对数据具有可解释性,这样的算法被称为白盒算法,也就是说我们通过这个模型真正的能够学到所谓的知识,在波士顿房价的预测中,我们知道房间的数量和波士顿房价之间是有正比关系的,和周边地区一氧化碳浓度呈现负相关,我们学到了这样的知识,
本章介绍的求解线性回归算法是采用正规方程解的方式,虽然有很强的数学性,得到最终公式比较简单,但是这种方式有一个很大的缺点就是时间复杂度比较高,如果样本数量巨大或者特征数量巨大,在此时使用正规方程解是不合适的。下一章会介绍求解线性回归方程的另一种方式--梯度下降法。当然梯度下降法不仅仅能够解决线性回归算法,更是在机器学习中求解最优模型一种通用化的方法,甚至在有些模型中我们只能使用梯度下降法来解最优的模型,这是因为对于更复杂的模型来说,我们无法获得这样一个简单的公式来计算这些模型相应的参数的。
机器学习算法中很少有像线性回归算法这样通过数学公式推导出方程解的算法。