机器学习模型的评估

写在开头:个人认为还是理论最重要!还是理论最重要!还是理论最重要!重要事情说三遍!
本人是基于周志华《机器学习》来学习的!相当于也是个读书笔记!

(能力有限,如有不当,敬请谅解)

很显而易见的,当我们训练好了一个学习器的模型后,我们怎么才能知道这个模型是好是坏呢?模型的评估方法就应运而生了!

一、基本知识

首先认识评估方式之前,需要熟悉两个基本的概念

1、误差

误差 理解起来很容易,在机器学习中,就是描述模型出现错误的程度的一个量。是学习器的实际预测输出与样本真实输出之间的差异。
经验误差 是学习器在训练集上的误差称为"训练误差" (training error) 或"经验误差" (empirical error)
泛化误差 是在新样本上的误差称为"泛化误差"。
在这里插入图片描述

2、过拟合(overfitting)

当学习器把训练样本学得"太好"了的时候,很可能巳经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降这种现象在机器学习中称为"过拟合" (overfitting)。

二、评估方法

只有一个包含m个样例的数据集 D = ( X 1 , Y 1 ) , ( X 2 , Y 2 ) , ( X m , Y m ) D=(X1 , Y1) , (X2 , Y2) , … (Xm,Ym) 既要训练,又要测试,即通过对数据集D进行适当的处理,从中产生出训练集S和测试集T。

1、留出法

“留出法” (hold-out) 直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,在训练集S上练出模型后,用D来评估其测试误差,作为对泛化误差的估计。

2、交叉验证法

“交叉验证法” (cross alidation) 将数据集D划分为k个大小相似的互斥子集,每个子集尽可能保持数据分布的一致性,即通过分层采样得到后,每次用k-1个子集的并集作为训练集。余下的那个子集作为测试集,这样就可获得k组训练与测试集,从而可进行k次训练和测试,最终返回的是测试结果的均值。

3、自助法

给定包含m个样本的数据集,我们对它进行采样产生数据集D|:每次随机从样本中挑选一个样本,将其拷贝放入D|,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次,我们就得到了包含m个样本的数据集D|,这就是自助采样的结果。
lim m + 1 1 m ) m = 1 e = 0.368 \lim_{m\rightarrow+\infty} (1-\frac{1}{m})^m=\frac{1}{e} =0.368
即通过自助来样,初始数据集 中约有 36.8% 的样本未出现在采样数据集 D|中。

三、调参与最终模型

在进行模型评估与选择时,除了要对适用学习算法进行选择,还需对算法参数进行设定,这就是通常所说的"参数调节"或简称"调参" (parameter tuning)。
现实中常用的做法是对每个参数选定一个范围和变化步长,例如在 [0,0.2] 范围内以 0.05 为步长,则实际要评估的候选参数值有 5个,最终是从这5个候选值中产生选定值。

发布了27 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42192910/article/details/84669212