这篇博客将补充解释在一元线性回归问题中如何向量化的问题。
为何要向量化
在上篇博客中,我们求解了 w w w和 b b b的表达式,我们会发现, b b b的表达式尚属于简单的形式,但是 w w w的表达式却含有太多的求和符号了,当我们用Python代码去实现算法的时候就需要使用多个 f o r for for循环去遍历,这将大大提高算法的复杂度,降低算法的性能。但是Python有个numpy的库可以用来做矩阵运算,库里的算法也进行了调优,所以我们就尽可能使用向量的形式去表示 w w w,两个向量相乘就是一个求和。
向量化的准备步骤
w
=
∑
i
=
1
m
y
i
(
x
i
−
x
~
)
∑
i
=
1
m
x
i
2
−
1
m
(
∑
i
=
1
m
x
i
)
2
w=\frac{\sum_{i=1}^{m}y_i(x_i-\widetilde{x})}{\sum_{i=1}^{m}x_i^2- \frac{1}{m}(\sum_{i=1}^{m}x_i)^2}
w=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myi(xi−x
)
恒等变形,
w
=
∑
i
=
1
m
y
i
(
x
i
−
x
~
)
∑
i
=
1
m
x
i
2
−
∑
i
=
1
m
x
~
x
i
w=\frac{\sum_{i=1}^{m}y_i(x_i-\widetilde{x})}{\sum_{i=1}^{m}x_i^2- \sum_{i=1}^{m} \widetilde{x}x_i}
w=∑i=1mxi2−∑i=1mx
xi∑i=1myi(xi−x
)
w
=
∑
i
=
1
m
y
i
(
x
i
−
x
~
)
∑
i
=
1
m
(
x
i
2
−
x
~
x
i
)
w=\frac{\sum_{i=1}^{m}y_i(x_i-\widetilde{x})}{\sum_{i=1}^{m}(x_i^2- \widetilde{x}x_i)}
w=∑i=1m(xi2−x
xi)∑i=1myi(xi−x
)
w
=
∑
i
=
1
m
(
y
i
x
i
−
x
~
y
i
)
∑
i
=
1
m
(
x
i
2
−
x
~
x
i
)
w=\frac{\sum_{i=1}^{m}(y_ix_i-\widetilde{x}y_i)}{\sum_{i=1}^{m}(x_i^2- \widetilde{x}x_i)}
w=∑i=1m(xi2−x
xi)∑i=1m(yixi−x
yi)
此时
w
w
w的分子分母都只有一个求和符号了,也就是说,分子分母都可以变成两个向量相乘的形式了,但是用哪两个向量来表示呢?
向量化
通过观察分子分母,我们可以对里面的一些项做出恒等变形。
∑
i
=
1
m
x
~
y
i
=
1
m
∑
i
=
1
m
x
i
∑
i
=
1
m
y
i
=
∑
i
=
1
m
x
i
y
~
\sum_{i=1}^{m} \widetilde{x}y_i=\frac{1}{m}\sum_{i=1}^{m}x_i\sum_{i=1}^{m}y_i=\sum_{i=1}^{m}x_i \widetilde{y}
i=1∑mx
yi=m1i=1∑mxii=1∑myi=i=1∑mxiy
∑
i
=
1
m
x
~
y
i
=
x
~
⋅
1
m
⋅
m
∑
i
=
1
m
y
i
=
m
⋅
x
~
⋅
y
~
=
∑
i
=
1
m
x
~
⋅
y
~
\sum_{i=1}^{m} \widetilde{x}y_i=\widetilde{x} \cdot\frac{1}{m} \cdot m\sum_{i=1}^{m}y_i=m \cdot \widetilde{x}\cdot \widetilde{y}=\sum_{i=1}^{m} \widetilde{x}\cdot \widetilde{y}
i=1∑mx
yi=x
⋅m1⋅mi=1∑myi=m⋅x
⋅y
=i=1∑mx
⋅y
∑
i
=
1
m
x
~
⋅
x
i
=
x
~
⋅
1
m
⋅
m
∑
i
=
1
m
x
i
=
∑
i
=
1
m
x
~
2
\sum_{i=1}^{m}\widetilde{x} \cdot x_i=\widetilde{x} \cdot\frac{1}{m} \cdot m\sum_{i=1}^{m}x_i = \sum_{i=1}^{m}\widetilde{x} ^2
i=1∑mx
⋅xi=x
⋅m1⋅mi=1∑mxi=i=1∑mx
2
再将
w
w
w进行“加一项减一项”,
w
=
∑
i
=
1
m
(
y
i
x
i
−
x
~
y
i
−
x
~
y
i
+
x
~
y
i
)
∑
i
=
1
m
(
x
i
2
−
x
~
x
i
−
x
~
x
i
+
x
~
x
i
)
w=\frac{\sum_{i=1}^{m}(y_ix_i-\widetilde{x}y_i-\widetilde{x}y_i+\widetilde{x}y_i)} {\sum_{i=1}^{m}(x_i^2- \widetilde{x}x_i-\widetilde{x}x_i+\widetilde{x}x_i)}
w=∑i=1m(xi2−x
xi−x
xi+x
xi)∑i=1m(yixi−x
yi−x
yi+x
yi)
再将上面已变型的项代入
w
w
w中进行恒等变形,
w
=
∑
i
=
1
m
(
y
i
x
i
−
x
~
y
i
−
x
~
y
i
+
x
~
y
i
)
∑
i
=
1
m
(
x
i
−
x
~
)
2
w=\frac{\sum_{i=1}^{m}(y_ix_i-\widetilde{x}y_i-\widetilde{x}y_i+\widetilde{x}y_i)} {\sum_{i=1}^{m}(x_i-\widetilde{x})^2}
w=∑i=1m(xi−x
)2∑i=1m(yixi−x
yi−x
yi+x
yi)
w
=
∑
i
=
1
m
(
x
i
−
x
~
)
(
y
i
−
y
~
)
∑
i
=
1
m
(
x
i
−
x
~
)
2
w=\frac{\sum_{i=1}^{m}(x_i-\widetilde{x})(y_i-\widetilde{y})} {\sum_{i=1}^{m}(x_i-\widetilde{x})^2}
w=∑i=1m(xi−x
)2∑i=1m(xi−x
)(yi−y
)
令向量
X
=
(
x
1
−
x
~
,
x
2
−
x
~
,
.
.
.
,
x
i
−
x
~
)
T
X=(x_1-\widetilde{x},x_2-\widetilde{x},...,x_i-\widetilde{x})^T
X=(x1−x
,x2−x
,...,xi−x
)T
Y
=
(
y
1
−
y
~
,
y
2
−
y
~
,
.
.
.
,
y
i
−
y
~
)
T
Y=(y_1-\widetilde{y}, y_2-\widetilde{y},...,y_i-\widetilde{y})^T
Y=(y1−y
,y2−y
,...,yi−y
)T
所以
w
=
X
T
Y
X
T
X
w=\frac{X^TY}{X^TX}
w=XTXXTY
向量化结束!