cotcode
One day at a time

第2章 模型评估与选择

2.1 经验误差与过拟合

  • 错误率\(E\)\(m\) 个样本,\(a\) 个分类错误,\(\displaystyle E = \frac{a}{b}\)
  • 精度:\(\displaystyle 1-\frac{a}{b}\)

希望得到误差最小化、错误率低、精度高的学习器

预测输出与样本的真实输出之间的差异成为“误差”。
学习器在训练集上的误差称为“训练误差”或“经验误差”。
学习器在新样本上的误差称为“泛化误差”。

当学习器把训练样本学习的“太好”了的时候,会导致泛化性下降,也就是面对新样本,效果不佳。这种现象称为“过拟合”(与之相对,训练不够,“欠拟合”)。

  • 过拟合:学习能力过强,不可避免,只能缓解
  • 欠拟合:学习能力不足,加大学习

现实中,往往有各种学习算法可侯选择,甚至同一算法不同参数配置时,也会产生不同模型。如何选择,即“模型选择”。

理想解决方案时对候选模型泛化误差进行评估,然后选择泛化误差最小的模型。

2.2 评估方法

通过“测试集”来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”作为“泛化误差”的近似。

测试样本:

  1. 从样本真实分布中独立筒分布采样
  2. 与训练集尽可能互斥(未出现,未使用过)

举例:你是一个老师吗,教了学生10道题,你对他们进行考核时肯定不是这10道题,才能体现他“举一反三”的能力。

但是我们只有一个包含 \(m\) 个样例的数据集 \(D=\{(x_1,y_1),(x_2,y_2)\cdots(x_n,y_n)\}\),如何做到既要训练又要测试?

对D适当处理,产生训练集 \(S\) 和测试集 \(T\)

2.2.1 留出法

留出法直接将数据集 \(D\) 划分未两个互斥集合,一个训练集 \(S\),一个测试集 \(T\),即\({D=S}\cup{T}\)\({S}\cap{T}=\emptyset\),在 \(S\) 上训练,\(T\) 上评估。

举例: \(D=1000\) 个,训练 \(S=700\) 个,测试 \(T=300\) 个,测试中有\(90\)个出错,出错率为 \(\displaystyle \frac{90}{300} \times {100=30\%}\),精度 \(1 -70\%=30\%\)

注意,训练/测试划分要尽可能与数据分布一致。保留类别比例的采样称为“分层采样”
\(D=1000=500_正+350_反\) ,则 \(S=700=350_正+350_反\)\(T=150_正+150_反\)

然而,及时如此分类,在实际上,先正、先反也会产生不同结果。所以,单次“留出法”并不可靠,一般采用若干次随机划分,重复实验取平均。

常见的方法: \(\displaystyle \frac{2}{3}\sim\displaystyle \frac{4}{5}\)样本用于训练,剩余用于测试。

2.2.2 交叉验证法

将数据集 \(D\) 划分为 \(k\) 个大小相似的互斥子集,即 \(D=D_1\cup{D_2}\cup\cdots\cup{D_n}=\emptyset{(i\neq{j})}\) ,每个子集\(D_i\)却尽可能与数据分布保持一致,即“分层采样”。

每次用 \(k-1\) 个子集的并作为训练集,余下子集为测试集,最终返回 \(k\) 个测试结果的均值。

又称“ \(k\) 折交叉验证”,\(k\) 通常取 \(10\),称为 \(10\) 折交叉验证。

将数据集 \(D\) 划分为 \(k\) 个子集同样存在各种划分方式,为减少因样本划分不同而引入的差别,通常要随使用不同的划分重复 \(p\) 次,最终结果是第 \(p\)\(k\) 折交叉验证 \(A\) 的均值。

常见“10次10折交叉验证”。

特例:留一法

数据集 \(D\) 中包含 \(m\) 个样本,令 \(k=m\),则每次只留 1 个测试,留一法不受随机样本划分方式的影响。

结果准确(也不全是),但数据量较大时计算量太大。

2.2.3 自助法

以自助采样为基础,给定包含 \(m\) 个样本的数据集 \(D\),采样\(D'\):每次从 \(D\) 中随机选一个样本,放入 \(D'\) 中,然后该样本在 \(D\) 中仍保留,使得该样本下次采样也可能被采到,重复 \(m\) 次,得到包含 \(m\) 个样本的数据集 \(D\) 中有一部分在 \(D'\) 重复出现,有一部分从未出现)

样本在 \(m\) 次采样中始终不被采样到的概率:\((1-\frac{1}{m})^m\) \(\displaystyle \lim_{m\to{\infty}}(1-\frac{1}{m})^m \mapsto \frac{1}{e}\approx{0.368}\)

即通过自助采样,数据集 \(D\) 中大约有 \(36.8\%\) 的样本未出现在训练集 \(D'\) 中, \(D\setminus{D'}\)用作测试集。

实际评估的模型与期望评估的模型都使用 \(m\) 个训练集样本,而我们仍有数据总量约\(\displaystyle \frac{1}{3}\) 的、没有训练集中出现,而用于测试,又称“包外估计”。

优点

  1. 数据量小,难以有效划分训练/测试集。
  2. 此外,能产生多个不同的训练集,对集成学习有益。
  3. 然而,改变了原始分布,引入估计偏差。
  4. 因此,在数据量充足时,留出法、交叉验证法更常用。

2.2.4 调参与最终模型

