采用过采样进行打包以建立罕见事件预测模型
有谁知道是否描述了以下内容以及(无论哪种方式)听起来像是一种学习目标变量非常不均衡的预测模型的合理方法? 通常在数据挖掘的CRM应用程序中,我们将寻求一个模型,其中相对于大多数事件(负面事件)而言,积极事件(成功)非常罕见。例如,我可能有500,000个实例,其中只有0.1%是感兴趣的正类(例如,购买的客户)。因此,为了创建预测模型,一种方法是对数据进行采样,从而保留所有正类实例,而仅保留一个负类实例的样本,以使正类与负类的比率更接近1(可能为25%达到75%(从正面到负面)。文献中有过采样,欠采样,SMOTE等所有方法。 我很好奇的是将上面的基本采样策略与否定类的装袋相结合。 保留所有积极的课堂实例(例如1,000个) 对否定类实例进行采样,以创建一个平衡的样本(例如1,000)。 拟合模型 重复 有人听说过吗?似乎没有装袋的问题是,当存在500,000个样本时,仅对1,000个否定类实例进行采样是因为预测变量空间将稀疏,并且您很可能无法表示可能的预测变量值/模式。套袋似乎对此有所帮助。 我看了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)) 表演如下: 为了了解与没有套袋相比的情况,我仅使用第一个样本(所有阳性病例和相同大小的随机样本)预测了验证样本。显然,所采样的数据太稀疏或过拟合,以至于无法对保留的验证样本生效。 当发生罕见事件且n和p较大时,建议套袋程序的有效性。