第2.2节 线性回归(多变量线性回归)
2.2 多变量线性回归
2.2.1 理解多变量
在2.1节的内容中,笔者详细地介绍了什么是线性回归及一个典型的应用场景,同时还介绍了如何通过开源的sklearn来搭建一个简单的线性回归模型。相信此时各位读者对于线性回归的核心思想已经有了一定的认识。接下来,我们将继续开始学习线性回归的后续内容。
在这里笔者还是继续以房价预测为例进行介绍。尽管影响房价的主要因素是面积,但是其他因素同样也可能影响房屋的价格。例如房屋到学校的距离、到医院的距离和到大型商场的距离等。虽然现实生活中一般不这么量化,但是开发商也总是会拿学区房做卖点,所以这时便有了影响房价的4个因素,而在机器学习中我们将其称为特征(Feature)或者属性(Attribute),因此,包含多个特征的线性回归就叫作多变量线性回归(Multiple Linear Regression)。
2.2.2 多变量线性回归建模
以波士顿房价数据集为例,其一共包含了13个特征属性,因此可以得到如下所示的线性回归模型。
并且同时,其目标函数为
其中表示第个样本的第个特征属性;为一个向量,表示所有的权重;为一个标量,表示偏置。
由2.1节介绍的内容可知,只要通过某种方法最小化目标函数后,便可以求解出模型对应的参数。不过在这之前,我们先来看一下如何通过sklearn进行建模与求解。
2.2.3 多变量回归示例代码
下面依旧以sklearn进行多变量线性回归模型的建模与求解为例,完整代码见Book/Chapter02/02_boston_price_train.py
文件。
1.导入数据集
这里直接导入了一个sklearn内置的Boston房价数据集为例进行演示,代码如下:
from sklearn.datasets import load_boston
def load_data():
data = load_boston()
x = data.data
y = data.target
return x, y
2. 求解与结果
训练模型与输出相应的权重参数和预测值,代码如下:
def train(x, y):
model = LinearRegression()
model.fit(x,y)
print("权重为:",model.coef_,"偏置为:",model.intercept_)
print("第12个房屋的预测和真实价格:",model.predict(x[12,:].reshape(1,-1)))
根据上述代码便完成了对于多变量线性回归模型的建立与求解,同时也得出了各个特征所对应的权重参数,但由于不易对高维数据进行可视化,所以这里只能从预测的结果来评判模型的好坏,具体的模型评估指标将在第2.4节中进行介绍。