0. 数据集介绍
波士顿房价数据集是机器学习的常用数据集之一,其字段如下:
数据集不大,只有506条记录,13个特征,没有缺失值,MEDV就是需要我们预测的。
1. 查看数据集的基本信息
在开始建模之前,我们先分析数据集的基本情况,代码如下:
在Notebook中运行,直方图如下:
2. 相关性分析
在了解了数据的基本情况之后,我们需要了解字段的重要程度,当然这这个案例中,或许不太能体现其作用,但是对于哪些很多字段(例如上千个字段)的数据集时,那些不重要的字段就应该过滤掉。
我们的目标字段是target,与自身的相关性显然是1.0,这个可以忽略。除此之外,相关性最大的是LSTAT,虽然是负相关;其次是RM字段,约为0.70;相关性最小的是CHAS,0.18,当然实际项目中0.18的相关性也算是相当高的了。
我们可以使用散点图查看:
可以很看到其相关性。
3. 最简单的线性回归模型
为了理解线性回归模型,我们先建立一个最简单的线性模型:
这就是最简单的线性模型:y = h(x) = a*x b,我们的样本点有许多(x, y),机器学习需要做的就是通过对样本点的学习,得出参数a和b的合理的值,使得h(x)能够拟合这些样本点,所谓模型就是上图中的直线。
如果只选择一个特征,那肯定是选择相关性最大的特征LSTAT,建模如下:
这就是最简单的线性回归模型,参数a和b对应的是coef_和intercept_,误差采用均方误差MSE。
模型是训练出来了,不过这误差看似不小(没有比较,不好说大小),训练误差也超过34。
4. 增加特征进行训练
对于多个特征的线性预测函数如下:
这里需要注意的是x0,其对应的theta0其实是线性方程中的常数项,而在这里x0的值为常量1。
我们可以定义其损失函数为:
训练模型如下:
显然,特征增多之后(因为这个数据集字段不多,直接将所有字段加入训练),训练误差和测试误差都减少了很多。
未完待续......