目录

概要

描述

分化

拆分验证

拆分数据

自举验证

包装器拆分验证

包装器-X-验证

输入

输出

参数

教程流程

为什么要验证模型

使用交叉验证验证模型

使用端口将结果从训练传递到测试子流程

使用批处理属性拆分训练数据

1.K-Fold 交叉验证概念

2.举例说明


概要

此运算符执行交叉验证以估计学习模型的统计性能。

描述

它主要用于估计模型(由特定学习操作员学习)在实践中执行的准确程度。

交叉验证运算符是嵌套运算符。它有两个子流程:训练子流程和测试子流程。训练子流程用于训练模型。然后,在测试子流程中应用经过训练的模型。模型的性能是在测试阶段测量的。

输入 ExampleSet 被划分为 k 个大小相等的子集。在 k 个子集中,保留单个子集作为测试数据集(即测试子进程的输入)。剩余的 k - 1 个子集用作训练数据集(即训练子进程的输入)。然后重复交叉验证过程 k 次,每个 k 个子集仅使用一次作为测试数据。对 k 次迭代的 k 个结果求平均值(或以其他方式组合)以生成单个估计值。可以使用折叠数参数调整值 k

对模型在独立测试集上的性能的评估可以很好地估计未见过的数据集上的性能。它还显示是否发生“过拟合”。这意味着模型可以很好地表示测试数据,但对于新数据,它不能很好地泛化。因此,测试数据的性能可能会差得多。

分化

拆分验证

此运算符类似于交叉验证运算符,但仅将数据拆分为一个训练集和一个测试集。因此,它类似于交叉验证的一次迭代。

拆分数据

此运算符将示例集拆分为不同的子集。它可用于手动执行验证。

自举验证

此运算符类似于交叉验证运算符。引导验证运算符不是将输入 ExampleSet 拆分为不同的子集,而是使用引导采样来获取训练数据。自举采样是使用替换进行采样。

包装器拆分验证

此运算符类似于拆分验证运算符。它具有一个附加的属性加权子进程,用于单独评估属性加权方法。

包装器-X-验证

此运算符类似于交叉验证运算符。它具有一个附加的属性加权子进程,用于单独评估属性加权方法。

输入

  • 示例集(数据表)

    此输入端口接收示例集以应用交叉验证。

输出

  • 模型 (模型)

    此端口提供在整个示例集上训练的预测模型。请注意,仅当您确实需要此型号时,才应连接此端口,否则将跳过生成。

  • 性能 (IOObject)

    这是一个可扩展的端口。可以将任何性能向量(性能运算符的结果)连接到内部测试子进程的结果端口。交叉验证运算符的性能输出端口提供折叠迭代次数上性能的平均值。

  • 示例集(数据表)

    此端口返回作为输入给出的相同示例集。

  • 测试结果集(数据表)

    如果连接了内部测试子进程的测试集结果端口,则此端口仅提供示例集。如果是这样,测试集将合并到一个示例集,并由此端口提供。例如,使用此输出端口,可以使用“应用模型运算符”的结果获取标记的测试集。

