ESL 2.3:最小二乘法和最近邻法

2021-07-25  本文已影响0人  找不到工作

本节介绍了两个线性模型的拟合方法:

线性模型和最小二乘

线性模型指形如 y=ax+b 的模型,是超平面上的直线。

某个线性模型输入具有 p 个特征,输出是一个标量。预测模型可以表示为:

\hat y = \beta_0 + \sum_{i=1}^p x_i \beta_i

为了表示方便,我们常常把常数项加入 \beta,从而变成一个 p+1 维的向量:

\hat y = X^T \boldsymbol{\beta}

其中:
X^T = [1, x_1, x_2, ..., x_p]
\boldsymbol{\beta} = [\beta_0, \beta_1, \beta_2, ..., \beta_p]^T

最小二乘法是最流行的线性模型拟合方法。它的目的是找出系数 \boldsymbol{\beta} 使 ||Y-\hat Y||_2 (residual sum of squares, RSS)最小:

\text{RSS}(\boldsymbol{\beta} ) = \sum_{j=1}^N (y_j - X_j^T\boldsymbol{\beta} )^2

其中 j 代表训练数据的序号。一共有 N 组训练数据。

用矩阵形式表示为:

\text{RSS}(\boldsymbol{\beta}) = (\boldsymbol{y} - \boldsymbol{X}\boldsymbol{\beta} )^T(\boldsymbol{y} - \boldsymbol{X}\boldsymbol{\beta} )

其中 \boldsymbol{ X } 每一行都是一组训练数据输入:

\boldsymbol{ X } = \begin{bmatrix} 1 & x_{11} & x_{12} & \cdots & x_{1p} \\ 1 & x_{21} & x_{22} & \cdots & x_{2p} \\ \vdots & \vdots & \vdots & & \vdots \\ 1 & x_{N1} & x_{N2} & \cdots & x_{Np} \\ \end{bmatrix}_{ N \times ( p+1 ) }

\text{RSS}(\boldsymbol{\beta})\boldsymbol{\beta} 求导,并令导数为 0 :
\boldsymbol{X}^T(\boldsymbol{y} - \boldsymbol{X} \boldsymbol{\beta}) = 0
得出二次函数最值点:

\hat{\boldsymbol{\beta}} = (\boldsymbol{X}^T \boldsymbol{X})^{-1} \boldsymbol{X}^T \boldsymbol{y}

关于矩阵求导,可以看我另一篇文章:向量和矩阵求导

最近邻法

最近邻法挑选 k 个与给定输入最相似的训练数据输入,并将其结果取平均得到预测结果。

\hat y = \frac{1}{k} \sum_{x_i \in N_k(x)}y_i

其中 N_k(x) 指输入 xk 个最近的 Neighbor。

这里有一个可调节的参数 k,当选取的 k 越大时,误差越大。

方法对比

我们用两个不同的二元高斯分布各产生100个数据,并分别使用最小二乘法和最近邻法分类:

最小二乘法分类结果

由于最小二乘法假设了模型是线性的,因此在二维平面上,分界线就是一条直线(三维时,是一个平面)。对于我们的数据集,这样的分类存在一些误差。

最近邻法分类结果(k = 15) 最近邻法分类结果(k = 1)

最近邻法结果根据 k 的选择不同而不同。当 k 增大时,由于考虑的点越来越多,边界也会越来越“模糊”。

维度诅咒:高维中的局部方法

看起来最近邻法似乎效果不错,理论上,只要我们训练数据足够多,总能找到距离 x 足够近的 k 个邻居。然而,在高维情况下,这种思路是不可行的。这也称作”维度诅咒“。维度诅咒主要体现在三个方面:

  1. 数据量膨胀
  2. 样本靠近边界

数据量膨胀

设想一个 p 维的超立方体,它的每个维度边长都是 1,体积为 1。假设我们要预测的是这个立方体中体积为 v 的一部分。那么被选取的立方体的边长就是 e_p(r) = v^{1/p}

例如对于 10 维的输入,我们为了准确预测其中 1% 的数据,需要在每个维度选取 0.01^{0.1} = 63.09\% 作为训练数据。如果需要预测 10%,则需要选取0.1^{0.1} = 79.43\%。这显然太多了。

每个维度需要的训练数据与总维度的关系

样本靠近边界

仍以这个 p 维的单位超立方体为例,假设我们对每个维度均匀采样。样本落在边长为 r 的立方体中的概率为 r^p。可以看出,这个概率随着维度增加而减少(因为 r \leq 1)。也就是说,维度越大,越高比例的采样点靠近采样边界。

如果这个采样进行 N 次,那么所有样本都 不在 边长为 r 的小立方体中的概率为:

\text{P}(x >= r) = (1-r^p)^N

随着维度越来越大,“空心”现象会越来越严重。当我们尝试用最近邻法寻找邻居时,总会被“拉”到边界,导致有偏差的结果。

下面的图用简单的 1 维、2维情形直观显示了为什么维度扩大时,最近的邻居会越来越远(蓝色表示最近邻居)。

k-最近邻法(k=1)时的邻居

其根本原因是,我们定义的距离是欧氏距离,即:

d = \sqrt{\sum_{i=1}^p (x_i - a_i)^2}

在额外增加维度时,d 肯定是增加的。

预测误差衡量标准

已知输入 X 与输出 Y 之间的真实关系为:

Y = f(X)

假设训练数据集为 \tau,我们希望用k-最近邻法预测 x_0 的输出。可以定义误差指标为平均方差(mean squared error,MSE):

\begin{align*} \text{MSE}(x_0) &= E_{\tau} [f(x_0) - \hat{y}_0]^2 \\ &= E_{\tau}[\hat{y}_0 - E_{\tau}(\hat{y}_0)]^2 + [E_\tau(\hat{y}_0) - f(x_0)]^2 \\ &= \text{Var}_{\tau}(\hat{y}_0) + \text{Bias}^2(\hat{y}_0) \end{align*}

我们把预测误差分成了两个分量:

我们用以下例子来说明 Var 和 Bias:

Y = f(X) = e^{-8||X||^2}

当我们选取 x_0 = 0 时,有 f(x_0) = 1,这是最大值。

由于 E_r(\hat{y}_0) \leq 1,无论如何选取邻居,都会导致预测结果往小了偏差(Bias)。

当维度增大时,由于 E_r(\hat{y}_0) 基本维持不变,Bias 也基本一致:

\text{Bias}^2(\hat{y}_0) = [E_\tau(\hat{y}_0) - f(x_0)]^2

当维度增大时,即使 E_r(\hat{y}_0) 基本维持不变,由于 \hat{y}_0 离中心越来越远,必然有 Var 越来越大:

\text{Var}_{\tau}(\hat{y}_0) = E_{\tau}[\hat{y}_0 - E_{\tau}(\hat{y}_0)]^2

绘制成图形如下:

预测误差与维度的关系
上一篇 下一篇

猜你喜欢

热点阅读