  Labeling a module defective or non-defective is an expensive task. Hence,
there are often limits on how much-labeled data is available for training.
Semi-supervised classifiers use far fewer labels for training models. However,
there are numerous semi-supervised methods, including self-labeling,
co-training, maximal-margin, and graph-based methods, to name a few. Only a
handful of these methods have been tested in SE for (e.g.) predicting defects
and even there, those methods have been tested on just a handful of projects.
  This paper applies a wide range of 55 semi-supervised learners to over 714
projects. We find that semi-supervised "co-training methods" work significantly
better than other approaches. Specifically, after labeling, just
  2.5% of data, then make predictions that are competitive to those using 100%
of the data.
  That said, co-training needs to be used cautiously since the specific choice
of co-training methods needs to be carefully selected based on a user's
specific goals. Also, we warn that a commonly-used co-training method
("multi-view"-- where different learners get different sets of columns) does
not improve predictions (while adding too much to the run time costs 11 hours
vs. 1.8 hours).
  It is an open question, worthy of future work, to test if these reductions
can be seen in other areas of software analytics. To assist with exploring
other areas, all the codes used are available at
https://github.com/ai-se/Semi-Supervised.