参数

  • split_on_batch_attribute

    如果启用此参数,请使用具有特殊角色“batch”的属性对数据进行分区,而不是随机拆分数据。这使您可以控制用于在每个折叠中训练模型的确切示例。在这种情况下,所有其他拆分参数都不可用。

    范围:

  • leave_one_out

    如果启用此参数,则测试集(即测试子进程的输入)只是原始示例集中的一个示例。其余示例用作训练数据。重复此操作,以便将示例集中的每个示例用作一次测试数据。因此,它被重复“n”次,其中“n”是示例集中的示例总数。交叉验证可能需要很长时间,因为训练和测试子流程的重复次数与示例的数量一样多。如果设置为 true,则折叠数参数不可用。

    范围:

  • number_of_folds

    此参数指定示例集应划分的折叠数(子集数)。每个子集具有相等数量的示例。此外,将发生的迭代次数与折叠次数相同。如果连接了模型输出端口,则对所有示例再次重复训练子流程以构建最终模型。

    范围:

  • sampling_type

    交叉验证运算符可以使用多种类型的采样来构建子集。以下选项可用:

    • linear_sampling:线性采样将 ExampleSet 划分为多个分区,而不更改示例的顺序。创建具有连续示例的子集。
    • shuffled_sampling:随机抽样会构建示例集的随机子集。随机选择示例以制作子集。
    • stratified_sampling:分层抽样会构建随机子集。它确保子集中的类分布(由标签 Attribute 定义)与整个 ExampleSet 中的类分布相同。例如,在二项分类的情况下,分层抽样会构建随机子集,以便每个子集包含标签属性的两个值的大致相同比例。
    • 自动:自动模式默认使用分层采样。如果它不适用,例如,如果 ExampleSet 不包含标称标签,则将使用随机抽样。

    范围:

  • use_local_random_seed

    此参数指示是否应使用局部随机种子来随机化子集的示例。使用相同的局部随机种子值将产生相同的子集。更改此参数的值会更改示例的随机化方式,因此子集将具有不同的示例集。仅当选择了随机抽样或分层采样时,此参数才可用。它不可用于线性采样,因为它不需要随机化,示例按顺序选择。

    范围:

  • local_random_seed

    如果选中使用本地随机种子参数,则此参数将确定本地随机种子。如果使用相同的值,则每次都会创建相同的子集。

    范围:

  • enable_parallel_execution

    此参数允许并行执行内部进程。如果遇到内存问题,请禁用并行执行。

    范围:

教程流程

为什么要验证模型

本教程过程说明了为什么始终必须在独立数据集上验证学习模型的原因。

从“样本”文件夹中检索“声纳”数据集。拆分数据运算符将其拆分为两个不同的子集(示例为 90% 和 10%)。决策树在较大的数据集(称为训练数据)上进行训练。

决策树同时应用于训练数据和测试数据,并计算两者的性能。在此之下,交叉验证运算符用于以更复杂的方式计算声纳数据上决策树的性能。

所有计算的性能都将传递到流程的结果端口:

训练数据的性能:准确性相对较高,测试数据的性能为86.63%:准确性仅为61.90%。这表明决策树经过训练,可以很好地拟合训练数据,但在测试数据上的表现更差。这种效应称为“过拟合”。交叉验证的性能:准确率为 62.12 % +/- 9.81%。交叉验证不仅可以很好地估计模型在看不见的数据上的性能,还可以很好地估计此估计的标准偏差。上面提到的测试数据性能属于此估计值,而训练数据的性能高于此值,并受“过拟合”的影响。

使用交叉验证验证模型

本教程过程显示了“示例”文件夹中“成交”数据集上交叉验证运算符的基本用法。

交叉验证运算符将示例集划分为 3 个子集。采样类型参数设置为线性采样,因此子集将具有连续的示例(检查 ID 属性)。决策树在交叉验证运算符的训练子流程内的 3 个子集中的 2 个子集上进行训练。

然后,在测试子进程中的其余子集上计算决策树的性能。

重复 3 次,以便每个子集用作一次测试集。

计算出的性能在三次迭代中取平均值,并传递到流程的结果端口。此外,在所有示例中训练的决策树也会传递到结果端口。合并的测试集(交叉验证运算符的测试结果集输出端口)是 Process 的第三个结果。

使用交叉验证运算符的参数。折叠数参数控制子集数,将输入 ExampleSet 划分为。因此,它也是交叉验证的迭代次数。采样类型更改了子集的创建方式。

如果使用线性采样,则子集中示例的 ID 将是连续值。如果使用随机抽样,则子集中示例的 ID 将被随机化。如果使用分层抽样,示例的 ID 也是随机的,但子集中的类分布将与整个“交易”数据集中的类分布几乎相同。

