西瓜书 * 南瓜书 * 机器学习 * 周志华 * 第二章 * 学习小结
第二章 模型评估与选择
2.1 经验误差与过拟合
错误率 :分类错误的样本数占样本总数的比例,即如果在m 个样本中有α 个样本分类错误,则错误率
E = α / m;
精度:1 一 α / m,精度=1一错误率;
把学习器的 实际预测输出 与样本的 真实输出 之间的 差异 称为 "误差"
学习器在训练集上的误差称为 训练误差(training error)或经验误差 (empirical error) ,在新样本上的误差称为 “泛化误差” (generalization error),显然,我们希望得到 泛化误差小 的学习器。
过拟合(overfitting) 由于学习能力过于强大 ,把训练样本中所包含的不太一般的特性都学习到了 较难克服 是机器学习面临的关键障碍 过拟合无法彻底避免,只能是在一定程度上缓解
** 欠拟合(underfitting)** 由于学习能力底下而造成的 可以通过增加训练轮数解决
——这里提到了一个 NP 问题 不好理解
机器学习中的“模型选择”问题。
理性的解决方案是对候选模型的泛化能力进行评估,然后选择泛化误差最小的模型。
2.2 评估方法
测试集 testing set
测试误差 testing error
??当我们只有包含 m个样例 的数据集D,但是又要做训练集、又要做测试集,该怎么办呢?
我们需要对于 数据集D 进行适当的处理,从中产生 训练集S 以及 测试集T 。
2.2.1 留出法
"留出法" (hold-out) 直接将数据集D 划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T。
在S 上训练出模型后,用T 来评估其测试误差,作为对泛化误差的估计。
训练/测试集的划分要尽可能保持数据分布的一致性,避免困数据划分过程引入额外的偏差而对最终结果产生影响。
“分层采样” (stratified sampling)
单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。
窘境: 若令训练集S 包含绝大多数样本, 则训练出的模型可能更接近于用D 训练出的模型, 但由于T 比较小,评估结果可能不够稳定准确;若令测试集T 多包含一些样本, 则训练集S 与D 差别更大了,被评估的模型与用D 训练出的模型相比可能有较大差别,从而降低了评估结果的保真性(fidelity)。
这个问题没有完美的解决方案, 常见做法是将大约2/3~ 4/5 的样本用于训练,剩余样本用于测试。
2.2.2 交叉验证法
交叉验证法(cross validation) 先将数据集 D 划分为 k 个大小相似的互斥子集。每个子集 都尽可能保持数据分布的一致性,即从 D 中通过分层采样得到。然后,每次用 k-1 个子集的并集作为训练集,余下的那个子集作为测试集,这样就可获得 k 组训练/测试集,从而可进行 k 次训练和测试。 最终返回的是这k 个测试结果的均值。
” k 折交叉验证" (k-fold crossvalidation)
交叉验证法的特例:留一法(Leave- One-Out,简称LOO)
2.2.3 自助法
自助法 (bootstrapping) 是一个比较好的解决方案,它直接以自助采样法(bootstrap sampling) 为基础,给定包含m 个样本的数据集 D , 我们对它进行采样产生数据集 D’。每次随机从 D 中挑选一个样本, 将其拷贝放入 D’, 然后再将该样本放回初始数据集 D 中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行 m 次后,我们就得到了包含m个样本的数据集 D’,这就是自助采样的结果。
显然, D 中有一部分样本会在 D’ 中多次出现,而另一部分样本不出现。可以做一个简单的估计,样本在 m 次采样中始终不被采到的概率是(1-1/m)^m, 取极限得到:
即通过自助来样,初始数据集 D 中约有36.8% 的样本未出现在采样数据集D’中。
于是我们可将 D’ 用作训练集, D\D ’ 用作测试集;这样实际评估的模型与期望评估的模型都使用m 个训练样本,而我们仍有数据总量约1/3 的、没在训练集中出现的样本用于测试。这样的测试结果,亦称"包外估计" (out-of-bag estimate)。
自助法在数据集较小、难以有效划分训练/测试集时很有用。
2.2.4 调参与最终模型
参数 parameter
多数算法都是需要进行参数设定,参数配置不同,学得的模型的性能往往具有显著的差别。
调参 parameter tuning
选定的参数往往并不是最佳的,他是在一定程度上折中的
模型评估与选择中用于评估测试的数据集常称为 验证集 (validation set)。
在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型在实际使用时的泛化能力,
而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。
2.3 性能度量
衡量模型泛化能力的评价标准,这就是性能度量(performance measure)。
模型的"好坏"是相对的,什么样的模型是好的??不仅取决于算法和数据,还决定于任务需求。
要评估学习器f 的性能,就要把学习器预测结果f(x)与真实标记y进行比较。
回归任务最常用的性能度量是均方误差 (mean squared error):
2.3.1 错误率与精度
错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例。
错误率:
精度:
2.3.2 查准率、查全率与F1
查准率 precision 检索出的信息中有多少比例是用户感兴趣的
查全率 recall 用户感兴趣的信息中有多少被检索出来了
真正例 true positive TP
假真例 false positive FP
真反例 ture negative TN
假反例 false negative FN
混淆矩阵 confusion matrix
查准率P 以及 查全率R 计算公式:
查准率和查全率是一对矛盾的度量.一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。
以查准率为纵轴、查全率为横轴作图,就得到了查准率-查全率曲线,简称" P-R 曲线",显示该曲线的图称为" P-R图"。
注意: 若一个学习器的P-R 曲线被另一个学习器的曲线完全 “包住” , 则可断言后者的性能优于前者。
如果两个学习器的P-R 曲线发生了交叉,则难以一般性地断言两者孰优孰劣? 只能在具体的查准率或查全率条件下进行比较。
这时一个比较合理的判据是比较P-R 曲线节面积的大小,它在一定程度上表征了学习器在查准率和查全率上取得相对"双高"的比例。
“平衡点” (Break-Event Point,简称BEP)就是这样一个度量,它是" 查准率=查全率"时的取值。
BEP过于简化了些,更常用的是F1 度量:
F1 度量的一般形式–Fß’ 能让我们表达出对查准率/查全率的不同偏好,它定义为:
其中ß>O 度量了查全率对查准率的相对重要性。 ß = 1时退化为标准的F1; ß> 1 时查全率有更大影响; ß < 1 时查准率有更大影响。
2.3.3 ROC 与 AUC
阈值 threshold
ROC 全称是"受试者工作特征"
ROC 曲线的纵轴是"真正例率" (True Positive Rate,简称TPR) ,横轴是"假正例率" (False PositiveRate,简称FPR) ,两者分别定义为:
ROC 与 AUC 图
进行学习器的比较时, 与P-R 图相似, 若一个学习器的ROC 曲线被另一个学习器的曲线完全 “包住”, 则可断言后者的性能优于前者。
若两个学习器的ROC 曲线发生交叉,则难以-般性地断言两者孰优孰劣。
此时如果一定要进行比较, 则较为合理的判据是比较ROC 曲线下的面积,即 AUC (Area UnderROC Curve) 。
2.3.4 代价敏感错误率与代价曲线
代价矩阵 cost matrix
2.4 比较检验
统计假设检验 hypothesis test
2.5 偏差与方差
偏差 度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;
方差 度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;
噪声 则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。
给定学习任务,为了取得好的泛化性能,则需使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响小。
偏差与方差是有冲突的,这称为偏差一方差窘境(bias-variance dilemma)。