概念
机器学习算法拥有从数据中习得规律的方法——直觉(intuitive)。模型从给到的数据集中发现潜藏的规律,这个过程称为 模型训练(training)。将经过训练的模型在另一个全新的数据集上进行测试,以求找出最优化的模型,也就是要找模型能够同时在训练和测试数据集上获得令人满意表现的最有效点。
测试误差(test error),是指模型根据新的观测值(observation)做出预测时发生的平均误差。这个新的观测值是模型未曾见过的。测试误差通常与训练误差相距甚远,而且很容易被严重低估。
随着模型复杂性的提高,训练误差会降低,因为复杂性可以帮助模型更好地学习训练数据中的各种变化,这种情况称为过 拟合(overfitting)。然而,因为测试数据是模型未曾见过的,过拟合的模型在测试样本上的表现会非常糟糕。
造成这个问题的原因,是 偏差和方差。
偏差(bias)是预测值与实际值之间的差距。
方差(variance)是预测值与预测平均值之间的差距(也就是预测值之间的离散程度)。
随着模型复杂性的提高,会发生以下情况:
拟合程度低,则偏差高,而方差低; 当复杂性提高,偏差会降低,因为复杂的模型可以适应数据点的各种行为; 但是,当参与预测的参数增多,方差也会随之提高。
模型所追求的,是平衡了误差与方差的最有效点。
模型训练过程与训练数据本身一样重要。那么我们该如何保证数据中的误差不会影响到模型训练?我们又该如何保证模型足够泛化?
重抽样(resampling)就是用于保证模型效果足够好,并且能处理得了数据中的变化。要实现这一点,就要用数据集中发现的多种规律对模型进行训练。本文将讨论这些重抽样方式。
验证集方式
验证集方式是为训练和测试进行抽样的一种简单方式。将数据分为两部分,一部分数据用于训练模型,模型从训练数据中进行学习;另一部分数据用于测试模型。
验证集方式很简单,但是也有一些缺点:
首先, 模型从训练数据学习所得,高度依赖于训练数据中所包含的观测值。如果训练数据集的观测值中包含了异常值,模型将倾向于从异常观测值中进行学习,这会影响了模型的准确性。 其次, 训练数据集中只包含整体观测值的子集。将部分观测值排除在训练之外,意味着模型将无法学习测试数据集中的差异。总体来说, 验证集误差往往会放大测试误差。
K-Fold交叉验证
上面讲了验证集方式的缺点, K-Fold交叉验证方式则能够克服这些缺点。这一方式的工作原理如下:
将数据分为“包”(fold),通常为5或10个平均的包,每个包中包含一组随机的数据点。 在第一次迭代中,用(k-1)个包对模型进行训练,并用剩下的一个包对模型进行测试。 不断重复这一过程,直到所有包都经过对模型的训练和测试。以示例来说明:
基于所有迭代的平均误差来计算模型的整体表现。
对 回归模型 来说,所有包的平均误差可以定义为:
均方误差(Mean square error),即MSE。
对 分类模型 来说,所有包的平均误差可以定义为:
分类模型的衡量指标,即AUC、召回率、精确度等。
我们可以看到,K-Fold交叉验证方式弥补了验证集方式的很多缺点。通过用每个包进行一遍训练和测试,K-Fold交叉验证在避免偏差影响模型表现方面也有总体不错的效果。
不过也可以预料到,与验证集这种简单的方式相比,交叉验证的训练次数更多,耗时也显著增加。尤其是当训练数据集很大的时候,这个问题就会非常明显。
Bootstrap抽样法
还有一种抽样方法—— Bootstrap抽样法(也称自助抽样法),这是一种灵活而强大的统计方法,可用于量化与估计量(estimator)相关的不确定性。其工作原理如下:
通过从原始数据集中重复抽取样本并放回,形成不同的数据集(即Bootstrap数据集)。而不是将原始数据重复分为多个单独的数据集。 每个Bootstrap数据集都是基于抽样再放回的方式形成的,其与原始数据集同样大。(即如果原始数据集大小为N,从中有放回的抽样N次,形成的Bootstrap数据集大小也为N) 某一观测值可能在Bootstrap样本中出现多次,也有可能完全不出现。通过一个示例来更好地理解:
在上图中包含10个观测值,Bootstrap抽样法运行如下:
原始数据集中有10个观测值。 训练数据集与原始数据集同样大,即训练在10个观测值上完成。不过,与原始数据集相比,训练数据集中的部分观测值是重复出现的。在上面这个示例中,在第一次迭代中,训练数据集中观测值2、3、9是重复的,观测值#1是不重复的。 模型训练完之后,再在未见数据上进行测试。未见数据是那些包含在原始数据集中,但不包含在训练数据集中的观测值。测试数据集,即为原始数据集中未曾被抽样到训练数据集的数据。重复以上三个步骤,抽取出第二个Bootstrap样本集并测试。以此类推,直至所有Bootstrap样本集都完成这一过程(数量通常在1000个以内)。Bootstrap的总体估计值为每个Bootstrap样本集所得估计值的平均数。
与常规的训练集-测试集分割方式相比,Bootstrap抽样的估计值方差更低,在实际应用中更有优势。
如果涉及的观测值相对较少,Bootstrap抽样也可以用于对数据集的同一观测值进行重复抽样来进行训练。
结论
本文介绍了 三种重抽样方式,总体目标都是使模型能够尽可能多的学习。为了实现这一点,需要用潜在数据集中的各种各样的数据点对模型进行训练。实践中,会采用简单的验证方式对模型进行快速验证,再使用K-fold交叉验证来强化。
参考资料:
Gareth James, Daniela Witten, Trevor Hastie, Robert Tibshirani. An Introduction to Statistical Learning : with Applications in R. New York :Springer, 2013.翻译:TalkingData
作者:Pradeep Menon
来源:Mudium
原文链接:http://towardsdatascience.com/data-science-simplified-part-12-resampling-methods-e029db77fa9c
译者注:
本文是“机器学习从入门到进阶”的最后一篇,本系列文章至此告一段落。
作为入门级的内容,本系列文章试图用最通俗的语言和示例,来介绍最基础的数据科学概念与应用,尤其适合对数据科学初感兴趣或者工作中涉及数据科学的“非专业选手”阅读。
文章翻译中如有不准确的地方,非常欢迎大家留言指出。我们会继续介绍数据科学与人工智能的相关知识,请「分享、收藏、点赞、在看」鼓励我们一下啦↓↓↓
机器学习从入门到进阶⑪丨逻辑回归
机器学习从入门到进阶⑩丨分类模型入门
机器学习从入门到进阶⑨丨回归模型的交互性与局限
TalkingData——用数据说话
每天一篇好文章,欢迎分享关注