It can be said that most data contains two things, \textit{clumps}\cite{clumps1} and \textit{collars}\cite{collar1}.  Clumps are a property
of data that discusses the phases, or types of data.  Essentially, a clump is a class of data in the data set that all share similar
classification properties.  A collar, or collar variable, is a specific descriptor of the data in the set that is very higly correlated to
the clumps.  That is, a noticable change in the collar variable will generally mean the change of one of these clumps.  It is our goal to
develop a machine learner that is highly tuned to exploiting these clumps and collars in the data.  It is also our goal to allow this
new machine learner to have different methods of finding these clumps and collars by allowing application$-$specific goals to be used
when searching through this data.

Also, as a result of our exploitation of specific collar variables in the data, our machine learner produces rules, or conjunctions of
conditions, that are very small and easy to understand.  This leads to an easy and brief explanation time on what exactly these rules are trying
to tell about the data set.  This reduces the time necessary to discuss the tool being used and allows for more time to be allotted for the actual
task.

The TAR3\cite{tar3} machine learner is one implementation of such a tool that attempts to isolate a specific clump and exploit the collars in the
data to create easy to understand, simple rules.  TAR3 behaved well in that it produced these small rules and produced these rules with a linear
time scaling to the data.  However, TAR3 implemented a hard$-$wired rule learning heuristic.  In all of the experiments with the TAR3 learner, 
no other types of heuristics were used to create these rules.  Also, the effects of such collar$-$variable exploitation where never fully
explored in terms of learning on one set and testing on the other.  While this machine learner shows a lot of promise in this type of field, we
will show with our new machine learner, Which, how other learning heuristics can also perform well by exploiting these collar variables, and that
this method of learning works well when training with one set and testing on another.

One specific instance of an application is software defect detection. The study of detecting defective modules in releases of software is an
important area that many researchers have experimented in.  This realm is important because reducing the cost and time a company needs to test
software would greatly reduce the overall cost and time a project takes to complete. Detecting fault functions, files, or classes automatically
could greatly reduce the amount of work software testers would need to do as well as allow them to focus on specific areas of the software instead
of the entire package to test for defects.

The current machine learners used in the realm of software defect detection today are classification learners\cite{randomforest,staticlearn,blindspot,testless}.
These learners have hard coded evaluation heuristics and as a result cannot be finely tuned to the business applications they are being used with.  There is a need for
for a more customizable machine learner that can better adapt to the different business situations it can be used in.  Classic machine
learners create their classification models based on some internal heuristic and are then evaluated in the business application with
an entirely different method.  It is obvious that having a machine learner that can change its internal evaluation heursitic when a
business application calls for will have an advantage and be able to perform better.

There is a need in software defect detection to remove the use of these classification machine learners and move towards a different paradigm, 
one that is created specifically for the purpose of detecting defective modules.  TAR3 was created as a method of selecting specific classes
and generating rules to predict only that class.  It does this in a rather verbose method and our learner, Which, was created to take its place.
Which, like, TAR3 is a machine learner that attempts to create a rule that best describes the attribute combonations that
predict a single class.  Which is different from TAR3 in that its growing heuristic is no hard coded and is easily modifiable.  Machine learners
like TAR3 and Which are perfect for the area of software defect detection because they make no sacrifices in order to maximize the classification
of both defective and non$-$defective source code as the classification learners do.  Instead, they are focused on the goal at hand, to
maximize the classification of just the defective modules.

There is a common notion in the world of software defect detection and that is that many development companies are just beginning to understand
the power of automated defect detection via machine learners.  As a result, the data on previous projects is very limited.  We introduce a sampling
policy called micro$-$sampling\cite{micro} into our experiments that in our experiments has performed just as well as the machine learner
without micro$-$sampling.  This study gives evidence that as lone as the distributions of defective and non$-$defective modules is kept relative
close, machine learners do not require a lot of previous data to develop detectors.

\section{Contribution of This Thesis}
The contributions of this thesis are:
\begin{itemize}
	\item The Which algorithm;
	
	\item Configurable scoring heuristics;
	
	\item Validity of lift learning in a cross$-$validation testing environment;
	
	\item Further evidence of a common distribution of faults in software;
	
	\item A novel evaluation method for evaluating learners in software defect detection, The Koru Diagram;
	
	\item Extensive comparisons of Which to class machine learners in the are of software defect detection; and,
	
	\item Testing of a new sampling policy called micro$-$sampling.
\end{itemize}
The results of the software defect detection give us results that this type of specialized machine learner is the state$-$of$-$the$-$art for using
maching learners to detect defects.  It gives useful insight onto the uses of the classic learners and their limitations in this field.

\section{Structure of This Document}
This thesis consists of five different chapters that discuss the different aspects of the research that went into this thesis.

\chap{related} discusses the background information required to understand the experiment and theoretical work that went into this thesis.  It
gives the explainations of the different classic machine learners that we used in our experiments.  It also talks about the different types
of comparison metrics we used to evaluate superiority and inferiority of learning methods over all of the experiments we conducted.  \chap{related}
discusses some of the universal concepts our different experiments all use as well as some of the discovered properties of the data we used.
This chapter also discusses some of the previous types of experiments that have been done in the field of software defect detection.

\chap{which} discusses the theory and implementation of our new machine learner, Which.  It discusses in detail how Which compares and contrasts
with TAR3.  \chap{which} also discusses the different implementation decisions that were made and justifies these decisions.

\chap{experiments} discusses the six different overall experiments that were done with the Which machine learner.  It goes into detail about
the types of data that were chosen and the different evaluation methods that were chosen.  Extensive results are given for each of the experiments
and discussions of these results can be found in this chapter as well.  In cases were results are contradictory to each other, various explanations
can be found wheere these contradictions occur.

\chap{conclusion} consists of a summary of the work that this thesis contains.  It also provides information about potential future work with
the Which learner.