SMOTE处理数据遇到的问题

1.问题,生成新的样本时,Error in T[i, ] : 下标出界

SMOTE处理数据遇到的问题_第1张图片

原因:变量非因子型

解决方案: german1$risk<-as.factor(german1$risk)即可

2.使用SMOTE,生成多数类样本反而减少了??

##原始数据

> table( german1$risk)

  0   1 

700 300 

##新的样本

new_german1.1<-SMOTE(risk~.,german1,perc.over=300,perc.under=100)
> table( new_german1.1$risk)
   0    1 

 900 1200 

 perc.over 过采样比例p1=perc.over/100=300/100=3,一个少数类样本生成p1·n1+n1个样本,3*300+300=1200

perc.under 欠采样比例 p2=perc.under/100,  那么生成p1·n1·p2个新样本

疑问:为什么是900

原因:理解出现偏差。多类别样本应该是抽样生成 3*300*1=900,从原数据的多类别中抽取900个

3.向上采样倍率如何确定?

尝试使得两类样本平衡比接近为1:1

#不知道是否有理论

4.欠采样比例是否能比过采样比例大?

 new_data1.3<-SMOTE(risk~.,data1,perc.over=130,perc.under=200) ##生成新样本
 
table( new_data1.3$risk)#查看结果
  0   1 
600 600 
#如果按照设定比例计算,原数据class 0-700样本,class 1-300样本,那么table()之后的结果应为0—780,1—690,但是实际结果如上。


你可能感兴趣的:(R语言,统计学习)