Bagging 对罕见事件预测模型进行过采样

机器算法验证 数据挖掘 预测模型
2022-03-07 09:57:12

有谁知道是否已经描述了以下内容以及(无论哪种方式)这听起来是否像是一种用于学习具有非常不平衡的目标变量的预测模型的合理方法?

通常在数据挖掘的 CRM 应用中,我们会寻求一个模型,其中积极事件(成功)相对于大多数(消极类)非常罕见。例如,我可能有 500,000 个实例,其中只有 0.1% 属于积极的兴趣类别(例如客户购买)。因此,为了创建预测模型,一种方法是对数据进行采样,从而保留所有正类实例和负类实例的样本,以使正负类的比率更接近 1(可能为 25%到 75% 的阳性到阴性)。过采样、欠采样、SMOTE等都是文献中的方法。

我很好奇的是结合上面的基本抽样策略,但与负类的装袋。就像:

  • 保留所有正类实例(例如 1,000 个)
  • 对负类实例进行采样以创建平衡样本(例如 1,000)。
  • 适合模型
  • 重复

有人听说过这样做吗?没有装袋的问题似乎是,当有 500,000 个负类实例时,仅对 1,000 个负类实例进行采样是预测空间将是稀疏的,并且您很可能没有可能的预测值/模式的表示。Bagging 似乎对此有所帮助。

我查看了 rpart,当其中一个样本不具有预测变量的所有值时,没有任何“中断”(然后在预测具有这些预测变量值的实例时不会中断:

library(rpart)
tree<-rpart(skips ~ PadType,data=solder[solder$PadType !='D6',], method="anova")
predict(tree,newdata=subset(solder,PadType =='D6'))

有什么想法吗?

更新: 我采用了一个真实世界的数据集(营销直接邮件响应数据)并将其随机划分为训练和验证。有 618 个预测变量和 1 个二进制目标(非常罕见)。

Training:
Total Cases: 167,923
Cases with Y=1: 521

Validation:
Total Cases: 141,755
Cases with Y=1: 410

我从训练集中抽取了所有正例(521),并随机抽取了相同大小的负例作为平衡样本。我适合 rpart 树:

models[[length(models)+1]]<-rpart(Y~.,data=trainSample,method="class")

我重复了这个过程 100 次。然后预测这 100 个模型中每个模型的验证样本案例中 Y=1 的概率。我只是将 100 个概率平均为最终估计。我对验证集的概率进行十等分,并在每个十分位数中计算 Y=1 的案例百分比(估计模型排名能力的传统方法)。

Result$decile<-as.numeric(cut(Result[,"Score"],breaks=10,labels=1:10)) 

这是表演: 在此处输入图像描述

为了了解这与没有 bagging 相比如何,我仅使用第一个样本(所有正例和相同大小的随机样本)预测了验证样本。显然,采样的数据过于稀疏或过拟合,无法对保留验证样本有效。

当发生罕见事件且 n 和 p 较大时,建议 bagging 例程的有效性。

在此处输入图像描述

2个回答

除了在每个包中包含相同的正类示例外,这是 S^3Bagging,如S^3Bagging: Fast Classifier Induction Method with Subsampling and Bagging中所述。(我没有深入审查这篇论文,只是略读了一下。)

我认为您的方法在理论上没有任何问题,尽管我经常看到子采样与提升相结合而不是装袋。

这可能无法完全解决您的问题,但是一篇关于处理不平衡数据的不同方法的优秀论文是Learning From Imbalanced Data看起来像成本敏感的学习可能更适合您的情况。由于您使用的是决策森林,因此第 3.2.3 节成本敏感决策树可能会有所帮助。它指出,

对于决策树,代价敏感拟合可以采取三种形式:一是对决策阈值进行代价敏感调整;其次,可以对每个节点的拆分标准给予成本敏感的考虑;最后,成本敏感的修剪方案可以应用于树

对决策阈值的成本敏感调整基本上意味着根据 ROC 或 Precision-Recall 曲线性能选择您的决策阈值。尤其是中国的表现对于不平衡的数据是稳健的。

成本敏感的拆分标准归结为更改杂质函数以处理不平衡数据。上述论文指出,

在 [63] 中,与准确度/错误率基线相比,三个特定的杂质函数 Gini、Entropy 和 DKM 被证明具有改进的成本不敏感性。此外,这些经验实验还表明,使用 DKM 函数通常会产生更小的未修剪决策树,更糟糕的是,它们提供的准确度可与 Gini 和 Entropy 相媲美。后来在 [49] 中建立了解释这些经验结果结论的详细理论基础,它概括了决策树生长对任何吐出标准选择的影响。

至于修剪,

然而,在存在不平衡数据的情况下,剪枝程序倾向于删除描述少数概念的叶子。已经表明,尽管从不平衡数据中产生的修剪树会影响性能,但在这种情况下使用未修剪的树并不能提高性能 [23]。因此,人们关注改进每个节点的类概率估计,以开发更具代表性的决策树结构,从而可以应用剪枝并产生积极影响。一些代表性的工作包括概率估计的拉普拉斯平滑方法和拉普拉斯剪枝技术[49]。

[23] N. Japkowicz 和 S. Stephen,“类不平衡问题:系统研究”,智能数据分析,卷。6,没有。5,第 429-449 页,2002 年。

[49] C. Elkan,“成本敏感学习的基础”,Proc。国际联合会议 人工智能,第 973-978 页,2001 年。

[63] C. Drummond 和 RC Holte,“利用决策树拆分标准的成本(内)敏感性”,Proc。国际会议 机器学习,第 239-246 页,2000 年。

这很有趣。我最近有一个项目有类似的情况,其中对罕见事件的验证表现良好,而对最低预测范围(例如 0.0 - 0.1)的非事件的验证逐月表现不稳定。背后的原因,正如你所提到的,由于大量的非事件,最好在训练集中包含更多的样本,以便有足够的样本来覆盖各种变量组合。