线性回归算法
线性回归算法的优缺点:
优点:
思想简单,容易实现
是许多强大的非线性模型的基础
结果具有很好的可解释性,相应的系数可以理解为权重
蕴含机器学习中的很多重要思想
公式推导
预测
y
^
(
i
)
=
X
(
i
)
w
+
b
\hat y^{(i)} = X^{(i)}w+b
y^(i)=X(i)w+b
目标是使
y
y
y与
y
^
\hat y
y^尽量接近,即使
∑
i
=
1
m
(
y
(
i
)
−
y
^
(
i
)
)
\sum\limits_{i=1}^m(y^{(i)}-\hat y^{(i)})
i=1∑m(y(i)−y^(i))尽可能小。
但是使用该误差的简单累加,使得正差值和负差值相互抵消,所以要采用平方误差。
故,目标为平方误差:
∑
i
=
1
m
(
y
(
i
)
−
y
^
(
i
)
)
2
\sum\limits_{i=1}^m(y^{(i)}-\hat y^{(i)})^2
i=1∑m(y(i)−y^(i))2尽可能小
确定了线性回归的损失函数或者称之为效用函数,通过最优化损失函数或者效用函数,得到机器学习模型。
min
∑
i
=
1
m
(
y
(
i
)
−
y
^
(
i
)
)
2
=
min
w
,
b
∑
i
=
1
m
(
y
(
i
)
−
X
(
i
)
w
−
b
)
2
\min \sum\limits_{i=1}^m(y^{(i)}-\hat y^{(i)})^2\\ =\min\limits_{w,b} \sum\limits_{i=1}^m(y^{(i)}-X^{(i)}w-b)^2
mini=1∑m(y(i)−y^(i))2=w,bmini=1∑m(y(i)−X(i)w−b)2
求关于
w
,
b
w,b
w,b的偏导数
∂
l
o
s
s
f
u
n
c
t
i
o
n
∂
w
=
∑
i
=
1
m
2
(
y
(
i
)
−
w
X
(
i
)
−
b
)
X
(
i
)
\frac{\partial loss function}{\partial w}=\sum\limits_{i=1}^m2(y^{(i)}-wX^{(i)}-b)X^{(i)}
∂w∂lossfunction=i=1∑m2(y(i)−wX(i)−b)X(i)
∂
l
o
s
s
f
u
n
c
t
i
o
n
∂
b
=
∑
i
=
1
m
−
2
(
y
(
i
)
−
w
X
(
i
)
−
b
)
\frac{\partial loss function}{\partial b}=\sum\limits_{i=1}^m-2(y^{(i)}-wX^{(i)}-b)
∂b∂lossfunction=i=1∑m−2(y(i)−wX(i)−b)
令偏导数为0
求得关于w和b的表达式
b
=
∑
i
=
1
m
y
(
i
)
−
∑
i
=
1
m
w
X
(
i
)
m
=
y
ˉ
−
w
x
ˉ
b=\frac{\sum\limits_{i=1}^my^{(i)}-\sum\limits_{i=1}^mwX^{(i)}}{m}=\bar y - w\bar x
b=mi=1∑my(i)−i=1∑mwX(i)=yˉ−wxˉ
w
=
∑
i
=
1
m
y
(
i
)
X
(
i
)
−
y
ˉ
X
(
i
)
∑
i
=
1
m
X
(
i
)
X
(
i
)
−
X
ˉ
X
(
i
)
w=\frac{\sum\limits_{i=1}^m y^{(i)}X^{(i)}-\bar yX^{(i)}}{\sum\limits_{i=1}^mX^{(i)}X^{(i)}-\bar XX^{(i)}}
w=i=1∑mX(i)X(i)−XˉX(i)i=1∑my(i)X(i)−yˉX(i)
因为
∑
i
=
1
m
y
ˉ
X
(
i
)
=
y
ˉ
∑
i
=
1
m
X
(
i
)
=
m
y
ˉ
x
ˉ
=
x
ˉ
∑
i
=
1
m
y
(
i
)
=
∑
i
=
1
m
X
(
i
)
y
(
i
)
\sum\limits_{i=1}^m\bar yX^{(i)}=\bar y \sum\limits_{i=1}^mX^{(i)}=m\bar y\bar x = \bar x\sum\limits_{i=1}^my^{(i)}=\sum\limits_{i=1}^mX^{(i)}y^{(i)}
i=1∑myˉX(i)=yˉi=1∑mX(i)=myˉxˉ=xˉi=1∑my(i)=i=1∑mX(i)y(i)
所以上式可以化简为
w
=
∑
i
=
1
m
(
y
(
i
)
−
y
ˉ
)
(
X
(
i
)
−
X
ˉ
)
∑
i
=
1
m
(
X
(
i
)
−
X
ˉ
)
2
w=\frac{\sum\limits_{i=1}^m \big(y^{(i)}-\bar y\big) \big(X^{(i)} - \bar X\big)}{\sum\limits_{i=1}^m (X^{(i)}-\bar X)^2}
w=i=1∑m(X(i)−Xˉ)2i=1∑m(y(i)−yˉ)(X(i)−Xˉ)
采用向量化的方式进行推导
此时不再单独设置b这个变量了,而是在X数据集的基础上,添加一列全是1的向量,此时与X做点乘的w中,w[0]即为截距
y
^
=
X
w
\hat y=Xw
y^=Xw
min
w
(
y
−
y
^
)
2
=
min
w
(
y
−
X
w
)
T
(
y
−
X
w
)
=
min
w
y
T
y
−
y
T
X
w
−
w
T
X
T
y
−
w
T
X
T
X
w
\min\limits_{w}(y-\hat y)^2\\ =\min\limits_{w}(y-Xw)^T(y-Xw)\\ =\min\limits_{w}y^Ty-y^TXw-w^TX^Ty-w^TX^TXw
wmin(y−y^)2=wmin(y−Xw)T(y−Xw)=wminyTy−yTXw−wTXTy−wTXTXw
求解w,即对其求导,并令其为0
其中求导时,用到两个非常重要的公式
1.对于向量x求导
∇
x
w
T
x
=
w
\nabla_x w^Tx=w
∇xwTx=w
证明:
w
T
x
=
(
w
1
w
2
.
.
.
w
n
)
⋅
(
x
1
x
2
.
.
.
x
n
)
=
∑
i
=
1
n
w
i
x
i
w^Tx=\begin{pmatrix}w_1&w_2&...&w_n\end{pmatrix}\cdot\begin{pmatrix}x_1\\x_2\\...\\x_n\end{pmatrix}\\ =\sum\limits_{i=1}^nw_ix_i
wTx=(w1w2...wn)⋅⎝⎜⎜⎛x1x2...xn⎠⎟⎟⎞=i=1∑nwixi
所以对
x
i
x_i
xi求导,对应的导数为
w
i
w_i
wi
故
∇
x
w
T
x
=
w
\nabla_x w^Tx=w
∇xwTx=w
2.对向量x求导
∇
x
x
T
A
x
=
(
A
+
A
T
)
x
\nabla_x x^TAx=(A+A^T)x
∇xxTAx=(A+AT)x
其中x为向量,A为矩阵
证明:
对于二次型
x
T
A
x
x^TAx
xTAx
x
T
A
x
=
(
x
1
x
2
.
.
.
x
n
)
(
a
11
a
12
.
.
.
a
1
n
a
21
a
22
.
.
.
a
2
n
.
.
a
n
1
a
n
2
.
.
.
a
n
n
)
(
x
1
x
2
.
.
.
x
n
)
=
(
x
1
x
2
.
.
.
x
n
)
(
a
11
x
1
+
a
12
x
2
+
.
.
.
+
a
1
n
x
n
a
21
x
1
+
a
22
x
2
+
.
.
.
+
a
2
n
x
n
.
.
.
a
n
1
x
1
+
a
n
2
x
2
+
.
.
.
+
a
n
n
x
n
)
=
a
11
x
1
x
1
+
a
12
x
1
x
2
+
.
.
.
+
a
1
n
x
1
x
n
+
a
21
x
2
x
1
+
a
22
x
2
x
2
+
.
.
.
+
a
2
n
x
2
x
n
+
.
.
.
+
a
n
1
x
n
x
1
+
a
n
2
x
n
x
2
+
.
.
.
+
a
n
n
x
n
x
n
=
∑
i
=
1
n
∑
j
=
1
n
a
i
j
x
i
x
j
x^TAx=\begin{pmatrix}x_1&x_2&...&x_n\end{pmatrix}\begin{pmatrix} a_{11}&a_{12}&...&a_{1n}\\a_{21}&a_{22}&...&a_{2n}\\.\\.\\a_{n1}&a_{n2}&...&a_{nn}\end{pmatrix}\begin{pmatrix}x_1\\x_2\\...\\\\x_n\end{pmatrix}\\ =\begin{pmatrix}x_1&x_2&...&x_n\end{pmatrix}\begin{pmatrix}a_{11}x_1+a_{12}x_2+...+a_{1n}x_{n}\\a_{21}x_1+a_{22}x_2+...+a_{2n}x_n\\...\\a_{n1}x_1+a_{n2}x_2+...+a_{nn}x_n\end{pmatrix}\\ =a_{11}x_1x_1+a_{12}x_1x_2+...+a_{1n}x_1x_n+a_{21}x_2x_1+a_{22}x_2x_2+...+a_{2n}x_2x_n +...+a_{n1}x_nx_1+a_{n2}x_nx_2+...+a_{nn}x_nx_n \\ =\sum\limits_{i=1}^n\sum\limits_{j=1}^na_{ij}x_ix_j
xTAx=(x1x2...xn)⎝⎜⎜⎜⎜⎛a11a21..an1a12a22an2.........a1na2nann⎠⎟⎟⎟⎟⎞⎝⎜⎜⎜⎜⎛x1x2...xn⎠⎟⎟⎟⎟⎞=(x1x2...xn)⎝⎜⎜⎛a11x1+a12x2+...+a1nxna21x1+a22x2+...+a2nxn...an1x1+an2x2+...+annxn⎠⎟⎟⎞=a11x1x1+a12x1x2+...+a1nx1xn+a21x2x1+a22x2x2+...+a2nx2xn+...+an1xnx1+an2xnx2+...+annxnxn=i=1∑nj=1∑naijxixj
其中,若只对
x
1
x_1
x1求导则整理上式
x
T
A
x
=
a
11
x
1
x
1
+
∑
i
=
2
n
a
i
1
x
i
x
1
+
∑
j
=
2
n
a
1
j
x
j
x
1
+
c
x^TAx=a_{11}x_1x_1+\sum\limits_{i=2}^na_{i1}x_ix_1+\sum\limits_{j=2}^na_{1j}x_{j}x_1+c
xTAx=a11x1x1+i=2∑nai1xix1+j=2∑na1jxjx1+c
对
x
1
x_1
x1求导,则上式为
2
a
11
x
1
+
∑
i
=
2
n
a
i
1
x
i
+
∑
j
=
2
n
a
1
j
x
j
=
∑
j
=
1
n
a
1
j
x
j
+
∑
j
=
1
n
a
1
j
x
j
=
A
[
1
,
:
]
⋅
x
+
A
T
[
1
,
:
]
⋅
x
2a_{11}x_1+\sum\limits_{i=2}^na_{i1}x_i+\sum\limits_{j=2}^na_{1j}x_{j}\\ =\sum\limits_{j=1}^na_{1j}x_{j}+\sum\limits_{j=1}^na_{1j}x_{j}\\ =A[1,:]\cdot x +A^T[1,:]\cdot x
2a11x1+i=2∑nai1xi+j=2∑na1jxj=j=1∑na1jxj+j=1∑na1jxj=A[1,:]⋅x+AT[1,:]⋅x
由此可知,对x求导后,导数为
(
A
+
A
T
)
⋅
x
(A+A^T)\cdot x
(A+AT)⋅x
故线性回归中
w
=
(
X
T
X
)
−
1
X
T
y
w = (X^TX)^{-1}X^Ty
w=(XTX)−1XTy
局部加权线性回归
看一些博文上的讲解,首先这种算法是一种非参数学习算法,也就是类似KNN算法,需要保留训练集。
对于一个新的待预测点,对其进行预测时,使用的训练集是 基于这个待预测点加过权重的训练集,这个权重计算函数起到的作用就是使得靠近待测样本的点的权重大。
常用的权重的计算函数为高斯核
w
(
i
)
=
e
x
p
(
(
x
i
−
x
p
r
e
d
i
c
t
)
2
−
2
γ
2
)
w(i) = exp\Big(\frac{(x^{i}-x_{predict})^2}{-2\gamma^2}\Big)
w(i)=exp(−2γ2(xi−xpredict)2)
这个函数非常类似高斯分布,
越靠近X_predict,则权值越大
同时k决定了权值的变化速率,k越小,变化速率越大
由此就定义了只含对角元素的权重矩阵W
所以我们的损失函数从原本的
∑
i
=
1
m
(
y
(
i
)
−
w
X
(
i
)
)
2
\sum\limits_{i=1}^m(y^{(i)}-wX^{(i)})^2
i=1∑m(y(i)−wX(i))2
转化为
∑
i
=
1
m
w
(
i
)
(
y
(
i
)
−
w
X
(
i
)
)
2
\sum\limits_{i=1}^mw^{(i)}(y^{(i)}-wX^{(i)})^2
i=1∑mw(i)(y(i)−wX(i))2前面的w为权重函数
转化为向量形式
(
y
−
X
θ
)
T
W
(
y
−
X
θ
)
(y-X\theta )^TW(y-X\theta )
(y−Xθ)TW(y−Xθ)其中W为权重矩阵
同样的求解方法
求出
θ
=
(
X
T
W
X
)
−
1
X
T
W
y
\theta=(X^TWX)^{-1}X^TWy
θ=(XTWX)−1XTWy
对应的输出为 X θ X\theta Xθ
算法的流程为:
1.给出待预测的x
2.计算权重矩阵
3.求解theta
4.给出预测值