Validation Weka中的交叉验证

Validation Weka中的交叉验证,validation,weka,fold,Validation,Weka,Fold,从我所读到的内容来看,我一直认为交叉验证是这样执行的: 在k-折叠交叉验证中,原始样本是随机的 划分为k个子样本。在k个子样本中,一个子样本 作为测试模型的验证数据保留,并且 剩余k− 1子样本用作训练数据。这个 交叉验证过程然后重复k次(折叠),并 每个k个子样本仅使用一次作为验证数据。这个 然后可以平均(或以其他方式组合)褶皱的k结果 作出单一的估计 所以建立了k个模型,最后一个是这些模型的平均值。 在Weka指南中,每个模型总是使用所有数据集构建的。那么Weka中的交叉验证是如何工作的呢?

从我所读到的内容来看,我一直认为交叉验证是这样执行的:

在k-折叠交叉验证中,原始样本是随机的 划分为k个子样本。在k个子样本中,一个子样本 作为测试模型的验证数据保留,并且 剩余k− 1子样本用作训练数据。这个 交叉验证过程然后重复k次(折叠),并 每个k个子样本仅使用一次作为验证数据。这个 然后可以平均(或以其他方式组合)褶皱的k结果 作出单一的估计

所以建立了k个模型,最后一个是这些模型的平均值。
在Weka指南中,每个模型总是使用所有数据集构建的。那么Weka中的交叉验证是如何工作的呢?模型是根据所有数据建立的,并且“交叉验证”意味着创建k个褶皱,然后对每个褶皱进行评估,最终输出结果只是褶皱的平均结果?

Weka遵循您在这里提到的传统k-褶皱交叉验证。您拥有完整的数据集,然后将其划分为k个相等的集合(k1,k2,…,k10,例如10倍CV),没有重叠。然后在第一次运行时,将k1到k9作为训练集,并开发一个模型。在k10上使用该模型以获得性能。接下来是k1到k8和k10作为训练集。从中开发一个模型,并将其应用于k9以获得性能。这样,使用所有折叠,其中每个折叠最多1次用作测试集


然后,Weka对性能进行平均,并将其显示在输出窗格上。

因此,这里还是一个场景:您有100个标记数据

使用训练集

  • weka将获取100个标记数据
  • 它将应用一种算法从这100个数据构建分类器
  • 它再次应用该分类器 这100个数据
  • 它为您提供了 分类器(应用于从中提取的相同100个数据 (已开发)
使用10倍CV

  • Weka获取100个标记数据

  • 它生产10套大小相等的产品。每组分为两组:90个标记数据用于训练,10个标记数据用于测试

  • 它从90个标记数据生成一个具有算法的分类器,并将其应用于集合1的10个测试数据

  • 它对集合2到10执行相同的操作,并生成9个以上的分类器

  • 它平均10个相同大小(90个训练集和10个测试集)的10个分类器的性能


如果这能回答您的问题,请告诉我。

我想我已经解决了。以(例如)
weka.classifiers.rules.OneR-x 10-d outmodel.xxx
。这有两个作用:

  • 它基于完整的数据集创建一个模型。这是写入
    outmodel.xxx
    的模型。该模型未被用作交叉验证的一部分
  • 然后运行交叉验证。交叉验证包括(在本例中)创建10个新模型,并对数据段进行培训和测试,如前所述。关键是交叉验证中使用的模型是临时的,仅用于生成统计数据。它们不等同于或不用于提供给用户的模型
    我会在评论中回答,但我的声誉仍然不允许我:

    除了Rushdi接受的答案外,我想强调的是,为交叉验证折叠集创建的模型在执行性能测量并取平均值后都会被丢弃


    无论您的测试选项如何,生成的模型始终基于完整的训练集。因为M-T-A要求更新引用的链接,所以它是:。这是一位WEKA维护人员的回答,他指出了我写的内容。

    一旦我们通过将数据划分为10个部分完成了10个交叉验证,并创建决策树并进行评估,WEKA所做的就是在整个数据集上第十一次运行算法。这将产生一个我们可以在实践中部署的分类器。我们使用10倍交叉验证来得到评估结果和误差估计,最后我们再进行一次分类,得到实际的分类器用于实践。
    在第k次交叉验证期间,我们将有不同的决策树,但最终的决策树是在整个数据集上创建的。CV用于查看是否存在过度拟合或较大差异问题。

    好的,但通过这种方式如何构建最终模型?平均有10个模型是基于CV构建的吗?如果是,这意味着什么:始终使用所有数据集构建?如果在Weka explorer的“分类”选项卡上选择10倍交叉验证,则得到的模型就是10个9-1分割得到的模型。您将不会有10个单独的模型,而是一个单独的模型。是的,你可以从Weka(不特别是Weka,它适用于一般的10倍CV理论)那里得到,因为它贯穿了整个数据集。很抱歉,我一点也不明白……那么,从“使用训练集”和“交叉验证”中选择的模型在如何使用模型方面有什么区别呢?最终的模型是一样的!当您使用“使用训练集”时,如果您有100个实例,Weka将使用您定义的“分类算法”从所有100个实例构建模型。然后,为了进行测试,它使用相同的100个实例。因此,通常打开的“使用训练集”提供了良好的精确召回和FME测量。但当你使用10倍CV时,它会用10倍不同的折叠构建10个不同的模型,并给出平均精度的召回fmeasure。有时有必要使用“训练集”,但在大多数情况下,10倍cv更好。这两种不同设置的最终模型从来都不一样。所以,请告诉我我是否理解得很好:使用CV,我们构建了10个与真实模型“相似”的模型,即buil