链客,专为开发者而生,有问必答!
此文章来自区块链技术社区,未经允许拒绝转载。
正确使用模型评估、模型选择和算法选择技术无论是对机器学习学术研究还是工业场景应用都至关重要。本文将对这三个任务的相关技术进行回顾,并就每种技术的理论和实证研究的主要优缺点进行讨论。文章还将就机器学习算法中的超参数调优给出尽可能的建议,用以实现最佳的算法效果。文中内容涉及很多常用方法,比如模型评估和选择中的Holdout方法等;介绍了bootstrap技术的不同变体,通过正态逼近得到置信区间来衡量性能估计(performance estimates)的不确定性;在讨论偏差-方差(bias-variance)折中方案时,对比了留一交叉验证法(leave-one-out cross validation)和k-fold交叉验证法,并提供了在k-fold交叉验证中最优k值的选择技巧。
- 引言:基本模型评价术语和技术
机器学习已经逐渐深入到了我们生活的中心。无论是学术研究还是商业应用,共同的出发点都是希望做出“好”的预测。把模型拟合到训练数据上是一方面,但怎么才能知道模型在未知数据上的泛化性能呢?如何针对手头的问题在不同算法间选择出最好的模型呢?模型评估当然不会是机器学习通向的终点。在处理任何数据之前,我们都希望可以提前计划并针对任务选择合适的技术。在这篇文章中,我们就将讨论这些技术的优劣,并通过一个典型的机器学习工作流程,展示其应用的方法。
▌1.1 性能估计:泛化性能与模型选择
机器学习模型的性能估计流程可以分为以下三步:
将训练数据输入到学习算法中,以学习模型;
用模型预测测试集标签;
计算模型在测试集上的错误率,推导出模型预测精度。
然而,当要实现不同的目标时,模型性能估计就不像我们总结的那样简单了。也许我们应该从另一个角度来回答前面的问题:“我们为什么要关心性能估计?” 理想情况下,模型的估计性能说明了它在未知数据上的表现如何——在机器学习的应用或新算法的开发中,对未来数据进行预测通常是我们想要解决的主要问题。
通常,机器学习需要大量的实验才能实现最好的算法效果,例如,学习算法的内部参数(所谓的超参数)的调优。由于我们要从这个模型集合中选择最好的模型,所以就需要找到一种方法来评估不同模型的性能,以便对它们进行排序。除了算法调优之外,通常我们还需要尝试多种可以在特定条件下实现最优的单一算法。在比较不同的算法时,我们主要关注预测和计算性能。
总结来说,我们进行模型预测性能评估的主要原因有以下三点:
我们想要估计模型的泛化性能,即模型对未知数据的预测性能。
我们希望通过调整学习算法和从给定的假设空间中选择最佳的执行模型来提高预测性能。
我们想要确定最适合于手头问题的机器学习算法;因此,我们需要比较不同的算法,从算法的假设空间中选择最佳性能的算法和最佳的执行模型。
尽管上面列出的这三个子任务都需要评估模型的性能,但是却需要不同的方法。我们将在本文中讨论处理这些子任务的不同方法。
模型的绝对性能估计或许是机器学习中最具挑战性的任务之一。为了方便比较不同模型的性能,我们可以在选择估计它们的有偏性能(biased performance),当然前提是偏差对所有的模型造成的影响相同。对模型性能的估计偏差并不会影响其相对排名顺序。比如有三种模型,其准确率如下:
M2: 75% > M1: 70% > M3: 65%,
即使增加10%的悲观偏差,仍然不影响排序。
M2: 65% > M1: 60% > M3: 55%。
▌1.2 假设和术语
模型评估是一个复杂的课题。为了确保不过多地偏离核心信息,我们会先做一些假设,并列举一些稍后会用到的技术术语。
i.i.d.(independent and identically distributed): 独立同分布假设。即所有样本都是从相同的概率分布中抽取出来的,并且在统计上相互独立。但时态数据(temporal date)或时间序列(time-series data)数据不满足该假设。
监督学习和分类:本文主要讨论监督学习,这是机器学习的一个子类。虽然许多概念也适用于回归分析,但我们将把重点放在分类上,即将类别目标标签分配给训练和测试样本。
0-1损失和预测准确率:预测准确率可以用正确预测的数量除以样本总量n得到,其公式可以表达为:
其中错误率ERR是数据集S中n 个样本0-1损失的期望值
0-1损失定义为:
其中是第i个实际的类标签,是第i个样本预测的类标签。我们的目标是学习到一个泛化性能良好的模型,使得其预测准确率最高,或者说作出错误预测的概率最低:
其中D是生成的数据集服从的分布,x是训练样本特征向量,y是对应的标签。
偏差:在本文中,偏差一词是指统计偏差(而不是机器学习系统中的偏差)。一般而言,估计值(estimator)
的偏差是期望值
与真实值
之差。
所以,若偏差
,则
就是
的无偏估计。再准确一点,预测偏差是模型的期望预测准确率和实际预测准确率的差。而我们在训练集上计算得到的准确率就是绝对准确率的乐观有偏估计,因为它过高估计了模型的准确率。
方差:方差就是估计值
与其期望值
的统计方差:
方差是一个模型预测性能变化程度的度量,如果我们多次重复学习过程,就会会发现模型在训练集上的表现存在小的波动。模型构建过程对这些波动的敏感性越高,方差就越大。
最后,模型、假设、分类器、学习算法和参数的术语在本文中的定义如下:
目标函数:f在预测建模时,我们需要对特定过程建模,然后去学习或逼近一个特定的未知函数。目标函数f(x)=y就是我们想要对其建模的真实函数f(·)。
假设:假设实际上是一个确定的函数,我们相信(或希望)该函数与我们想要建模的真实函数非常相似。比如在对垃圾邮件进行分类时,我们提出的分类规则可以将垃圾邮件与非垃圾邮件区分开。
模型:在机器学习领域中,假设和模型这两个术语常常可以互换使用。而在其他领域中,这些术语往往代表有不同的含义:一个假设可以认为是研究人员“有根据的猜测”,而模型则是用来检验这个假设的猜想的表现。
学习算法:我们的目标是学习或逼近目标函数,学习算法则是一组试图用训练数据集对目标函数进行建模的指令。每个学习算法都会有一个假设空间,即一组可能的假设的集合,这个集合通过系统地描述最终假设(formulating the final hypotheses)对未知的目标函数进行建模。
超参数:超参数是机器学习算法的调优参数(tuning parameters),例如,逻