最小二乘法: 基于均方误差最小化来进行模型求解的方法称为 “最小二乘法(least square method)”。
线性模型(linear model)试图学得一个通过属性的线性组合来进行预测的函数,即
f
(
x
)
=
w
1
x
1
+
w
2
x
2
+
.
.
.
+
w
d
x
d
+
b
(1.1)
f(\mathbb{x}) = w_1x_1 + w_2x_2+...+w_dx_d+b \tag{1.1}
f(x)=w1x1+w2x2+...+wdxd+b(1.1)
一般用向量形式写成
f
(
x
)
=
w
T
x
+
b
(1.2)
f(\mathbb{x})=\mathbf{w}^\text{T}\mathbf{x}+{b} \tag{1.2}
f(x)=wTx+b(1.2)
其中
w
=
(
w
1
;
w
2
;
.
.
.
;
w
d
)
\mathbf{w}=(w_1;w_2;...;w_d)
w=(w1;w2;...;wd)。
w
\mathbf{w}
w 和
b
b
b 学得之后,模型就得以确定。
摘录自《机器学习》周志华 著 清华大学出版社
假设第 i i i 个数据 x i x_i xi 对应的真实值为 y i y_i yi,模型的输出值为 f ( x i ) f(x_i) f(xi),所以我们的目标是使得 f ( x i ) f(x_i) f(xi) 尽可能等于真实值 y i y_i yi,假设训练后 f ( x i ) ≈ y i f(x_i) \approx y_i f(xi)≈yi 时,对应的参数为 w ∗ w^* w∗、 b ∗ b^* b∗,其中 w ∗ w^* w∗ 代表一组参数( w 1 , w 2 , . . . , w m w_1,w_2,...,w_m w1,w2,...,wm,其中 m m m 是特征的数目)。
此时 求解目标 可以表示为:
(
w
∗
,
b
∗
)
=
arg min
(
w
,
b
)
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
=
arg min
(
w
,
b
)
∑
i
=
1
m
(
y
i
−
(
w
x
i
+
b
)
)
2
(1.3)
(w^*,b^*)=\argmin_{(w,b)} \sum_{i=1}^m(f(x_i)-y_i)^2 \\ = \argmin_{(w,b)} \sum_{i=1}^m(y_i - (wx_i+b))^2 \tag{1.3}
(w∗,b∗)=(w,b)argmini=1∑m(f(xi)−yi)2=(w,b)argmini=1∑m(yi−(wxi+b))2(1.3)
即求解当 E ( w , b ) = ∑ i = 1 m ( f ( x i ) − y i ) 2 E_{(w, b)} = \sum_{i=1}^m(f(x_i)-y_i)^2 E(w,b)=∑i=1m(f(xi)−yi)2 取得最小值时参数 w ∗ w^* w∗ 与 b ∗ b^* b∗ 的值。
现在分别对这两参数求偏导,可得
∂
E
(
w
,
b
)
∂
w
=
2
(
w
∑
i
=
1
m
x
i
2
−
∑
i
=
1
m
(
y
i
−
b
)
x
i
)
(1.4)
\frac{\partial_{E_{(w,b)}}}{\partial_w}=2 \Bigl( w\sum_{i=1}^mx_i^2 - \sum_{i=1}^m(y_i-b)x_i \Bigr) \tag{1.4}
∂w∂E(w,b)=2(wi=1∑mxi2−i=1∑m(yi−b)xi)(1.4)
∂ E ( w , b ) ∂ b = 2 ( m b − ∑ i = 1 m ( y i − w x i ) ) (1.5) \frac{\partial_{E_{(w,b)}}}{\partial_b}=2 \Bigl( mb - \sum_{i=1}^m(y_i-wx_i)\Bigr) \tag{1.5} ∂b∂E(w,b)=2(mb−i=1∑m(yi−wxi))(1.5)
当 公式 (1.4) 与 公式 (1.5) 等于 0,可得到 w w w 和 b b b 的最优解的闭式解(closed-form)。
先求解公式 (1.5) ,如下:
2 ( m b − ∑ i = 1 m ( y i − w x i ) ) = 0 ⟹ m b = ∑ i = 1 m ( y i − w x i ) ⟹ b = 1 m ∑ i = 1 m ( y i − w x i ) ⟹ b = y ‾ − w x ‾ (1.6) 2 \Bigl( mb - \sum_{i=1}^m(y_i-wx_i)\Bigr) = 0 \\ \Longrightarrow mb = \sum_{i=1}^m(y_i-wx_i) \\ \Longrightarrow b = \frac{1}{m} \sum_{i=1}^m(y_i-wx_i) \ \Longrightarrow b = \overline{y} -w\overline{x} \tag{1.6} 2(mb−i=1∑m(yi−wxi))=0⟹mb=i=1∑m(yi−wxi)⟹b=m1i=1∑m(yi−wxi) ⟹b=y−wx(1.6)
再来求解公式 (1.4),需要代入刚刚求解得到的公式 (1.6),
2 ( w ∑ i = 1 m x i 2 − ∑ i = 1 m ( y i − b ) x i ) = 0 ⟹ w ∑ i = 1 m x i 2 = ∑ i = 1 m ( y i − b ) x i ⟹ w ∑ i = 1 m x i 2 = ∑ i = 1 m ( y i − ( y ‾ − w x ‾ ) ) x i ⟹ w ∑ i = 1 m x i 2 = ∑ i = 1 m ( y i − y ‾ ) x i + w x ‾ ∑ i = 1 m x i ⟹ w ( ∑ i = 1 m x i 2 − x ‾ ∑ i = 1 m x i ) = ∑ i = 1 m ( y i − y ‾ ) x i ⟹ w = ∑ i = 1 m ( y i − y ‾ ) x i ∑ i = 1 m x i 2 − x ‾ ∑ i = 1 m x i (1.7) 2 \Bigl( w\sum_{i=1}^m x_i^2 - \sum_{i=1}^m(y_i-b)x_i \Bigr) = 0 \\ \Longrightarrow w\sum_{i=1}^m x_i^2 = \sum_{i=1}^m(y_i-b)x_i \\ \Longrightarrow w\sum_{i=1}^m x_i^2 = \sum_{i=1}^m(y_i- (\overline{y}-w\overline{x}))x_i \\ \Longrightarrow w\sum_{i=1}^m x_i^2 = \sum_{i=1}^m (y_i - \overline{y})x_i + w\overline{x}\sum_{i=1}^m x_i \\ \Longrightarrow w\Bigl(\sum_{i=1}^mx_i^2 - \overline{x}\sum_{i=1}^mx_i\Bigr) = \sum_{i=1}^m(y_i-\overline y)x_i \\ \Longrightarrow w=\frac{\sum_{i=1}^m(y_i-\overline y)x_i}{\sum_{i=1}^mx_i^2 - \overline{x}\sum_{i=1}^mx_i} \tag{1.7} 2(wi=1∑mxi2−i=1∑m(yi−b)xi)=0⟹wi=1∑mxi2=i=1∑m(yi−b)xi⟹wi=1∑mxi2=i=1∑m(yi−(y−wx))xi⟹wi=1∑mxi2=i=1∑m(yi−y)xi+wxi=1∑mxi⟹w(i=1∑mxi2−xi=1∑mxi)=i=1∑m(yi−y)xi⟹w=∑i=1mxi2−x∑i=1mxi∑i=1m(yi−y)xi(1.7)
为了方便也可以变形为:
w
=
∑
i
=
1
m
x
i
y
i
−
m
x
‾
y
‾
∑
i
=
1
m
x
i
2
−
m
x
‾
2
(1.8)
w = \frac{\sum_{i=1}^m x_iy_i - m\overline{x} \ \overline{y}}{\sum_{i=1}^mx_i^2 - m\overline{x}^2} \tag{1.8}
w=∑i=1mxi2−mx2∑i=1mxiyi−mx y(1.8)
也可以变形为:
w
=
∑
i
=
1
m
(
y
i
−
y
‾
)
x
i
∑
i
=
1
m
x
i
2
−
x
‾
∑
i
=
1
m
x
i
=
∑
i
=
1
m
(
y
i
−
1
m
∑
i
=
1
m
y
i
)
x
i
∑
i
=
1
m
x
i
2
−
1
m
∑
i
=
1
m
x
i
∑
i
=
1
m
x
i
=
∑
i
=
1
m
y
i
(
x
i
−
1
m
∑
i
=
1
n
x
i
)
∑
i
=
1
m
x
i
2
−
1
m
(
∑
i
=
1
m
x
i
)
2
=
∑
i
=
1
m
y
i
(
x
i
−
x
‾
)
∑
i
=
1
m
x
i
2
−
1
m
(
∑
i
=
1
m
x
i
)
2
(1.9)
w=\frac{\sum_{i=1}^m(y_i-\overline y)x_i}{\sum_{i=1}^mx_i^2 - \overline{x}\sum_{i=1}^mx_i} \\ = \frac{\sum_{i=1}^m(y_i - \frac{1}{m}\sum_{i=1}^m y_i)x_i}{\sum_{i=1}^mx_i^2 - \frac{1}{m}\sum_{i=1}^mx_i \sum_{i=1}^mx_i} \\ = \frac{\sum_{i=1}^m y_i(x_i-\frac{1}{m}\sum_{i=1}^n x_i)}{\sum_{i=1}^mx_i^2 - \frac{1}{m}(\sum_{i=1}^mx_i )^2} \\ = \frac{\sum_{i=1}^m y_i(x_i - \overline{x})}{\sum_{i=1}^mx_i^2 - \frac{1}{m}(\sum_{i=1}^mx_i )^2} \tag{1.9}
w=∑i=1mxi2−x∑i=1mxi∑i=1m(yi−y)xi=∑i=1mxi2−m1∑i=1mxi∑i=1mxi∑i=1m(yi−m1∑i=1myi)xi=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myi(xi−m1∑i=1nxi)=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myi(xi−x)(1.9)
当样本的特征更多时,上面的推导公式也应做相应的调整,以适应更一般的情况。
假设数据样本集 D D D,每个样本由 d d d 个属性描述,此时学习目标转换为
f ( x i ) = w T x i + b (1.10) f(x_i) = w^\text{T}x_i + b \tag{1.10} f(xi)=wTxi+b(1.10)
使得 f ( x i ) ≈ y i f(x_i) \approx y_i f(xi)≈yi。
接下来会基于矩阵运算来推导参数的表达式,为了方便,让常量 b ∗ b^* b∗ 凑如到 w ∗ w^* w∗ 中,即,原表达式转换为
f
(
x
i
)
=
w
1
x
1
+
w
2
x
2
+
⋯
+
w
m
x
m
+
b
⋅
1
f(x_i ) = w_1x_1 + w_2x_2 + \cdots + w_mx_m + b \cdot 1
f(xi)=w1x1+w2x2+⋯+wmxm+b⋅1
也就是说,对于原数据集,补充一列全部为 1 的特征,方便乘以孤孤单单无人作伴的
b
∗
b^*
b∗,此时
X
\mathbf{X}
X 可表示为:
X = ( x 11 x 12 x 13 ⋯ x 1 d 1 x 21 x 22 x 23 ⋯ x 2 d 1 ⋮ ⋮ ⋮ ⋱ ⋮ 1 x m 1 x m 2 x m 3 ⋯ x m d 1 ) = ( x 1 T 1 x 2 T 1 ⋮ ⋮ x m T 1 ) \mathbf{X} = (x11x12x13⋯x1d1x21x22x23⋯x2d1⋮⋮⋮⋱⋮1xm1xm2xm3⋯xmd1) = (xT11xT21⋮⋮xTm1) X= x11x21⋮xm1x12x22⋮xm2x13x23⋮xm3⋯⋯⋱⋯x1dx2d⋮xmd1111 = x1Tx2T⋮xmT11⋮1
为了方便,记 y = ( y 1 ; y 2 ; ⋯ ; y m ) \mathbf{y} = (y_1; y_2; \cdots;y_m) y=(y1;y2;⋯;ym),接着同样引用最小二乘法,注意此时对矩阵运行不能单纯的平方了,而是转置后相乘。
w ^ ∗ = arg min w ^ ( y − X w ^ ) T ( y − X w ^ ) (1.11) \hat{\mathbf{w}}^* = \argmin_{\hat{\mathbf{w}}}(\mathbf{y}-\mathbf{X\hat{w}})^\text{T}(\mathbf{y}-\mathbf{X\hat{w}}) \tag{1.11} w^∗=w^argmin(y−Xw^)T(y−Xw^)(1.11)
令 E w ^ = ( y − X w ^ ) T ( y − X w ^ ) E_{\hat{\mathbf{w}}}=(\mathbf{y}-\mathbf{X\hat{w}})^\text{T}(\mathbf{y}-\mathbf{X\hat{w}}) Ew^=(y−Xw^)T(y−Xw^),对 w ^ \hat{\mathbf{w}} w^ 求导,得
∂ E w ^ ∂ w ^ = 2 X T ( X w ^ − y ) (1.12) \frac{\partial_{E_{\hat{\mathbf{w}}}}}{\partial_{\hat{\mathbf{w}}}} = 2 \mathbf{X}^{\text{T}}(\mathbf{X}\hat{\mathbf{w}} - \mathbf{y}) \tag{1.12} ∂w^∂Ew^=2XT(Xw^−y)(1.12)
类似地,这里不考虑数据不足、特征量不足、特征量过多的情况,只从数学角度推导,可以得知,当公式 1.12 等于 0 时,得到对应的 w ^ ∗ \hat w^* w^∗。
2 X T ( X w ^ − y ) = 0 ⟹ X T X w ^ = X T y ⟹ w ^ ∗ = ( X T X ) − 1 X T y (1.13) 2 \mathbf{X}^{\text{T}}(\mathbf{X}\hat{\mathbf{w}} - \mathbf{y}) = 0\\ \Longrightarrow \mathbf{X}^{\text{T}}\mathbf{X}\hat{\mathbf{w}} = \mathbf{X}^{\text{T}}\mathbf{y} \\ \Longrightarrow \hat w^* = (\mathbf{X}^{\text{T}}\mathbf{X})^{-1}\mathbf{X}^{\text{T}}\mathbf{y} \tag{1.13} 2XT(Xw^−y)=0⟹XTXw^=XTy⟹w^∗=(XTX)−1XTy(1.13)
从第二行到第三行的过程是在等式等号两边分别在左边乘以 ( X T X ) − 1 (\mathbf{X}^{\text{T}}\mathbf{X})^{-1} (XTX)−1 而得到的。
其中 ( X T X ) − 1 (\mathbf{X}^{\text{T}}\mathbf{X})^{-1} (XTX)−1 时矩阵 ( X T X ) (\mathbf{X}^{\text{T}}\mathbf{X}) (XTX) 的逆矩阵。
因为验证拟合效果是比较各个点的 预测值 与 真实值之间的差异,为了避免 差异抵消 情况的出现,也是为了求导的方便,对目标表达式平方以后再求最小值时的参数情况更加合理一些。这里的差异抵消是指,前一行预测值比真实值小,而后一行预测值比真实值大,如果简单把差异总和加起来的可能出现抵消的情况,不能反应整体的拟合结果。
此外,这个公式推导的过程应该是比较简单的,可以考虑自己多推导推导,就当做是打发时间好了。
Smileyan
2022.8.26 23:50
`