# How to manually balance unbalanced multi-class/multi-label data?

I have a multi-class and multi-label classification problem, i.e.: each sample can have more than one label associated to it and there is a total number of M possible labels.

e.g.:

• y = 
• y = [0, 1]
• y = [1, 4, 3, 0]
• y = [0, 1]
• ...
• y = [1, 0, 3]

Counting the number of occurrences of each label, I can see that some labels are way more frequent than others. In the example above, for instance, 0 appears more often than 1, 3 and 4.

I can't figure out a smart (over-)sampling strategy to have a dataset where each label appears approximately the same number of times.

Any papers/idea on that?

• Count the frequencies of all the labels in a table and use these as weights? Oct 8, 2018 at 6:35
• Here is a paper that discusses the same problem: Giraldo-Forero, et al (2013). Managing Imbalanced Data Sets in Multi-label Problems: A Case Study with the SMOTE Algorithm, J. Ruiz-Shulcloper and G. Sanniti di Baja (Eds.): CIARP 2013, Part I, LNCS 8258, pp. 334–342 (pdf) Oct 15, 2018 at 15:28
• – Dave
May 10, 2021 at 3:24
• Why do you want to balance the data manually? Automation seems appropriate to me once you have a conceptual understanding of the process. May 18 at 15:34

Since each sample can have more than one label associated with it one possible solution would be to train $$M$$ logistic regression models, where the response variable for label $$i$$, sample $$n$$, is $$Y_{i,n}$$ where $$Y_{i,n}=1$$ if sample $$n$$ belongs to class $$i$$ and $$Y_{i,n}=0$$ if it does not.
For a new sample $$Z$$ your model output can be interpreted as the probability $$Z$$ belongs to each individual class.