例如 如果我有一个类别变量信用评分,分为好和坏两个类别,其中#(良好)= 700和#(不良)=300。我不想缩短数据。我应该使用哪种技术?我当时使用的是SVM,但在预测中却表现不佳。
例如 如果我有一个类别变量信用评分,分为好和坏两个类别,其中#(良好)= 700和#(不良)=300。我不想缩短数据。我应该使用哪种技术?我当时使用的是SVM,但在预测中却表现不佳。
Answers:
您的班级样本数量似乎并没有那么不平衡,因为您在少数班级中拥有30%的观察值。在您的情况下,逻辑回归应该表现良好。根据进入模型的预测变量的数量,您可能会考虑对参数估计进行某种形式的惩罚,例如岭(L2)或套索(L1)。有关类非常不平衡的问题的概述,请参见Cramer(1999),《统计学家》(The Statistician),48:85-94(PDF)。
我不熟悉信用评分技术,但是我发现一些论文建议您可以将SVM与加权类一起使用,例如,用于信用评分的支持向量机:扩展到非标准案例。作为替代方案,您可以查看使用CART或随机森林的增强方法(在后一种情况下,可以调整采样策略,以便在构造分类树时表示每个类)。Novak和LaDue的论文讨论了GLM与递归分区的优缺点。我还发现了Hand和Vinciotti撰写的这篇文章,记分卡结构具有不平衡的班级规模。
解决类不平衡问题的一种流行方法是使分类器有偏差,以便它更加关注积极实例。例如,这可以通过增加与错误分类正类别相对于负类别相关的惩罚来完成。另一种方法是通过对多数类进行过度采样或对少数类进行欠采样来预处理数据,以创建一个平衡的数据集。
但是,在您的情况下,类不平衡似乎不是问题。也许这是参数调整的问题,因为为SVM分类器找到最佳参数可能是一个相当繁琐的过程。例如,在RBF内核中有两个参数: 和 。事先不知道哪个 和 最适合给定的问题;因此,必须进行某种模型选择(参数搜索)。
在数据预处理阶段,请记住SVM要求将每个数据实例表示为实数向量。因此,如果存在分类属性,建议将它们转换为数字数据,使用m个数字表示一个m类属性(或将其替换为m个新的二进制变量)。
同样,在应用SVM之前缩放变量至关重要,以避免在较大数值范围内的属性主导较小数值范围内的属性。
查看本文。
如果您使用的是R语言,请检查调整功能(软件包e1071),以在提供的参数范围内使用网格搜索来调整超参数。然后,使用 plot.tune,可以直观地看到哪一组值给出较小的错误率。
耗时的参数搜索周围有一条捷径。有一个名为“ svmpath”的R包,可以一次性计算2类SVM分类器的整个正则化路径。这是描述其工作方式的论文链接。
附注:您可能还会发现本文有趣:获得校准概率估计
我建议对正类示例和负类示例使用不同的正则化参数C值(许多SVM软件包都支持此方法,并且在任何情况下都易于实现)。然后使用例如交叉验证来找到两个正则化参数的良好值。
可以证明,这是按C +和C-确定的比率对等价的数据进行渐进等价的(因此重新采样而不是重新加权没有优势,最终它们和权重相同)可以是连续的,而不是离散的,因此可以提供更好的控制)。
但是,不要简单地选择C +和C-来给正模式和负模式赋予50-50的权重,因为“失衡类”问题的影响强度会因数据集而异,因此,最优权重的强度-加权无法先验确定。
还请记住,假阳性成本和假阴性成本可能有所不同,如果将这些成本包括在确定C +和C-中,则问题可能会自行解决。
值得记住的是,对于某些问题,贝叶斯最优决策规则会将所有模式分配给一个类别,而忽略另一个类别,所以这不一定是一件坏事-这可能仅意味着一个班级的每个地方都比另一班级的模式密度低。