算法都有些参数需要设定,参数配置不同,模型性能不同。

参数调节———调参

调参与算法选择本质上是一致的:不同配置得到不同参数模型,把对应最好的模型参数作为结果。

实际操作中,参数选择是一个范围加一个变化参数,如 \([0,0.2]\) 以 0.05 为步长,有0,0.05,0.1,0.15,0.2 这 5 种参数选择,这已经是计算开销和性能估计的折中。

然而,假定 3 个参数,每个参数有 5 种选择,模型将有 \(5^3=125\) 种需要对比。

\(m个样本数据集D \Rightarrow{D'训练,D'\setminus{D'测试}} \Rightarrow {模型选定(算法配置选定)} \Rightarrow {D作为训练集重新训练}\Rightarrow{结果}\)

用测试集上的判别效果估计模型在实际使用中的泛化能力,而把训练集分为:训练集和验证集(验证集上的性能能模型选择和调参)

2.3 性能度量

用来衡量模型泛化能力的评价标准。

性能度量反映了任务需求,在对比相同模型能力时,采用不同的性能度量往往会导致不同的评判结果,模型的“好坏”是相对的。

预测任务中,样例集 \(D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\}\),其中 \(y_i\) 是示例 \(x_i\) 的真实标记,要评估学习器f的性能,就要把预测结果 \(f(x)\) 真实标记 \(y\) 比较。

回归任务最常用的性能度量是“均方误差”:\(\displaystyle E(f;D)=\frac{1}{m}\sum^{m}_{i=1}(f(x_i)-f(y_i))^2\)

更一般的,数据分布\(\mathcal{D}\)和概论密度\(p(\cdot)\) ,均方误差为:\(\displaystyle E(f;\mathcal{D})=\frac{1}{m}\int_{x \sim {\mathcal{D}}}(f(x_i)-y)^2 p(x)dx\)

2.3.1 错误率与精度

最常用的两种性能度量:

  1. 错误率是分类错误的样本占样本总数的比例
  2. 精度是分类正确的样本占样本总数的比例

指示函数 \(\mathbb I(\cdot)\) 指示函数为真和假时分别取1,0

错误率定义:
\(\displaystyle E(f;D)=\frac{1}{m}\sum^{m}_{i=1}\mathbb{I}(f(x_i)\neq{y_i})\)

精度定义
\(\displaystyle acc(f;D)=\frac{1}{m}\sum^{m}_{i=1}\mathbb{I}(f(x_i)={y_i})=1-E(f;D)\)

更一般,对于数据分布\(\mathcal{D}\)和概率密度函数\(p(\cdot)\)表示方法

错误率 \(\displaystyle E(f;\mathcal{D})=\int_{x\sim{\mathcal{D}}}\mathbb{I}(f(x)\neq{y})p(x)dx\)

精度 \(\displaystyle acc(f;\mathcal{D})=\int_{x\sim{\mathcal{D}}}\mathbb{I}(f(x)={y})p(x)dx=1-E(f;\mathcal{D})\)

2.3.2 查准率、查全率与\(F_1\)

  1. 查准率\(\rightarrow\) 准确度
  2. 查全率\(\rightarrow\) 召回率

错误率与精度虽常用,但不能满足所有任务需求。

对于二分类问题,分类结果混淆矩阵

真实情况 预测结果
正例 反例
正例 TP(真正例) FN(假反例)
反例 FP(假正例) TN(真反例)
  1. 查准率(precision) \(P\) \(P=\frac{TP}{TP+FP}\)
  2. 查全率(recall) \(R\) \(R=\frac{TP}{TP+FN}\)

查准率和查全率是一对矛盾的度量。一般来说,查准率时,查全率往往偏低,而查全率时,查准率往往偏低

在很多情形下,我们可根据学习器的预测结果对样例进行排序,排在前面的是学习器认为“最可能”是正例的样本,排在最后的是学习器认为“最不可能”是正例的样本。按此顺序逐个把样本作为正例进行预测,则每次可以计算出当前的查全率,查准率。

以查准率为纵轴、查全率为横轴作图,就可以得到查准率——查全率曲线,简称PR曲线,显示该曲线的图称为"P-R"图。

P-R图直观地显示出学习器在样本上的查全率、查准率。

在进行比较时,若一个学习器的P-R曲线被另一个曲线完全“包住”,则可断言后者的性能优于前者。

如果两个学习器的P-R曲线发生了交叉,可以试着比较P-R曲线面积的大小。

一些综合考虑查准率、查全率的性能度量

平衡点(Break-Even Point, 简称BEP),是查准率=查全率时的取值。

但BEP还是过于简化了写,更常用的是F1度量:

\[F1 = \frac {2 \times P \times R}{P+R} = \frac {2 \times TP}{样例总数+ TP - TN} \]

\(F1\) 是基于查准率与查全率的调和平均定义的:\(\frac {1}{F_1}= \frac {1}{2}(\frac {1}{P} + \frac {1}{R})\)

\(F_\beta\) 是加权调和平均:\(\frac {1}{F_\beta}= \frac {1}{1+\beta^2}(\frac {1}{P} + \frac {\beta^2}{R})\)

与算术平均\((\frac {P+R}{2})\)和几何平均\(\sqrt {P \times R}\),调和平均更重视较小值。

posted on 2021-01-24 23:05  cotcode  阅读(117)  评论(1)    收藏  举报