gpt4 book ai didi

validation - 在分类中,如果数据集不平衡,如何验证模型?

转载 作者:行者123 更新时间:2023-11-30 08:37:12 25 4
gpt4 key购买 nike

我是机器学习的初学者,正在尝试解决分类问题。我正在处理一个非常不平衡(顺序)的数据集(20k 条记录中只有 2% 的正数),并且我正在使用 LSTM/GRU 在 python 中使用 Tensorflow 进行建模。

这就是我所做的:加载数据。将数据集分成3个数据集:A 代表培训 (70%)B 代表验证 (15%)C 用于测试 (15%);对于每个数据集(A、B、C),对阳性类别进行过采样,以便将阳性百分比从 2% 增加到 30%。这给了我 3 个更加平衡的新数据集:A'、B'、C'

然后我使用 GRU 使用数据集 A’ 训练我的模型。

我的目标:在我的测试集 C 上获得最高的 F 分数(有更好的指标吗?据我所知,F 分数取决于数据分布,即数据的倾斜程度。如果我的实际负数与正数比率增加然后精度下降(由于假阴性增加),尽管召回率或多或少保持不变;因此我的总体 F 分数下降)

我的问题是:

我可以在训练时使用交叉熵作为我的成本函数吗? (我不会改变成本函数以使对误报更加敏感,因为我已经对我的阳性进行了过度采样)

我必须使用哪个数据集进行验证? B还是B'?我应该使用什么指标来绘制验证学习曲线以了解模型过度拟合的点? (目前我正在使用 A'(训练)和 B'(验证)的准确性来查看是否存在过度拟合。但似乎 B' 的准确性和 B 的 f 分数相关性不大。因为最终我想要C 上的 f 得分良好,这意味着我需要在 B 上给出良好的 f 得分的模型)

预先感谢您的宝贵时间!问候。

最佳答案

(以下是一个很长的评论,而不是一个完整的答案 - 我需要考虑一下。我希望今晚/明天我能找到时间更新它)

哪个集合应该是测试集?

我们使用测试集来估计真实分数(错误/准确度/F1分数/召回率/精度/...),因此如果我们在所有可能的样本上测试模型,我们将得到的分数(这将样本量非常大;例如,如果您收到 32x32 像素的灰度图像,则为 256^1024\大约 10^2466)。

因此您采用 C 进行测试,而不是 C'。

哪个集合应该是验证集?

我们使用验证集来避免测试集过度拟合。通常用于提前停止。如果分数是优化目标,则应该是 B(而不是 B')。如果分数有所不同,您可能需要考虑两者如何齐头并进(例如,当优化目标变得更好时,分数是否也会变得更好?)。如果它们在很多情况下并不齐头并进,您应该调整优化目标。

您有 F1 分数,并且正在考虑使用交叉熵作为优化目标。交叉熵忽略类别,因此您可以平衡类别。

编辑:考虑一下,我会以 B 上的 F1 分数作为停止标准。其他选择也可能有效,但这似乎最有意义,因为 F1 分数应该最大化

应该使用哪一组作为训练集?

如果你选择 A,你会遇到这样的问题:你的网络学会总是预测更常见的类别。因此你必须选 A'。

关于validation - 在分类中,如果数据集不平衡,如何验证模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44901135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com