面对imbalance data的时候

面对imbalance data的时候

解决问题的思路

   1:增加数据

   2:算法

   3:阈值

1 增加数据:增加数据的方法主要是smote ,borderline smote......这是这篇文章具体关注的

smote的算法是这样的,

先聚类,找到k近邻,具体地说,就是比如现在有两个类,其中一个类是女生,有10张图片;另一类是男生,有100张图片,这样的话,当进行分类的时候,可能很难把女生分出来,那么需要对女生的图片进行增加

smote的算法的方式是先聚类,找到女生为x,再找他身边的近邻x1,

然后生成图片:xnew =x+(0~1)*(x-x1)

 

borderline smote

而这个思路的一个弊端是如果找到的x(女生)是一个假小子,因为如果是一个长头发女生,本来就可以分清,多增加一些,应该还是能分清,但是对于不太能分清的假小子,如果多增加这些数据,那么会更好的辨别,

这个想法首先要注意:增加负样本数据一定会增加正确率,因为相当于起到了weight的作用,在这个角度讨论的话,那么增加长头发女生还是短头发女生其实无所谓,但是如果说对于分类更有利,那么增加短头发更有利,因为他告诉了分类器,不能靠头发长短来辨别男女,等于让机器学了一个新的知识点。

 

所以,按照这个来说,增加图片要增加borderline example的数量

具体的borderline-smote算法是这样的:

1(还是据需按照上面的例子)先正确理解我们的目的,就是生成女生里面假小子(也就是边缘)的图片,

2 首先把女生图片所有的m个近邻算出来,

3 把男生所有的m'个近邻算出来

4 遍历所有的m和m',如果m=m',意味着这两个应该是一类,才能m=m',否则一方应该大于一方的,这个不纳入考虑

 

posted @ 2019-04-01 16:40  freebirds  阅读(239)  评论(0编辑  收藏  举报