1 线性回归
1.1 概念
- 利用称为线性回归方程的最小二乘函数对 一个或者多个自变量 和 因变量 之间关系进行建模的一种回归分析。
- 主要应用于对连续值的预测,例如股票的价格、房价的趋势等
1.2 推导方法
1.2.1 模型 - 线性回归方程
(1) y ( x , w ) = w 0 + w 1 x y(x, w) = w_0 + w_1x \tag{1} y(x,w)=w0+w1x(1)
1.2.2 目标函数 - 平方损失函数
一个数据点为 (
x
i
x_{i}
xi,
y
i
y_{i}
yi) 的误差:
(2)
y
i
−
(
w
0
+
w
1
x
i
)
y_{i}-(w_0 + w_1x_{i}) \tag2
yi−(w0+w1xi)(2)
误差损失总和 「残差」:
(3)
∑
i
=
1
n
(
y
i
−
(
w
0
+
w
1
x
i
)
)
\sum\limits_{i = 1}^n {{{(y_{i}-(w_0 + w_1x_{i}))}}} \tag3
i=1∑n(yi−(w0+w1xi))(3)
在线性回归中,使用残差的平方和来表示所有样本点的误差「平方损失函数」:
(4)
∑
i
=
1
n
(
y
i
−
(
w
0
+
w
1
x
i
)
)
2
\sum\limits_{i = 1}^n {{{(y_{i}-(w_0 + w_1x_{i}))}}^2} \tag4
i=1∑n(yi−(w0+w1xi))2(4)
1.2.3 求解方法
1.2.3.1 最小二乘法 - 代数求解(一元)
平方损失函数为:
(5)
f
=
∑
i
=
1
n
(
y
i
−
(
w
0
+
w
1
x
i
)
)
2
f = \sum\limits_{i = 1}^n {{{(y_{i}-(w_0 + w_1x_{i}))}}^2} \tag5
f=i=1∑n(yi−(w0+w1xi))2(5)
我们的目标是求取平方损失函数
m
i
n
(
f
)
min(f)
min(f) 最小时,对应的
w
w
w。首先求
f
f
f 的 1
阶偏导数:
(6)
∂
f
∂
w
0
=
−
2
(
∑
i
=
1
n
y
i
−
n
w
0
−
w
1
∑
i
=
1
n
x
i
)
∂
f
∂
w
1
=
−
2
(
∑
i
=
1
n
x
i
y
i
−
w
0
∑
i
=
1
n
x
i
−
w
1
∑
i
=
1
n
x
i
2
)
\frac{\partial f}{\partial w_{0}}=-2(\sum_{i=1}^{n}{y_i}-nw_{0}-w_{1}\sum_{i=1}^{n}{x_i})\\ \frac{\partial f}{\partial w_{1}}=-2(\sum_{i=1}^{n}{x_iy_i}-w_{0}\sum_{i=1}^{n}{x_i}-w_{1}\sum_{i=1}^{n}{x_i}^2) \tag6
∂w0∂f=−2(i=1∑nyi−nw0−w1i=1∑nxi)∂w1∂f=−2(i=1∑nxiyi−w0i=1∑nxi−w1i=1∑nxi2)(6)
然后,我们令
∂
f
∂
w
0
=
0
\frac{\partial f}{\partial w_{0}}=0
∂w0∂f=0 以及
∂
f
∂
w
1
=
0
\frac{\partial f}{\partial w_{1}}=0
∂w1∂f=0,解得:
(7)
w
1
=
n
∑
x
i
y
i
−
∑
x
i
∑
y
i
n
∑
x
i
2
−
(
∑
x
i
)
2
w
0
=
∑
x
i
2
∑
y
i
−
∑
x
i
∑
x
i
y
i
n
∑
x
i
2
−
(
∑
x
i
)
2
w_{1}=\frac {n\sum_{}^{}{x_iy_i}-\sum_{}^{}{x_i}\sum_{}^{}{y_i}} {n\sum_{}^{}{x_i}^2-(\sum_{}^{}{x_i})^2}\\ w_{0}=\frac {\sum_{}^{}{x_i}^2\sum_{}^{}{y_i}-\sum_{}^{}{x_i}\sum_{}^{}{x_iy_i}} {n\sum_{}^{}{x_i}^2-(\sum_{}^{}{x_i})^2}\tag7
w1=n∑xi2−(∑xi)2n∑xiyi−∑xi∑yiw0=n∑xi2−(∑xi)2∑xi2∑yi−∑xi∑xiyi(7)
求出了平方损失函数最小时对应的 w w w 参数值,这也就是最佳拟合直线。
1.2.3.2 最小二乘法 - 矩阵求解(一元 或者 多元)
线性回归方程:
(1)
y
(
x
,
w
)
=
w
0
+
w
1
x
y(x, w) = w_0 + w_1x \tag{1}
y(x,w)=w0+w1x(1)
表达成矩阵形式为:
(8)
[
y
1
y
2
.
.
.
y
9
y
10
]
=
[
1
,
x
1
1
,
x
2
.
.
.
1
,
x
9
1
,
x
10
]
∗
[
w
0
w
1
]
\begin{bmatrix}y_{1} \\ y_{2} \\ ... \\ y_{9} \\ y_{10} \end{bmatrix} = \begin{bmatrix}1, x_{1} \\ 1, x_{2} \\ ... \\ 1, x_{9} \\ 1, x_{10} \end{bmatrix} * \begin{bmatrix}w_{0} \\ w_{1} \end{bmatrix} \tag8
⎣⎢⎢⎢⎢⎡y1y2...y9y10⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡1,x11,x2...1,x91,x10⎦⎥⎥⎥⎥⎤∗[w0w1](8)
即:
(8)
y
(
x
,
w
)
=
X
W
y(x, w) = XW \tag{8}
y(x,w)=XW(8)
(8)式中,而 X X X 则是 [ 1 , x 1 1 , x 2 . . . 1 , x 9 1 , x 10 ] \begin{bmatrix}1, x_{1} \\ 1, x_{2} \\ ... \\ 1, x_{9} \\ 1, x_{10} \end{bmatrix} ⎣⎢⎢⎢⎢⎡1,x11,x2...1,x91,x10⎦⎥⎥⎥⎥⎤ , W W W 为 [ w 0 w 1 ] \begin{bmatrix}w_{0} \\ w_{1} \end{bmatrix} [w0w1] 矩阵。
平方损失函数为:
(9) f = ∑ i = 1 n ( y i − ( w 0 + w 1 x i ) ) 2 = ( y − X W ) T ( y − X W ) f = \sum\limits_{i = 1}^n {{{(y_{i}-(w_0 + w_1x_{i}))}}}^2 =(y-XW)^T(y-XW)\tag{9} f=i=1∑n(yi−(w0+w1xi))2=(y−XW)T(y−XW)(9)
此时,对矩阵求偏导数得到:
(10)
∂
f
∂
W
=
2
∗
X
T
X
W
−
2
∗
X
T
y
=
0
\frac{\partial f}{\partial W}=2*X^TXW-2*X^Ty=0 \tag{10}
∂W∂f=2∗XTXW−2∗XTy=0(10)
常用向量矩阵求导公式
当矩阵 X T X X^TX XTX 满秩时, ( X T X ) − 1 X T X = E (X^TX)^{-1}X^TX=E (XTX)−1XTX=E,且 E W = W EW=W EW=W。所以, ( X T X ) − 1 X T X W = ( X T X ) − 1 X T y (X^TX)^{-1}X^TXW=(X^TX)^{-1}X^Ty (XTX)−1XTXW=(XTX)−1XTy。最终得到:
(11) W = ( X T X ) − 1 X T y W=(X^TX)^{-1}X^Ty \tag{11} W=(XTX)−1XTy(11)
在使用矩阵求解的过程中,还是使用了一元来举例子求解,但如果(8)式中, X X X 代入 [ 1 , x 11 , x 12 , x 13 , . . . , x 1 n 1 , x 21 , x 22 , x 23 , . . . , x 2 n 1 , x 31 , x 32 , x 33 , . . . , x 3 n . . . 1 , x m 1 , x m 2 , x m 3 , . . . , x m n ] \begin{bmatrix}1, x_{11}, x_{12}, x_{13},..., x_{1n} \\ 1, x_{21}, x_{22}, x_{23},..., x_{2n} \\ 1, x_{31}, x_{32}, x_{33},..., x_{3n} \\ ... \\ 1, x_{m1}, x_{m2}, x_{m3},..., x_{mn} \end{bmatrix} ⎣⎢⎢⎢⎢⎡1,x11,x12,x13,...,x1n1,x21,x22,x23,...,x2n1,x31,x32,x33,...,x3n...1,xm1,xm2,xm3,...,xmn⎦⎥⎥⎥⎥⎤ , W W W 代入 [ w 0 w 1 w 2 w 3 . . . w m ] \begin{bmatrix}w_{0} \\ w_{1} \\ w_{2} \\ w_{3} \\ ... \\ w_{m} \end{bmatrix} ⎣⎢⎢⎢⎢⎢⎢⎡w0w1w2w3...wm⎦⎥⎥⎥⎥⎥⎥⎤ 矩阵,其实这个就是多元的线性回归的求解过程。
1.2.4 性能度量
平均绝对误差(MAE) 就是绝对误差的平均值:
(12)
MAE
(
y
,
y
^
)
=
1
n
∑
i
=
1
n
∣
y
i
−
y
^
i
∣
\textrm{MAE}(y, \hat{y} ) = \frac{1}{n}\sum_{i=1}^{n}{|y_{i}-\hat y_{i}|} \tag{12}
MAE(y,y^)=n1i=1∑n∣yi−y^i∣(12)
其中, y i y_{i} yi 表示真实值, y ^ i \hat y_{i} y^i 表示预测值, n n n 则表示值的个数。MAE 的值越小,说明预测模型拥有更好的精确度。
均方误差(MSE) 它表示误差的平方的期望值:
(13) MSE ( y , y ^ ) = 1 n ∑ i = 1 n ( y i − y ^ ) 2 \textrm{MSE}(y, \hat{y} ) = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y})^{2} \tag{13} MSE(y,y^)=n1i=1∑n(yi−y^)2(13)
其中, y i y_{i} yi 表示真实值, y ^ i \hat y_{i} y^i 表示预测值, n n n 则表示值的个数。MSE 的值越小,说明预测模型拥有更好的精确度。
2 sklearn 中使用
from sklearn.linear_model import LinearRegression
model = LinearRegression() # 建立模型
model.fit(train_x, train_y) # 训练模型
model.coef_, model.intercept_ # 输出训练后的模型参数和截距项
# 线性回归误差计算
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score#R square
# results 模型预测后的结果,即 model.fit(train_x, train_y)
print("线性回归平均绝对误差: ", mean_absolute_error(test_y, results.flatten()))
print("线性回归均方误差: ", mean_squared_error(test_y, results.flatten()))
print("线性回归 R square: ", r2_score(test_y, results.flatten()))
3 优缺点
优点: 实现简单,计算简单
缺点: 不能拟合非线性数据
4 疑问
4.1 线性回归用于特征的筛选
LinearRegression训练后,使用 model.coef_得到模型的参数,参数越大表示权重越大
4.2 线性回归,Ridge回归(L2范式),Lasso回归(L1范式)之间的联系
前面矩阵求解的时候,最小二乘法的矩阵解法是有局限性的,就是 公式 ( 11 ) (11) (11) 成立的条件就是 ∣ X T X ∣ \left | X^{T}X \right | ∣∣XTX∣∣ 不能为 0。而当变量之间的相关性较强(多重共线性),或者 m m m 大于 n n n 时, ( 11 ) (11) (11) 式中的 X X X 不是满秩( r a n k ( A ) ≠ d i m ( x ) rank(A)\neq dim(x) rank(A)̸=dim(x))矩阵。从而使得 ∣ X T X ∣ \left | X^{T}X \right | ∣∣XTX∣∣ 的结果趋近于 0,造成拟合参数的数值不稳定性增加。
所以以下两种场景建议使用 L1 或者 L2 范式
- 数据集的列(特征)数量 > 数据量(行数量),即 XX 不是列满秩。
- 数据集列(特征)数据之间存在较强的线性相关性,即模型容易出现过拟合。
4.3 最小二乘法算法复杂度怎么分析?
4.4 由2引出的疑问 sklearn 中 Ridge / Lasso 和 LinearRegression 结果是一样的吗? 有待验证
from sklearn.linear_model import Ridge
from sklearn.linear_model import Lasso
4.5 最大似然估计,梯度下降,最小二乘法之间有什么联系
- 为什么会出现这些求解过程?SVM支持向量机
- 在 sklearn 的 LinearRegression 有使用到么?LinearRegression 使用的是最小二乘法,sklearn 里面也有梯度下降的算法
批量梯度下降(BGD)
优点:得到全局最优解;易于并行实现
缺点:当样本数目很多时,训练过程会很慢
随机梯度下降(SGD)
优点:训练速度快
缺点:准确度下降,并不是全局最优;不易于并行实现
小批量梯度下降(MBGD)