理论

问题

与一元线性回归基本类似,只是对变量进行了扩充,在表达式向量化之后可写成与一元线性回归相同的形式。

由于所含参数、下标(分量)较多,首先得形式化定义问题

下式为多元线性回归数学模型,式中多元线性回归 - 图1分别为自变量(特征),参数(权重)的向量值,(设向量长度为多元线性回归 - 图2):

多元线性回归 - 图3

多元线性回归 - 图4%5ET%3B%5C%20w%20%3D%20(w_i%2C%20w_2%2C%5Ccdots%2Cw_m)%5ET%0A#card=math&code=x%3D%EF%BC%88x_1%2Cx_2%2C%5Ccdots%2Cx_m%29%5ET%3B%5C%20w%20%3D%20%28w_i%2C%20w_2%2C%5Ccdots%2Cw_m%29%5ET%0A)

设给定样本组数为多元线性回归 - 图5,对于自变量和因变量的随机变量,设为多元线性回归 - 图6,单个样本为:

多元线性回归 - 图7%2Ci%3D1%2C%5Ccdots%2Cn%0A#card=math&code=%28X_i%2C%20Y_i%29%2Ci%3D1%2C%5Ccdots%2Cn%0A)

单个样本的单个分量为(第多元线性回归 - 图8个样本的第多元线性回归 - 图9个分量,之后的式子中多元线性回归 - 图10表示样本序号,多元线性回归 - 图11表示单个样本的分量值序号多元线性回归 - 图12为单分量数据,即多元线性回归 - 图13): 多元线性回归 - 图14

损失(误差)函数定义如下:

多元线性回归 - 图15%5E2%0A#card=math&code=L%20%3D%20%5Cfrac%7B1%7D%7B2%7DMSE%20%3D%20%5Cfrac%7B1%7D%7B2%7D%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%28Y_i-X_iw%5ET%29%5E2%0A)

对上式子损失进行向量化(向量化思维非常重要,能极大简单求解过程,最右侧为多元线性回归 - 图16范数):

多元线性回归 - 图17%5ET(Y-Xw)%3D%5Cfrac%7B1%7D%7B2%7D%20%7C%7CY-Xa%7C%7C_2%0A#card=math&code=L%3D%5Cfrac%7B1%7D%7B2%7D%28Y-Xw%29%5ET%28Y-Xw%29%3D%5Cfrac%7B1%7D%7B2%7D%20%7C%7CY-Xa%7C%7C_2%0A)

注:

  1. 损失函数乘上二分之一没有特别意义,只是为了求导之后没有常系数
  2. 多元线性回归 - 图18的完整矩阵(向量)结构如下:

多元线性回归 - 图19

多元线性回归 - 图20%0A#card=math&code=Y%20%3D%20%28Y_1%2CY_2%2C%20%5Ccdots%2C%20Y_n%29%0A)


求解

对损失函数求导,令偏导为多元线性回归 - 图21,解参数多元线性回归 - 图22:

多元线性回归 - 图23%20%3D0%0A#card=math&code=%5Cfrac%7B%5Cpartial%20L%7D%7B%5Cpartial%20w%7D%20%3D%20X%5ET%28Y-Xw%29%20%3D0%0A)

多元线性回归 - 图24

多元线性回归 - 图25%5E%7B-1%7DX%5ETY%0A#card=math&code=w%20%3D%20%28X%5ETX%29%5E%7B-1%7DX%5ETY%0A)

注:也可通过梯度下降进行求解


引伸(也可称为正则化手段)

Ridge Regression(岭回归、脊回归)

上面的求解结果中,X^TX可能不可逆,解决办法,给原始损失函数加上一个惩罚项(二范数):

多元线性回归 - 图26%20%2B%20%5Cfrac%7B1%7D%7B2%7D%5Clambda%20w%5ETw%0A#card=math&code=L%20%3D%20%5Cfrac%7B1%7D%7B2%7D%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%28Y_i-X_i%5ETw%29%20%2B%20%5Cfrac%7B1%7D%7B2%7D%5Clambda%20w%5ETw%0A)

则求偏导解得:

多元线性回归 - 图27%5E%7B-1%7DXY%0A#card=math&code=w%20%3D%20%28X%5ETX%2B%5Clambda%20I_m%29%5E%7B-1%7DXY%0A)

其中X^TX为半正定矩阵, \lambda I_m为正定矩阵,两者相加为正定矩阵,可逆

Lasso

损失函数加上一范数(绝对值)的惩罚项

多元线性回归 - 图28%2B%5Cfrac%7B1%7D%7B2%7D%5Clambda%20%7C%7Ca%7C%7C1%0A#card=math&code=L%20%3D%20%5Cfrac%7B1%7D%7B2%7D%5Csum%7Bi%3D1%7D%5En%28Y_i%20-%20X_i%5ETw%29%2B%5Cfrac%7B1%7D%7B2%7D%5Clambda%20%7C%7Ca%7C%7C_1%0A)

此时,所得参数多元线性回归 - 图29的部分分量值为多元线性回归 - 图30,带来的好处:能消掉部分无关特征

Elastic Net

惩罚项既有一范数又有二范数(两者之和)。一范数能带来稀疏,二范数能带来计算便利和求导。此处知识点待了解。


实践

操作基本同一元线性回归,同一个API,毕竟LinearRegression就是针对所有线性回归情况,样本读取和数据拆分略过。调用、fit、预测如下:

  1. from sklearn.linear_model import LinearRegression
  2. regressor = LinearRegression()
  3. regressor.fit(X_train, Y_train)
  4. Y_pred = regressor.predict(X_test)