机器学习笔记二:模型评估与选择(一)

Author Avatar
Brian Lee 7月 10, 2018
  • 在其它设备中阅读本文章

周志华《机器学习》个人笔记(经验误差与过拟合、评估方法、性能度量)


经验误差与过拟合

错误率

分类错误的样本数占样本总数的比例

$m$个样本中$a$个样本分类错误,$E = a/m$

精度

精度 = 1 - 错误率

$(1 - a/m) * 100%$

误差

学习器的实际预测输出与样本的真实输出之间的差异

训练误差/经验误差:学习器在训练集上的误差

泛化误差:新样本上的误差

过拟合

当学习器把训练样本学得“太好”了的时候,很可能已经把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降

亦称“过配”

欠拟合

对训练样本的一般性质尚未学好

亦称“欠配”


评估方法

我们可通过实验测试来对学习器的泛化误差进行评估并进而做出选择。具体做法为:使用一个“测试集”来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差的近似。

测试样本从样本真实分布中独立同分布采样而得,测试集应尽可能与样本集互斥。

有一个包含 $m$ 个样例的数据集 $D = \left\{(x_1,y_1),(x_2,y_2),…,(x_m,y_m)\right\}$ ,既要训练、又要测试,可以通过对 $D$ 进行适当处理,从中产生训练集 $S$ 和测试集 $T$ ,做法有留出法、交叉验证法。

留出法

直接将数据集 $D$ 划分为两个互斥的集合,其中一个集合作为训练集 $S$ ,另一个作为测试集 $T$ ,在 $S$ 上训练出模型后,用 $T$ 来评估其测试误差,作为对泛化误差的估计。

$D = S \cup T$

$S \cap T = \emptyset$

从采样的角度来看待数据集的划分过程,则保留类别比例的采样方式通常称为“分层采样”

在使用留出法时,一般采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。

测试集小时,评估结果的方差较大;训练集小时,评估结果的偏差较大。

常见做法是将大约2/3~4/5的样本用于训练,剩余样本作为测试。

交叉验证法

将数据集 $D$ 划分为 $k$ 个大小相似的互斥子集,即 $D = D_1 \cup D_2 \cup … \cup D_k, D_i \cap D_j = \emptyset (i \neq j)$ ,每个子集$D_i$ 都尽可能保持数据分布的一致性。然后每次用 $k-1$ 个子集的并集作为训练集,余下的那个子集作为测试集,这样就可获得 $k$ 组训练/测试集,可以进行 $k$ 次训练和测试,最终返回的是这 $k$ 个测试结果的均值。

通常把交叉验证法称为“ $k$ 折交叉验证 ”,常用“ 10折交叉验证 ”。

为减小因样本划分不同而引入的差别,$k$ 折交叉验证通常要随机使用不同的划分重复 $p$ 次,最终的评估结果是这 $p$ 次 $k$ 折交叉验证结果的均值。

留一法:数据集中包含 $m$ 个样本,令 $k=m$ 。即每个子集包含一个样本。留一法中被实际评估的模型与期望评估的用 $D$ 训练出的模型很相似,因此被认为比较准确,但是计算开销大。

自助法

给定包含 $m$ 个样本的数据集 $D$ ,对它采样产生数据集 $D^,$ :每次随机从 $D$ 中挑选一个样本,将其拷贝放入 $D^,$ ,然后再将该样本放回初始数据集 $D$ 中,重复 $m$ 次,就得到了包含 $m$ 个样本的数据集 $D^,$ 。

$D$ 中有一部分样本会在 $D^,$ 中多次出现,而另一部分样本不出现,初始数据集 $D$ 中约有36.8%的样本未出现在采样数据集 $D^,$ 中。于是可以将 $D^,$ 作,为训练集,$D-D^,$ 作为测试集。

核心:实际评估的模型与期望评估的模型都使用$m$ 个训练样本,且仍有数据总量约1/3的、没在训练集中出现的样本用于测试。

自助法在数据集较小,难以有效划分训练/测试集时很有用。

缺点:自助法产生的数据集改变了初始数据集的分布,会引入估计偏差。

调参与最终模型

大多数学习算法都有些参数需要设定,参数配置不同,学得模型的性能往往有显著差别。因此,在进行模型评估与选择时除了对算法进行选择,还要对算法参数进行设定。

现实中做法,是对每个参数选定一个范围和变化步长,这样参数往往不是最佳值,但是是在计算开销和性能估计之间进行折中的结果。

验证集:模型评估与选择中用于评估测试的数据集(在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参)。


性能度量

对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量。

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

均方误差

回归任务最常用的性能度量

$E(f;D) = \frac{1}{m}\sum\limits_{i=1}^{m}(f(x_i)-y_i)^2$

更一般地,对于数据分布 $D$ 和概率密度函数 $p(.)$ ,均方误差可描述为

$E(f;D) = \int_{x\sim~D}(f(x)-y)^2p(x)dx$

错误率与精度

错误率

分类错误的样本数占样本总数的比例

$E(f;D)=\frac{1}{m}\sum\limits_{i=1}^{m}\mathbb{I}(f(x_i)\neq y_i)$

