统计学习方法2

监督学习的目的是找到一个输入输出映射(模型),使得这个模型不仅对训练数据有很好的拟合能力,对于未知数据,它也有很好的预测能力。这篇博客介绍选择和评估模型的标准。本篇博客一共有以下几个重点:训练误差与测试误差、泛化能力、过拟合。

训练误差与测试误差

训练误差是模型$Y={\hat{f}}(X))$关于训练集的平均损失来表示:$R{emp}({\hat{f}})=\frac{1}{N}\sum{i=1}^{N}L(y{i},{\hat{f}}(x{i}))$

其中$N$为训练集中数据的个数;损失函数$L(Y,f(X))$在统计学三要素中有介绍,可以看到,训练误差也就是该篇文章所提到的经验损失函数。训练误差的大小,可以说明问题是不是一个容易学习的问题。

测试误差是模型$Y={\hat{f}}(X)$关于测试集数据的平均损失:
$$R{test}({\hat{f}})=\frac{1}\sum{i=1}^{N’}L(yi, {\hat{f}}(x{i}))$$

其中${N}’$为测试集中数据的个数。测试误差反应了学习模型对于未知的测试集中数据的预测能力。由于测试误差只是表征了对于测试集中数据的预测能力,我们可以更一般的引申一下,由此引入了模型对于所有未知数据预测能力——泛化能力。

$$e{test} = \frac{1}{N’}\sum{i=1}^N’ I(y_i \neq f(x_i))$$

其中 $I(\cdot)$ 为指标函数(indicator function),当$\cdot$为真是返回$1$ ,否则返回 $0$;$N’$ 为测试样本容量,测试准确率(或称为精度(accuracy)):$acc{test} = 1 - e{test}$

泛化能力

泛化误差

泛化能力用来表征学习模型对于未知数据的预测能力。

很显然,我们没有办法对所有的数据进行预测然后判断来计算一个模型的模型的泛华能力,所以在实际应用当中,我们一般还是用的测试集中的数据来近似泛化能力。

但是,统计学习也在理论上试图对学习方法的泛化能力进行了分析,首先给出泛化误差的定义:用学到的$\hat{f}$对未知数据进行预测:

$R{exp}(\hat{f})=E[L(Y,\hat{f}(X))]=\int L(y{i},\hat{f}(x_{i}))P(x,y)dxdy$

泛化误差越小,学习模型的泛化能力越好。可以看到,泛化误差实际上就是统计学三要素中介绍的风险函数。由上篇博客我们可知,泛化误差(风险函数)不可计算。

过拟合与欠拟合

训练误差很小而泛化误差很大时称为过拟合,与之相对的是欠拟合(underfitting)。例如多项式拟合:

$$f_M(x, \omega) = \omega_0 + \omega_1x + \omega_2x^2+\dots+\omegaMx^M = \sum{j=0}^M\omega_jx^j$$

当选取 $M$ 个参数进行训练时,可能出现下列情况:

fitting

当 $M = 0$ 和 $M = 1$ 时,模型为直线,拟合效果很差,即欠拟合;当 $M = 9$ 时,模型曲线经过了每一个训练数据点,训练误差为 0,但是无法预测新的数据,因此泛化误差很大,即过拟合。

测试误差的评估方法

  1. 留出法(hold-out)
  2. 交叉验证法(cross validation)
  3. 自助法(bootstrapping)
  4. 调参(parameter tuning)

留出法

将数据集 $D$ 划分为 $S, T$:

$$D = S \cap T, S \cup T = \emptyset$$

并采用分层采样(stratified sampling),通常选用 $2/3 - 4/5$ 用于训练

交叉验证法

将 $D$ 划分为 $k$ 个大小相似的互斥子集:

$$D = D_1 \cup D_2 \cup \dots \cup D_k, D_i \cap D_j = \emptyset (i \neq j)$$

每次用 $k-1$ 个子集作为训练集,剩下一个作为测试集,称为k折交叉验证(k-fold cross validation)。$k$ 通常取 10,并随机使用不同划分重复 $p$ 次,最终取 $p$ 次结果均值,例如“10次10折交叉验证”。

假设数据集 $D$ 容量为 $m$,若 $k = m$,则称为留一法(Leave-One-Out, LOO)。留一法苹果结果比较准确,但计算开销也相应较大。

自助法

自助采样法(bootstrap sampling)为基础,从 $D$ 中有放回地随机抽取 $m$ 次,得到同样包含 $m$ 个样本的 $D’$,$D$ 中有一部分样本会在 $D’$ 中出现多次,而另一部分则未出现,$m$ 次重采样始终未被采到的概率是:

$$\lim_{m\rightarrow\infty}(1-\frac{1}{m})^m \rightarrow \frac{1}{e} \approx 0.368$$,即 $36.8\%$ 的样本未出现在 $D’$。以 $D’$ 作为训练集,$D - D’$ 作为测试集。自助法在数据集较小、难以划分训练/测试集时很有用。

性能度量

除了精度($acc{test}$)和错误率($e{test}$),还需要反映任务需求的性能度量指标。

  1. 查准率、查全率与 $F_1$
  2. ROC & AUC
  3. 代价矩阵

查准率、查全率与 $F_1$

img

$$ TP + FP + TN + FN = 1$$

查准率(准确率,precision):
$$P = \frac{TP}{TP + FP}$$

查全率(召回率,recall):
$$R = \frac{TP}{TP + FN}$$

希望查全率高,意味着更看重决策的准确性,例如在商品推荐系统,尽量减少错误推荐;希望查全率高,意味着“宁可错杀一千”,例如在罪犯检测过程中。

$$F1 = \frac{2PR}{P+R}$$
$$F
\beta = \frac{(1+\beta^2)PR}{(\beta^2+P)+R}$$

当 $\beta = 1$ 时,$F_\beta = F_1$;$\beta \gt 1$ 时,查全率影响更大;$\beta \lt 1$

Buy Me A Coffee!