面对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',否则一方应该大于一方的,这个不纳入考虑