02.机器学习样本评估与选择
经验误差与过拟合
- 精度=1-错误率=1-错误样本数/总样本数
- 学习器的实际预测输出与样本的真实输出之间的差异称为“误差”(error),学习器在训练集上的误差称为“训练误差”(training error)或“经验误差”(empirical error),在新样本上的误差称为“泛化误差”(generalizationerror).显然,我们希望得到泛化误差小的学习器。
- 模型选择(modelselection)问题:理想的解决方案当然是对候选模型的泛化误差进行评估,然后选择泛化误差最小的那个模型。
- 过拟合(Overfitting):学习器将训练样本学的太好,将样本自身的一些特点当作了所有潜在样本都会具有的一般性质,导致泛化性能下降。过拟合无法避免只能缓解
- 欠拟合(Underfitting):学习器学习能力低下造成
评估方法
通常,我们可通过实验测试来对学习器的泛化误差进行评估并进而做出选择.为此,需使用一个“测试集”(testing set)来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”(testing error)作为泛化误差的近似.通常我们假设测试样本也是从样本真实分布中独立同分布采样而得,但需注意的是,测试集应该尽可能与训练集互斥,即**测试样本尽量不在训练集中出现、未在训练过程中使用过。
测试集和训练集划分方法
-
留出法(hold-out)
直接将数据集D划分为两个互斥的集合- 保持数据分布的一致性,保持用于学习的数据集与用于测试的数据集的分布特征一致(例如:分层采样)
- 多次重复划分
- 测试集不能太大,也不能太小(一般 1/5~1/3)
-
交叉验证法(cross validation)
先将数据集 D 划分为k个大小相似的互斥子集,然后每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这 k 个测试结果的均值。为强调k的取值重要性,通常把交叉验证法称为“k折交叉验证”(k-fold crossvalidation)。k最常用的取值是 10,此时称为 10 折交叉验证;其他常用的k值有 5、20 等。- 留出法总归是使用了一部分数据,没有测试全部数据,因此 k 折交叉验证就是解决这个问题。
- 假设将数据集分成 k = 10 份,第一次使用 D10 作为测试集,第二次使用 D9 作为测试集,直至每个都当过测试集,然后将k个结果求平均,就是最终结果。
-
自助法(bootstrap )
- 基于”自助采样“的方法,也称:“有放回采样”、“可重复采样”
- 对数据集进行有放回采样,并且采样出的集合与原样本集同规模,但是数据分布有所改变
调参与最终模型
现实中常用的做法:对每个参数选定一个范围和变化步长,例如在[0,0.2] 范围内以 0.05 为步长,则实际要评估的候选参数值有5个,最终是从这5个候选值中产生选定值.这是在计算开销和性能估计之间进行折中的结果,通过这个折中,学习过程才变得可行。参数调得好不好往往对最终模型性能有关键性影响.
性能度量
回归任务最常用的性能度量是“均方误差”(mean squared error)
分类任务中常用的性能度量:
-
错误度与精度(accuracy)
错误率是分类错误的样本数占样本总数的比例
精度则是分类正确的样本数占样本总数的比例 -
查准率(precision)与查全率(recall)
查准率:在所预测类别中,预测正确的比例,分母是预测类别的样本数。 例如:挑出的西瓜中,有多少比例是好瓜
查全率:在真实类别中,预测正确的比例,分母是真实类别的样本数。例如:所有好瓜中有多少比例被挑了出来对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative)四种情形,令TP、FP、TN、FN分别表示其对应的样例数,则显然有TP+FP+TN+FN=样例总数。分类结果的“混淆矩阵”(confusion matrix)如下:
P = T P T P + F P P=\frac{T P}{T P+F P} P=