Reducing Features to Improve Code Change-Based Bug Prediction
Authors:
Top Cited Papers
- 26 June 2012
- journal article
- Published by Institute of Electrical and Electronics Engineers (IEEE) in IEEE Transactions on Software Engineering
- Vol. 39 (4) , 552-569
Abstract
Machine learning classifiers have recently emerged as a way to predict the introduction of bugs in changes made to source code files. The classifier is first trained on software history, and then used to predict if an impending change causes a bug. Drawbacks of existing classifier-based bug prediction techniques are insufficient performance for practical use and slow prediction times due to a large number of machine learned features. This paper investigates multiple feature selection techniques that are generally applicable to classification-based bug prediction methods. The techniques discard less important features until optimal classification performance is reached. The total number of features used for training is substantially reduced, often to less than 10 percent of the original. The performance of Naive Bayes and Support Vector Machine (SVM) classifiers when using this technique is characterized on 11 software projects. Naive Bayes using feature selection provides significant improvement in buggy F-measure (21 percent improvement) over prior change classification bug prediction results (by the second and fourth authors [28]). The SVM's improvement in buggy F-measure is 9 percent. Interestingly, an analysis of performance for varying numbers of features shows that strong performance is achieved at even 1 percent of the original number of features.Keywords
This publication has 47 references indexed in Scilit:
- Validity concerns in software engineering research2010
- A General Software Defect-Proneness Prediction FrameworkIEEE Transactions on Software Engineering, 2010
- Understanding the impact of code and process metrics on post-release defects2010
- Reducing Features to Improve Bug Prediction2009
- Predicting the location and number of faults in large software systemsIEEE Transactions on Software Engineering, 2005
- When do changes induce fixes?2005
- Preprocessing CVS data for fine-grained analysis2004
- Theoretical and Empirical Analysis of ReliefF and RReliefFMachine Learning, 2003
- Predicting risk of software changesBell Labs Technical Journal, 2002
- Identifying reasons for software changes using historic databases2000