# FRUGAL: Unlocking SSL for Software Analytics

arXiv: https://arxiv.org/abs/2108.09847 · HTML: https://mlsanity.com/paper/2108.09847/

## Key facts

- Cited by 6 papers in the map (data through 14 Oct 2026).
- Builds on 22 of its 111 references that are in the map.
- First posted on arXiv 22 Aug 2021.

## Builds on (most cited first, 22 of 22)

- [Neural Machine Translation by Jointly Learning to Align and Translate](https://mlsanity.com/paper/1409.0473/) (2014)
- [Efficient Estimation of Word Representations in Vector Space](https://mlsanity.com/paper/1301.3781/) (2013)
- [Distributed Representations of Words and Phrases and their Compositionality](https://mlsanity.com/paper/1310.4546/) (2013)
- [Deep Learning in Neural Networks: An Overview](https://mlsanity.com/paper/1404.7828/) (2014)
- [Easy over Hard: A Case Study on Deep Learning](https://mlsanity.com/paper/1703.00133/) (2017)
- [DeepTriage: Exploring the Effectiveness of Deep Learning for Bug Triaging](https://mlsanity.com/paper/1801.01275/) (2018)
- [Tuning for Software Analytics: is it Really Necessary?](https://mlsanity.com/paper/1609.01759/) (2016)
- [Is "Better Data" Better than "Better Data Miners"? (On the Benefits of Tuning SMOTE for Defect Prediction)](https://mlsanity.com/paper/1705.03697/) (2017)
- [Better Data Labelling with EMBLEM (and how that Impacts Defect Prediction)](https://mlsanity.com/paper/1905.01719/) (2019)
- [How to "DODGE" Complex Software Analytics?](https://mlsanity.com/paper/1902.01838/) (2019)
- [Improving Vulnerability Inspection Efficiency Using Active Learning](https://mlsanity.com/paper/1803.06545/) (2018)
- [Identifying Self-Admitted Technical Debts with Jitterbug: A Two-step Approach](https://mlsanity.com/paper/2002.11049/) (2020)
- [9.6 Million Links in Source Code Comments: Purpose, Evolution, and Decay](https://mlsanity.com/paper/1901.07440/) (2019)
- [Applications of Psychological Science for Actionable Analytics](https://mlsanity.com/paper/1803.05067/) (2018)
- [Replication Can Improve Prior Results: A GitHub Study of Pull Request Acceptance](https://mlsanity.com/paper/1902.04060/) (2019)
- [Learning to Recognize Actionable Static Code Warnings (is Intrinsically Easy)](https://mlsanity.com/paper/2006.00444/) (2020)
- [Mining Scientific Workflows for Anomalous Data Transfers](https://mlsanity.com/paper/2103.12221/) (2021)
- [FLASH: A Faster Optimizer for SBSE Tasks](https://mlsanity.com/paper/1705.05018/) (2017)
- [Revisiting Unsupervised Learning for Defect Prediction](https://mlsanity.com/paper/1703.00132/) (2017)
- [The Changing Nature of Computational Science Software](https://mlsanity.com/paper/2003.05922/) (2020)
- [Revisiting Process versus Product Metrics: a Large Scale Analysis](https://mlsanity.com/paper/2008.09569/) (2020)
- [How to Better Distinguish Security Bug Reports (using Dual Hyperparameter Optimization](https://mlsanity.com/paper/1911.02476/) (2019)

## Built on by (most cited first, 6 of 6)

- [Fair-SSL: Building fair ML Software with less data](https://mlsanity.com/paper/2111.02038/) (2021)
- [Learning from Very Little Data: On the Value of Landscape Analysis for Predicting Software Project Health](https://mlsanity.com/paper/2301.06577/) (2023)
- [Frugal Machine Learning for Energy-efficient, and Resource-aware Artificial Intelligence](https://mlsanity.com/paper/2506.01869/) (2025)
- [Less, but Stronger: On the Value of Strong Heuristics in Semi-supervised Learning for Software Analytics](https://mlsanity.com/paper/2302.01997/) (2023)
- [SmartOracle -- An Agentic Approach to Mitigate Noise in Differential Oracles](https://mlsanity.com/paper/2601.15074/) (2026)
- [Is Model Instability just Noise to be Tolerated or a Property that can be Managed?](https://mlsanity.com/paper/2607.10420/) (2026)

## Abstract (arXiv)

Standard software analytics often involves having a large amount of data with labels in order to commission models with acceptable performance. However, prior work has shown that such requirements can be expensive, taking several weeks to label thousands of commits, and not always available when traversing new research problems and domains. Unsupervised Learning is a promising direction to learn hidden patterns within unlabelled data, which has only been extensively studied in defect prediction. Nevertheless, unsupervised learning can be ineffective by itself and has not been explored in other domains (e.g., static analysis and issue close time). Motivated by this literature gap and technical limitations, we present FRUGAL, a tuned semi-supervised method that builds on a simple optimization scheme that does not require sophisticated (e.g., deep learners) and expensive (e.g., 100% manually labelled data) methods. FRUGAL optimizes the unsupervised learner's configurations (via a simple grid search) while validating our design decision of labelling just 2.5% of the data before prediction. As shown by the experiments of this paper FRUGAL outperforms the state-of-the-art adoptable static code warning recognizer and issue closed time predictor, while reducing the cost of labelling by a factor of 40 (from 100% to 2.5%). Hence we assert that FRUGAL can save considerable effort in data labelling especially in validating prior work or researching new problems. Based on this work, we suggest that proponents of complex and expensive methods should always baseline such methods against simpler and cheaper alternatives. For instance, a semi-supervised learner like FRUGAL can serve as a baseline to the state-of-the-art software analytics.
