Press "Enter" to skip to content

机器学习之模型控制

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

机器学习需要根据问题特点和已有数据来确定最好的预测模型。可以设计为三个阶段:

模拟拟合:利用 训练数据集 对模型的 普通参数 进行拟合。
模型选择:利用 验证数据集 对模型的 超参数 进行调整,刷选出性能最好的模型。
模型评价:利用 测试数据集 来评估模型在未知数据上的真实性能。

1、数据集

 

数据集在划分时,最基本的原则就是确保训练集、验证集和测试集三者两两互补相交。

 

除了互不相交之外,另一个需要注意的问题是训练、验证、测试中样例分布的一致性,也就是三个集合中正例和负例的比例应该大致相同,避免在数据集之间出现不平衡,导致给性能的评估带来偏差,从而给模型的选择造成影响。

 

2、普通参数和超参数

 

机器学习中,普通参数和超参数是两个不同的概念。普通参数就是模型的参数是对模拟的内部描述,超参数则是对模型的外部描述。举例如下:

 

 

所有a(i)都是需要拟合的普通参数, 而N则是超参数。

 

一、模型拟合

 

模拟拟合的任务是计算未知的参数,但是它还要解决一个更重要的问题,就是拟合参数前确定模型的形式。这涉及到如下两个方面:

模拟的合理性很大程度上取决于解决问题本身的特征
模型的复杂度也要和问题的复杂度匹配

机器学习中,对这两个方面的理解催生了两个基本的规律:无免费午餐定理和奥卡姆剃刀原则。

 

1.1、无免费午餐定理

 

无免费午餐(No Free Lunch, NFL)定理证明了任何模型在所有问题上的性能都是相同的,其总误差和模型本身是没有关系的。也就是每种问题出现的概率是均等的,每个模型用于解决所有问题时,其平均意义上的性能是一样的。

 

NFL定理最重要的指导意义在于先验知识的使用,也就是具体问题具体分析。机器学习的目标不是放之四海而皆准的通用模型,而是关于特定问题有针对性的解决方案。脱离问题的实际情况谈论模型优劣是没有意义的,只有让模型的特点和问题的特征相匹配,模型才能发挥最大的作用。

 

1.2、奥卡姆剃刀定理

 

奥卡姆剃刀可以理解为如果多种模型都能够同等程度地符合一个问题的观测结果,那就应该选择其中使用假设最少的,也就是最简单的模型。在结果大致相同的情况下,模型就越简单越好。

 

奥卡姆剃刀本质上关注的就是模型复杂度。机器学习学到的模型应该能够识别出数据背后的模式,也就是数据特征和数据类别之间的关系。当模型过于复杂时,特征和类别之间的关系中所有的细枝末节都被捕捉,主要的趋势却没有得到重视,就会出现 过拟合 的发生。反过来,如果模型过于简单,它不仅没有捕捉细微的相关性,来主要趋势本身都没有办法抓住,这样的现象就是 欠拟合 。

 

1.3、模型误差

 

模型的误差包括三个部分:偏差,方差,噪声。

 

噪声叫做不可约误差,是待学习问题本身的难度,并不能通过模型训练加以改善,噪声来源于数据自身的不确定性。

 

偏差和方差之间的折中与模型自身的特性息息相关。偏差来源于模型中错误假设,偏差过高就意味着模型所代表的特征和分类结果之间的关系是错误的,对应着欠拟合现象;方差则来源于对训练数据波动的过度敏感,方差过高意味着模型对数据中的随机噪声也进行了建模,对应着过拟合现象。

 

一般来说,模型的复杂度越低,其偏差也就越高;模型的复杂度越高,其方差也就越高。

 

二、模型的验证

 

模型本身的泛化性能,就是模型对未知数据的预测能力,这是机器学习的核心问题。在一个问题的学习中,不同的模型在训练集上具有类似的性能,这时就需要模型验证来从备选中做出合适的选择。

 

评估泛化性能时,最重要的依据就是模型在训练数据集上的精度。定性而论,模型在训练集上的精度既不能太低,也不能太高。太低会导致欠拟合,太高会导致过拟合。

 

通用验证的方法是直接估计泛化误差,估计的方式则是数据的重采样,充分利用有限的数据来估算模型的泛化性能。

 

2.1、留出法

 

留出法:随机采用一部分数据作为训练集,再采样出另一部分数据作为验证集。

 

留出法的一个问题是它所留出的,用于模型验证的数据是固定不变的。即使在满足分布一致性的条件下,训练集和验证集的划分方式也并不是唯一的。通过留出法计算出来的泛化误差本质上也是个随机变量,单次留出得到的估计结果就相当于对这个分布进行一次采样,这单次采样的结果没有办法体现出随机变量的分布特性。所以,在使用留出法时一般采用多次随机划分,在不同的训练/验证集上评估模型性能再取平均值的方式,来得到更精确的泛化误差估计。

 

2.2、k折交叉验证法

 

k 折交叉验证将原始数据集随机划分为 k 个相同大小的子集,并进行 k 轮验证。每一轮验证都选择一个子集作为验证集,而将剩余的 k−1 个子样本用作训练集。由于每一轮中选择的验证集都互不相同,每一轮验证得到的结果也是不同的,k 个结果的均值就是对泛化性能的最终估计值。

 

k折交叉验证法中k值的选取直接决定估计结果的精确程度。较小的k值意味着更少的数据被用于训练模型,这将导致每一轮估计得到的结果更加集中,但都会偏离真正的泛化误差,也就是方差较小而偏差较大。随着k值不断增加,偏差不断减小,而方差不断变大。

 

2.3、留一法

 

k 折交叉验证一个特例是 k 等于原始数据集的容量 N,此时每一轮中只有一个样本被用做测试,不同轮次中的训练集则几乎完全一致。这个特例被称为留一法(leave-one-out)。留一法得到的是关于真实泛化误差的近似无偏的估计,其结果通常被认为较为准确。但它的缺点是需要训练的模型数量和原始数据集的样本容量是相等的,当数据量较大时,使用留一法无疑会带来庞大的计算开销。

 

三、模型的评估

 

用训练数据集拟合出备选模型的参数,再用验证数据集选出最优模型后,接下来就到了是骡子是马牵出来溜溜,也就是模型评估的阶段了。模型评估中使用的是测试数据集,通过衡量模型在从未出现过的数据上的性能来估计模型的泛化特性。

 

二分类任务是最重要也最基础的机器学习任务,其最直观的性能度量指标就是分类的准确率。给定一组训练数据,算法不可能完全正确地划分所有实例,而是会将一部分正例误判为反例,也会将一部分反例误判为正例。分类正确的样本占样本总数的比例是精度(accuracy),分类错误的样本占样本总数的比例是错误率(error rate),两者之和等于 1。

 

机器学习采用了混淆矩阵(confusion matrix),也叫列联表(contingency table)来对不同的划分结果加以区分。

 

 

如上图所示,在混淆矩阵中,所有测试样例被分为真正例(true positive, TP)、假正例(false positive, FP)、假反例(false negative, FN)、真反例(true negative, TN)四大类。

 

查准率 P也叫正例预测值(positive predictive value),表示的是真正例占所有预测结果为正例的样例的比值,也就是模型预测结果的准确程度。

 

查全率 R也叫真正例率(true positive rate, TPR),表示的是真正例占所有真实情况为正例的样例的比值,也就是模型对真实正例的判断能力。

 

通俗地说,查准率要求把尽可能少的真实负例判定为预测正例,查全率则要求把尽可能少的真实正例判定为预测负例。

 

将查准率和查全率画在同一个平面直角坐标系内,得到的就是 P-R 曲线 ,它表示了模型可以同时达到的查准率和查全率。如果一个模型的 P-R 曲线能够完全包住另一个模型的曲线,就意味着前者全面地优于后者。可是更普遍的情况是有些模型查全性能较优,而另一些模型查准性能较优,这就需要根据任务本身的特点来加以选择了。

 

除了 P-R 曲线外,另一个对机器学习模型性能进行可视化的方式是受试者工作特征曲线(receiver operating characteristic curve),简称 ROC 曲线 。

 

ROC 曲线描述的是真正例率和假正例率之间的关系,也就是收益(真正例)与代价(假正例)之间的关系。所谓的假正例率(false positive rate, FPR)等于假正例和所有真实反例之间的比值,其数学表达式为 ROC 空间将 FPR 定义为 X 轴,TPR 定义为 Y 轴。

 

典型的 ROC 曲线(左)与 P-R 曲线(右)如下图:

 

ROC 曲线可以用来衡量习得模型的性能。模型的 ROC 曲线越靠近左上方,其性能就越好。和 P-R 曲线一样,如果一个模型的 ROC 曲线能够完全包住另一个模型的曲线,那幺前者的性能就优于后者。

 

四、总结

 

本次主要涵盖了机器学习中模型的设计、验证、评估的整体方式和方法。

 

后面继续学习机器学习中各种详细的数学模型介绍

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注