使用端口将结果从训练传递到测试子流程

此过程显示通过端口的使用情况,以通过 RapidMiner 对象从交叉验证运算符的训练传递到测试子进程。

在此过程中,在训练线性回归之前执行属性选择。属性权重将传递到测试子流程。此外,还使用两个不同的性能运算符来计算模型的性能。它们的结果连接到测试子进程的可扩展性能端口。

这两种性能在交叉验证的 10 次迭代中取平均值,并传递到流程的结果端口。

使用批处理属性拆分训练数据

此过程显示交叉验证运算符的批处理拆分属性参数的用法。

从“样本”文件夹中检索泰坦尼克号训练数据集,并将“乘客类别属性”设置为“批处理”角色。当交叉验证运算符的批处理属性拆分参数设置为 true 时,数据集将拆分为三个子集。每个子集只有一个乘客舱位的示例。

在训练子流程中,2 个子集用于训练决策树。在测试子流程中,剩余的子集用于测试决策树。

因此,决策树在两个乘客类别的所有乘客上进行训练,并在其余类别上进行测试。所有三种组合的性能均被平均并传送到过程的结果端口。

应用

1.K-Fold 交叉验证概念

在机器学习建模过程中,通行的做法通常是将数据分为训练集和测试集。测试集是与训练独立的数据,完全不参与训练,用于最终模型的评估。在训练过程中,经常会出现过拟合的问题,就是模型可以很好的匹配训练数据,却不能很好在预测训练集外的数据。如果此时就使用测试数据来调整模型参数,就相当于在训练时已知部分测试数据的信息,会影响最终评估结果的准确性。通常的做法是在训练数据再中分出一部分做为验证(Validation)数据,用来评估模型的训练效果。

验证数据取自训练数据,但不参与训练,这样可以相对客观的评估模型对于训练集之外数据的匹配程度。模型在验证数据中的评估常用的是交叉验证,又称循环验证。它将原始数据分成K组(K-Fold),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型。这K个模型分别在验证集中评估结果,最后的误差MSE(Mean Squared Error)加和平均就得到交叉验证误差。交叉验证有效利用了有限的数据,并且评估结果能够尽可能接近模型在测试集上的表现,可以做为模型优化的指标使用。

2.举例说明

下面举一个具体的例子来说明K-Fold的过程,比如如下的数据

[0.1, 0.2, 0.3, 0.4, 0.5, 0.6]

分为K=3组后

Fold1: [0.5, 0.2] Fold2: [0.1, 0.3] Fold3: [0.4, 0.6]

交叉验证的时会使用如下三个模型,分别进行训练和测试,每个测试集误差MSE加和平均就得到了交叉验证的总评分

Model1: Trained on Fold1 + Fold2, Tested on Fold3

Model2: Trained on Fold2 + Fold3, Tested on Fold1

Model3: Trained on Fold1 + Fold3, Tested on Fold2

