线性回归
线性回归标准模型:
{
y
=
w
∗
x
T
min
f
=
∑
i
=
1
m
(
y
i
−
x
i
T
w
)
2
\left\{ \begin{aligned} y & = & w*x^T \\ \min f & = & \sum_{i=1}^{m}(y_i - x_i^Tw)^2 \end{aligned} \right.
⎩⎪⎪⎨⎪⎪⎧yminf==w∗xTi=1∑m(yi−xiTw)2
对于这个模型,直接对损失函数求导即可,
w
^
=
(
X
T
X
)
−
1
X
T
y
\hat w = (X^TX)^{-1}X^Ty
w^=(XTX)−1XTy
被称作OLS,意思是普通最小二乘法。对于任何数据集,我们都可以使用此模型,但是我们需要评价模型的效果。那就是计算预测和真实的相关系数。
corrcoef()
但最大的问题是线性模型把很多潜在的模式给隐藏了,需要通过一些手段来解决。
局部加权线性回归
局部加权线性回归这个名词,我看到之后是不能理解的,但是看到算法的应用结果时才明白局部加权线性回归其实可以看作一种分段线性回归的组合吧。线性回归的问题是欠拟合,所以可以通过引入一些bias,降低预测的均方误差。LWLR–局部加权线性回归就是其中一种方法。我们给待测点附近的每个点赋予一定权重,再仿照线性回归进行普通的计算。
w
^
=
(
X
T
W
X
)
−
1
X
T
W
y
\hat w = (X^TWX)^{-1}X^TWy
w^=(XTWX)−1XTWy
这个权重类似于kernel method中的kernel,我们可以选择高斯核来作为权重:
w
(
i
,
i
)
=
e
x
p
(
∣
x
(
i
)
−
x
∣
−
2
k
2
)
w(i,i) = exp(\frac{|x^{(i)}-x|}{-2k^2})
w(i,i)=exp(−2k2∣x(i)−x∣)
这里的k表明附近的点对预测点有多大影响,控制高斯核的衰减速度。
所以对于每一个点它的
w
^
\hat w
w^都不一样,对于每个预测点,先算出预测值,再画在图中,而不是算出
w
^
\hat w
w^统一画。这也是为什么叫LWLR。如果k太小可能出现过拟合。LWLR最大的问题是计算复杂度很高,因为每个点都通过所有的数据度量,这是一个需要解决的问题。
岭回归
当数据的特征比样本点还多时,
X
T
X
X^TX
XTX并不是一个满秩矩阵,其逆不一定存在。因此需要通过缩减系数来理解数据。岭回归是在矩阵上加入一个
λ
I
\lambda I
λI使得矩阵非奇异。
β
^
(
λ
)
=
(
X
′
X
+
λ
I
)
−
1
X
′
y
(
1
)
\hat \beta(\lambda) = (X'X+\lambda I)^{-1}X'y \space (1)
β^(λ)=(X′X+λI)−1X′y (1)
相应的损失函数变为:
β
^
r
i
d
g
e
=
a
r
g
m
i
n
β
{
∑
i
=
1
N
(
y
i
−
β
0
−
∑
j
=
1
p
x
i
j
β
j
)
2
+
λ
∑
j
=
1
p
β
j
2
}
\hat \beta^{ridge} = argmin_{\beta}\{\sum_{i=1}^{N}(y_i-\beta_0-\sum_{j=1}^{p}x_{ij}\beta_j)^2+\lambda\sum_{j=1}^{p}\beta^2_j\}
β^ridge=argminβ{i=1∑N(yi−β0−j=1∑pxijβj)2+λj=1∑pβj2}
可以对损失函数求导得
β
^
\hat \beta
β^表达式
此损失函数可以等价成另一个优化问题:
因此可以用图直观描述岭回归的解:(图摘自此网站)
这是一个有偏估计,虽然会使loss function变大,但是会使检验效果变好。对应岭回归,一个很重要的东西叫:岭迹图
一般选择
λ
\lambda
λ都是根据岭迹图选的,但是问题时只能目测,准确度并不高。只能说明存在多重非线性,但是要选择删去什么变量还得看具体测试效果。
Lasso算法
The Least Absolute Shrinkage and Selection operator,和岭回归不同之处在于约束条件
β
^
r
i
d
g
e
=
a
r
g
m
i
n
β
{
∑
i
=
1
N
(
y
i
−
β
0
−
∑
j
=
1
p
x
i
j
β
j
)
2
+
λ
∑
j
=
1
p
∣
β
j
∣
}
\hat \beta^{ridge} = argmin_{\beta}\{\sum_{i=1}^{N}(y_i-\beta_0-\sum_{j=1}^{p}x_{ij}\beta_j)^2+\lambda\sum_{j=1}^{p}|\beta_j|\}
β^ridge=argminβ{i=1∑N(yi−β0−j=1∑pxijβj)2+λj=1∑p∣βj∣}
正方形的顶点都在坐标轴上,所以很容易找到哪些特征可以置为0,而岭回归就不一定了,但是我觉得这也导致了误差更大,因为约束条件太强了。
Forward Stepwise regression
最后一点讲一下前向逐步回归,它这个算法思想比较简单,充分利用贪心算法的思想,循环多次,每次循环中遍历每个特征并不断调整系数,每次计算误差,如果更小就用新的系数替换原来的,循环多次找到最优系数,这时候会发现某些系数为0,也就达到了缩减的效果。
回归系数随迭代次数的曲线
总结
这几种回归算法都比较常见,但是光看那本机器学习实战还是一知半解,还是要多找找数学原理方面的文章看看,不然只懂一些皮毛而已。
最后一张图解释一下偏差和方差的区别:
参考:Understanding the Bias-Variance Tradeoff