机器学习--模型评估与选择 (总结)

过拟合和欠拟合

	过拟合:就是学习器把训练样本学习的太好了,可能会把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质。例如,当训练样本中的树叶中都有锯齿时,学习器就会判断没有锯齿的叶子不是属于树叶这一种类。过拟合会导致泛化能力下降。
	欠拟合:与过拟合相对,就是学习器对训练样本认识的不够准确,只学习到了样本的部分特征。例如,当训练样本是树叶,他们有共性(颜色、形状等),但是由于欠拟合,导致学习器会把所有绿色的事物判断为树叶。

常用评估方法

1、留出法
留出法(hold-out)直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即D=S∪T,S∩T=Ø,在S上训练出模型后,用T测试其误差,作为对泛化误差的估计。
假定数据集D包含500个样本,S包含300个样本,T包含200个样本。使用S训练后,如果模型在T上有70个样本分类错误,那错误率就是70/200=35%,对应的精度就是65%(精度+错误率=1)。
2、交叉验证法
2.1交叉验证法(cross validation)先将数据集D划分为k个大小的互斥子集,即D=D1UD2UD3UD3U…Dk,DiUDj=Ø(i!=j)。每个子集Di都尽可能的保持数据分布的一致性,即从D中通过分层采样得到。然后每次用k-1个子集的并集作为训练集,剩下的一个子集作为测试集。这样就可以获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是k个测试结果的均值。由于交叉验证法的评估结果的稳定性和保真性很大程度上取决于,同常把交叉验证法称为“k折交叉验证”(k-fold cross validation).
2.2留一法(Leave-One-Out),简称LOO.留一法不受随机样本划分方式的影响,因为m个样本只有唯一的方式划分为m个子集,每个子集包含一个样本.因为留一法使用的训练集比初始数据集只少了一个样本,这使得在绝大多数情况下,留一法的评估结果与整个数据集D的评估结果相近.因此留一法比较准确.但是当数据集D比较大时,训练模型的开销也会比较大,例如数据集包含1000万个样本,则需训练1000万个模型.
3、自助法
由于在留出法和交叉验证法中,由于有一部分样本进行测试,所以进行测评的模型所使用的训练集比D小(只是D的一部分),可能会导致最终估计的结果偏差.留一法虽然受训练样本规模的变化影响较小,但是计算复杂度比较高.为了减少训练样本规模不同造成的影响,同时比较高效的进行实验估计,可以使用自助法.
自助法(bootstrapping)时以自助采样法(bootstrap)为基础,给定包含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’用作测试集.这样就会使实际的评估模型与期望评估模型都是用m个样本,为我们仍会没有在训练集中出现的数据用于测试.测试结果又叫"包外测试:(out-of-estimate).
自助法在数据集较小,难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大好处.然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差,所以,在初始数据量足够时,留出法和交叉验证法更常用一些.
可以根据不同的使用场景和需求选用不同的评估策略.

猜你喜欢

转载自blog.csdn.net/weixin_45187794/article/details/107347863
今日推荐