<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>An Empirical Study on Progressive Sampling for Just-in-Time Software Defect Prediction</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Xingguang Yang</institution>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2019</year>
      </pub-date>
      <fpage>12</fpage>
      <lpage>18</lpage>
      <abstract>
        <p>-Just-in-time software defect prediction (JIT-SDP) is an active research topic in the field of software engineering, aiming at identifying defect-inducing code changes. Most existing JIT-SDP work focuses on improving the prediction performance of the model by improving the model. However, a frequently ignored problem is that collecting large and high quality defect data sets is costly. Specifically, when labelling the samples, experts in the field are required to carefully analyze the defect report information and log of code modification, which requires a lot of effort. Therefore, how to build a high-performance JIT-SDP model with a small number of training samples is an issue worth studying, which can reduce the size of the defect data sets and reduce the cost of data sets acquisition. This work thus provides a first investigation of the problem by introducing a progressive sampling method. Progressive sampling is a sampling strategy that determines the minimum number of training samples while guaranteeing the performance of the model. However, progressive sampling requires that the learning curve of the prediction model be well behaved. Thus, we validate the availability of progressive sampling in the JIT-SDP issue based on six open-source projects with 227417 changes. Experimental results demonstrate that the learning curve of the prediction model is well behaved. Therefore, the progressive sampling is feasible to tackle the JITSDP problem. Further, we investigate the optimal training sample size derived by progressive sampling for six projects. Empirical results demonstrate that a high-performance prediction model can be built using only a small number of training samples. Thus, we recommend adopting progressive sampling to determine the size of training samples for the JIT-SDP problem. Index Terms-Just-in-time, software defect prediction, progressive sampling, mining software repositories</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Defects in the software system can cause huge losses to
