美文网首页Data science
机器学习交叉验证的数据分割算法

机器学习交叉验证的数据分割算法

作者: 刘小白DOER | 来源:发表于2022-01-26 12:25 被阅读0次

    交叉验证(cross validation) 是验证分类器性能的一种统计分析方法,基本的思路是在某种意义下将原始数据进行分组,一部分作为训练集,另一部分作为验证集。首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型,以此来作为评价分类器的性能指标。常用的交叉验证方法包括简单交叉验证、K折交叉验证、留一法交叉验证、留P法交叉验证、用户自定义数据集划分等。

    下面以iris数据集为例,特征大小为150*4,目标大小为150*1。

1、简单交叉验证train_test_split

    简单交叉验证是将原始数据随机分为两组,一组作为训练集,另一组作为验证集。使用sklearn.model_selection中的类train_test_split来完成。可以通过设定明确的 random_state ,设置每次生成的随机数相同,使得伪随机生成器的结果可以重复。

2、K折交叉验证KFold

    KFold 将所有的样例划分为 k 个组,称为折叠 (fold) (如果 k = n, 这等价于 Leave One Out(留一) 策略),都具有相同的大小。预测函数学习时使用 k - 1 个折叠中的数据,最后一个剩下的折叠会用于测试。使用sklearn.model_selection import 中的类KFold来完成。

3、留一法交叉验证

    LeaveOneOut (或 LOO) 是一个简单的交叉验证。每个学习集都是通过除了一个样本以外的所有样本创建的,测试集是被留下的样本。 因此,对于 n 个样本,我们有 n 个不同的训练集和 n 个不同的测试集。这种交叉验证程序不会浪费太多数据,因为只有一个样本是从训练集中删除掉的。使用sklearn.model_selection 中的类LeaveOneOut 。

4、留P法交叉验证

    LeavePOut 与 LeaveOneOut 非常相似,因为它通过从整个集合中删除 p 个样本来创建所有可能的 训练/测试集。对于 n 个样本,这产生了 {n \choose p} 个 训练-测试 对。与 LeaveOneOut 和 KFold 不同,当 p > 1 时,测试集会重叠。使用sklearn.model_selection 中的类LeavePOut 。

5、用户自定义数据集划分ShuffleSplit

    ShuffleSplit迭代器将会生成一个用户给定数量的独立的训练/测试数据划分,样例首先被打散然后划分为一对训练测试集合。使用sklearn.model_selection中的类ShuffleSplit。

    基于类标签、具有分层的交叉验证迭代器解决样本不平衡问题。 使用StratifiedKFold和Stratified-ShuffleSplit 分层抽样。 一些分类问题在目标类别的分布上可能表现出很大的不平衡性,例如可能会出现比正样本多数倍的负样本。在这种情况下,建议采用如 StratifiedKFold 和 StratifiedShuffleSplit 中实现的分层抽样方法,确保相对的类别频率在每个训练和验证折叠中大致保留。

6、分层K折交叉验证StratifiedKFold

    StratifiedKFold**是 k-fold 的变种,会返回 stratified(分层) 的折叠。每个小集合中, 各个类别的样例比例大致和完整数据集中相同。使用sklearn.model_selection 中的类StratifiedKFold 。

7、分层随机交叉验证StratifiedShuffleSplit

    StratifiedShuffleSplit**是 ShuffleSplit 的一个变种,会返回直接的划分,比如创建一个划分,但是划分中每个类的比例和完整数据集中的相同。

8、时间序列分割TimeSeriesSplit

    TimeSeriesSplit是 k-fold 的一个变体,它首先返回 k 折作为训练数据集,并且 (k+1) 折作为测试数据集。 请注意,与标准的交叉验证方法不同,连续的训练集是超越前者的超集。 另外,它将所有的剩余数据添加到第一个训练分区,它总是用来训练模型。

    用于分组数据的交叉验证迭代器进一步测试模型的泛化能力。留出一组特定的不属于测试集和训练集的数据。有时我们想知道在一组特定的 groups 上训练的模型是否能很好地适用于看不见的 group 。为了衡量这一点,我们需要确保验证对象中的所有样本来自配对训练折叠中完全没有表示的组。

9、GroupKFold

    GroupKFold是 k-fold 的变体,它确保同一个 group 在测试和训练集中都不被表示。

10、LeaveOneGroupOut

    LeaveOneGroupOut是LeaveOneOut的变体,为每个训练/测试集删除与 一 组有关的样本。

11、LeavePGroupsOut

    LeavePGroupsOut类似于 LeaveOneGroupOut ,但为每个训练/测试集删除与 P 组有关的样本。

12、GroupShuffleSplit

    GroupShuffleSplit迭代器是 ShuffleSplit 和 LeavePGroupsOut 的组合,它生成一个随机划分分区的序列,其中为每个分组提供了一个组子集。

相关文章

  • 机器学习交叉验证的数据分割算法

    交叉验证(cross validation) 是验证分类器性能的一种统计分析方法,基本的思路是在某种意义下将原...

  • 算法工程师面试

    1、编程语言 2、基本算法 3、传统的机器学习算法 4、常见机器学习问题 过拟合问题、交叉验证问题、模型融合、...

  • 数据集的分割与sklearn实现

    今天聊一下数据集分割的问题,在使用机器学习算法的时候,我们需要对原始数据集进行分割,分为训练集、验证集、测试集。训...

  • 如何进行变量筛选和特征选择(三)?交叉验证

    01 模型简介 交叉验证是机器学习中常用的一种验证和选择模型的方法,常用的交叉验证方法是K折交叉验证。将原始数据...

  • 饭店流量预测

    lightgbm 模型 修改参数 交叉验证 【机器学习】Cross-Validation(交叉验证)详解. 在机器...

  • 交叉验证

    交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进...

  • R 交叉验证①

    什么是交叉验证?在机器学习中,交叉验证是一种重新采样的方法,用于模型评估,以避免在同一数据集上测试模型。交叉验证的...

  • 2018-12-28误差分析

    解决机器学习问题的推荐方法是: 1.从一个简单的算法开始,快速实现它,并在交叉验证数据的早期测试它。 2.绘制学习...

  • 2022-04-25 机器学习模型训练

    引入包 读取数据 训练和测试数据 训练集分割 交叉验证 指定f1 score 支持的scoring有 手动交叉验证...

  • 机器学习算法之交叉验证

    我们一般解决机器学习问题的步骤如下:1.拿到数据集,对数据集进行清洗。数据集清洗一般包括以下几个方面:重复值处理,...

网友评论

    本文标题:机器学习交叉验证的数据分割算法

    本文链接:https://www.haomeiwen.com/subject/eufnhrtx.html