作者:小鹿鹿lulu
链接:https://www.zhihu.com/question/373862904/answer/1039080874
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
多分类任务中类别不均衡是非常常见的一个问题,但是差别多少才算分布不均匀呢?
这个没有一个确定的衡量标准。根据我个人的经验的话,不同类别数量差异超过一个数量级,我才会认为样本类别分布不均匀,需要特别关注和调整。比如题主的截图,最大的类别数是最小类别的三个数量集,差距非常大,触犯了样本类别分布不均的情况。
针对样本分布不均匀,可以从以下几个方面来多加关注和尝试:
- sample数据:
当样本类别分布不均匀的时候,什么都不管还是直接将数据shuffle,随机切分训练/验证/测试集,显然是不太合理的。常用的有简单欠采样和过采样的方法。
欠采样:如题主,就这桶的最短板“一刀切”,每个类别sample最小值239,这样就保证了数据分布绝对均匀,但是造成了严重的数据浪费。
过采样:以最高板为标准,重复拼接短板(重复抽样类别量小的数据)。这样数据重复使用,肯定不会造成浪费了吧。但是问题来了,对数量少的类别(如总共只有239个样本),强行将每个样本重复10^3遍,模型训练一个epoch的时候,对这类数据重复学习了10^3次,并且数据量本身就非常小,只有239个,极大可能造成在这些类别上过拟合。