rapidminer Cross Validation(交叉检验)手册相关推荐

  1. 交叉验证(cross validation)是什么?K折交叉验证(k-fold crossValidation)是什么?

    交叉验证(cross validation)是什么?K折交叉验证(k-fold crossValidation)是什么? 交叉验证(cross validation)是什么?  交叉验证是一种模型的验 ...

  2. 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集

    机器学习 数据挖掘 数据集划分 训练集 验证集 测试集 Q:如何将数据集划分为测试数据集和训练数据集? A:three ways: 1.像sklearn一样,提供一个将数据集切分成训练集和测试集的函数 ...

  3. R语言构建xgboost模型:交叉验证(cross validation)训练xgboost模型,配置自定义的损失函数评估函数并使用交叉验证训练xgboost模型

    R语言构建xgboost模型:交叉验证(cross validation)训练xgboost模型,配置自定义的损失函数(loss function).评估函数(evaluation function) ...

  4. R语言构建xgboost模型:交叉验证(cross validation)训练xgboost模型

    R语言构建xgboost模型:交叉验证(cross validation)训练xgboost模型 目录

  5. python可视化多个机器学习模型在训练集(train set)上交叉验证(cross validation)的AUC值、可视化模型效能

    python可视化多个机器学习模型在训练集(train set)上交叉验证(cross validation)的AUC值.可视化模型效能 # 所有的模型中填写的参数都是通过randomsearchcv ...

  6. R使用交叉验证(cross validation)进行机器学习模型性能评估

    R使用交叉验证(cross validation)进行机器学习模型性能评估 目录 R使用交叉验证(cross validation)进行机器学习模型性能评估

  7. Keras训练神经网络进行分类并进行交叉验证(Cross Validation)

    Keras训练神经网络进行分类并进行交叉验证(Cross Validation) 交叉验证是在机器学习建立模型和验证模型参数时常用的办法.交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切 ...

  8. 使用hyperopt(Bayesian optimization)为xgboost模型挑选最优参数进行模型构建、by Cross Validation

    使用hyperopt(Bayesian optimization)为xgboost模型挑选最优参数进行模型构建.by Cross Validation Hyperopt本质上是一种贝叶斯优化(Baye ...

  9. 使用hyperopt(Bayesian optimization)为lightGBM模型挑选最优参数进行模型构建、by Cross Validation

    使用hyperopt为lightGBM模型挑选最优参数进行模型构建.by Cross Validation lightGBM是微软开发的xgboost的改进版本.已经成为各种的比赛的标配工具,尤其是类 ...

  10. 通过交叉验证(Cross Validation)KFold绘制ROC曲线并选出最优模型进行模型评估、测试、包含分类指标、校准曲线、混淆矩阵等

    通过交叉验证(Cross Validation,CV)KFold绘制ROC曲线并选出最优模型进行模型评估.测试.包含分类指标.校准曲线.混淆矩阵等 Cross Validation cross val ...

最新文章

  1. 线程里面添加参数,并解决多个参数问题[原创]
  2. 一种 Web 应用程序级别的 Cluster 实现技术
  3. Monte carlo
  4. 苹果mac电脑修改并快速linux网络配置
  5. c++全局变量的正确声明
  6. JavaScript中的的面向对象中的一些知识
  7. 银泰上云 打造“从-1到0再到1”数字化成长逻辑
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的手表销售系统
  9. python 读取命令行输入_python读取命令行参数的方法
  10. js按钮频繁提交解决方案:
  11. PDF文件拆分为图片
  12. WinPE下修改本地系统注册表
  13. Ubuntu 部署 Flask + WSGI + Nginx 详解
  14. ubuntu nginx 安装和启动和自启动
  15. 3000字作文 小孩调皮
  16. 手动删除oracle数据库
  17. 读书笔记:《枪炮、病菌与钢铁》与《1984》
  18. 【DAPDM 四】--- dapm机制深入分析(下篇)
  19. Model-Agnostic Meta-Learning (MAML)模型介绍及算法详解
  20. 【基于Arduino APDS9960 传感器的手势控制非接触式电梯】

热门文章

  1. nfc加密卡pm3和pm5区别_为了省门禁卡的钱,买了NFC读卡器,到底值不值
  2. Java代码审计详解
  3. 互补滤波系数_四元数+互补滤波 - osc_5aksh307的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. python 金融量化盘后分析系统V0.48
  5. Android简单实现高德地图显示及定位
  6. bim计算机考试,“全国BIM技能等级考试”三级(建筑设计)样题
  7. Android函数插桩
  8. CUDA版本与显卡驱动匹配
  9. STM32F103C8T6 红外测距模块测量距离(SHARP GP2Y0A21YK0F)使用CubeMx生成HAL库(ADC)
  10. 远程数据传输使用的几个软件