我是靠谱客的博主 鲤鱼仙人掌,最近开发中收集的这篇文章主要介绍《机器学习——数学公式推导合集》1. 线性模型之最小二乘法(least square method)求解线性模型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.1 什么是最小二乘法(least square method)

最小二乘法: 基于均方误差最小化来进行模型求解的方法称为 “最小二乘法(least square method)”。

1.2 线性模型(linear model)基本形式

线性模型(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 学得之后,模型就得以确定。

摘录自《机器学习》周志华 著 清华大学出版社

1.3 公式推导 1

假设第 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=1m(f(xi)yi)2=(w,b)argmini=1m(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( wsum_{i=1}^mx_i^2 - sum_{i=1}^m(y_i-b)x_i Bigr) tag{1.4} wE(w,b)=2(wi=1mxi2i=1m(yib)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} bE(w,b)=2(mbi=1m(yiwxi))(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} -woverline{x} tag{1.6} 2(mbi=1m(yiwxi))=0mb=i=1m(yiwxi)b=m1i=1m(yiwxi) b=ywx(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( wsum_{i=1}^m x_i^2 - sum_{i=1}^m(y_i-b)x_i Bigr) = 0 \ Longrightarrow wsum_{i=1}^m x_i^2 = sum_{i=1}^m(y_i-b)x_i \ Longrightarrow wsum_{i=1}^m x_i^2 = sum_{i=1}^m(y_i- (overline{y}-woverline{x}))x_i \ Longrightarrow wsum_{i=1}^m x_i^2 = sum_{i=1}^m (y_i - overline{y})x_i + woverline{x}sum_{i=1}^m x_i \ Longrightarrow wBigl(sum_{i=1}^mx_i^2 - overline{x}sum_{i=1}^mx_iBigr) = 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=1mxi2i=1m(yib)xi)=0wi=1mxi2=i=1m(yib)xiwi=1mxi2=i=1m(yi(ywx))xiwi=1mxi2=i=1m(yiy)xi+wxi=1mxiw(i=1mxi2xi=1mxi)=i=1m(yiy)xiw=i=1mxi2xi=1mxii=1m(yiy)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 - moverline{x} overline{y}}{sum_{i=1}^mx_i^2 - moverline{x}^2} tag{1.8} w=i=1mxi2mx2i=1mxiyimx 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=1mxi2xi=1mxii=1m(yiy)xi=i=1mxi2m1i=1mxii=1mxii=1m(yim1i=1myi)xi=i=1mxi2m1(i=1mxi)2i=1myi(xim1i=1nxi)=i=1mxi2m1(i=1mxi)2i=1myi(xix)(1.9)

1.4 公式推导 2

当样本的特征更多时,上面的推导公式也应做相应的调整,以适应更一般的情况。

假设数据样本集 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+b1
也就是说,对于原数据集,补充一列全部为 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} = begin{pmatrix} x_{11} & x_{12} & x_{13} & cdots & x_{1d} & 1 \ x_{21} & x_{22} & x_{23} & cdots & x_{2d} & 1 \ vdots & vdots & vdots & ddots & vdots & 1 \ x_{m1} & x_{m2} & x_{m3} & cdots & x_{md} & 1 \ end{pmatrix} = begin{pmatrix} mathbf{x}_1^textbf{T} & 1 \ mathbf{x}_2^textbf{T} & 1 \ vdots & vdots \ mathbf{x}_m^textbf{T} & 1 \ end{pmatrix} X= x11x21xm1x12x22xm2x13x23xm3x1dx2dxmd1111 = x1Tx2TxmT111

为了方便,记 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{Xhat{w}})^text{T}(mathbf{y}-mathbf{Xhat{w}}) tag{1.11} w^=w^argmin(yXw^)T(yXw^)(1.11)

E w ^ = ( y − X w ^ ) T ( y − X w ^ ) E_{hat{mathbf{w}}}=(mathbf{y}-mathbf{Xhat{w}})^text{T}(mathbf{y}-mathbf{Xhat{w}}) Ew^=(yXw^)T(yXw^),对 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)=0XTXw^=XTyw^=(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) 的逆矩阵。

1.5 本章总结

因为验证拟合效果是比较各个点的 预测值 与 真实值之间的差异,为了避免 差异抵消 情况的出现,也是为了求导的方便,对目标表达式平方以后再求最小值时的参数情况更加合理一些。这里的差异抵消是指,前一行预测值比真实值小,而后一行预测值比真实值大,如果简单把差异总和加起来的可能出现抵消的情况,不能反应整体的拟合结果。

此外,这个公式推导的过程应该是比较简单的,可以考虑自己多推导推导,就当做是打发时间好了。

Smileyan
2022.8.26 23:50

`

最后

以上就是鲤鱼仙人掌为你收集整理的《机器学习——数学公式推导合集》1. 线性模型之最小二乘法(least square method)求解线性模型的全部内容,希望文章能够帮你解决《机器学习——数学公式推导合集》1. 线性模型之最小二乘法(least square method)求解线性模型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部