机器学习学习笔记(3)----模型评估与选择

几个不熟悉的概念

1.NPC问题,P问题与NP问题

NPC问题:无多项式级算法可求解(Hamilton回路)

P问题:可以找到一个能在多项式的时间里解决它的算法

NP问题:可以在一个多项式的时间里验证一个解的问题

2.过拟合与欠拟合

过拟合指学习器把样本训练的“太好了”,把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质。如:误以为树叶必须要有锯齿,把圆叶归到非叶子那边去

欠拟合指学习器学习的不够,对训练样本的一般性质尚未学好。如:误以为绿色的都是树叶


几种评估方法

1.留出法(hold-out)

直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T.

需要注意的是,训练/测试集的划分要尽可能保持数据分布的一致性,避免至少要保持样本的类别比例相似。

从采样的角度来看待数据集的划分过程,则保留类别比例的采样方式通常称为“分层采样”。

另外需要注意的是,即便在给定训练/测试集的样本比例后,仍有多种划分方式对初试数据集D进行分割。

因此,单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要使用若干次随即划分,重复进行实验评估后取平均值作为留出法的评估结果。

留出法可能会导致一个问题:若令训练集S包含绝大多数样本,则训练出的模型可能更接近于用D训练出的模型,但由于T比较小,评估结果可能不够稳定准确;

若令测试集T多包含一些样本,则训练集S与D差别更大了。

这个问题没有完美的解决方案,常见做法是将大约2/3~4/5的样本用于训练,剩余样本用于测试。


2.交叉验证法(cross validation)

先将数据集D划分为k个大小相同的互斥子集,即D=D₁∪D₂∪....∪Dk,Di∩Dj=∅每个子集都尽量保持数据分布的一致性,即从D中分层采样得到。

然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集。

这样可以获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。


3.自助法(bootstrapping)

给定包含m个样本的数据集D,我们对它进行采样产生数据集D‘:每次随机从D中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含m个样本的数据集D‘,这就是自助采样的结果。

显然D中有一部分样本会在D’中多次出现,而另一部分样本不出现。可以做一个简单的估计,样本在m次采样中始终不被采到的概率是(1-1/m)^m,取极限为1/e,

约为0.368.即通过自助采样,初始数据集中约有36.8%的样本出现在采样数据集D‘中。于是我们可将D’用作训练集,D/D'用作测试集。这样,实际评估的模型与期望评估的模型都使用m个训练样本,而我们仍有数据总量约为1/3的,没在训练集中出现的样本用于测试。这样的测试结果,亦称“包外估计”。

注:自助法在数据集较小,难以划分有效训练/测试集时很有用。另,自助发产生的数据集改变了初试数据集的分布,这会引入估计偏差。在数据量充足时,留出法/和交叉验证法更常用一点。



你可能感兴趣的:(机器学习)