回归模型通常被用来做预测,即通过对训练集的数据进行训练,找出最拟合训练集的模型参数。
线性回归
线性回归是最简单的回归模型,如何使用线性回归模型做预测呢,简单来说就是对输入特征加权求和,再加上一个“偏置项”的常数。其公式为
y = θ 0 + θ 1 x 1 + θ 2 x x + . . . + θ n x n y=\theta_0+\theta_1x_1+\theta_2x_x+...+\theta_nx_n y=θ0+θ1x1+θ2xx+...+θnxn
所谓训练模型,就是通过不断地尝试不同的θ值,直到这个公式(模型)最拟合训练集。为此,我们首先需要知道怎么测量模型对数据的拟合程度是好还是坏。
线性模型最常见的测量指标是均方根误差(RMSE),所以,找到一个θ值使RMSE值最小就是训练模型的目的。在实践中,最小化均方误差(MSE)比最小化均方根误差(RMSE)更简单,两者效果是相同的,因为使函数最小化的值,也使其平方根最小。
为了得到使MSE最小的θ值,有一种闭式解法——也就是直接得出结果的方程式,称为标准方程
θ = ( X T X ) − 1 X T y \theta=(X^TX)^{-1}X^Ty θ=(XTX)−1XTy
还有一种通过迭代优化寻找θ值的方式,叫做梯度下降,稍后会聊到。
使用sklearn执行线性回归代码如下
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X_train, y_train)
lin_reg.predict(X_test)
时间复杂度
由于标准方程要计算 ( X T X ) − 1 (X^TX)^{-1} (