机器学习(一)——模型评估和选择

     机器学习学习大概一年前就开始了,最近在学深度学习,发现很多地方大同小异。特别是一些优化方法,今天将介绍机器学习中的模型评估和选择。

   1、引言

     我们都知道我们人类在进行识别一个东西的时候是经过自己的经验多得,经验就是我们不断对事物的熟悉过程,让我们能够抓住事物的区别点,让我们能够看到一个事物,我们能根据自己所积累的经验,能够快速判断出自己的正确预测结果。机器学习也正是这门学科,它致力于通过经验学习得到自身系统的改善。其中经验就是数据,也就是从数据中产生模型的算法,即学习算法。

   2、模型评估和过拟合

        2.1  经验误差与过拟合

      首先,我们将介绍几个名词:

      精度:精度=1-错误率,错误率就是对样本进行分类时,样本分类错误的比例。

      误差:在学习期内实际输出和真实输出之间的差异。我们把训练集上的误差称为训练误差和经验误差,在新的样本上称为泛化误差。

      一般我们希望选取小的泛化误差,但是我们事先不知道我们的新样本是什么样,我们想着会选取一个经验误差小,或者是对训练样本完全100%正确分类,感觉会更好,这就会导致学习器出现过拟合,在多数情况下测试表现效果不会很好。因为由于学习器太过强大,导致导致一些样本自身独有的的特征当做左右潜在样本具有的一般特征。这样就会导致泛化能力性下降,产生过拟合。过拟合的数学表现是方差增大,由于学习器学到非全局的特征,导致训练数据细微的改变导致学习器发生大的变化。同时,我们说以下欠拟合,也就是我们得到的学习器不够强大,当我我们在训练初期,我们学到的分类和真实的分类有很大的区别,也就是偏差很大,我们随着训练加深的目的就是降低这个偏差的大小。往往偏差和方差是一个冲突的,我们都希望偏差和方差都越小越好,但是往往随着偏差的缩小,我们会不断的拟合,导致过拟合的发生。

      2.2 评估方法

    通常情况下我们通过实验测试来对学习器的泛化误差进行评估并进而做出选择。为此,需要使用一种测试集来测试学习器对新样本的判别能力,把测试集的测试误差当做泛化误差。一般测试集是从样本真实分布中独立同分布采样而得到。下面介绍一些方法:

    1  留出法

      按照比例随机划出两个互斥集,缺点,因为选取分布具有不确定性,因此,需要进行多次重复选取平均值。另外,一些训练对训练样本有要求,分出来一部分测试,对训练样本与要求有差异。一般取大约2/3和4/5.剩余的样本用作测试。

   2、交叉验证法(K折交叉验证)
      原理就是首先将数据集进行划分为K个大小相似的互斥子集,每个子集尽量保持分布的一致性。然后用k-1个子集的并集作为训练集,剩下的一个子集作为测试集。k的选取通常选取为5,10,20等。

   3、留1法

    留1法是交叉验证的一个方式,也是是训练集比初始数据集至少1个样本。优点:能够达到用期望评估所有数据进行训练模型,因此,留1法的评估结果往往认为比较准确。缺点当数据比较大时,需要训练样本数据数量的模型。如果在考虑到调参将是一个巨大的工程。

   4、自助法(bootstraping)

   每次从样本样本数据中选取一个样本,然后再放回数据样本,然后在进行抽选一个。最终我们抽选与样本数据相同数量的样本,我们会发现有的样本可能会被多次抽到,有的样本永远不会被抽到。我们计算一下m次都未被抽到的概率是(1-1/m)^m,取极限以后值为1/e=0.368;我们发现通过自助法采样有大学1/3的的数据为被参与训练。优点:对数据集较小和难以划分测试集的时候很实用。另外,采用自助法能够从数据集中得到多个不同的训练集,对集成学习等方法有很大的好处。然而,自助法产生的数据集改变初始数据集的分布,会引入估计误差。

总结:在数据集足够的情况下,留出法和k折交叉验证的方法最为常用。

2.3    调参和最终模型

      大多数学习算法需要一些参数设定,参数配置不同,学习到的模块往往有很大的差异。因此在对模型进行评估和选择的时候,我们需要对学习参数进行设定,这就是平常说的调参。参数包括超级参数和模型参数。模型参数(深度学习)是通过学习自动产生多个候选参数。超级参数需要人工设定。

   给定数据集D,需要在模型估计与选择的过程中,我们需要留出一部分作为验证集,验证集是用来进行调参。不同于测试集,测试集是为了评估模型的实际泛化能力。我们在对模型选择和调参结束后,说明模型已经确定,我们需要对训练集和验证集作为训练样本进行重新训练,然后得到最终的训练好的模型。

   

猜你喜欢

转载自blog.csdn.net/qq_37100442/article/details/81868185