更一般地,对于数据分布 $D$ 和概率密度函数 $p(.)$ ,错误率描述为

$E(f;D) = \int_{x\sim~D}\mathbb{I}(f(x)\neq y)p(x)dx$

精度

分类正确的样本数占样本总数的比例

$acc(f;D)=\frac{1}{m}\sum\limits_{i=1}^{m}\mathbb{I}(f(x_i)=y_i)=1-E(f;D)$

更一般地,对于数据分布 $D$ 和概率密度函数 $p(.)$ ,错误率描述为

$acc(f;D) = \int_{x\sim~D}\mathbb{I}(f(x)= y)p(x)dx$

查准率、查全率与$F1$

Positive:预测的正例

Negative:预测的反例

True:预测情况与真实情况相符

False:预测情况与真实情况不符

分类结果混淆矩阵
真实情况\预测结果 正例 反例
正例 TP(真正例) FN(假反例)
反例 FP(假正例) TN(真反例)
查准率

$P=\frac{TP}{TP+FP}$

用来表示预测的正例中有多少是真正例

例如:挑中的西瓜中有多少比例是好瓜、检索出的信息中有多少是用户感兴趣的

查全率

$P=\frac{TP}{TP+FN}$

用来表示所有正例中有多少被预测中

例如:所有好瓜有多少比例被挑了出来、用户感兴趣的信息中有多少被检索出来了

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

P-R图

以查全率为横轴,查准率为纵轴做图

PR图

若一个学习器的P-R曲线被另一个学习器的曲线完全包住,则可断言后者性能优于前者。否则在具体查准率或查全率条件下比较,或比较面积大小。

平衡点

“查准率=查全率”时的取值

F1度量

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

一般形式—$F_β$ :表达出对查准率、查全率的不同偏好

$F_β=\frac{(1+β^2)\times P\times R}{(β^2\times P)+R}$

$β=1$ 时为标准的F1,$β>1$ 时查全率有更大影响,$β<1$ 时查准率有更大影响。

n个二分类混淆矩阵上综合考察查准率和查全率:

分别计算P和R,再计算平均值,得到宏查准率、宏查全率、宏F1

$macroP=\frac{1}{n}\sum\limits_{i=1}^{n}p_i$

$macroR=\frac{1}{n}\sum\limits_{i=1}^{n}R_i$

$macroF1=\frac{2\times macroP\times macroR}{macroP+macroR}$

还可先将各混淆矩阵的元素进行平均,得到$\overline{TP}、\overline{FP}、\overline{TN}、\overline{FN}$ ,再计算出微查准率、微查全率、微F1

$microP=\frac{\overline{TP}}{\overline{TP}+\overline{FP}}$

$microR=\frac{\overline{TP}}{\overline{TP}+\overline{FN}}$

$microF1=\frac{2\times microP\times microR}{microP+microR}$

ROC与AUC

排序本身的质量好坏,体现了综合考虑学习器在不同任务下的“期望泛化性能”的好坏,或者说,“一般情况下”泛化性能的好坏。

ROC

“受试者工作特征”(Receiver Operating Characteristic)曲线,用来研究学习器泛化性能。

纵轴为“真正例率”(TPR),横轴为“假正例率”(FPR)

$TPR=\frac{TP}{TP+FN}$

$FPR=\frac{FP}{FP+TN}$

若一个学习器的ROC曲线被另一个学习器的曲线完全包住,则可断言后者的性能优于前者;否则比较ROC下面积,即AUC(Area under ROC Curve)

AUC

若ROC由点$\left\{(x_1,y_1),(x_2,y_2),…,(x_m,y_m)\right\}$ 按序连接形成,则:

$AUC=\frac{1}{2}\sum\limits_{i=1}^{m-1}(x_{i+1}-x_i)\times (y_i+y_{i+1})$

ROC

代价敏感错误率与代价曲线

为权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”。

二分类代价矩阵
真实类别\预测类别 第0类 第1类
第0类 0 $cost_{01}$
第1类 $cost_{10}$ 0
代价敏感错误率

以第0类为正例、第1类为反例,令$D^+​$ 与$D^-​$ 分别代表样例集$D​$ 的正例子集和反例子集

$E(f;D;cost)=\frac{1}{m}(\sum\limits_{x_i\in D^+}\mathbb{I}(f(x_i)\neq y_i)\times cost_{01}+\sum\limits_{x_i\in D^-}\mathbb{I}(f(x_i)\neq y_i)\times cost_{10}))$

代价曲线

在非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而代价曲线可以。

横轴—取值为[0,1]的正例概率代价:

$P(+)cost=\frac{p\times cost_{01}}{p\times cost_{01}+(1-p)\times cost_{10}}$

其中$p$ 为样例为正例的概率。

纵轴—取值为[0,1]的归一化代价:

$cost_{norm}=\frac{FNR\times p\times cost_{01}+FPR\times (1-p)\times cost_{10}}{p\times cost_{01}+(1-p)\times cost_{10}}$

绘制方法:将ROC曲线上每个点转化为代价平面上的一条线段。

代价曲线


本博客采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
本文链接:http://brianleelxt.top/2018/07/10/MLlearn_2_1/