请考虑以下情形: 我有一批数据,其特征和标签具有相似的分布。
说类似4000000个否定标签和25000个肯定标签
由于它的高度不平衡集,我对否定标签进行了欠采样,因此我的训练集(从批次之一中抽取)现在包含25000个正标签和500000个负标签。
现在,我正在尝试在训练后(从另一批次生成)从测试集中测量精度和召回率 我正在使用XGBoost和30个估算器。
现在,如果我全部使用40000000个否定标签,则得到的精度回忆得分(0.1精度和0.1回忆在0.7阈值下)要比使用子集说500000个否定标签(0.4精度和0.1回忆在0.3时更差)阈值)。
发生这种情况的潜在原因是什么?
我的想法很少:
当否定标签的数量增加这么多时,是否还有其他方法可以确定为什么我的召回率越来越低?
有什么方法可以比较分布吗?
我的欠采样训练是否是这个原因?
答案 0 :(得分:1)
要了解这一点,我们首先需要了解如何计算精度和召回率。为此,我将使用以下变量:
P-阳性总数
N-底片总数
TP-真实阳性数
TN-真实负数
FP-误报次数
FN-假阴性数
重要的是要注意:
P = TP + FN
N = TN + FP
现在,精度为TP /(TP + FP)
回忆是TP /(TP + FN),因此是TP / P。
精度为TP /(TP + FN)+ TN /(TN + FP),因此(TP + TN)/(P + N)
在您的数据不平衡的情况下,我们有N >> P。
现在想象一些随机模型。我们通常可以说,对于这样的模型,准确度约为50%,但这仅在数据平衡的情况下才可以。在您的情况下,FP和TN的数量往往会比TP和FN的数量更多,因为随机选择数据更有可能返回负样本。
因此,我们可以确定负样本N /(T + N)越多,我们得到的FP和TN就越多。也就是说,只要您的模型无法选择正确的标签,它就会从P和N中选择一个随机标签,并且大多数情况下会是N。
回顾 FP是精度的分母?这意味着精度也随着N /(T + N)的增加而降低。
回想一下,我们的推导中既没有FP也没有TN,因此随着N /(T + N)的增加,变化可能不会太大。从您的示例中可以看出,它显然保持不变。
因此,我将尝试使数据平衡以获得更好的结果。比例应为1:1.5。 您还可以使用F1分数等其他指标,该指标结合了精确度和召回率,以更好地了解性能。
还要检查here on how to combat imbalance data的其他几点