companies [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Although software quality activities (such as
source code checking and unit testing) can reduce the number
of defects in software, they require a lot of testing resources.
Therefore, how to release a high-quality software project
with limited testing resources is a huge challenge in the
field of software engineering [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Software defect prediction
is an effective method. Developers use machine learning or
statistical learning methods to identify the defect-proneness of
program modules in advance, thereby investing more limited
testing resources into defect-prone modules [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>
        Just-in-time software defect prediction(JIT-SDP) is a more
fine-grained defect prediction method, which is made at
change-level rather than module-level(e.g., function, file, and
class) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. In the software development process, once the
developer submits a modification to the software code, the defect
prediction model will predict the defect-proneness of the code.
If the change is predicted to be buggy, the corresponding
developer will be assigned to check the change. Therefore,
JIT-SDP has the advantages of fine granularity, instantaneity,
and traceability [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], and has been adopted by many companies
such as Lucent [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], BlackBerry [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], Cisco [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], etc.
      </p>
      <p>
        Recently, JIT-SDP has received extensive attention and
research. The main research work focuses on model building
[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], feature selection [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], data annotation [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], etc.
However, few studies have focused on the cost of acquiring
defect data sets. Specifically, in order to obtain high-quality
defect data sets, experts in specific fields are required to
analyze version control systems (SVN, CVS, Git, etc.) and defect
tracking systems (Bugzlla or Jira) during the data annotation
phase [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Therefore, constructing an accurate defect data
set is costly [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. In the field of software engineering data
mining [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], researchers found the following relationship
between the size of the data sets and the performance of the
prediction model: When the data set size is small, the accuracy
of the prediction model increases significantly as the size of
the data increases. When the data sets size exceeds a certain
number, adding more data does not lead to higher prediction
performance. Therefore, how to build a high performance
prediction model with fewer training samples for JIT-SDP is
a problem worth studying, which brings two advantages:
Firstly, reducing the size of training samples can reduce
the cost of data sets labeling.
      </p>
      <p>
        Secondly, when using complex learning algorithms such
as deep learning algorithms [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], reducing the size of the
training data can significantly reduce the time required
for model training.
      </p>
      <p>In order to reduce the use of training samples, this paper
first introduces progressive sampling into the study of JIT-SDP
problems. We conduct experiment on the change-level defect
data sets from six open source projects with 227417 changes.
The main contributions of this paper are as follows:
We introduce progressive sampling to the JIT-SDP study
to determine the optimal training sample size and reduce
the cost of defect data acquisition. However,
progressive sampling requires that the learning curve of the
prediction model be well behaved in coarse granularity.
Therefore we conduct a large-scale empirical study based
on the defect data sets from six open-source projects.
The experimental results show that the learning curve
of the prediction model is well behaved. So progressive
sampling is efficient for JIT-SDP.</p>
      <p>We further investigate the optimal training sample size
derived by progressive sampling based on six
opensource projects. The experiment uses the random forest
to establish a prediction model and uses AUC to evaluate
the performance of the model. Empirical results show
that using progressive sampling can significantly reduce
the number of training samples used while guaranteeing
the performance of the prediction model. Therefore, we
recommend that in the practical application of JIT-SDP,
using progressive sampling can effectively reduce the
amount of training samples and reduce the cost of model
building.</p>
      <p>The rest of the paper is organized as follows: The related
work is described in Section II. Section III introduces the
progressive sampling and it’s application in the scenario of
JIT-SDP. Experimental setup is described in the Section IV.
Section V introduces the experimental results and discussion.
Section VI introduces the threats to validity. Conclusions and
future work is described in the Section VII.</p>
    </sec>
    <sec id="sec-2">
      <title>II. RELATED WORK</title>
      <sec id="sec-2-1">
        <title>A. Just-in-Time Software Defect Prediction</title>
        <p>
          JIT-SDP is a special method for predicting software defects.
Unlike traditional defect prediction, JIT-SDP is performed at
change-level, which has finer granularity. Mockus and Weiss
[
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] first proposed the idea of JIT-SDP, and they designed a
number of change metrics to predict whether changes are
defect-inducing or clean. Recently, Kamei et al. [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] performed
a large-scale empirical study in JIT-SDP. They collected eleven
data sets from six open-source projects and five commercial
projects. Their experimental results show that their prediction
model can achieve 68% accuracy and 64% recall. Moreover,
they find that 35% defect-inducing changes can be identified
using only 20% of the effort.
        </p>
        <p>
          Subsequently, researchers proposed various methods to
improve the performance of the prediction model for JIT-SDP.
Chen et al. [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] designed two objects through the benefit-cost
analysis, and formalized the JIT-SDP problem into a
multiobjective optimization problem. They proposed a method
called MULTI based on NSGA-II [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. The experimental
results show that MULTI can significantly improve the
effortaware prediction performance for JIT-SDP. Furthermore, Yang
et al. [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] found that the MULTI method is more biased
towards the benefit object in the optimal solution selection.
        </p>
        <p>
          Therefore, they proposed a benefit-priority optimal solution
selection strategy to improve the performance of the MULTI
method. Cabral et al. [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] first found that JIT-SDP suffers from
class imbalance evolution. Their proposed approach can obtain
top-ranked g-means compared with state-of-the-art methods.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>B. Progressive Sampling</title>
        <p>
          Weiss and Tian pointed out that in the field of data mining,
data acquisition is one of the main costs of the process of
building a classification model [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]. Therefore, reducing the
use of training data while guaranteeing the performance of
the prediction model can reduce the cost of model building.
In solving the actual classification task, using fewer training
samples can still get a high prediction model. Thus, Provost
et al. [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] proposed progressive sampling method. Progressive
sampling continuously increases the number of training
samples by the iterative method. Currently progressive sampling
has been widely used in the field of software engineering data
mining. For example, in the study of performance prediction
for configurable software, obtaining data sets is costly. Thus,
Sarkar et al. [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] used progressive sampling to determine the
optimal number of training samples.
        </p>
        <p>
          In the JIT-SDP study, obtaining high-quality defect data
sets is costly, and it requires specialists in specific fields
to thoroughly analyze defect report information and code
modification logs [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]. The most existing JIT-SDP study only
focuses on improving the performance of the prediction model,
but ignores the cost of defect data sets acquisition. Therefore,
this paper first introduces progressive sampling into the
JITSDP scenario.
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>III. PROGRESSIVE SAMPLING</title>
      <sec id="sec-3-1">
        <title>A. Basic Concept of Progressive Sampling</title>
        <p>
          Progressive sampling is a popular sampling strategy that
has been used for various learning models [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. Progressive
sampling is an iterative process whose basic idea is to generate
an array of integers n0; n1; n2; :::; nk. Each integer ni indicates
that the training samples with size of ni are used to build
the prediction model at the ith iteration. According to the
calculation of the number of training samples in each iteration,
progressive sampling can be classified as arithmetic
progressive sampling and geometric progressive sampling [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]. The
size of training samples for two progressive sampling is
calculated as shown in Eq. (1) and Eq. (2), respectively, where
n0 represents the initial training sample size and a determines
the growth rate of the training samples. It can be seen that
the main difference between the two kinds of progressive
sampling is that the geometric progressive sampling has a
larger growth rate than the arithmetic progressive sampling,
and is suitable for the prediction model with high algorithm
complexity. Since the machine learning algorithm used in this
paper is the random forest [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ], the training time of the model
is short, so it is suitable to use arithmetic progressive sampling.
ni = n0 + i a
ni = n0
ai
13
(1)
(2)
Learning curve. The learning curve [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] describes the
prediction performance of the prediction model at different
training sample sizes and can clearly characterize the learning
process of progressive sampling. Typical learning curve is
shown as Fig.1, where the x-axis represents the training sample
size and the y-axis represents the prediction performance of
the model. A well behaved learning curve is monotonically
non-decreasing and contains three regions: In the first region,
the model performance increases rapidly as the training sample
size increases; in the second region, the model performance
increases slowly as the training sample size increases; in the
third region, adding more training samples will not
significantly improve the performance of the model.
        </p>
        <p>e
c
n
a
m
r
o
f
r
e
P</p>
        <p>Training sample size</p>
      </sec>
      <sec id="sec-3-2">
        <title>B. The Process of Progressive Sampling in the JIT-SDP</title>
        <p>
          Progressive sampling is widely used in various software
engineering related studies, such as performance prediction of
configurable software [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], etc. In this paper, we first introduce
progressive sampling into the JIT-SDP scenario. The detailed
process is shown in Fig. 2, which involves four steps as
following:
        </p>
        <p>Start</p>
        <p>Developers
Data sets
Increase training
samples</p>
        <p>N</p>
        <p>Prediction
model
Software history
repository
Acceptable?</p>
        <p>Y</p>
        <p>End
1) Developers mine metrics related to software changes from
the software history repositories.
2) Domain experts label samples as defect-inducing or clean
by analyzing defect reporting information and code
modification logs in version control systems, and build defect
data sets. Because of the high cost of this process, only
a few number of changes are labeled.
3) Based on the existing data sets, a machine learning
algorithm is used to build a defect prediction model.
4) After the prediction model is evaluated, it is required
to determine whether the performance of the model is
acceptable. If the performance is not acceptable, the more
training samples will be collected according to the rules
of progressive sampling.</p>
        <p>We use following Algorithm 1 to describe more formally
the application process of progressive sampling in JIT-SDP.
Algorithm 1: The progressive sampling for JIT-SDP
Input: initial sample size: n0; growth factor: a;</p>
        <p>termination threshold: threshold AU C</p>
        <p>Output: prediction model: model;
1 begin
2 # Build data sets with n0 samples
3 D = mining sof tware repository(n0)
4 while true do
5 # Split data sets into training and test sets
6 train set; test set = train test split(D)
7 # Build prediction model based on machine
learning methods
model = Random F orest(train set)
# Model evaluation
AU C = Evaluation(model; test set)
# Whether the model is acceptable
if AU C &gt; threshold AU C then
return model
new D =
mining sof tware repository(a)</p>
        <p>D = D [ new D</p>
        <p>We denote an instance of a code change as X =
fx1; x2; :::; xmg, where x1; x2; :::; xm represent the m metrics
of the change X. An example of the change X is denoted
as (x; Y ), where x represents the values of metrics and Y
represents whether the change is buggy or clean. If the change
X is identified as buggy, then Y will be marked as 1, otherwise
it is marked as 0. The defect data sets D for a specific project
are composed of a set of examples X, where X D.</p>
        <p>In the beginning, developers need to mine n0 samples from
the software history repositories and build data sets D (Line
3). The data sets are then split into training and test sets (Line
6). The the defect prediction model is built and evaluated
based on a machine learning algorithm (Line 8-10). Our
experiment uses the random forest to build a prediction model
and evaluate the model using AUC. If the performance of the
model exceeds the threshold threshold AU C, the progressive
sampling terminates the iteration (Line 12-13). Otherwise, it
is necessary to further collect a samples from the software
history repositories to increase the size of the data sets (Line
16-17).</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>IV. EXPERIMENTAL SETUP</title>
      <p>This paper introduces progressive sampling into the JIT-SDP
problem and designs the following two research questions:
RQ1: Whether the progressive sampling is feasible in the
JIT-SDP scenario?
RQ2: What is the optimal training sample size to
establish a high performance prediction model by adopting
progressive sampling?</p>
      <p>The experimental hardware environment is Intel(R)</p>
      <sec id="sec-4-1">
        <title>Core(TM)I7-7700 CPU RAM: 8G. The programming environ</title>
        <p>ment used in the experiment is python3.2.</p>
      </sec>
      <sec id="sec-4-2">
        <title>A. Data Sets</title>
        <p>
          The data sets used in the experiment were provided by
Kamei et al. [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] and are widely used in the field of
JITSDP [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. The data sets are collected from six
open source projects, namely Bugzilla(BUG), Columba(COL),
        </p>
      </sec>
      <sec id="sec-4-3">
        <title>Eclipse JDT(JDT), Eclipse Platform(PLA), Mozilla(MOZ), and</title>
        <p>PostgreSQL(POS), with a total of 227417 changes. The
number of defective changes, defect rate, and data collection period
for each subject system are shown in Table I.</p>
        <p>
          In order to accurately predict defects for software changes,
Kamei et al. [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] designed 14 metrics. These metrics can be
divided into five dimensions: diffusion, size, purpose, history,
and experience. The specific description information is shown
in Table II.
        </p>
      </sec>
      <sec id="sec-4-4">
        <title>B. Prediction Model</title>
        <p>
          Similar to previous research [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ], the experiment uses the
random forest algorithm to build prediction models [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ],
because previous studies have shown that random forest is
highly robust, accurate and stable on JIT-SDP issues [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ], and
exceed other modeling techniques [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ].
        </p>
        <p>Random forest is an ensemble learning algorithm based on
decision tree. Different from the conventional decision tree,
the base learner randomly selects a subset of the attributes in
each node’s attribute set, and then selects an optimal attribute
from the subset. Random forest algorithm is simple, easy to
implement, and has low computational overhead, and is widely
used in various learning tasks.</p>
        <sec id="sec-4-4-1">
          <title>Dimension</title>
        </sec>
        <sec id="sec-4-4-2">
          <title>Diffusion</title>
        </sec>
        <sec id="sec-4-4-3">
          <title>Size</title>
        </sec>
        <sec id="sec-4-4-4">
          <title>Purpose</title>
        </sec>
        <sec id="sec-4-4-5">
          <title>History</title>
        </sec>
        <sec id="sec-4-4-6">
          <title>Experience TABLE II THE DESCRIPTION OF METRICS Metric</title>
        </sec>
      </sec>
      <sec id="sec-4-5">
        <title>C. Performance Indicators</title>
        <p>
          The test samples can be divided into true positive(TP),
false negative(FN), false positive(FP), and true negative(TN)
according to the labels of the samples and the prediction
results. The confusion matrix of the classification results is
shown in the Table III. JIT-SDP is a binary classification
problem. Common evaluation indicators include precision,
recall, accuracy, etc. However, since the defect data sets are
usually class-imbalanced, these threshold-based evaluation
indicators are sensitive to threshold settings. Therefore, threshold
independent evaluation indicators should be used [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ].
        </p>
        <p>
          The experiment uses AUC to evaluate the prediction
performance of the model [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]. AUC (Area Under Curve)
is the area under the ROC curve. The ROC (Receiver
Operating Characteristic) curve is drawn as follows: First, the
test examples are sorted in descending order according to
the probability that the prediction is positive; then the test
examples are regarded as positive classes one by one, and
the true positive rate (TPR) and false positive rate (FPR) are
calculated each time; using TPR as the ordinate and FPR as
the abscissa, one point of the ROC curve is obtained, and these
points are connected to obtain the ROC curve.
        </p>
        <p>T P R =
F P R =</p>
        <p>T P
T P + F N</p>
        <p>F P</p>
        <p>T N + F P</p>
      </sec>
      <sec id="sec-4-6">
        <title>D. Data Preprocessing</title>
        <p>
          In order to improve the prediction performance of the
model, according to the recommendations of Kamei et al. [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ],
we conduct the following preprocessing on the data sets:
1) Remove highly correlated metrics. Since NF and ND, learning curve for a project, where the horizontal axis
repREXP and EXP are highly correlated, ND and REXP resents the size of training samples and the vertical axis
are excluded. Since LA and LD are highly correlated, represents the performance of the prediction model.
LA and LD are normalized by dividing by LT. Since LT As can be seen from Fig. 3, the learning curve for each
and NUC are highly correlated with NF, LT and NUC system is well behaved, which is generally monotonically
are normalized by dividing by NF. non-decreasing. Although the learning curve fluctuates in
2) Logarithmic transformation. Since most metrics are local areas, the general trend is monotonically non-decreasing.
highly skewed, each metric(except for fix) performs a Therefore, we can draw a conclusion that progressive sampling
logarithmic transformation. is feasible in the JIT-SDP problem.
3) tDheeaelixnpgerwimitehntcalaresscliamssb-aimlanbcaela.ncTehde, id.ea.t,athseetnsumusbeedr oinf B. Analysis for RQ2
defect-inducing changes is far more than the number of
clean changes. Therefore, we perform random
undersampling on the training set. By randomly removing the clean
changes, the number of defect-inducing changes is the
same as the number of clean changes.
        </p>
        <p>V. EXPERIMENTAL RESULTS AND DISCUSSION</p>
        <p>This section answers the questions raised in Section IV
through experiments.</p>
      </sec>
      <sec id="sec-4-7">
        <title>A. Analysis for RQ1</title>
        <p>
          Motivation. Progressive sampling is an effective means of
determining the optimal training sample size, and is widely
used in the field of software engineering [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]. This paper first
introduces progressive sampling into the JIT-SDP problem to
determine the optimal training sample size for the
prediction model. However, in practical applications, progressive
sampling requires that the learning curve of the prediction
model be well behaved [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. The basic characteristic of a
well behaved learning curve is that the slope of the learning
curve is monotonically non-increasing at the level of coarse
granularity [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. Therefore, we aim to verify whether
progressive sampling is feasible on JIT-SDP issues through empirical
research.
        </p>
        <p>Approach. The experiment uses the six open source projects
introduced in the Section IV as the research object to explore
whether the learning curve of the JIT-SDP model is well
behaved. Because the prediction model is based on a fast
training random forest algorithm, the arithmetic progressive
sampling method is adopted. To plot a learning curve for each
data sets, we divided the data sets into two parts: 50% as the
training pool for the constructing training sets and 50% as the
test sets for the model evaluation. The two parameters of the
arithmetic progressive sampling are as follows:
n0 = jtraining poolj 1%
a = jtraining poolj 1%
Since progressive sampling requires the learning curve to
be well behaved in coarse grain size, the granularity of our
parameter settings is large. The initial number of training
samples is 1% of the total number of training pools, and 1%
of the number of training samples is added per iteration.</p>
        <p>Findings. The experimental results are shown in Fig. 3,
which contains six subgraphs, each of which represents a
Motivation. The Section V-A has proven that progressive
sampling is feasible in the JIT-SDP problem. However, what
is the optimal training sample size to establish a high
performance prediction model by adopting progressive sampling is
a question worth studying. If a high-performance prediction
model can be built with very few training samples, then only
a small number of data sets need to be labelled during the
construction of the defect data sets, which can greatly reduce
the cost of data sets acquisition. Therefore, it is necessary to
further investigate the optimal training sample size based on
progressive sampling for JIT-SDP.</p>
        <p>
          Approach. The experiment uses the data sets of the six
projects introduced in Section IV. The prediction model is
built based on the random forest, and the optimal training
sample size is calculated based on the arithmetic progressive
sampling. The experimental data sets are divided into two
parts: 50% as a training pool for generating training sets and
50% as test sets for model evaluation. The parameters of the
arithmetic progressive sampling are as follows: First, the initial
sample size should be set small, so n0 is set to 0.5% of the
size of training pool. Second, since the training time of the
model is short, the number of samples added at each iteration
should not be too large. The experiment sets the growth rate
a to 20. The threshold in the progressive sampling is used to
determine whether the performance of the model is acceptable.
Threshold settings are usually given by experts in a particular
field. Previous studies have shown that the AUC value of the
JIT-SDP model is usually not lower than 0.75 [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]. Therefore,
the threshold of acceptable performance threshold AU C is
set to 0.75, i.e., once the AUC value of the prediction model
is greater than or equal to 0.75, the progressive sampling
terminates the iteration and returns the value of training sample
size.
        </p>
        <p>n0 = jtraining poolj 0:5%
a = 20
threshold AU C = 0:75
For better generalizability of experimental results, and to
counter random observation bias, the entire experiment is
repeated 100 times.</p>
        <p>Findings. The experimental results are shown in Fig. 4,
which describes box plots of optimal training sample sizes for
six projects. Table IV shows the median of optimal training
sample size for six projects, where the second column
represents the median of optimal training sample sizes calculated
from 100 experimental results, and the third column represents
bugzilla
columba
jdt
0
20
80
100
0
20
80
100
0
20
80
100
the ratio of the optimal training sample size to the total number
of data sets.</p>
        <p>As can be seen from the Table IV, the optimal training
sample size between each system has a large difference. In
particular, for system MOZ, PLA, and POS, the proportion
of the optimal training sample size to the total data sets is
very low (less than 3%), i.e., a JIT-SDP model with high
performance can be obtained by using less than 3% data sets
as training sets.</p>
        <p>Therefore, the use of progressive sampling is important for
specific projects. Empirical studies have shown that using only
a small number of samples can build a high performance
prediction model. We recommend using progressive sampling
to determine the number of training samples to reduce the cost
of building defect data sets while preserving the performance
of the model.</p>
        <p>
          External validity. Threats to external validity are mainly
from the data sets used in the experiment. Although data sets
are widely used in JIT-SDP research [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], whether
the experimental conclusions can be extended to other project
data sets remains to be further verified. Therefore, more data
sets have yet to be mined to verify the generalization of
experimental results.
        </p>
        <p>
          Construct validity. The threats to construct validity are
mainly considered whether the evaluation indicator used in our
experiment can accurately reflect the prediction performance
of the prediction model. The experiment uses AUC to evaluate
the JIT-SDP model, which is also widely adopted by previous
research [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ].
        </p>
        <p>Internal validity. The threats to internal validity are mainly
from experimental code. Our experimental code is written in
python. In order to reduce errors in the code, we used mature
libraries and carefully checked the code of the experiment.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>VII. CONCLUSIONS AND FUTURE WORK</title>
      <p>In this paper, we first introduce progressive sampling for the
JIT-SDP. Progressive sampling is a commonly used sampling
strategy that progressively increases the number of training
samples to determine the optimal number of training
samples.The experiment is conducted on six open source projects
with 227417 changes. Our prediction model is built based on
the random forest algorithm and evaluated by AUC.</p>
      <p>Large-scale empirical studies demonstrate that progressive
sampling is feasible in the JIT-SDP scenario. Moreover,
experimental results show that the optimal training sample size
derived by progressive sampling is very small. Especially, the
proportion of training samples to the total number of data
sets is less than 3% on the projects MOZ, PLA, and POS.
Therefore, we suggest that progressive sampling can be used in
the practical application of JIT-SDP to determine the optimal
number of samples, thereby reducing the number of training
samples and reducing the cost of acquiring data sets.</p>
      <p>In the future, we plan to design a more intelligent
progressive sampling method. We aim to further reduce the
training sample size by selecting samples more intelligently so
that progressive sampling can reach the termination condition
earlier. Secondly, in order to further verify the generalization
of the experimental conclusions, we hope to collect more data
sets to improve the reliability of the experimental conclusions.</p>
    </sec>
    <sec id="sec-6">
      <title>ACKNOWLEDGMENT</title>
      <p>This work is partially supported by the NSF of China under
grants No.61772200 and 61702334, Shanghai Pujiang Talent
Program under grants No. 17PJ1401900. Shanghai Municipal
Natural Science Foundation under Grants No. 17ZR1406900
and 17ZR1429700. Educational Research Fund of ECUST
under Grant No. ZH1726108. The Collaborative Innovation
Foundation of Shanghai Institute of Technology under Grants
No. XTCX2016-20.
18</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Kamei</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Shihab</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Adams</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. E.</given-names>
            <surname>Hassan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mockus</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Sinha</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Ubayashi</surname>
          </string-name>
          , “
          <article-title>A large-scale empirical study of just-in-time quality assurance</article-title>
          ,
          <source>” IEEE Transactions on Software Engineering</source>
          , vol.
          <volume>39</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>757</fpage>
          -
          <lpage>773</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Z.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Jing</surname>
          </string-name>
          , and
          <string-name>
            <given-names>X.</given-names>
            <surname>Zhu</surname>
          </string-name>
          , “
          <article-title>Progress on approaches to software defect prediction</article-title>
          ,
          <source>” IET Software</source>
          , vol.
          <volume>12</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>161</fpage>
          -
          <lpage>175</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>L.</given-names>
            <surname>Cai</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Fan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Yan</surname>
          </string-name>
          , and
          <string-name>
            <given-names>X.</given-names>
            <surname>Xia</surname>
          </string-name>
          , “
          <article-title>Just-in-time software defect prediction:a road map</article-title>
          ,
          <source>” Journal of Software</source>
          , vol.
          <volume>30</volume>
          , no.
          <issue>5</issue>
          , pp.
          <fpage>1288</fpage>
          -
          <lpage>1307</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>A.</given-names>
            <surname>Mockus</surname>
          </string-name>
          and
          <string-name>
            <given-names>D. M.</given-names>
            <surname>Weiss</surname>
          </string-name>
          , “
          <article-title>Predicting risk of software changes</article-title>
          ,
          <source>” Bell Labs Technical Journal</source>
          , vol.
          <volume>5</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>169</fpage>
          -
          <lpage>180</lpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>E.</given-names>
            <surname>Shihab</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. E.</given-names>
            <surname>Hassan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Adams</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Z. M.</given-names>
            <surname>Jiang</surname>
          </string-name>
          , “
          <article-title>An industrial study on the risk of software changes,” in 20th ACM SIGSOFT Symposium on the Foundations of Software Engineering</article-title>
          , FSE, p.
          <fpage>62</fpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M.</given-names>
            <surname>Tan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Tan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Dara</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Mayeux</surname>
          </string-name>
          , “
          <article-title>Online defect prediction for imbalanced data</article-title>
          ,
          <source>” in 37th IEEE/ACM International Conference on Software Engineering, ICSE</source>
          , pp.
          <fpage>99</fpage>
          -
          <lpage>108</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>Q.</given-names>
            <surname>Huang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Xia</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Lo</surname>
          </string-name>
          , “
          <article-title>Revisiting supervised and unsupervised models for effort-aware just-in-time defect prediction,” Empirical Software Engineering</article-title>
          , vol.
          <volume>24</volume>
          , no.
          <issue>5</issue>
          , pp.
          <fpage>2823</fpage>
          -
          <lpage>2862</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>T.</given-names>
            <surname>Hoang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. K.</given-names>
            <surname>Dam</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Kamei</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Lo</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Ubayashi</surname>
          </string-name>
          , “
          <article-title>Deepjit: an end-to-end deep learning framework for just-in-time defect prediction</article-title>
          ,”
          <source>in Proceedings of the 16th International Conference on Mining Software Repositories, MSR</source>
          , pp.
          <fpage>34</fpage>
          -
          <lpage>45</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>J.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zhou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Yang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Lu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Xu</surname>
          </string-name>
          , “
          <article-title>Code churn: A neglected metric in effort-aware just-in-time defect prediction</article-title>
          ,” in
          <source>2017 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement</source>
          , ESEM, pp.
          <fpage>11</fpage>
          -
          <lpage>19</lpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>D. A.</given-names>
            da
            <surname>Costa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>McIntosh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Shang</surname>
          </string-name>
          , U. Kulesza,
          <string-name>
            <given-names>R.</given-names>
            <surname>Coelho</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A. E.</given-names>
            <surname>Hassan</surname>
          </string-name>
          , “
          <article-title>A framework for evaluating the results of the SZZ approach for identifying bug-introducing changes</article-title>
          ,
          <source>” IEEE Transactions on Software Engineering</source>
          , vol.
          <volume>43</volume>
          , no.
          <issue>7</issue>
          , pp.
          <fpage>641</fpage>
          -
          <lpage>657</lpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>X.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Q.</given-names>
            <surname>Gu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Ni</surname>
          </string-name>
          , W. Liu, and
          <string-name>
            <given-names>Q.</given-names>
            <surname>Wang</surname>
          </string-name>
          , “
          <article-title>A survey on cross-project software defect prediction methods</article-title>
          ,
          <source>” Journal of Computer</source>
          , vol.
          <volume>41</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>254</fpage>
          -
          <lpage>274</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>A.</given-names>
            <surname>Sarkar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Guo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Siegmund</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Apel</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          , “
          <article-title>Costefficient sampling for performance prediction of configurable systems</article-title>
          (T),
          <source>” in 30th IEEE/ACM International Conference on Automated Software Engineering, ASE</source>
          , pp.
          <fpage>342</fpage>
          -
          <lpage>352</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>A.</given-names>
            <surname>Lazarevic</surname>
          </string-name>
          and
          <string-name>
            <given-names>Z.</given-names>
            <surname>Obradovic</surname>
          </string-name>
          , “
          <article-title>Data reduction using multiple models integration,” in Principles of Data Mining and Knowledge Discovery, 5th European Conference</article-title>
          , PKDD, pp.
          <fpage>301</fpage>
          -
          <lpage>313</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>X.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zhao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Q.</given-names>
            <surname>Wang</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Z.</given-names>
            <surname>Yuan</surname>
          </string-name>
          ,
          <article-title>“MULTI: multi-objective effort-aware just-in-time software defect prediction</article-title>
          ,
          <source>” Information &amp; Software Technology</source>
          , vol.
          <volume>93</volume>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>13</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>K.</given-names>
            <surname>Deb</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Agrawal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pratap</surname>
          </string-name>
          , and T. Meyarivan, “
          <article-title>A fast and elitist multiobjective genetic algorithm: NSGA-II,”</article-title>
          <source>IEEE Transactions on Evolutionary Computation</source>
          , vol.
          <volume>6</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>182</fpage>
          -
          <lpage>197</lpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>X.</given-names>
            <surname>Yang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Yu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Fan</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Yang</surname>
          </string-name>
          , “
          <article-title>An empirical studies on optimal solutions selection strategies for effort-aware just-in-time software defect prediction</article-title>
          ,
          <source>” in The 31st International Conference on Software Engineering and Knowledge Engineering</source>
          , SEKE, pp.
          <fpage>319</fpage>
          -
          <lpage>424</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>G. G.</given-names>
            <surname>Cabral</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. L.</given-names>
            <surname>Minku</surname>
          </string-name>
          , E. Shihab, and
          <string-name>
            <given-names>S.</given-names>
            <surname>Mujahid</surname>
          </string-name>
          , “
          <article-title>Class imbalance evolution and verification latency in just-in-time software defect prediction</article-title>
          ,”
          <source>in Proceedings of the 41st International Conference on Software Engineering, ICSE</source>
          , pp.
          <fpage>666</fpage>
          -
          <lpage>676</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>G. M.</given-names>
            <surname>Weiss</surname>
          </string-name>
          and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Tian</surname>
          </string-name>
          , “
          <article-title>Maximizing classifier utility when there are data acquisition and modeling costs,” Data Mining and Knowledge Discovery</article-title>
          , vol.
          <volume>17</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>253</fpage>
          -
          <lpage>282</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>F. J.</given-names>
            <surname>Provost</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. D.</given-names>
            <surname>Jensen</surname>
          </string-name>
          , and T. Oates, “
          <article-title>Efficient progressive sampling</article-title>
          ,”
          <source>in Proceedings of the Fifth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, KDD</source>
          , pp.
          <fpage>23</fpage>
          -
          <lpage>32</lpage>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>G. H. John and P.</given-names>
            <surname>Langley</surname>
          </string-name>
          , “
          <article-title>Static versus dynamic sampling for data mining</article-title>
          ,”
          <source>in Proceedings of the Second International Conference on Knowledge Discovery and Data Mining, KDD</source>
          , pp.
          <fpage>367</fpage>
          -
          <lpage>370</lpage>
          ,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>L.</given-names>
            <surname>Breiman</surname>
          </string-name>
          , “Random forests,
          <source>” Machine Learning</source>
          , vol.
          <volume>45</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>5</fpage>
          -
          <lpage>32</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Kamei</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Fukushima</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>McIntosh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Yamashita</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Ubayashi</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A. E.</given-names>
            <surname>Hassan</surname>
          </string-name>
          , “
          <article-title>Studying just-in-time defect prediction using cross-project models,” Empirical Software Engineering</article-title>
          , vol.
          <volume>21</volume>
          , no.
          <issue>5</issue>
          , pp.
          <fpage>2072</fpage>
          -
          <lpage>2106</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Jiang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Cukic</surname>
          </string-name>
          , and T. Menzies, “
          <article-title>Can data transformation help in the detection of fault-prone modules?,”</article-title>
          <source>in Proceedings of the 2008 Workshop on Defects in Large Software Systems, held in conjunction with the ACM SIGSOFT International Symposium on Software Testing and Analysis, ISSTA</source>
          , pp.
          <fpage>16</fpage>
          -
          <lpage>20</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Kamei</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Matsumoto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Monden</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Matsumoto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Adams</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A. E.</given-names>
            <surname>Hassan</surname>
          </string-name>
          , “
          <article-title>Revisiting common bug prediction findings using effortaware models</article-title>
          ,
          <source>” in 26th IEEE International Conference on Software Maintenance, ICSM</source>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>10</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>C.</given-names>
            <surname>Tantithamthavorn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>McIntosh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. E.</given-names>
            <surname>Hassan</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Matsumoto</surname>
          </string-name>
          , “
          <article-title>An empirical comparison of model validation techniques for defect prediction models</article-title>
          ,
          <source>” IEEE Transactions on Software Engineering</source>
          , vol.
          <volume>43</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>18</lpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>