一、普通线性回归
用最小二乘法求线性回归的系数估计已经是老生常谈了,这里直接看看怎么使用Numpy库中的矩阵方法来实现:
二、局部加权线性回归
使用普通最小二乘法可能会导致欠拟合,即模型过于照顾方差较大的点,而忽略了对方差较小点的拟合效果,这里可以使用局部加权线性回归:
w
^
=
(
X
′
W
X
)
−
1
X
′
W
y
\hat{w} = (X'WX)^{-1}X'Wy
w^=(X′WX)−1X′Wy其中
W
W
W是对角矩阵。局部加权线性回归使用核,使得在估计自变量某个取值对因变量影响时,该自变量取值附近的数据的权重更高。常用的核为高斯核:
w
(
i
,
i
)
=
e
x
p
⟮
∣
x
(
i
)
−
x
∣
−
2
k
2
⟯
w(i,i) = exp\lgroup \frac{|x^{(i)}- x|}{-2k^2} \rgroup
w(i,i)=exp⟮−2k2∣x(i)−x∣⟯
该函数可以对输入空间中的任一点,计算出对应的预测值,且在计算过程中实现了随样本点与待预测点距离的递增,权重以指数级递减。
再创建一个函数,为数据集中的每个点调用函数lwlr
,直观判断当k
不同时函数的拟合效果:
一般来说当
k
=
1.0
k = 1.0
k=1.0时,得到的结果与最小二乘结果比较接近,有可能造成欠拟合,
k
k
k越小,对样本集的拟合效果越好,当
k
k
k过小时,容易发生过拟合。
三、shrinkage方法
所谓shrinkage方法就是在最小二乘估计式中引入惩罚项,控制模型的复杂度,从而可以减少不必要的参数。
最常用的方法就是岭回归,相当于在残差平方和式中加入了
L
2
L2
L2范数,回归系数估计式为
w
^
=
(
X
′
X
+
λ
I
)
−
1
X
′
y
\hat{w} = (X'X +\lambda I)^{-1}X'y
w^=(X′X+λI)−1X′y
上式是默认在
l
a
m
d
a
=
0.2
lamda = 0.2
lamda=0.2时进行岭回归,接下来编写测试函数,在不同的
l
a
m
d
a
lamda
lamda下分别调用ridgeRegress
函数,选择最优的调和系数。
要定量确定岭回归系数,最好使用交叉验证法: