机器学习40讲3-学习笔记
Posted bohu83
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习40讲3-学习笔记相关的知识,希望对你有一定的参考价值。
一序
本文属于极客时间机器学习40讲读书笔记系列。
机器学习需要根据问题特点和已有数据确定具有最强解释性或预测力的模型,其过程也可以划分为类似于“学习 - 练习 - 考试”这样的三个阶段,每个阶段的目标和使用的资源可以归纳如下:
-
模型拟合(model fitting):利用训练数据集(training set)对模型的普通参数进行拟合;
-
模型选择(model selection):利用验证数据集(validation set)对模型的超参数进行调整,筛选出性能最好的模型;
-
模型评价(model assessment):利用测试数据集(test set)来估计筛选出的模型在未知数据上的真实性能。
06 模型的设计准则
虽然模型拟合的任务是计算未知的参数,但它还要解决一个更重要的问题,就是在拟合参数前确定模型的形式,或者说到底要拟合哪些参数。
可模型设计涉及多方面:一方面,模型的合理性很大程度上取决于待解决问题本身的特征;另一方面,模型的复杂度也要和问题的复杂度相匹配。对这两个基本准则的理解催生了两个基本的规律,分别是无免费午餐定理和奥卡姆剃刀原则。
NFL 定理最重要的指导意义在于先验知识的使用,也就是具体问题具体分析。脱离问题的实际情况谈论模型优劣是没有意义的,只有让模型的特点和问题的特征相匹配,模型才能发挥最大的作用。
奥卡姆剃刀(Occam's Razor)可以理解为如果有多种模型都能够同等程度地符合同一个问题的观测结果,那就应该选择其中使用假设最少的,也就是最简单的模型。尽管越复杂的模型通常能得到越精确的结果,但是在结果大致相同的情况下,模型就越简单越好。
本质上说,奥卡姆剃刀的关注点是模型复杂度。机器学习学到的模型应该能够识别出数据背后的模式,也就是数据特征和数据类别之间的关系。当模型本身过于复杂时,特征和类别之间的关系中所有的细枝末节都被捕捉,主要的趋势反而在乱花渐欲迷人眼中没有得到应有的重视,这就会导致过拟合(overfitting)的发生。反过来,如果模型过于简单,它不仅没有能力捕捉细微的相关性,甚至连主要趋势本身都没办法抓住,这样的现象就是欠拟合(underfitting)。
模型的复杂度也可以从误差组成的角度一窥端倪。 模型的误差包括三个部分:偏差(bias),方差(variance)和噪声(noise)。
三者中的噪声也叫作不可约误差(irreducible error),体现的是待学习问题本身的难度,并不能通过模型的训练加以改善。除了噪声之外,偏差和方差都与模型本身有关,两者对误差的影响可以用误差的偏差 - 方差分解(bias-variance decomposition)来表示。偏差的含义是模型预测值的期望和真实结果之间的区别,如果偏差为 0,模型给出的估计的就是无偏估计。但这个概念是统计意义上的概念,它并不意味着每个预测值都与真实值吻合。方差的含义则是模型预测值的方差,也就是预测值本身的波动程度,方差越小意味着模型越有效。抛开噪声不论,模型的误差就等于偏差的平方与方差之和。
模型的复杂度越低,其偏差也就越高;模型的复杂度越高,其方差也就越高。
在实际应用中,欠拟合和过拟合是不太可能同时被抑制的,现实的考量是“两害相权取其轻”,应该优先控制欠拟合。
07 模型的验证方法
模型本身及其背后学习方法的泛化性能(generalization performance),也就是模型对未知数据的预测能力,是机器学习的核心问题。可在一个问题的学习中,往往会出现不同的模型在训练集上具有类似的性能,这时就需要利用模型验证来从这些备选中做出选择。
估计泛化性能时,最重要的依据就是模型在训练数据集上的精度(accuracy)。因为过低的正确率往往是欠拟合的征兆。高了就是过拟合,不可能具备良好的泛化特性。
既然训练误差太高了不行,太低了也不行,那么究竟到什么程度才算合适呢?关于训练误差和泛化误差的关系,理论上乐观度表示样本内误差的估计和训练误差之间的差值的估计,通用的验证方法是直接估计样本外误差,估计的手段则是数据的重采样(re-sampling),充分利用有限的数据来估算模型的泛化性能。
模型在验证集上的性能是模型选择和评估的依据。最基本的原则就是确保训练集、验证集和测试集三者两两互不相交。另一个需要注意的问题是训练 / 验证 / 测试中样例分布的一致性,也就是三个集合中正例和负例的比例应该大致一致,避免在数据集之间出现不平衡。
最简单直接的方法就是随机采样出一部分数据作为训练集,再采样出另一部分作为验证集,这种方法就是留出法(hold-out)。如果机器学习过程不使用验证步骤,那么这种划分方式就相当于拿出大部分数据做训练,剩下的全部留做测试,这也是“留出”这个名称的含义。推广一下,就是K折交叉验证法。
k折交叉验证将原始数据集随机划分为 k 个相同大小的子集,并进行 k 轮验证。每一轮验证都选择一个子集作为验证集,而将剩余的 k-1个子样本用作训练集。由于每一轮中选择的验证集都互不相同,每一轮验证得到的结果也是不同的,k 个结果的均值就是对泛化性能的最终估计值。
k折交叉验证一个特例是 k等于原始数据集的容量 N,此时每一轮中只有一个样本被用做测试,不同轮次中的训练集则几乎完全一致。这个特例被称为留一法(leave-one-out).优点:其结果通常被认为较为准确,缺点:计算量大。
另一种模型验证的方法是自助采样(bootstrap),折交叉验证执行的就是典型的不放回的重采样。自助采样执行的则是有放回的重采样。如果使用自助采样生成训练集的话,需要每次随机从原始数据集中随机抽取一个样本并拷贝到训练集中,将这个样本放回到原始数据集,再重复以上的步骤。这种放回重采样的方式会导致某些数据可能在同一轮验证中多次出现在训练集内,而另一些数据可能从头到尾都没有参与到模型的训练当中。在每一轮次的自助采样中,没有被采到的样本会作为测试数据使用。
模型验证是模型原型设计的最后完善。一旦完成了模型验证,模型就不能再做调整了。
在机器学习中,参数(parameter)和超参数(hyperparameter)是两个不同的概念。模型的参数是对模型的内部描述,超参数则是对模型的外部描述。模型的验证实际上就是通过调整模型超参数来控制模型复杂度,从而找到一组预测能力最强的模型参数。参数是模型训练出来得到的结果,超参数需要手动去设置,再用验证集去测。
08 模型的评估指标
用训练数据集拟合出备选模型的参数,再用验证数据集选出最优模型后,接下来就到模型评估的阶段了。模型评估中使用的是测试数据集,通过衡量模型在从未出现过的数据上的性能来估计模型的泛化特性。下面以简单的二分类举例。
二分类任务是最重要也最基础的机器学习任务,其最直观的性能度量指标就是分类的准确率。给定一组训练数据,分类正确的样本占样本总数的比例是精度(accuracy),分类错误的样本占样本总数的比例是错误率(error rate),两者之和等于 1。
不同的错误类型的代价不同,为了更清楚地体现出不同的错误类型的影响,机器学习采用了混淆矩阵(confusion matrix),也叫列联表(contingency table)来对不同的划分结果加以区分。
查准率 P 也叫正例预测值(positive predictive value),表示的是真正例占所有预测结果为正例的样例的比值,也就是模型预测结果的准确程度,数学表达式:
查全率 R也叫真正例率(true positive rate, TPR),表示的是真正例占所有真实情况为正例的样例的比值,也就是模型对真实正例的判断能力,数学表达式:
查准率要求把尽可能少的真实负例判定为预测正例,查全率则要求把尽可能少的真实正例判定为预测负例。一般情况下,查准率和查全率是鱼和熊掌不可兼得的一对指标。
将查准率和查全率画在同一个平面直角坐标系内,得到的就是 P-R 曲线,它表示了模型可以同时达到的查准率和查全率。如果一个模型的 P-R 曲线能够完全包住另一个模型的曲线,就意味着前者全面地优于后者。可是更普遍的情况是有些模型查全性能较优,而另一些模型查准性能较优,这就需要根据任务本身的特点来加以选择了。
另一个对机器学习模型性能进行可视化的方式是受试者工作特征曲线(receiver operating characteristic curve),简称ROC 曲线。ROC 曲线描述的是真正例率和假正例率之间的关系,也就是收益(真正例)与代价(假正例)之间的关系。
ROC 空间将 FPR 定义为 X轴,TPR 定义为 Y 轴。给定一个二元分类模型和它的阈值,就能计算出模型的 FPR 和 TPR,并映射成由 (0, 0)、(0, 1)、(1, 0)、(1, 1) 四个点围成的正方形里。在这个正方形里,从 (0, 0) 到 (1, 1) 的对角线代表了一条分界线,叫作无识别率线,它将 ROC 空间划分为左上/右下两个区域。
无识别率线描述的是随机猜测的模型,以 0.5 的概率将新来的实例判定为正例,这种模型的 TPR 和 FPR 是处处相等的。在无识别率线左上方,所有点的 TPR 都大于 FPR,意味着分类结果优于二选一的随机猜测;而在无识别率线右下方,所有点的 TPR 都小于 FPR,意味着分类结果劣于随机猜测。完美的模型体现在 ROC 空间上的 (0, 1) 点:FPR = 0 意味着没有假正例,没有负例被掺入;TPR = 1意味着没有假负例,没有正例被遗漏。
典型的 ROC 曲线(左)与 P-R 曲线(右)
ROC 曲线可以用来衡量习得模型的性能。模型的 ROC 曲线越靠近左上方,其性能就越好。和 P-R 曲线一样,如果一个模型的 ROC 曲线能够完全包住另一个模型的曲线,那么前者的性能就优于后者。但大多数情况下,模型之间并不存在全方位的碾压性优势,自然不会出现 ROC 曲线完全包含的情形。这时要评估不同模型性能的话,就需要 ROC 曲线下面积的概念。
样例样均衡,脱离实际情况空谈指标有时会误事。
以上是关于机器学习40讲3-学习笔记的主要内容,如果未能解决你的问题,请参考以下文章