与训练相比,测试中不平衡数据的逻辑回归分类性能差

数据挖掘 分类 逻辑回归 阶级失衡
2021-10-05 13:56:16

我正在尝试将逻辑回归模型拟合到具有高维(约 15k)的不平衡数据集(0.5/99.5)。我使用随机森林来选择前 200 个重要特征。观测值约为 120K。

当我在基于数据集(使用 Smote 进行过采样)上拟合逻辑回归模型时,在训练 f1 时,召回率和精度都很好。但是在测试中,精度分数和 f1 都很差。我认为这是有道理的,因为在训练中有更多的少数情况,而在现实/测试中只有很小的百分比。所以算法仍然在寻找更多的少数情况,这导致了高误报。

我想知道我可以尝试什么样的方法来提高性能?

我目前正在为不平衡的数据集尝试不同的采样方法,也计划尝试 PCA。

4个回答

我怀疑原因是您的测试集中的班级平衡与您的训练集中的班级平衡不同。那会把一切都扔掉。统计机器学习方法(包括逻辑回归)所做的基本假设是测试集中数据的分布与训练集中的数据分布相匹配。SMOTE 可以摆脱它。

听起来您已经使用 SMOTE 通过添加额外的合成正面实例(即过采样少数类)来增加训练集——但您没有添加任何负面实例。因此,训练集中的类平衡可能已经从 0.5%/99.5% 转变为(比如说)10%/90%,而测试集中的类平衡仍然是 0.5%/99.5%。那很糟; 它将导致分类器过度预测正实例。对于某些分类器来说,这不是主要问题,但我预计逻辑回归可能对训练分布和测试分布之间的这种不匹配更敏感。

以下是您可以尝试的问题的两个候选解决方案:

  1. 停止使用 SMOTE。确保训练集与测试集具有相同的分布。在您的情况下,SMOTE 实际上可能是不必要的。

  2. 继续使用 SMOTE 扩充训练集,并通过移动分类阈值来补偿训练/测试不匹配。逻辑回归产生特定实例来自正类的估计概率。通常,您随后将该概率与阈值 0.5 进行比较,并使用该概率将其分类为正面或负面。您可以调整阈值以纠正该问题:替换0.50.5/k, 在哪里 k 是增强后训练集中正数与增强前正数的比率(例如,如果增强将训练集从 0.5%/99.5% 转移到 10%/90%,那么 k=10/0.5=20); 或者您可以使用交叉验证来找到最大化 F1 分数(或其他一些指标)的合适阈值。

顺便说一句,我建议您确保在逻辑回归模型中使用正则化,并使用交叉验证来选择正则化超参数。如果您的训练集中有 120K 实例,则 15K 特征没有任何问题,但您可能希望对其进行强正则化(选择较大的正则化参数)以避免过度拟合。

最后,要明白处理像你这样严重的阶级不平衡是很困难的。幸运的是,有许多可用的技术。做一些阅读和研究(包括在 Stats.SE 上),如果这些方法效果不佳,您应该能够找到可以尝试的其他方法。

数据的维度在这里是一个重要的考虑因素。拥有 15K 特征可能会导致非常糟糕的结果。您的特征维度越高,您需要的训练示例就越多。对于逻辑回归等浅层方法,一般的经验法则是使用10×#features. 因此,除非您有超过 150K 的示例,否则不建议使用 15K 特征。想想自己的数据需要回答哪些类型的问题,以及如何重塑数据以更好地回答这些问题。

此外,不建议对倾斜数据集进行逻辑回归。有许多算法非常适合处理倾斜数据集类型的问题。具体来说,异常检测算法能够学习一组标签的分布(事件未发生),然后能够在异常发生(事件发生)时进行标记。这是当一个实例足够超出学习分布的时候。您可以使用它来获取基于 p 统计测试的事件发生概率,该测试使用您设置的特征空间与学习分布中的特征空间进行对比。

最简单的方法是进行广义似然比检验 (GLRT)。但是,我认为使用基于 K-NN 的方法来处理偏斜数据集,您很可能会找到更多的运气。

我做同样危险的方法。

危险在于我们使用非线性模型(随机森林)进行特征选择并应用线性模型(逻辑回归)。

替代方案: - 尝试基于树的算法或 - 使用线性 PCA 并再次测试 Logistic 回归。

您面临三个问题,以下是我的建议:

1. 不平衡类
逻辑回归(与其他方法不同)能够很好地处理不平衡类本身。存在使所有预测围绕正确均值移动的偏差权重。但它附带以下论文中提到的一些警告。

2. 训练/测试数据中的不同类别分布
首先,在训练和测试集中拥有不同类型的数据是危险的标志。如果您的 taining 数据不能很好地代表您的测试(或更重要的)预测情况,那么即使是最好的模型也不能泛化并且可能做出糟糕的预测。无论如何,您可以在训练集中更改(或具有不同的)类分布,并且仍然可以获得无偏的预测。这可以通过对预测(或模型)进行小的修改来完成。更多信息请参见King, G., Zeng, L. (2001) 'Logistic Regression in Rare Events Data' 政治分析,9, Pp。第 137-163 页

3. 潜在的过拟合
你应该引入正则化(l1/l2 aka lasso/ridge)并进行网格搜索以找到最佳超参数。我更喜欢使用优化算法本身来找到具有解释力的最重要的特征。如果您确实需要简化优化问题,您应该只使用无监督的降维(如 PCA)。