A Comparative Study of Inductive Logic Programming Methods for Software Fault Prediction
William W. Cohen, Prémkumar Dévanbu · 1997
We evaluate inductive logic programming (ILP) methods for predicting fault density in C++ classes. In this problem, each training example is a C++ class definition, represented as a calling tree, and labeled as "positive " iff faults (i.e., errors) were discovered in its implementation. We compare two ILP systems, FOIL and FLIPPER, and explore the reasons for their differing performance, using both natural and artificial data. We then propose two extensions to FLIPPER: a user-directed bias towards easy-to-evaluate clauses, and an extension that allows FLIPPER to learn "counting clauses". Counting clauses augment logic programs with a variation of the "number restrictions" used in description logics, and significantly improve performance on this problem when prior knowledge is used. 1 INTRODUCTION In this paper, we will investigate the utility of inductive logic programming (ILP) methods for the problem of classifying programs. In particular, we will explore the problem of predicting f...