机器学习算法笔记之7:模型评估与选择

来源:互联网 发布:杠杆交易 知乎 编辑:程序博客网 时间:2024/05/16 06:08

一、经验误差与过拟合

我们通常把分类错误的样本数占样本总数的比例称为“错误率”,即如果在m个样本中有a个样本分类错误,则错误率E=a/m,1-a/m称为精度,精度=1-错误率。我们把学习器的实际预测输出与样本的真实输出之间的差异称为误差,学习器在训练集上的误差称为训练误差或经验误差,在新样本上的误差称为泛化误差。

当学习器把训练样本学得太好的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化能力下降,称为过拟合。过拟合是机器学习面临的关键障碍,各类学习算法都必然带有一些针对过拟合的措施;然而必须认识到,过拟合是无法彻底避免的,我们所能做的只是缓解或者减小其风险。

二、评估方法

为了对学习器的泛化性能进行评估,我们需要一个“测试集”来测试学习器对新样本的判别能力,以测试集上的“测试误差”作为泛化误差的近似。通常我们假设测试样本是从真是样本中的独立同分布采样而得。需要注意的是,测试集应尽可能与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。

1. 留出法

留出法直接将数据集D划分为两个互斥的集合,一个作为训练集S,另一个作为测试集T。训练集/测试集的划分要尽可能保持数据分布的一致性,如果从采样的角度来看待数据集的划分过程,通常采用“分层采样”。

由于存在多种划分方式多数据集D进行分割,不同的划分对应的模型评估也会存在差别。单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。

2. 交叉验证法

交叉验证法(crossvalidation)先将数据集D划分为k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性,即从D中通过分层采样得到。每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可得到k组训练集/测试集,可进行k次训练和测试,最终返回这k次测试结果的均值,称“k折交叉验证”。

与留出法相似,将数据集D划分为k个子集同样存在多种划分方式,因此k折交叉验证通常也要随机使用不同的划分方式重复p次,最终的评估结果是这p次k折交叉验证的结果的均值。

假定数据集D中包含m个样本,若令k=m,则得到交叉验证法的一个特例:留一法(Leave-One-Out,LOO)。留一法不受数据集划分方式的影响,留一法中被实际评估的模型与期望评估的用D训练出的模型很相似,评估结果往往比较准确。留一法的计算开销是相当大的。

3. 自助法

自助法(bootstrapping)是以自主采样法(bootstrapsampling)为基础。

三、性能度量

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

回归任务最常用的性能度量是“均方误差”(mean squarederror)

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

1. 错误率与精度

错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例。

2. 查准率、查全率与F1

查准率与查全率是一对矛盾的度量。

3. ROC与AUC

ROC,受试者工作特征,ReceiverOperating Characteristic

若一个学习器的ROC曲线被另一个学习器的曲线完全包住,则可断言后者的性能优于前者;若两个学习器的ROC曲线发生交叉,则难以一般性的断言两者孰优孰劣,此时较为合理的判据是比较ROC曲线下的面积,即AUC(Area Under ROC Curve)。

4. 代价敏感错误率和代价曲线

在非均等代价下,我们所希望的不再是简单地最小化错误次数,而是希望最小化“总体代价”。设第0类作为正类,第1类作为反类,令D+与D-分别代表D的正例子集和反例子集,则“代价敏感”错误率为


四、比较检验

统计假设检验(hypothesistest)为我们进行学习器性能比较提供了重要依据。

更多请参见《机器学习》和《应用数理统计》。

五、偏差与方差

为了了解学习算法为什么具有这样的性能,我们使用“偏差-方差分解”(bias-variance decomposition)来解释学习算法泛化性能。

对测试样本x,令yDx在数据集中的标记,y为x的真实标记,f(x;D)为训练集D上学得模型f在x上的预测输出。以回归任务为例,学习算法的期望预测为,使用样本数相同的不同训练集产生的方差为,噪声为,期望输出与真实标记的差别称为偏差(bias),即。为便于讨论,假定噪声期望为零,即。通过简单的多项式展开合并,可对算法的期望泛化误差进行分解:于是,,也就是说,泛化误差可分解为偏差、方差与噪声之和。

偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。偏差-方差分解说明,泛化能力是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。

一般来说,偏差与方差是冲突的,称为偏差-方差窘境(bias-variancedilemma)。


1 0
原创粉丝点击