我有一个非常不平衡的数据集。 我正在尝试使用 k-fold 并尝试适应。但我很困惑它会产生什么区别,因为我们将仅在原始数据集上测试它?
我已经执行了分割、一次热编码和缩放数据。此外,我使用 smote-enn 对其进行了重新采样。
你的问题对我来说缺乏一些细节,并且由于我没有 50 声誉来发表评论并要求澄清,这似乎是关于使用 k 折交叉验证的一般问题。
当您创建机器学习模型时,您希望通过训练和测试过程来评估您的模型是否能够很好地拟合数据。因此,我们将数据分为训练集和测试集,然后拟合模型并计算评估指标,在逻辑回归的情况下可以是准确度、精确度、召回率、混淆矩阵等。
但是,您最终只评估模型一次,但您希望更加确定性能模型和模型设计,并且希望验证结果不依赖于数据的分割方式。这就是 k 折交叉验证的用武之地。
在 k 折交叉验证中,数据被分为多个子集(称为折叠),并在这些子集上系统地训练和测试模型。这提供了对模型性能及其参数的稳健评估。
k 折交叉验证的过程有以下步骤:
Split the Data Into K Folds:数据集被分成K个相等的部分,称为折叠,它将用于训练和测试 不同的迭代。
迭代训练和测试:模型训练K次,每次使用不同的折叠作为测试集,剩余的 作为训练集折叠。
评估指标计算:为每次迭代计算性能指标,以评估模型的性能 测试集。
平均性能:取所有迭代的指标平均值,以获得对模型性能的更可靠估计 整体表现。
从视觉上看,该过程如下所示:
迭代 | 训练折叠 | 测试折叠 |
---|---|---|
1 | 折叠2、3、4、5 | 折叠1 |
2 | 折叠 1、3、4、5 | 对折2 |
3 | 折叠1、2、4、5 | 对折3 |
4 | 折叠1、2、3、5 | 折叠4 |
5 | 折叠1、2、3、4 | 折叠5 |
K 折交叉验证是一种评估机器学习模型的技术,与单次训练-测试分割相比,可以提供更稳健、更可靠的模型性能估计。通过对数据的多个子集进行系统地训练和测试,有助于确保模型的评估更少依赖于数据的分割方式,让您对模型的泛化性和有效性更有信心。
您可以在这些网络资源上阅读有关交叉验证的更多信息: