对于分类问题,如果类变量分布不均,我们应该使用哪种技术?

机器算法验证 分类 二进制数据
2022-03-19 09:02:53

例如。如果我有一个类别变量信用评分,分为好和坏两个类别,其中 #(good) = 700 和 #(bad)= 300。我不想缩短我的数据。我应该使用哪种技术?我使用的是 SVM,但它在预测中给出的都是坏的。

3个回答

解决类不平衡问题的一种流行方法是使分类器产生偏差,使其更加关注正例。例如,这可以通过增加与将正类相对于负类进行错误分类相关的惩罚来完成。另一种方法是通过对多数类进行过采样或对少数类进行欠采样来预处理数据,以创建平衡的数据集。

但是,就您而言,类不平衡似乎不是问题。也许这是一个参数调整的问题,因为为 SVM 分类器找到最佳参数可能是一个相当乏味的过程。例如,在 RBF 内核中有两个参数:事先不知道哪个最适合给定问题;因此,必须进行某种模型选择(参数搜索)。CγCγ

在数据预处理阶段,请记住 SVM 要求每个数据实例都表示为实数向量。因此,如果存在分类属性,建议将它们转换为数值数据,使用 m 个数字表示一个 m 类属性(或将其替换为 m 个新的二进制变量)。

此外,在应用 SVM 之前缩放变量至关重要,以避免较大数值范围内的属性支配较小数值范围内的属性。

看看这篇论文

如果您在 R 中工作,请查看调整函数(包 e1071)以使用对提供的参数范围进行网格搜索来调整超参数。然后,使用 plot.tune,您可以直观地看到哪个值集的错误率较小。

围绕耗时的参数搜索有一个捷径。有一个名为“svmpath”的 R 包,它一次性计算 2 类 SVM 分类器的整个正则化路径。这是该论文的链接,该链接描述了它在做什么。

PS您可能还会发现这篇论文很有趣:获取校准的概率估计

您的班级样本量似乎并没有那么不平衡,因为您在少数班级中有 30% 的观察结果。在您的情况下,逻辑回归应该表现良好。根据进入模型的预测变量的数量,您可能会考虑对参数估计进行某种惩罚,例如 ridge (L2) 或 lasso (L1)。有关非常不平衡类问题的概述,请参阅 Cramer (1999), The Statistician, 48: 85-94 ( PDF )。

我不熟悉信用评分技术,但我发现一些论文建议您可以将 SVM 与加权类一起使用,例如Support Vector Machines for Credit Scoring: E​​xtension to Non Standard Cases作为替代方案,您可以查看使用 CART 或随机森林的提升方法(在后一种情况下,可以调整采样策略,以便在构建分类树时表示每个类)。Novak 和 LaDue 的论文讨论了GLM 与递归分区的优缺点我还发现了这篇文章,Hand 和 Vinciotti 撰写的具有不平衡班级规模的记分卡构造。

我建议对正类示例和负类示例使用不同的正则化参数 C 值(许多 SVM 包都支持这一点,并且无论如何它很容易实现)。然后使用例如交叉验证来找到两个正则化参数的良好值。

可以证明,这是渐近等效地以由 C+ 和 C- 确定的比率重新采样数据(因此重新采样而不是重新加权没有优势,它们最终得到相同的结果并且权重可以是连续的,而不是离散的,因此可以提供更好的控制)。

不要简单地选择 C+ 和 C- 来为正负模式赋予 50-50 的权重,因为“不平衡类”问题的影响强度会因数据集而异,因此最优 re 的强度- 权重不能先验确定。

还要记住,假阳性和假阴性成本可能不同,如果在确定 C+ 和 C- 时将这些包括在内,问题可能会自行解决。

还值得记住的是,对于某些问题,贝叶斯最优决策规则会将所有模式分配给一个类并忽略另一个,所以这不一定是坏事——它可能只是意味着模式的密度一类比另一类的模式密度低。