issue_classify/result.tex

407 lines
23 KiB
TeX
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\subsection{Evaluation Metrics}
\textit{Precision}, \textit{recall} and \textit{F-measure} are widely used standard metrics in related work, such as issue assignment \cite{zanetti2013categorizing}, bug prediction \cite{d2010extensive,neuhaus2007predicting} and reviewer recommendation \cite{lee2013patch,jeong2009improving}.
These metrics can measure the performance of models from different perspectives.
For instance, \textit{precision} is used to measure the exactness of the prediction, whereas \textit{recall} evaluates the completeness.
\textit{F-measure} denotes the balance and discrepancy between \textit{precision} and \textit{recall},
which can be interpreted as the weighted average of \textit{precision} and \textit{recall}:
\begin{equation}
F-measure = 2*\frac{precision*recall}{precision+recall}
\end{equation}
In~\cite{zhou2014combining}, the weighted average value of \textit{F-measure} for both categories
is used to evaluate the classification model.
This metric considers the performance of both categories and provides an overall performance of the classification model.
Thus, in this paper, metrics similar to~\cite{zhou2014combining}, which are defined in Equation \ref{equation:performance}, were selected,
in which the \textit{average F-measure} as $f_{avg}$, \textit{F-measure} of bug (nonbug) as ${f_{bug}}$ (${f_{nonbug}}$), and number of bug (nonbug) as ${n_{bug}}$(${n_{nonbug}}$).
\begin{equation}
{f_{avg}} = \frac{n_{bug}*f_{bug}+n_{nonbug}*f_{nonbug}}{n_{bug}+n_{nonbug}}
\label{equation:performance}
\end{equation}
\subsection{RQ1:Performance of Text-based Classification}
\begin{table*}[htbp]
\centering
\caption{\label{tab:compareML} Comparisons of different text-based classifiers}
\begin{tabular}{lccccc}
\toprule
Group A vs. Group B & Estimator & Lower & Upper & Statistic & p-value \\
\midrule
NB vs. Base Line & 0.028 & 0.010 & 0.074 & -9.61727834 & 0.000000e+00 \\
LR vs. Base Line & 0.005 & 0.001 & 0.025 & -8.85487385 & 0.000000e+00 \\
RF vs. Base Line & 0.001 & 0.000 & 0.016 & -6.53029671 & 3.446741e-10 \\
SVM vs. Base Line & 0.001 & 0.001 & 0.002 & -43.36487241 & 0.000000e+00 \\
SVM vs. NB & 0.127 & 0.067 & 0.226 & -7.62243934 & 0.1.173506e-13 \\
SVM vs. LR & 0.310 & 0.207 & 0.437 & -4.04251177 & 5.212218e-04 \\
SVM vs. RF & 0.296 & 0.195 & 0.421 & -4.36384024 & 1.115098e-04 \\
% \bottomrule
% Combined method vs. SVM & 0.348 & 0.246 & 0.466 & -3.277566 & 0.005725885 \\
% Combined method vs. developer information & 0.398 & 0.290 & 0.517 & -2.207413 & 0.012257345 \\
% Combined method vs. perplexity information & 0.448 & 0.336 & 0.567 & -1.113729 & 0.048434745 \\
\bottomrule
\end{tabular}
\end{table*}
For issue classification,
four different machine learning classifiers (``\textit{Naive Bayes}'', ``\textit{Logistic Regression}'', ``\textit{Random Tree}'', ``\textit{Support Vector Machine}'') were used on our dataset,
and four classification models were built for each project
to discuss which text-based classifier performs best.
A baseline method was set, a grep-based method, which uses a simple grep with keywords like ``bug'',``defect'', or ``fix'' to determine whether an issue is bug.
Boxplot was used to exhibit the result of each classifier and acquire the overall performance of all projects for each classifier.
The \textit{average F-measure} (\ie $f_{avg}$) was used to evaluate these classifiers and calculate the average value of ten-fold results as performance.
Figure~\ref{figure:performanceML} shows the $f_{avg}$ of baseline method and four different classifiers,
where the y-axis is $f_{avg}$.
Figure \ref{figure:performanceML} shows that all four classifier approaches outperform the baseline method.
\textit{Logistic Regression} and \textit{Random Tree} reach a close performance,
which are better than that of \textit{Naive Bayes} but slightly worse than \textit{SVM}.
Statistical analysis was used to verify our conclusions about the difference between text-based classifiers and the baseline method.
Traditionally, the comparison of multiple groups follows a two-step approach:
first, a global null hypothesis is tested,
and then multiple comparisons are used to test the sub-hypotheses pertaining to each pair of groups.
However, the global test null hypothesis may be rejected, whereas none of the sub-hypotheses are rejected, or vice versa \cite{gabriel1969simultaneous}.
Therefore, the one-step approach, multiple contrast test procedure $\widetilde{\textbf{T}}$~\cite{konietschke2012rank,yu2016IST},
is preferred in this study.
The procedure $\widetilde{\textbf{T}}$ by \textit{nparcomp} package \cite{fraenkel1993design} in R was implemented to evaluate the F-Measure of all the approaches operating on 80 projects in our dataset.
The \textit{Tukey} (all-pairs) was set to contrast to compare all groups pairwise.
For each pair of groups, the 95\% confidence interval was analyzed to test whether the corresponding null sub-hypothesis can be rejected.
If the lower boundary of the interval is greater than zero for groups A and B,
then the metric value is higher in A than in B.
Similarly, if the upper boundary of the interval is less than zero for groups A and B,
then the metric value is lower in A than in B.
Finally, if the lower boundary of the interval is less than zero and the upper boundary is greater than zero,
then the data do not provide sufficient evidence to reject the null hypothesis.
% \begin{table*}[htbp]
% \centering
% \caption{\label{tab:compareImprove}Performance comparison of different approaches}
% \begin{tabular}{llcccc}
% \toprule
% Case & Group A vs. Group B & Avg. Imp & Min. Imp & Max. Imp & p.Value \\
% \midrule
% Performance < 0.75 & DI + SVM vs. SVM & 0.003 & 0.003 & 0.033 & 0.8743 \\
% & PI + DI + SVM vs. SVM & 0.024 & 0.002 & 0.061 & 0.0041 \\
% & PI + DI + SVM vs. DI + SVM & 0.021 & 0 & 0.076 & 0.0168 \\
% \midrule
% Performance < 0.8 & DI + SVM vs. SVM & 0.001 & -0.031 & 0.033 & 0.8163 \\
% & PI + DI + SVM vs. SVM & 0.014 & -0.008 & 0.061 & 0.0124 \\
% & PI + DI + SVM vs. DI + SVM & 0.013 & 0 & 0.076 & 0.0299 \\
% \bottomrule
% \end{tabular}
% \end{table*}
Table~\ref{tab:compareML} shows results of procedure $\widetilde{\textbf{T}}$
(the last three rows are the results of Section~\ref{sec:2stage}).
All the \textit{p-values} are less than 0.05 in the first four rows.
Thus, a significant difference among the four text-based classifications and base line method is observed,
which implies that text-based classifications are useful for the issue classification in ITS of GitHub.
Similarly, all the \textit{p-values} are less than 0.05 in the next four rows and the lower and upper boundaries are greater than zero,
which means that the performance of \textit{SVM} is significantly better than the other three classifications.
% \fbox{
% \parbox{
% \begin{center}
% aaa\\
% bbb
% \end{center}
% }
% }
\begin{framed}
\noindent
\textbf{Result 1:}
\textit{
In the context of GitHub's ITS, text-based classification approaches can achieve
69.7\% to 98.9\% of average F-measure (calculated as Equation~\ref{equation:performance}) on our large-scale dataset,
and the SVM classifier is the most effective approach compared to other typical classifiers.
%For most of projects in GitHub, MLTs still work on classifying issues.
%And SVM performs significant better than other 3 MLTs for 101 projects.
}
\end{framed}
\begin{figure}[!htb]
\centering
% \includegraphics[width=8.5cm]{classprocess}
\includegraphics[width=8.5cm]{figure/boxplot}
\caption{$f_{avg}$ of different ML methods}
\label{figure:performanceML}
\end{figure}%picture
\subsection{RQ2:Regression Analysis}
\label{sec:regressionResult}
Table~\ref{tab:fixedmodel} shows the result of regression analysis.
The model achieves an amazing fit (${R_c}^2 = 92.5\%$).
In our model, all the remaining factors are well below three,
thereby indicating the absence of multicollinearity~\cite{gharehyazie2014developer}.
Moreover, no interaction among the variables in the models is observed,
making the interpretation of our results easy and maintaining the cleanliness of the models.
For project-level measures, the number of issues ($log(issue\_num)$) is highly significant,
which means that the number of issues in train set is far from sufficient. Based on current data set, the more training sets used,
the higher is the \textit{average F-measure} that the classification achieves.
Moreover, no statistical significance is observed in other project-level measures with regard to the influencing the performance of the classification model.
For issue-level measures, the number of confused issues ($log(confuse\_count + 0.5)$) contained in the dataset is highly significant.
When the dataset contains many confused issues, too many instances locate closely at the hyperplane of the classification model,
which complicates the construction of an effective model.
The median number of words ($log(med\_word\_count)$) in issues is insignificant,
thereby suggesting that providing many textual summaries of the issues does not help in distinguishing between bug-prone or non-bug-prone,
and some key words may be enough to build an effective classification model.
% \begin{table}[htbp]
% \centering
% \caption{\label{tab:compareML}Performance comparison of different ML techniques}
% \begin{tabular}{lrrll}
% \toprule
% & Estimate & t Value & p value & \\
% \midrule
% $log(star + watch)$ & 0.006207 & 3.216 & 0.00173 & ** \\
% $log(post_num)$ & 0.078255 & 13.754 & <2e-16 & *** \\
% $log(confuse_count + 0.5)$ & -0.064934 & -18.108 & <2e-16 & *** \\
% $log(med_word_count)$ & 0.009829 & 1.265 & 0.20883 & \\
% \bottomrule
% \end{tabular}
% \end{table}
\begin{table}[htbp]
\centering
\caption{\label{tab:fixedmodel}Regression result of fixed effect}
\begin{tabular}{l|r@{}lr@{}l}
\hline
& Coeffs & & Sum Sq. & \\ \hline
(intercept) & -3.37543 &* & & \\
$log(star + watch)$ & 0.06316 & & 0.197 & \\
$log(issue\_num)$ & 1.90440 &***& 30.484 &*** \\
$log(contributors)$ & -0.03135 & & 0.022 & \\
$log(age + 0.5)$ & -0.22421 &* & 0.288 & \\
$log(commits)$ & -0.34256 & & 0.842 &* \\ \hline
$log(confuse\_count + 0.5)$ & -1.83346 &***& 134.623 &*** \\
$log(med\_word\_count)$ & 0.12505 & & 0.067 & \\ \hline
marginal R-squared & \multicolumn{4}{c}{0.6798150} \\
conditional R-squared & \multicolumn{4}{c}{0.9251896} \\ \hline
\multicolumn{5}{l}{signif.: $p<0.001$ `***', $p<0.01$ `**', $p<0.05$ `*'} \\
\end{tabular}
\end{table}
\begin{framed}
\textbf{Result 2:}
\textit{
% 增加训练集的数量能够有效的提升模型的性能除此之外训练数据中如果包含太多的confused issue会严重影响训练集的性能。
Increasing the size of the training set can effectively improve the performance of the classification model.
Furthermore, too many confused issues in the training set will seriously affect its performance.
}
\end{framed}
\subsection{RQ3:two-stage Classification}
\label{sec:2stage}
% \begin{table*}[htbp]
% \centering
% \caption{Classification results of different methods}
% \label{table:detailresult}
% \begin{tabular}{|l|l|ccc|ccc|ccc|}
% \hline
% & & \multicolumn{3}{c|}{1st baseline} & \multicolumn{3}{c|}{2nd baseline} & \multicolumn{3}{c|}{our approach} \\
% & & Precision & Recall & F-Meature & Precision & Recall & F-Meature & Precision & Recall & F-Meature \\ \hline
% \multirow{3}{*}{First Quartile} & Bug & 0.720 & 0.672 & 0.670 & 0.718 & 0.680 & 0.676 & 0.734 & 0.715 & 0.706 \\
% & Nonbug & 0.747 & 0.708 & 0.708 & 0.747 & 0.708 & 0.711 & 0.754 & 0.737 & 0.730 \\
% & Average & 0.734 & 0.690 & 0.689 & 0.733 & 0.694 & 0.694 & \textbf{0.744} & \textbf{0.726} & \textbf{0.718} \\ \hline
% \multirow{3}{*}{Median} & Bug & 0.748 & 0.719 & 0.715 & 0.748 & 0.722 & 0.719 & 0.761 & 0.746 & 0.731 \\
% & Nonbug & 0.765 & 0.727 & 0.733 & 0.765 & 0.729 & 0.735 & 0.770 & 0.759 & 0.750 \\
% & Average & 0.757 & 0.723 & 0.724 & 0.757 & 0.726 & 0.727 & \textbf{0.766} & \textbf{0.753} & \textbf{0.741} \\ \hline
% \end{tabular}
% \end{table*}
% 介绍实验方法 分为4个PART
% 介绍每个part两层的方法普遍有提升而且对第一层为lg和nb的方法提升较多
% 对part1提升效果小因为混乱的内容少但是对part4提升效果多
In this section, an experiment based on the two-stage classifier was conducted to validate our approach.
The second stage of our approach is designed to extract semantic perplexity information.
Since the number of confused issues in the training set will influence the experiment results because of conclusion Section \ref{sec:regressionResult},
we divide the data set according to the proportion of confused issues.
Relying on first quartile, median and third quartile of confused issues ratio, we divide the 80 projects into 4 parts,
and each part contains 20 projects (Part I contains the fewest confused issues and Part IV contains the most confused issue).
For two-stage classifier, we choose different combinations from 4 text-based classifiers and finally we get a total of 16 combinations results.
In addition, these 4 text-based classifiers are used as comparative experiments in this section.
% An experiment based on the two-stage classifier was conducted to validate our approach.
% In the first stage, SVM was used as text classifier based on the conclusion of RQ1.
% In the second stage, we selected Logistic Regression as our prediction model, which performed better than other classifier in table~\ref{tag:packages}.
% As projects that achieve a high $f_{avg}$ (\ie average F-measure) contain few confused issues,
% our approach has a slight effect on these projects.
% Thus, to explore the performance of our approach for different projects, the project selection has two cases.
% In the first case, projects whose $f_{avg}$ is less than the \textit{first quartile} (0.7521) are selected.
% In the second case, projects whose $f_{avg}$ is less than the \textit{median} (0.7935) are selected.
% In this paper, \textit{\textbf{SVM}} is selected as the first method,
% whose $f_{avg}$ is the best among the four different text-based classifiers.
% Two other approaches are used to explore the effect of \textit{\textbf{developer information}}
% and \textit{\textbf{perplexity information}} in our two-stage approach.
% The developer information method only extracts probability of being bug-prone from free text in the first stage, because omitting the structured information is serious in GitHub;
% thus, the historical activities of the reporter in Stage 2 were selected to build as a classifier similar to work~\cite{zhou2014combining}
% and are described in Section~\ref{section:secondlevel}.
% The perplexity information method,
% which is used to compare the effect of perplexity information and developer information,
% extracts perplexity in the first stage, and does not use structured developer information in the second stage.
% The \textit{\textbf{combined method}} is our two-stage approach, which makes use of both perplexity information and developer information.
% Table~\ref{table:detailresult} shows the comparison results of precision, recall,
% and F-measure for two baseline approaches with the results of our approach.
% The values in Table~\ref{table:detailresult} are the average results of 101 projects.
% Figure~\ref{figure:2levelresult} shows the comparison results of $f_{avg}$.
\begin{table}[htbp]
\centering
\caption{\label{tab:compare2stage} Comparisons of different text-based classifiers and 2-stage classifiers}
\begin{tabular}{ccccccc}
% \hline
\toprule
\multirow{2}{*}{Part} &\multirow{2}{*}{first stage} & \multicolumn{1}{c}{\multirow{2}{*}{1-stage}} & \multicolumn{4}{c}{2-stage} \\ \cline{4-7}
& & \multicolumn{1}{c}{} & NB & RF & LR & SVM \\
\midrule
\multirow{4}{*}{Part I} & NB & 72.73\% & 75.15\% & 82.68\% & 82.71\% & 82.58\% \\
& RF & 81.26\% & 81.32\% & 81.31\% & 81.26\% & 81.26\% \\
& LR & 81.73\% & 82.42\% & 84.63\% & 85.28\% & 85.16\% \\
& SVM & \textbf{85.25\%} & 85.22\% & 84.88\% & \textbf{85.48\%} & 85.35\% \\
\midrule
\multirow{4}{*}{Part II} & NB & 70.82\% & 74.20\% & 80.13\% & 79.47\% & 79.10\% \\
& RF & 77.91\% & 77.93\% & 78.06\% & 77.91\% & 77.91\% \\
& LR & 76.04\% & 76.64\% & 80.83\% & 81.02\% & 80.77\% \\
& SVM & \textbf{81.27\%} & 81.26\% & 81.20\% & \textbf{81.56\%} & 81.40\% \\
\midrule
\multirow{4}{*}{Part III} & NB & 69.32\% & 71.20\% & 76.80\% & 76.85\% & 76.19\% \\
& RF & 75.29\% & 75.33\% & 75.30\% & 75.29\% & 75.29\% \\
& LR & 74.81\% & 75.51\% & 77.81\% & 78.35\% & 78.02\% \\
& SVM & \textbf{78.23\%} & 78.26\% & 77.83\% & \textbf{78.48\%} & 78.15\% \\
\midrule
\multirow{4}{*}{Part IV} & NB & 63.51\% & 66.76\% & 73.59\% & 73.45\% & 72.94\% \\
& RF & 70.32\% & 70.45\% & 70.46\% & 70.32\% & 70.32\% \\
& LR & 68.62\% & 69.89\% & 74.66\% & 74.22\% & 74.29\% \\
& SVM & \textbf{73.81\%} & 73.84\% & 75.25\% & \textbf{75.31\%} & 75.01\% \\
\bottomrule
\end{tabular}
\end{table}
Table~\ref{tab:compare2stage} shows the performance of different text-based classifiers and 2-stage classifiers.
The 1-stage column shows the performance of different text-based classifiers, and 2-stage column shows the performance of 2-stage classifiers which use different classifiers in the second stage.
From the table, we can see most 2-stage classifiers outperform 1-stage classifiers, and 2-stage classifier \textit{$<SVM,LR>$} performs best among all 1-stage and 2-stage classifiers in 4 parts.
Compared with text-based classifiers, NB and LR used in first stage can benefit more from 2-stage classifier framework.
Part IV makes biggest improvements in four parts, which contains most confused issues.
And 2-stage classifiers have limited effect on the Part I, which contains least confused issues.
% shows that the combined method outperforms all other methods for 80 projects.
% % Table~\ref{table:detailresult} shows that the average values of precision, recall, and F-measure are all better than
% % those of the baseline methods.
% For procedure $\widetilde{\textbf{T}}$ (last rows in Table~\ref{tab:compareML}),
% all the \textit{p-values} of combined method versus SVM, developer information method and perplexity information method are less than 0.05,
% and the lower and upper boundaries are greater than zero,
% which means that combined method is more significant than other approaches.
\begin{framed}
\noindent
\textbf{Result 3:}
\textit{
The two-stage classification approach can achieve a improvement
compared to traditional text-based classification by integrating our novel perplexity features.
And the more confused issues exist in the dataset, the better performance the 2-stage classification can achieve.
%significantly improve the classification performances
%with the 1.1\% precision and 3.2\% recall on average.
%The approach that adds perplexity information extracted from free text of issues can significant improve the performance of classification model.
}
\end{framed}
Although the value of the absolute increase is not impressive,
the extracted features (semantic perplexity information) are generally effective in improving the performance of the classifier model.
The result of dividing sentences is not ideal.
Issue reports in these projects are contrasted sharply,
combining free text with codes, hyper-link, and stack track, thereby complicating the finetuning for every project.
The preprocessing is not perfect, which limits the promotion of some projects.
Even facing this challenge, our approach still achieves a stable improvement.
We believe that when applied in practice,
a highly individualized data preprocessing approach can be a great help in extracting features
that are in agreement with our approach.
\subsection{RQ4:Performances with mislabeled dataset}
% 折线图
% 介绍实验方法
% 分为4个part
% 随机转换%比的数据进行训练,然后看实验结果的变化
In this section, we mainly to detect SVM (the best performance of 4 different text-based classifiers) and our 2-stage classifier \textit{$<SVM,LR>$} (the best performance of 2-stage classifiers).
Since the number of confused issues in the training set will influence the performance of our 2-stage classification approach, we also divide the data set into 4 part as section~\ref{sec:2stage}.
The proportion of mislabeled issues ranges from 1\% to 30\%, increasing by 1\% each time.
And the results of performance influenced by mislabeled train set are shown in Figure~\ref{fig:robust}.
\begin{figure}
%\begin{tabular}{cc}
\begin{minipage}{0.48\linewidth}
\centerline{\includegraphics[width=6.5cm]{figure/l1}}
\centerline{(a) Part I}
\end{minipage}
\hfill
\begin{minipage}{0.48\linewidth}
\centerline{\includegraphics[width=6.5cm]{figure/l2}}
\centerline{(b) Part II}
\end{minipage}
\vfill
\begin{minipage}{0.48\linewidth}
\centerline{\includegraphics[width=6.5cm]{figure/l3}}
\centerline{(c) Part III}
\end{minipage}
\hfill
\begin{minipage}{0.48\linewidth}
\centerline{\includegraphics[width=6.5cm]{figure/l4}}
\centerline{(d) Part IV}
\end{minipage}
%\end{tabular}
\caption{Performance with mislabeled dataset}
\label{fig:robust}
\end{figure}
The performance of 2-stage classification approach is mainly influenced by 2 factors:
1) the proportion of confused issues and 2) the accuracy of classification results in first stage.
We have discussed how the proportion of confused issues influenced the performance of 2-stage classifier in Section~\ref{sec:2stage}————The more confused issues exist in the dataset, the better performance the 2-stage classification approach can achieve.
For factor 2, most of the features in the second stage is extracted from the first stage.
The error information introduced by first stage will be passed to the second stage.
too many mislabeled issues will accumulate the error information, which may decline the performance of 2-stage classifier.
The results in Figure~\ref{fig:robust} also confirmed our assumption about the performance of 2-stage classifier.
For Part I, there are few confused issues in data set, so the performance of 2-stage classifier declines quickly.
For Part II and Part III, 2-stage classifier is slightly better than SVM between 0 and 10\% noise data.
But with the increase of noise data, SVM outperform 2-stage classifier.
Part IV contains most confused issues, which benefits most from 2-stage classifier.
Therefore, the negative impact of mislabeled data is offset by positive influence earning from confused issues.
The result of Part IV in Figure~\ref{fig:robust} shows that 2-stage classifier is better than SVM between 0 and 15\% noise data.
With the increase of noise data, 2-stage classifier decline as SVM.
\begin{framed}
\noindent
\textbf{Result 4:}
\textit{
The performance of 2-stage classifier is influenced by 1)the number of confused issues and 2)the performance of first stage.
The anti-noise ability of 2-stage classifier is related to the number of confused issues in train set.
}
\end{framed}