做毕设碰到过类似的问题,也算小小研究过,就来不耻回答一下。。
推荐看一下Haibo He, Edwardo A. Garcia的Learning from Imbalanced Data这篇paper,写的很系统也很清晰。
主要包括四大类方法,1Sampling 2Cost Sensitive Methods 3Kernal-Based Methods and Active Learning Methods 4One-Class Learning or Novelty Detection Methods。
Sampling大类说到底就是两种可能。第一种是把多的那个组变少,第二种是把少的那个组变多,以达到平衡的结果。一般比较少用第一种,因为那样容易丢失重要信息。对于第二种,又有很多方法,最简单的是oversampling,由于其局限性,又有很多根据已有的数据生成新数据的方法,比如各种变体的synthetic sampling。
第二种思路是基于把多数组猜成少数组和把少数组猜成多数组的cost是不同的这个事实,来修正数据分布(个人理解可以当成采到样的概率)的方法。
另外,kernal类的模型,还可以通过修改核函数来偏移hyperplane,来抵消不平衡数据造成的hyperplane的偏移。
最后一大类没有看过相关paper,不了解。。