精华内容
下载资源
问答
  • 在机器学习中,泛化误差(预测误差)是用于算法性能度量最常用的指标,然而由于数据的分布未知,泛化误差不能被直接计算,实际中常常通过各种形式的交叉验证方法来估计泛化误差。详细地分析了泛化误差的各交叉验证...
  • 在机器学习算法的假设稳定条件下,得到了交叉验证推广误差的多项式的界;在一致假设稳定情形下,利用McDiarmid不等式获得了其指数的界。两种结果为交叉验证的稳定性提供了依据,补充了学习算法稳定条件下界的结论。
  • 训练误差和泛化误差、K折交叉验证

    千次阅读 2020-05-29 08:42:59
    我们需要区分训练误差(training error)和泛化误差(generalization error)。通俗来讲,前者指模型在训练数据集上表现出的误差,后者指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的...

    我们需要区分训练误差(training error)和泛化误差(generalization error)。通俗来讲,前者指模型在训练数据集上表现出的误差,后者指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。计算训练误差和泛化误差可以使用之前介绍过的损失函数,例如线性回归用到的平方损失函数和softmax回归用到的交叉熵损失函数。

    让我们以高考为例来直观地解释训练误差和泛化误差这两个概念。训练误差可以认为是做往年高考试题(训练题)时的错误率,泛化误差则可以通过真正参加高考(测试题)时的答题错误率来近似。假设训练题和测试题都随机采样于一个未知的依照相同考纲的巨大试题库。如果让一名未学习中学知识的小学生去答题,那么测试题和训练题的答题错误率可能很相近。但如果换成一名反复练习训练题的高三备考生答题,即使在训练题上做到了错误率为0,也不代表真实的高考成绩会如此。

    在机器学习里,我们通常假设训练数据集(训练题)和测试数据集(测试题)里的每一个样本都是从同一个概率分布中相互独立地生成的。基于该独立同分布假设,给定任意一个机器学习模型(含参数),它的训练误差的期望和泛化误差都是一样的。例如,如果我们将模型参数设成随机值(小学生),那么训练误差和泛化误差会非常相近。但我们从前面几节中已经了解到,模型的参数是通过在训练数据集上训练模型而学习出的,参数的选择依据了最小化训练误差(高三备考生)。所以,训练误差的期望小于或等于泛化误差。也就是说,一般情况下,由训练数据集学到的模型参数会使模型在训练数据集上的表现优于或等于在测试数据集上的表现。由于无法从训练误差估计泛化误差,一味地降低训练误差并不意味着泛化误差一定会降低。

    机器学习模型应关注降低泛化误差。

     

    K折交叉验证:

    由于验证数据集不参与模型训练,当训练数据不够用时,预留大量的验证数据显得太奢侈。一种改善的方法是K折交叉验证(K-fold cross-validation)。在K折交叉验证中,我们把原始训练数据集分割成K个不重合的子数据集,然后我们做K次模型训练和验证。每一次,我们使用一个子数据集验证模型,并使用其他K−1个子数据集来训练模型。在这K次训练和验证中,每次用来验证模型的子数据集都不同。最后,我们对这K次训练误差和验证误差分别求平均。

     

    资料来源:《动手学深度学习》

    展开全文
  • 交叉验证

    2018-07-19 20:58:47
    二 常见交叉验证CV的方法如下: 2.1 Hold-Out Method(数据集拆分:一般法) 2.2 Double Cross Validation(2-fold Cross Validation,记为2-CV)双交叉验证 2.3 K-fold Cross Validation(K-CV) K折交叉验证 2.4 ...

    一 训练集 vs 测试集

    在模式识别(pattern recognition)与机器学习(machine learning)的相关研究中,
    经常会将数据集分为训练集(training set)跟测试集(testing set)这两个子集,
    前者用以建立模型(model),后者则用来评估该模型对未知样本进行预测时的精确度(泛化能力:generalization ability)。

    将完整的数据集分为训练集跟测试集,必须遵守如下要点:
    1、只有训练集才可以用在模型的训练过程中,测试集则必须在模型完成之后才被用来评估模型优劣的依据。
    2、训练集中样本数量必须够多,一般至少大于总样本数的50%。
    3、两组子集必须从完整集合中均匀取样。
    均匀取样的目的是希望减少训练集/测试集与完整集合之间的偏差(bias),但却也不易做到。
    一般的作法是随机取样,当样本数量足够时,便可达到均匀取样的效果,然而随机也正是此作法的盲点,也是经常是可以在数据上做手脚的地方。
    当辨识率不理想时,便重新取样一组训练集/ 测试集,直到测试集的识别率满意为止,但严格来说这样便算是作弊了。

    二 常见交叉验证CV的方法如下:

    交叉验证(CrossValidation)方法思想简介
    交叉验证(Cross Validation)简称为 CV。
    CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(dataset)进行分组,
    一部分做为训练集(train set),另一部分做为验证集(validation set),
    首训练集对分类器进行训练,在利用验证集来测试训练得到的模型(model), 以此来做为评价分类器的性能指标。
    2.1 Hold-Out Method(数据集拆分:一般法)
       将原始数据随机分为两组,一组做为训练集,一组做为验证集; 
       利用训练集训练分类器,然后利用验证集验证模型,记录最后的分类准确率为此Hold-OutMethod下分类器的性能指标. 
       此种方法的好处的处理简单,只需随机把原始数据分为两组即可,其实严格意义来说Hold-Out Method并不能算是CV, 
       因为这种方法没有达到交叉的思想,由于是随机的将原始数据分组, 
       所以最后验证集分类准确率的高低与原始数据的分组有很大的关系,所以这种方法得到的结果其实并不具有说服性.
    
    2.2 Double Cross Validation(2-fold Cross Validation,记为2-CV)双交叉验证
       做法是将数据集分成两个相等大小的子集,进行两回合的分类器训练。 
       在第一回合中,一个子集作为training set, 另一个便作为testing set; 
       在第二回合中,则将training set与testing set对换后,再次训练分类器, 
       而其中我们比较关心的是两次testing sets的辨识率。 
       不过在实务上2-CV并不常用,主要原因是training set样本数太少,通常不足以代表母体样本的分布, 
           导致testing阶段辨识率容易出现明显落差。 
       此外,2-CV中分子集的变异度大,往往无法达到“实 验过程必须可以被复制”的要求。
    
    2.3 K-fold Cross Validation(K-CV) K折交叉验证
    将原始数据分成K组(一般是均分),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集, 
    这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标. 
    K一般大于等于2,实际操作时一般从3开始取,只有在原始数据集合数据量小的时候才会尝试取2. 
    K-CV可以有效的避免过学习以及欠学习状态的发生,最后得到的结果也比较具有说服性.
    
    2.4 Leave-One-Out Cross Validation(记为LOO-CV) 留一法交叉验证
    如果设原始数据有N个样本,那么LOO-CV就是N-CV,即每个样本单独作为验证集,其余的N-1个样本作为训练集, 
    所以LOO-CV会得到N个模型,用这N个模型最终的验证集的分类准确率的平均数作为此下LOO-CV分类器的性能指标. 
    相比于前面的K-CV,LOO-CV有两个明显的优点:
        ①.每一回合中几乎所有的样本皆用于训练模型,因此最接近原始样本的分布,这样评估所得的结果比较可靠。
        ②.实验过程中没有随机因素会影响实验数据,确保实验过程是可以被复制的。 
    

    三 使用Cross-Validation时常犯的错误

    由于实验室许多研究都有用到 evolutionary algorithms(EA 改进算法)与 classifiers(分类器), 
        所使用的 fitness function 中通常都有用到 classifier 的辨识率,然而把cross-validation用错的案例还不少。 
        前面说过,只有 training data 才可以用于 model 的建构, 
        所以只有 training data 的辨识率才可以用在 fitness function 中。 
    
    EA 是训练过程用来调整 model 最佳参数的方法,所以只有在EA结束演化后, model 参数已经固定了, 
        这时候才可以使用 test data。 
        那 EA 跟 cross-validation 要如何搭配呢? 
        Cross-validation 的本质是用来估测(estimate)某个 classification method 对 
        一组数据集的 generalization error(泛化误差), 不是用来设计 classifier 的方法。
        所以 cross-validation 不能用在 EA的 fitness function 中。 
        因为与 fitness function 有关的样本都属于 training set,那试问哪些样本才是 testset 呢? 
        如果某个 fitness function 中用了cross-validation 的 training 或 test 辨识率, 
        那么这样的实验方法已经不能称为 cross-validation 了。 
    
    EA 与 k-CV 正确的搭配方法,是将 dataset 分成 k 等份的 subsets 后, 
        每次取1份 subset(子集) 作为 testset,其余 k-1 份作为 training set, 
        并且将该组 trainingset 套用到 EA 的 fitness function 计算中 
        (至于该 trainingset 如何进一步利用则没有限制)。 
        因此,正确的 k-CV 会进行共 k 次的 EA 演化,建立 k 个classifiers。 
        而 k-CV 的 test 辨识率,则是 k 组 testsets 对应到 EA 训练所得的 k 个 classifiers 辨识率之平均值。
    
    展开全文
  • k-fold交叉验证

    2020-06-15 16:51:41
    这K个模型分别在验证集中评估结果,最后的误差MSE(Mean Squared Error)加和平均就得到交叉验证误差。交叉验证有效利用了有限的数据,并且评估结果能够尽可能接近模型在测试集上的表现,可以做为模型优化的指标使用。...

    交叉验证的目的

    当数据量较少时,交叉验证可以评估模型的泛化能力,从而进行模型选择

    交叉验证的基本思想

    它将原始数据分成K组(K-Fold),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型。这K个模型分别在验证集中评估结果,最后的误差MSE(Mean Squared Error)加和平均就得到交叉验证误差。交叉验证有效利用了有限的数据,并且评估结果能够尽可能接近模型在测试集上的表现,可以做为模型优化的指标使用。

    参考文章
    参考文章1
    参考文章2

    展开全文
  • 交叉验证(简单交叉验证、k折交叉验证、留一法)

    万次阅读 多人点赞 2016-05-11 11:57:50
    文章介绍了三种交叉验证的方法,在做分类时很常用。

    针对经验风险最小化算法的过拟合的问题,给出交叉验证的方法,这个方法在做分类问题时很常用:

    一:简单的交叉验证的步骤如下:

    1、 从全部的训练数据 S中随机选择 中随机选择 s的样例作为训练集 train,剩余的 作为测试集 作为测试集 test。

    2、 通过对测试集训练 ,得到假设函数或者模型 。
    3、 在测试集对每一个样本根据假设函数或者模型,得到训练集的类标,求出分类正确率。

    4,选择具有最大分类率的模型或者假设。

    这种方法称为 hold -out cross validation 或者称为简单交叉验证。由于测试集和训练集是分开的,就避免了过拟合的现象

    二:k折交叉验证 k-fold cross validation

    1、 将全部训练集 S分成 k个不相交的子集,假设 S中的训练样例个数为 m,那么每一个子 集有 m/k 个训练样例,,相应的子集称作 {s1,s2,…,sk}。
    2、每次从分好的子集中里面,拿出一个作为测试集,其它k-1个作为训练集

    3、根据训练训练出模型或者假设函数。
    4、 把这个模型放到测试集上,得到分类率。

    5、计算k次求得的分类率的平均值,作为该模型或者假设函数的真实分类率。

    这个方法充分利用了所有样本。但计算比较繁琐,需要训练k次,测试k次。


    三:留一法  leave-one-out cross validation

    留一法就是每次只留下一个样本做测试集,其它样本做训练集,如果有k个样本,则需要训练k次,测试k次。

    留一发计算最繁琐,但样本利用率最高。适合于小样本的情况。

    展开全文
  • k值交叉验证 交叉验证集Cross-Validation also referred to as out of sampling technique is an essential element of a data science project. It is a resampling procedure used to evaluate machine learning ...
  • 经验误差与泛化误差、偏差与方差、欠拟合与过拟合、交叉验证 主要内容 经验误差与泛化误差 偏差与方差 欠拟合与过拟合 交叉验证 一、经验误差(训练误差)与泛化误差   经验误差(训练误差):模型在训练集上的...
  • 泛化误差交叉验证和特征选择就分别在不同的层次上解决了这个问题。 泛化误差 要评价一个预测算法的优劣,标准无非就是比较预测结果和真实结果的差别,差别越小,这个算法性能就越好,由此给出了经验风险的...
  • 1.训练误差与测试误差 机器学习的目的就是使学习得到的模型不仅对训练数据有好的表现能力,同时也要对未知数据具有很好的预测能力,因此给定损失函数的情况下,我们可以得到模型的训练误差(训练集)和测试误差...
  • 交叉验证是什么? 在模型建立中,通常有两个数据集:训练集(train)和测试集(test)。训练集用来训练模型;测试集是完全不参与训练的数据,仅仅用来观测测试效果的数据。 一般情况下,训练的结果对于训练集的拟合...
  • 交叉验证等验证方法

    千次阅读 2017-04-03 22:19:04
    1.“交叉验证法”(cross validation)先将数据集D划分为k个大小相似的互斥子集,即D=D1并D2并D3…并Dk,每个子集之间没有交集。 2.然后每次用k-1个子集的并集作为训练集,余下的那个作为测试集,这样得到k组训练/...
  • 模型的选择方法为:1、使用训练集训练出10 个模型2、用10个模型分别对交叉验证集计算得出交叉验证误差(代价函数的值)3、选取代价函数值最小的模型4、用步骤3中选出的模型对测试集计算得出推广误差(代价函数的值)...
  • 交叉验证介绍

    2020-02-14 21:05:04
    交叉验证(Cross Validation,有时简称cv) 基本介绍: 1、简单交叉验证 将数据随机打乱分成两份,一部分作为训练集,另一部分作为测试集。(比例一般为训练集70%,测试集30%)。使用训练集在各种条件下训练模型,...
  • 交叉验证 CrossValidation K折交叉验证

    千次阅读 2018-01-02 18:05:06
    在机器学习或者深度学习的过程中,划分数据集是一个十分重要的工作,我们在进行交叉验证的时候,可以有效的减少过拟合的情况,尽可能的利用数据的全部的有效特征来进行训练模型。
  • 机器学习 | 交叉验证

    千次阅读 2019-05-19 23:52:31
    3 Python实现交叉验证3.1 简单交叉验证3.2 S折交叉验证3.3 留一交叉验证4 参考 1 什么是交叉验证? 1.1 思想 基本思想: 将原始数据(dataset)进行分组,一部分做为训练集来训练模型,另一部分做为测试集来评价...
  • 十折交叉验证

    千次阅读 2019-06-22 16:27:21
    交叉验证主要分成以下几类:1)k-folder cross-validation:k个子集,每个子集均做一次测试集,其余的作为训练集。交叉验证重复k次,每次选择一个子集作为测试集,并将k次的平均交叉验证识别正确率作为结果。优点:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,380
精华内容 10,152
关键字:

交叉验证误差