上海网站开发与设,做网站需要买多大空间,渭南华阴建设银行的网站是多少,嘉行传媒交叉验证的种类和原理 所有的来自https://scikit-learn.org/stable/modules/cross_validation.html#cross-validation-iterators并掺杂了自己的理解。 文章目录 前言一、基础知识1.1 交叉验证图形表示1.2 交叉验证主要类别 二、部分交叉验证函数#xff08;每类一个#xff0… 交叉验证的种类和原理 所有的来自https://scikit-learn.org/stable/modules/cross_validation.html#cross-validation-iterators并掺杂了自己的理解。 文章目录 前言一、基础知识1.1 交叉验证图形表示1.2 交叉验证主要类别 二、部分交叉验证函数每类一个2.1 Cross-validation iterators for i.i.d. datai.i.d.数据的交叉验证迭代器K-fold定义 2.2 Cross-validation iterators with stratification based on class labels基于类标签分层的交叉验证迭代器Stratified k-fold定义 2.3 Cross-validation iterators for grouped data分组数据的交叉验证迭代器Group k-fold 2.4 Cross validation of time series data时间序列数据的交叉验证Time Series Split定义 三、全部交叉验证函数总结 前言
前提假设某些数据是独立且相同分布的 i.i.d.)假设所有样本都源于同一个生成过程并且假设生成过程没有对过去生成的样本的记忆。 注意虽然i.i.d.数据是机器学习理论中的常见假设但在实践中很少成立。如果知道样本是使用瞬态过程生成的则使用时间序列感知交叉验证方案会更安全例一。同样如果我们知道生成过程具有组结构从不同受试者、实验、测量设备收集的样本则使用分组交叉验证会更安全例二。 例一:像振动信号这样的信号我们对一个信号分段截取后每一段都和之前和之后截取的数据在时间维度上是相关的所以每个片段之间不是独立且同分布的所以官网针对具有时间相关性的数据创建了相关的交叉验证时间序列感知交叉验证。 例二:从多个患者那里收集医疗数据从每个患者也可以是机器部件身上采集多个样本。在我们的示例中每个样本的患者 ID 将是其组group标识符。在这种情况下我们想知道在一组特定组上训练的模型是否能很好地泛化到看不见的组。为了衡量这一点我们需要确保测试集中的所有样本都来训练集中根本没有表示的组。 一、基础知识
1.1 交叉验证图形表示
以四倍交叉验证为例 0123每一行表示测试集和训练集的划分的一种方式。 class表示类别的个数下图显示的是3类有些交叉验证根据类别的比例划分测试集和训练集例三。 group表示从不同的组采集到的样本颜色的个数表示组的个数有些时候我们关注在一组特定组上训练的模型是否能很好地泛化到看不见的组。举个例子解释“组”的意思我们有10个人我们想要希望训练集上所用的数据来自12345678测试集上的数据来自910也就是说我们不希望测试集上的数据和训练集上的数据来自同一个人如果来自同一个人的话训练集上的信息泄漏到测试集上了模型的泛化性能会降低测试结果会偏好。
1.2 交叉验证主要类别
独立同分布数据的交叉验证迭代器对应理想情况下基于类标签分层的交叉验证迭代器对应例三分组数据的交叉验证迭代器对应例二时间序列数据的交叉验证对应例一
二、部分交叉验证函数每类一个
2.1 Cross-validation iterators for i.i.d. datai.i.d.数据的交叉验证迭代器
K-fold定义
KFold 将所有样本分成 k堆大小相等的样本堆称为折叠数如果 kn这相当于 Leave One Out 策略。分别使用其中 k-1堆样本做训练剩余的1堆做测试进行k次实验。下图是k4的情况。第0行的红色样本1堆作为测试集剩余的蓝色样本4-13堆作为训练集。可以从图中看出测试集和训练集的划分和class及grou无关但从图上可以看出每个类别数据的数量是不一样的同时也不是来自同一个group。所以存在一些问题 行标0123表示训练集和测试集划分情况K-fold这个交叉验证的class和group行只表示数据集的情况即class表示类别的个数和每个类别所占的比例group表示组的个数和每个组所占的比例。 值得注意的是该划分和class及group无关会存在在训练里没有的类别样本在测试集里有例如第0行的数据集划分就出现的了这样的问题训练集没包含所有类别的样本。 打散数据可以解决或缓解上述问题。
2.2 Cross-validation iterators with stratification based on class labels基于类标签分层的交叉验证迭代器
Stratified k-fold定义
有些分类问题的不同类别样本的比例可能不一样。 Stratified K-Fold 是 k-fold 的一种变体它根据类别的比例指导数据集的划分如下图所示。假设class行各个颜色类别的比例是136可以看到第0行第一个红色的大小占第一个类别的1/4(k4)第0行第二个红色的大小占第二个类别的1/4等。
2.3 Cross-validation iterators for grouped data分组数据的交叉验证迭代器
Group k-fold
有些情况下我们想知道在特定组别上训练出来的模型是否能很好地泛化到未见过的组别上。为了衡量这一点我们需要确保测试集中的所有样本都来自训练集中完全没有的组。 Group K-Fold 是 k-fold 的一种变体它可以确保测试集和训练集中不包含同一群体。它根据group划分测试集和训练集。 值得注意的是该划分根据group划分数据集的该划分和class无关例如第2行第一个红块包含了class行的藏青色类第一个块的所有样本训练集中完全没有这各类别的数据——这是一个很大的问题。 打散数据不一定可以解决或缓解上述问题。
2.4 Cross validation of time series data时间序列数据的交叉验证
Time Series Split定义
时间序列数据的特点是时间相近的观测值之间存在相关性自相关性。然而经典的交叉验证技术如 KFold 和 ShuffleSplit假设样本是独立且同分布的这将导致时间序列数据的训练实例和测试实例之间存在不合理的相关性导致泛化误差估计值较差。因此在 未来 观测数据上评估我们的时间序列数据模型非常重要这些观测数据至少与用于训练模型的观测数据相同。为此TimeSeriesSplit 提供了一种解决方案。
三、全部交叉验证函数
2.1 Cross-validation iterators for i.i.d. datai.i.d.数据的交叉验证迭代器 2.1.1 K-fold 2.1.2 Repeated K-Fold 2.1.3 Leave One Out (LOO) 2.1.4 Leave P Out (LPO) 2.1.5 Random permutations cross-validation a.k.a. Shuffle Split 2.2 Cross-validation iterators with stratification based on class labels基于类标签分层的交叉验证迭代器 2.2.1 Stratified k-fold 2.2.2 Stratified Shuffle Split 2.3 Cross-validation iterators for grouped data分组数据的交叉验证迭代器 2.3.1 Group k-fold) 2.3.2 StratifiedGroupKFold 2.3.3 Leave One Group Out 2.3.4 Leave P Groups Out 2.3.5 Group Shuffle Split 2.4 Cross validation of time series data时间序列数据的交叉验证 2.5 Predefined Fold-Splits / Validation-Sets预定义的折叠分割/验证集 2.6 Using cross-validation iterators to split train and test使用交叉验证迭代器拆分训练和测试
总结
基于类标签分层的交叉验证迭代器比其他缺了3个迭代器因为基于类标签分层的交叉验证迭代器不存在leave one out留一法leave p out留P法等。 要综合考虑class和group对数据划分的影响也要考虑数据集本身各方面的特点。 建议把数据集打乱多做几组交叉验证显示验证结果分析结果原因。