机器学习模型评估及思维导图

    今日学习对模型的评估与选择,总结如下:

1.一些重要基本概念。

  •   错误率:如果在m个样本中有a个样本分类错误,则错误率E=a/m。
  •   误差:学习器(即模型)的实际输出与样本的真实输出之间的差异称为误差
  •   经验误差与泛化误差:学习器在训练集上的误差称为训练误差。而在新样本上的误差为泛化误差。
  •   过拟合与欠拟合:过拟合是机器学习能力过强而将训练样本中的一些自身特点当做了所有潜在样本都有的一 般性质,使得学习器的泛化性能下降。欠拟合是指学习器学习能力低下,对训练样本的一般性质尚未学习好。
  •  错误率和精度:错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本数的比例。
  •   查全率: 真实正例被预测为正例的比例 。
  •   真正例率: 真实正例被预测为正例的比例 。
  •   查准率:预测为正例的实例中真实正例的比例 。
  •   假正例率: 真实反例被预测为正例的比例。
  •   P-R曲线:横轴为查全率,纵轴为查准率。
  •   BEP:平衡点,此点查准率等于查全率。
  •   F1:F1=2PR/(P+R)

2. 模型评估的方法。

    我们通常通过实验测试来对学习器的泛化误差进行评估并进行选择。所以,我们通常需要一个测试集来测试学习器对新样本的预测能力,并且将测试集上的测试误差近似为泛化误差来便于评估。其中我们应尽量保持训练集和预测集之间的独立性,所以使二者尽可能的互斥。通常来说我们只有一个数据集,所以我们需要通过一些方法使我们做到我们可以训练,又可以测试。我们通常使用如下三个方法:

(1)留出法

   留出法直接将数据集划分为一个训练集和一个预测集。训练集和预测集相互独立,互斥。使用训练集训练学习器之后,再使用预测集进行评估其预测误差,作为泛化误差的估计。

 同时,数据集的划分需保持数据分布的一致性,避免因数据划分而产生的新的偏差。

 又因为,每次对数据集的划分都是不同的,将会导致每次的评估结果的不一致,所以,单次的留出法评估往往是不稳定可靠的,所以需要若干次划分,重复试验后取平均值。

(2)交叉验证法

交叉验证法将数据集D划分为k个大小相似的互斥子集,每个子集尽可能保持分布的一致性。然后,每次使用k-1个子集的并集作为训练集,余下的那个作为测试集。从而获得k组训练集和测试集,最终返回k个测试结果的均值。

其中,当D数据集中有m个样本,令k=m便得到了交叉验证法的一个特例,留一法。留一法结果较为准确,但当数据集比较大的时候,计算开销是难以忍受的。

(3)自助法

     给定一个数据集D,我们对它采样产生D’,每次从D中挑选一个样本,拷贝入D’,然后再将样本放回初始数据集D中,重复m次后,我们就得到了一个新的数据集D’。然后我们便可以将D’作为训练集,D\D’作为测试集。

     自助法可以减少训练样本规模变化影响较小,在数据集较小,难以划分数据集时很有用。

3. 性能度量

(1)回归任务中的性能度量

最常用的是“均方误差”。

(2)分类任务中的性能度量

--我们常用精度和错误率,但并不能满足所有的任务需求。有时候更需要“查准率”和“查全率”来作为性能度量。

--在PR曲线中,若A曲线完全包住B曲线,我们可以认为学习器A的性能优于B的。

--F1的一般形式为Fβ,其中β度量了查全率对查准率的相对重要性。

--ROC与AUC:

很多学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与一个分类阈值进行比较,若大于阈值则为正类,否则反类。

ROC全称是“受试者工作特征”,我们根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算真正例率与假正例率查全率作为ROC曲线的横坐标和纵坐标。

当学习器A的ROC曲线完全包住学习器B的ROC曲线时,可以认为A性能优于B,而当两者交叉时,就难以比较孰优孰劣,若一定要比较,较为合理的便是比较ROC曲线下的面积,即AUC。

(3)代价敏感错误率与代价曲线

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

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

将ROC曲线上每一点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为在所有条件下学习器的总体代价。

4. 模型评估

(1)假设检验

在现实任务中,泛化错误率与测试错误率未必相同。但我们可以通过测试错误率退出泛化错误率的分布。

提出原假设H0,备择假设H1,由α求得临界值,若测试错误率小于临界值,在α的显著度下,假设H0不能被拒绝,即能以1-α的置信度认为H0成立,否则假设H0可以被拒绝,即在显著度为α的情况下可以认为H1成立。

(2)交叉验证t检验

基于一个数据集对学习器的性能进行比较。对学习器A与B性能相同这个假设做t检验,计算出均值和方差,在显著度α下,判断两个学习器的性能是否有显著差别。

(3)McNemar检验

假设两学习器性能相同,则有e01=e10,那么变量|e10-e01|应当服从正态分布。

McNemr检验考虑变量服从自由度为1的卡方分布。给定显著度α,当变量值小于临界值卡方时,不能拒绝假设。反之,则可以拒绝。

(4)Friedman 检验 与 Nemenyi 后续检验

该方法可用于一组数据集上对多个算法进行比较的情况。首先评估性能,然后按照测试性能的由好到坏的顺序排序,并赋予序值,最后取平均序值。

先使用Friedman检验来判断这些算法是否性能相同,与McNemar检验相似,通过临界值检验这些算法性能相同的假设是否会被拒绝。

       若拒绝,使用Nemenyi 后续检验通过临界值域来判断是否有显著差别和优劣。

5. 偏差与方差

噪声:标记值与真实值的差的平方的期望,刻画了学习问题本身的难度。

偏差:预测输出的期望与与真实标记的差别,刻画了学习算法本身的拟合能力。

泛化误差可以分解为偏差,方差和噪声之和:

E(f;D)(方差) = bias^2(x)(偏差) + var(x)(方差) + ε^2(噪声)

思维导图如下:

 

猜你喜欢

转载自blog.csdn.net/WHUT618/article/details/81037928