Você está na página 1de 15

Uma proposta de modelo de predição cruzada de defeito,

utilizando similaridade em projetos


Ricardo F. P. Satin1 , Igor Scaliante Wiese 1 , Marco Aurélio Gerosa2 , Reginaldo Ré1

1
Departamento de Computação – Universidade Tecnológica Federal do Paraná
Paraná, Brasil
2
Instituto de Matemática e Estatística – Universidade de São Paulo
São Paulo, Brasil
ricardo.francisco@gmail.com, {gerosa@ime.usp.br}, {igor,reginaldo}@utfpr.edu.br

Abstract. The quality of software can be measured based on their defects and
cross-project prediction can be used to help find them. This work propose the
use of an alternative measure to group projects for cross-prediction. The tech-
nique uses the similarity of values of the ROC curve obtained with classification
algorithms combined with different feature selection techniques to group simi-
lar projects. Results indicate that in 63.16% of the predictions, the proposed
technique achieves values of ROC curve higher than a random model (> = 0.5).
We performed the prediction comparing five classification algorithms. The best
result was obtained with the combination of Naive Bayes with Genetic Search
and CFS. The results qualify to find similar projects.

Resumo. A qualidade de um software pode ser medida com base em seus defei-
tos e a predição cruzada de defeito entre projetos pode ser usada para ajudar
a encontrá-los. Este trabalho propõe o uso de uma medida alternativa para
agrupar projetos para predição cruzada. A técnica usa similaridade dos valo-
res da curva ROC obtidos com o uso de algoritmos de classificação e seleção de
atributos para agrupar projetos similares. Resultados indicam que em 63,16%
das predições, a técnica proposta obteve valores de curva ROC acima de um
modelo randômico (>= 0.5). Após a comparação de 5 algoritmos de classifica-
ção, o melhor resultado foi obtido com a combinação de Naive Bayes com CFS
e Genetic Search. Os resultados o qualificam para encontrar projetos similares.

1. Introdução
O desenvolvimento de software sofre impacto na qualidade de suas soluções devida in-
cidência de defeitos nas versões. Para minimizar esse problema existe o processo de
predição de defeitos. Ele busca predizer a existência deles antes que ocorram [Hall et al.
2012], permitindo direcionar os esforços das equipes para: minimizar o tempo gasto com
a correção de defeitos; reduzir os custos de manutenção e incrementar a percepção de
qualidade final do produto [Catal and Diri 2009, Hall et al. 2012].
Predizer defeitos, que ocorrerão em um projeto de software é uma tarefa com-
plexa, especialmente nas fases iniciais do desenvolvimento [Zimmermann et al. 2009].
Fase em que os projetos estão bastante susceptíveis a modificações.
A predição cruzada entre projetos (cross-project defect prediction) é uma técnica
de predição usada especialmente para novos projetos. Esses projetos não tem dados his-
tóricos suficientes para construir seus próprios modelos de predição, usando por exemplo,
dados de versões anteriores. Um dos princípios por trás desse processo está a identifica-
ção de semelhanças entre projetos. Dessa forma, é importante a existências de métodos
que permita a identificação de características semelhantes entre eles para que seja possível
a realização da predição cruzada.
O uso de algoritmos de clusterização permite encontrar padrões similares entre
projetos, sendo a técnica mais utilizada em pesquisas anteriores, que utilizam diferentes
métricas de software para encontrar potenciais projetos semelhantes [Moser et al. 2008,
Jureczko and Madeyski 2010, Zhang et al. 2014, Zimmermann et al. 2009].
Neste trabalho, há a proposta do uso de algoritmos de classificação para avaliar
projetos, com os resultados próximos de predição tendo a medida de avaliação de mode-
los, chamada Área Sob a Curva ROC (curva ROC), para agrupar projetos semelhantes.
A hipótese por trás dessa ideia é, que a medida de similaridade utilizada neste trabalho
não são as métricas de software e sim as semelhanças existentes do valor da curva ROC,
obtidos com o processo de predição com o uso de algoritmos de seleção de atributos.
Dessa forma, neste trabalho as seguintes questões de pesquisa foram trabalhadas:
QP1: Existe algum algoritmo de classificação, que apresenta melhor performance
para ser utilizado com a técnica proposta? Para responder essa questão de pesquisa foram
comparados 5 algoritmos de classificação. Os resultados indicam, que Naive Bayes tem
melhores resultados, enquanto J48 apresentou pior desempenho.
QP2: Existe diferença nos resultados da predição cruzada de defeitos, quando a
técnica proposta neste trabalho é utilizada? Para responder essa questão de pesquisa a
técnica de agrupamento de projetos por similaridade da curva ROC foi implementada e
gerou um conjunto de agrupamentos. Em cada um foi feita predição cruzada entre os
projetos pertencentes com a utilização de Naive Bayes, depois o mesmo procedimento
foi realizado tendo como conjunto de treino todos os projetos pertencentes ao dataset.
Os resultados das predições local e glocal foram comparados, tendo como resultado fi-
nal, que os agrupamentos formados pela medida de similaridade da curva ROC apresenta
problemas de imbalance, que comprometeu a comprovação estatística de sua eficiência,
contudo, ainda se caracteriza em uma alternativa viável por reduzir o custo de predição.
O restante deste artigo está estruturado da seguinte forma: Na seção 2 são apre-
sentadas mais informações sobre as questões de pesquisa, na seção 3 são apresentadas
as informações sobre a criação, execução, agrupamento e os resultados das execuções
dos modelos. A seção 4 apresenta as ameaças à validade deste trabalho, na seção 5 são
apresentados os trabalhos relacionados com o tema desta pesquisa, na seção 6 são apre-
sentados os trabalhos futuros que seguirão esta pesquisa e por último, na seção 7 são
apresentadas as conclusões e resultados detalhados deste trabalho.

2. Questão de Pesquisa
Tendo a predição cruzada de defeito como uma ferramenta importante, que pode ser um
diferencial para qualidade de projetos em desenvolvimento, este trabalho apresenta uma
proposta alternativa para identificar semelhanças entre projetos para viabilizar sua utili-
zação. Para isso, se pretende responder as seguintes questões:
QP1: Existe algum algoritmo de classificação, que apresenta melhor performance
para ser utilizado com a técnica proposta?
QP2: Existe diferença nos resultados da predição cruzada de defeitos, quando a
técnica proposta neste trabalho é utilizada?
As respostas são apresentados na seção 3.

3. Modelos de predição cruzada de defeitos apoiada por similaridade de


projetos
3.1. Criação do modelo de predição cruzada de defeitos
A predição de defeitos pode ser obtida por meio da aplicação de modelos de predição
em projetos nos quais se pretende avaliar a presença ou ausência de defeitos. Segundo
Hall [Hall et al. 2012], um modelo é construído seguindo critérios de uma metodologia
que permita seu desenvolvimento, treino, teste e avaliação de desempenho. Procurou-se
seguir esses passos neste trabalho. No entanto, como a presente proposta visa a propor
uma técnica de predição cruzada de projetos que utiliza similaridade entre eles, tais passos
sofreram algumas modificações, conforme ilustrado na Figura 1.

Práticas de Tratamento Técnicas de


Algoritmos de Seleção de
de Dados
Classificação Atributos
Conjunto
de Dados Projetos para Teste
Dados não dos Projetos Criar Modelos de Lista de
Tratados de Tratar Dados de Projetos
Predição Classificadores e
Projetos
Selecionador
1 2 de Atributos
Algoritmos de
Especialista Especialista Weka Clusterização BSAS

Modelos de Predição
dos Projetos Agrupar Modelos de
Predição
por Similaridade

Modelos de
Modelos de Predição
Controle
Predição Cruzada
Avaliar Modelos Cruzada Testar Modelos
Entrada Atividade Saída de de
Predição Cruzada Predição Cruzada
A0 Resultados
5 de AUC 4

Legenda Mecanismo
Especialista Especialista Weka

Figura 1. Atividades de criação dos modelos de predição cruzada de defeitos


apoiada por similaridade de projetos.

Portanto, o desenvolvimento de um modelo exige a seleção de uma técnica de


modelagem e entre as mais utilizadas na literatura, segundo [Moser et al. 2008, Catal and
Diri 2009, Radjenovic et al. 2013], estão:
• Técnica de classificação ou aprendizado de máquina: Têm objetivo de avaliar um
grupo de classes e dividi-los em artefatos com ou sem defeito;
• Técnica de regressão ou estatística: Têm objetivo de prever a densidade ou quan-
tidade de defeitos, que uma classe possui;
Neste trabalho, a natureza do dataset com a informação sobre a presença ou ausên-
cia de Buggy nas classes dos projetos, direcionou a utilização da técnica de classificação.
Portanto, os algoritmos utilizados na construção dos modelos de predição seguem essa
linha. Os algoritmos, também chamados de classificadores, selecionados foram:

• Naive Bayes: Um classificador estatísticos, que tem característica de assumir, que


todos os atributos são independentes entre si;
• Simple Logistic: Um classificador utilizado para a construção de modelos de re-
gressão logística linear;
• Decision Table: Um classificador especializado em modelar um conjunto de regras
complexas e obter as ações correspondentes;
• J48: Um classificador estatístico utilizado para a geração de árvores de decisão;
• Random Forest: Um classificador que, para solucionar problemas de classificação,
trabalha com a construção de árvores de decisão.

Dessa forma, cinco modelos de predição começaram a ser criados, um para cada
algoritmo escolhido, caracterizando a diferença entre eles. A tarefa de classificação foi
então aplicada às classes dos projetos com a avaliação dos atributos presentes.
Esses atributos, métricas de software, são as entradas para a construção do modelo
de predição e assumirão o papel de preditores [Graves et al. 2000, Ostrand et al. 2005].
Há uma variedade de métricas catalogadas na literatura; existem métricas relacionadas a
critérios técnicos do software, como a complexidade do projeto [McCabe 1976]. Também
existem aquelas relacionadas ao processo de construção do software, como o nível de
experiência dos programadores [Jiang et al. 2007]. E também há outras relacionadas
a fatores sociais do processo de desenvolvimento, como o tipo e meio de comunicação
utilizado pelos desenvolvedores. [Bacchelli et al. 2010, Pinzger et al. 2008].
A seleção das métricas é uma importante atividade da construção do modelo de
predição. Alguns autores avaliam que a escolha das métricas adequadas é, que pode
viabilizar a transferência de modelos de predição [Hall et al. 2012]. Inicialmente elas
são obtidas pela mineração de informações disponíveis nos projetos, depois são refinadas
para que as mais relevantes sejam mantidas. Uma forma de fazer isso é com a utilização
de informações de especialistas ou com a criação de algoritmos para buscar identificar
padrões e correlacionar as métricas utilizadas entre projetos [Zimmermann et al. 2009].
Neste trabalho a opção foi da utilização de técnicas de feature selection junto com
os classificadores. Essa técnica procura encontrar entre todos os atributos aqueles, que
conseguem dar as melhores informações para os algoritmos de classificação.
Essa técnica utiliza um conjunto de algoritmos para realizar seu trabalho [Chan-
drashekar and Sahin 2014]. Eles procuram estabelecer relação entre os atributos avali-
ados, sendo chamados de avaliadores de atributos (Attibute Evaluator). Também utiliza
algoritmos, que estabelecem formas, por meio do qual subconjuntos de atributos são pes-
quisados e encontrados, eles são chamados de métodos de pesquisa (Search Method).
Neste trabalho, os seguintes avaliadores de atributo foram selecionados:

• CFS (Correlation based Feature Selection): É um algoritmo, que considera os


atributos de forma independente, avaliando a capacidade preditiva de cada um e o
grau de redundância entre eles.
• InfoGain: Esse algoritmo avalia cada atributo do dataset e avalia qual é o ganho
de informação, que ele trás para o processo de predição para a classe analisada.
Também foram selecionados os seguintes métodos de pesquisa:
• BestFirst: Esse algoritmo implementa pesquisa por conjunto de atributos, em que
procura encontrar o melhor conjunto para o processo de predição.
• GeneticSearch: Esse algoritmo trabalha para alcançar o conjunto de atributos re-
presentados em forma de rede.
• GreedyStepWise: Esse algoritmo percorre os subconjunto de atributos, em todas
as direções, e busca características para melhorar o processo de predição.
• Ranker:Esse algoritmo faz um ranking dos atributos, sobre sua influência no pro-
cesso de predição e avalia suas características individuais.
O resultado do processo de predição de cada modelo, com a utilização de algorit-
mos de classificação e com o uso de feature selection, gerou a informação da curva ROC.
Ele á um indicador de performance de modelos de predição, que atua de forma indepen-
dente. Representa da relação entre falso positivo e verdadeiro positivo em uma amostra.
Neste trabalho esse valor é usado na criação do modelo e também para estabelecer a re-
lação de similaridade entre os projetos para o processo de predição cruzada, conforme
apresentado na subseção 3.3. Sua escolha vem do entendimento, que ele pode ser uti-
lizado com bom preditor, conforme abordado na subseção 3.4. Esses elementos são os
componentes do modelo de predição e a subseção 3.2 representa como ele foi executado.
3.2. Execução do modelo
Neste trabalho o dataset utilizado foi o mesmo proposto por [Zhang et al. 2014]. Ele têm
1382 projetos de software livre com 72 métricas, sendo predominantemente de código.
Todos os projetos e classes estão devidamente nivelados quanto as características. Todas
as classes dispõem da mesma variável dependente, Buggy, contendo a informação de
presença ou ausência de defeito.
Antes da utilização do dataset pelos modelos de predição, os dados originais pre-
sentes foram tratados. Essa é uma etapa importante, que precede a execução. Nela as
métricas e os dados presentes são tratados, pois passam por uma preparação, tendo atribu-
tos relevantes mantidos, dados balanceados, dimensões reduzidas e transformadas [Faceli
et al. 2011]. Com isso, as métricas foram reduzidas para 67 e os projetos para 1270.
Dessa forma, os 5 modelos de predição criados foram aplicados ao dataset balan-
ceado. Uma representação de como os modelos foram executados é exibida na figura 1
e estão representados na tabela 1. Nela, a coluna classificador exibe qual foi o algoritmo
de classificação utilizado. Como a única variação entre os modelos está no classificador
utilizado, este trabalho irá nomear cada modelo conforme o classificador aplicado. A se-
guir, a tabela exibe os algoritmos, que foram utilizados pela técnica de feature selection.
É possível identificar que cada modelo executou 4 vezes cada projeto do dataset, dessa
forma, cada projeto acumulou um total de 20 predições executadas pelos 5 modelos.
Cada uma das 20 execuções representadas na tabela 1, foram executadas com apli-
cação de validação cruzada com 10-fold cross-validation conforme proposto por [Kohavi
1995].Ela promove a divisão das informações disponíveis do projeto em dois conjuntos,
um conjunto é utilizado para treinar e outro para testar o modelo.
Ao todo 25.400 predições foram realizadas (1.270 projetos x 20 predições). Os
valores obtidos de Recall, Precision, F-Measure e o valor da curva ROC, foram arma-
zenados, com as variações da técnica de feature selection, em cada projeto. A tabela 2
Tabela 1. Uma representação dos cinco modelos de predição criados
Técnica de Seleção de Atributos
Classificador CFS InfoGain
BestFirst GeneticSearch GreedyStepwise Ranker
Naive Bayes Modelo 01 Modelo 02 Modelo 03 Modelo 04
RandonForest Modelo 05 Modelo 06 Modelo 07 Modelo 08
DecisionTable Modelo 09 Modelo 10 Modelo 11 Modelo 12
SimpleLogistic Modelo 13 Modelo 14 Modelo 15 Modelo 16
J48 Modelo 17 Modelo 18 Modelo 19 Modelo 20

representa a execução dos cinco modelos de predição para um projeto e nela é exibido o
valor da curva ROC encontrado.
Avaliando todas as predições, o avaliador de atributos CFS apresentou melhor de-
sempenho na obtenção de valores de curva ROC. Ele estava presente nas 61,40% das
predições com maiores valores de curva ROC. Dentre os métodos de pesquisa utiliza-
dos por esse algoritmo, Genetic Search estava presente em 47,59% das predições com
melhores resultados. Portanto, para execução dos modelos de predição cruzada, foram
utilizados CFS e Genetic Search para obter o valor da curva ROC, que serve de referência
para agrupar projetos por similaridade, conforme a subseção 3.3

Tabela 2. Uma amostra dos resultados com execução dos modelos num projeto
Algoritmo Attribute_Evaluator Search_Method ROC
NaiveBayes CFS BestFirst 0,778
NaiveBayes CFS GreedyStepwise 0,764
NaiveBayes CFS GeneticSearch 0,773
NaiveBayes InfoGain Ranker 0,747
RandomForest CFS BestFirst 0,640
RandomForest CFS GreedyStepwise 0,660
RandomForest CFS GeneticSearch 0,660
RandomForest InfoGain Ranker 0,640
SimpleLogistic CFS BestFirst 0,700
SimpleLogistic CFS GreedyStepwise 0,680
SimpleLogistic CFS GeneticSearch 0,740
SimpleLogistic InfoGain Ranker 0,800
J48 CFS BestFirst 0,570
J48 CFS GreedyStepwise 0,540
J48 CFS GeneticSearch 0,530
J48 InfoGain Ranker 0,590
DecisionTable CFS BestFirst 0,580
DecisionTable CFS GreedyStepwise 0,580
DecisionTable CFS GeneticSearch 0,620
DecisionTable InfoGain Ranker 0,530

3.3. Resultados da clusterização


Os valores obtidos da curva ROC com a execução dos modelos, foram a base para o
agrupamento de projetos. Isso foi feito pela similaridade dos valores encontrados com
o usou de um algoritmo de clusterização. O escolhido foi o BSAS (Basic Sequencial
Algorithmic Scheme). Todo projeto analisado por ele é direcionada para um agrupamento
já existente, ou é criado um novo para recebê-lo.
A execução do agrupamento de projetos, pela similaridade do valor da curva ROC,
gerou os agrupamentos representados na tabela 3. Apesar quantidade de projetos ter sido
a mesma, é possível constatar variação na forma de agrupamento.
Tabela 3. Número de agrupamentos formados com a execução de cada modelo
Classificador Número de clusters formados
Naive Bayes 19
Random Forest 18
Decision Table 16
Simple Logistic 15
J48 14

Os resultados presentes nas tabelas 3,4 e 5 fundamentam a resposta à primeira


questão de pesquisa deste trabalho.
QP1: Existe algum algoritmo de classificação, que apresenta melhor performance
para ser utilizado com a técnica proposta?
Evidências que o algoritmo de classificação utilizado no processo de predição
de defeito não exerce influência significativa nos modelos de predição, foram apontadas
por [Lessmann et al. 2008].
Entretanto, a escolha da técnica de classificação influência o resultado gerado pela
predição de defeito conforme constatou [Ghotra et al. 2015]. Em sua replicação do traba-
lho de Lessmann [Lessmann et al. 2008], encontrou evidências, que apontam diferenças
significativas nos resultados da predição com diferentes algoritmos.
Os resultados encontrados neste trabalho evidencia mudanças no desempenho do
modelo de predição, quando ocorrem alterações no algoritmo de classificação utilizado.
A análise fica mais clara comparando os valores representados na tabela 4. Nela é possível
identificar qual foi o número de projetos e instâncias de cada agrupamento criado.
É importante notar, que os modelos de predição formaram agrupamentos diferen-
tes entre sí. O Cluster1, formado por 6 projetos e 191 instâncias, com a utilização de
Naive Bayes é diferente do Cluster1, formado por 22 projetos e 991 instâncias, que utili-
zou Random Forest. Essa diferença entre os agrupamentos formados pela similaridade do
valor da curva ROC, corroboram para que os resultados obtidos pela predição dos mode-
los sejam diferentes. A tabela 5 exibe os valores obtidos com a execução de cada modelo
de predição cruzada em cada agrupamento. Os resultados evidenciam que o desempenho
dos algoritmos de classificação apresenta diferença nos resultados quando aplicados em
agrupamentos de projetos agrupados por similaridade da curva ROC.
A avaliação do desempenho de cada modelo de predição e a resposta da segunda
questão de pesquisa são apresentados na subseção 3.4

3.4. Avaliação de desempenho dos modelos


A predição realizada por um modelo necessita ser avaliada e ter seus resultados compa-
rados, para ter seu desempenho identificado [Ostrand and Weyuker 2007, Bowes et al.
2012]. Ela precisa ser feita por indicadores de desempenho, que possam aferir o quão
bom foi a predição realizada. Segundo [Ostrand and Weyuker 2007, Bowes et al. 2012],
as medidas mais utilizadas para este fim são:
• Matriz de confusão: Apresenta em forma de tabela, os valores de:
– True Positive TP (Verdadeiro positivo): Uma classe é prevista e confirmada
com presença de defeito.
Tabela 4. Uma visão do número de projetos e instâncias de cada agrupamento
Naive Bayes RandomForest DecisionTable SimpleLogistic J48
Clusters Nr. Projetos Nr. Instâncias Nr. Projetos Nr. Instâncias Nr. Projetos Nr. Instâncias Nr. Projetos Nr. Instâncias Nr. Projetos Nr. Instâncias
Cluster1 6 191 22 991 4 54 9 230 5 84
Cluster2 120 14998 118 17398 215 28226 225 32943 274 36461
Cluster3 86 5653 185 17377 109 6321 172 9531 261 22889
Cluster4 314 42909 68 2657 186 18031 202 28234 144 19430
Cluster5 100 5725 4 64 26 626 219 24354 71 2692
Cluster6 5 80 82 10095 45 5639 89 5892 51 4572
Cluster7 199 29144 234 27247 218 22694 42 5676 78 2928
Cluster8 153 10957 129 17263 87 4485 159 10240 106 13304
Cluster9 41 1458 100 6942 34 1460 54 1819 90 8284
Cluster10 50 2265 48 3003 80 12705 13 308 31 1550
Cluster11 7 146 24 1926 38 1345 19 530 62 3503
Cluster12 23 2227 50 2248 109 13005 36 2733 20 501
Cluster13 75 3986 16 461 51 1818 8 192 30 853
Cluster14 8 152 103 11430 16 461 19 845 46 2683
Cluster15 16 467 23 563 6 539 2 74 N/A N/A
Cluster16 9 219 54 1784 43 1707 N/A N/A N/A N/A
Cluster17 17 495 3 124 N/A N/A N/A N/A N/A N/A
Cluster18 15 805 N/A N/A N/A N/A N/A N/A N/A N/A
Cluster19 20 547 2 17 N/A N/A N/A N/A N/A N/A
TOTAL 1264 122424 1265 121590 1267 119116 1268 123601 1269 119734

Tabela 5. Uma representação do valor da curva ROC do centroide e do teste


executado, em cada agrupamento
Naive Bayes RandomForest DecisionTable SimpleLogistic J48
Clusters
ROC Roc ROC Roc ROC Roc ROC Roc ROC Roc
Centroide Teste Centroide Teste Centroide Teste Centroide Teste Centroide Teste
Cluster1 0,998 0,876 0,986 0,364 1,000 0,441 0,989 0,085 0,997 0,463
Cluster2 0,824 0,729 0,752 0,583 0,667 0,500 0,784 0,822 0,666 0,567
Cluster3 0,534 0,741 0,582 0,620 0,417 0,500 0,448 0,430 0,475 0,500
Cluster4 0,675 0,875 0,436 0,640 0,570 0,673 0,707 0,928 0,598 0,488
Cluster5 0,490 0,563 0,140 0,560 0,102 0,975 0,632 0,718 0,061 0,492
Cluster6 0,049 0,067 0,869 0,441 0,865 0,855 0,502 0,564 0,823 0,578
Cluster7 0,754 0,762 0,695 0,592 0,479 0,500 0,865 0,879 0,330 0,500
Cluster8 0,587 0,551 0,801 0,646 0,243 0,500 0,548 0,615 0,757 0,430
Cluster9 0,313 0,439 0,489 0,548 0,045 0,500 0,332 0,658 0,555 0,551
Cluster10 0,447 0,421 0,530 0,527 0,798 0,500 0,116 0,500 0,242 0,500
Cluster11 0,156 0,618 0,924 0,808 0,153 0,500 0,000 0,000 0,396 0,537
Cluster12 0,903 0,881 0,385 0,558 0,000 0,000 0,922 0,623 0,000 0,000
Cluster13 0,390 0,035 0,000 0,000 0,364 0,500 0,185 0,500 0,914 0,106
Cluster14 0,080 0,605 0,635 0,473 0,000 0,000 0,253 0,527 0,167 0,500
Cluster15 0,000 0,000 0,213 0,322 0,936 0,052 0,043 0,636 N/A N/A
Cluster16 0,116 0,238 0,316 0,546 0,308 0,500 N/A N/A N/A N/A
Cluster17 0,259 0,615 0,948 0,806 N/A N/A N/A N/A N/A N/A
Cluster18 0,954 0,022 N/A N/A N/A N/A N/A N/A N/A N/A
Cluster19 0,214 0,639 0,067 0,711 N/A N/A N/A N/A N/A N/A

– False Positive FP (Falso positivo): Uma classe é prevista como defeituosa


mas os testes não encontram defeito.
– True Negative TN (Verdadeiro negativo): Uma classe é prevista e confir-
mada com ausência de defeito.
– False Negative FN (Falso negativo): Uma classe é prevista pelo modelo
como livre de defeitos mas os testes encontram defeito.
• Precision (Precisão): Medida de precisão na classificação de arquivos com defeito.
• Recall (Revogação): Medida da proporção de arquivos classificados erradamente
como livre de defeito, mas não estão.
• F-Measure (Medida da média harmônica): Trata-se da média harmônica entre os
valores de Recall e Precision.
Além desses indicadores, o valor da curva ROC é outro indicador de desempenho,
conforme apresentado na subseção 3.1. Ele será o indicador de desempenho utilizado
neste trabalho, dessa forma, os modelos serão avaliados pela mesma medida utilizada
para agrupar projetos por similaridade.
Os valores obtidos com a execução dos modelos de predição, conforme apresenta-
dos na subseção 3.3, vieram da execução de predição cruzada entre projetos pertencentes
a cada agrupamento. Ela é a utilização de um modelo de predição criado em um projeto
para predizer a ocorrência de defeitos em outro [Zimmermann et al. 2009].
Os agrupamentos de projetos, que foram formados pela similaridade do valor da
curva ROC serviram, para que projetos pertencentes ao agrupamento utilizassem as in-
formações presentes na realização da predição cruzada entre eles. Os resultados dessa
execução são exibidos na tabela 5. O desempenho dos modelos de predição já foram dis-
cutidos na subseção 3.3, mas a tabela 6 representa o resultado consolidado dos 5 modelos
de predição, que foram criados. Nela é possível constatar o melhor desempenho dos mo-
delos que utilizaram os algoritmos de classificação Naive Bayes e Simple Logistic. Por
outro lado, o classificador J48 foi o de pior desempenho.

Tabela 6. Uma análise do desempenho de cada modelo de predição, baseada na


frequência dos valores obtidos com a predição com valores >=0,7
Algoritmo Nr. Clusters <=0,3 >0,3 e <=0,4 >0,4 e <0,5 >=0,5 e <0,6 >=0,6 e <=0,7 >0,7 % >=0,7
Naive Bayes 19 5 0 2 2 4 6 31,58%
SimpleLogistic 15 2 0 1 4 4 4 26,67%
RandomForet 18 1 2 2 7 3 3 16,67%
DecisionTable 16 3 0 1 9 1 2 12,50%
J48 14 2 0 4 8 0 0 0,00%

A análise dos resultados obtidos, com a execução dos modelos de predição, per-
mite responder a segunda questão de pesquisa deste trabalho.
QP2: Existe diferença nos resultados da predição cruzada de defeitos, quando a
técnica proposta neste trabalho é utilizada?
As evidências levantadas por [Menzies et al. 2011] são de que é mais vantajoso o
processo de predição cruzada, quando temos projetos agrupados. Em sua análise os resul-
tados com a predição cruzada entre projetos agrupados com alguma similaridade, superam
os resultados de predições ocorridos em um ambiente sem qualquer tipo de agrupamento.
Este trabalho concorda com essa afirmação e procurou evidências, que o valor da
curva ROC poderia ser uma opção para agrupar projetos por similaridade. Para isso, os
resultados com o modelo de predição utilizando o classificador Naive Bayes o credenciam
a testar os resultados contra o conjunto formato por todos os projetos do dataset.
A escolha pelo uso do valor da curva ROC, veio amparada por ele ser um indicador
de performance dos modelos de predição e a priori foi pensado, que ele poderia ser um
bom preditor. A análise inicial era, que se houvessem projetos agrupados com valores
de curva ROC alto, a predição dos modelos também seria alta. Em segundo lugar, se
houvessem projetos agrupados com valores baixos, inferiores a 0,5, os testes também
trariam valores baixos, o que também os tornaria bons preditores.
O esperado era que agrupamentos com valores baixos tivessem, como resultados
de predição dos modelos, valor da curva ROC baixo. Esse seria um sinal, que o agrupa-
mento é um bom mal preditor. Significa dizer, que ele tem um padrão de predição de baixo
acerto. Dessa forma, um agrupamento que sempre erra a predição, pode ser considerado
um bom preditor, bastaria inverter a forma de análise.
Dessa forma, para análise da predição envolvendo todos os projetos, sem qualquer
tipo de agrupamento, para comparar com a predição entre projetos realizada internamente
nos agrupamentos criados, foi estabelecida a seguinte regra:
• Centroide alto com teste alto ou baixo: Projetos com valor de curva ROC em sua
clusterização inicial, acima de 0,5, e que na execução do teste tiveram valores
encontrados também acima ou abaixo desse valor, tiveram os valores encontrados
no teste mantidos.
• Centroide baixo com teste alto: Projetos com valor de curva ROC em sua clus-
terização inicial, abaixo de 0,5, e que na execução do teste apresentaram valores
acima, tiveram os resultados encontrados no teste mantidos.
• Centroide baixo com teste baixo: Projetos com valor de curva ROC em sua clus-
terização inicial, abaixo de 0,5, e que na execução do teste apresentaram valores
também abaixo desse valor, tiveram os resultados encontrados no teste invertidos.
O resultado da predição realizada internamente nos agrupamentos, com o uso do
algoritmo de classificação Naive Bayes, é exibido na tabela 8. Nela é possível visualizar
os valores da curva ROC, obtidos no processo de teste localmente e com todos os projetos
do dataset, também é apresentado o valor do ROC do modelo, conforme a regra apresen-
tada anteriormente. A análise dos resultados, conforme a tabela 7, da uma impressão, que
o resultado da predição foi muito superior quando executado localmente. Os resultados
apontaram, que 47,37% das predições realizadas internamente tiveram valores acima de
0,7, superando as predições realizadas globalmente.
Entretanto, os resultados da análise estatística com a utilização da técnica de
Mann-Whitney, apresentou valor de p-value=0.1253, que impede o descarte a hipótese
nula e não permite comprovar estatisticamente, que a clusterização de projetos com o
uso da similaridade do valor da curva ROC, para predição cruzada entre projetos, tem
melhores resultados a aplicada em projetos sem qualquer agrupamento.
A impossibilidade da comprovação estatística se deve ao comportamento apre-
sentado pelos Clusters 15 e 18. Eles fugiram a regra pensada para uso do valor da curva
ROC como medida de similaridade. Ambos têm algumas características em comum não
conhecidas inicialmente. Eles sofrem de imbalance, tendo projetos com grande variação
nas informações disponíveis para as classes de Buggy e Clean.
O Cluster15 foi testado com um projeto contendo apenas instâncias classificadas
como Buggy, sem nenhuma informação sobre Clean. Esse fato compromete os resultados
obtidos. De forma semelhante, o Cluster18 é o agrupamento de projetos cujo centróide
tem valor de curva ROC de 0,954, contudo, quando testado pelo modelo de predição
apresentou um valor de curva ROC de 0,022. A análise do agrupamento assim como a
verificação do comportamento dos projetos, que ali foram agrupados, revelam que além
do desbalanceamento, a clusterização inicial com o uso de feature selection induziu seu
posicionamento como um agrupamento de alto grau de predição. A tabela 9 representa
todos os projetos agrupados ali e trás informações sobre o número de instâncias de cada
projeto, como elas estão divididas entre as classes de Buggy e Clean, qual foi o resultado
do teste de cada projeto localmente e também globalmente.
Baseado nessas informações e desconsiderando esses dois agrupamentos da aná-
lise estatística, o valor de p-value obtido é de 0.03562, o que permitiria a comprovação
estatística do uso dessa técnica para agrupar projetos para predição cruzada. Contudo,
sem esse refinamento, não é possível considerar que os resultados obtidos pelo modelo
de predição em projetos agrupados pela similaridade da curva ROC é verdadeiro, mas
existem evidencias, que esse modelo pode ser utilizado como uma alternativa de menor
custo para o processo de predição. Essa afirmação é baseada nos resultados de predição,
tendo como referência o número de instâncias de cada agrupamento, comparado com o
número de instâncias que compõem todo dataset.
A influência da técnica de feature selection em projetos que sofrem de imbalance
ficou evidente na análise dos resultados do Cluster18. O valor da curva ROC do modelo
é influenciado pelo uso da técnica, se comparado com uma classificação realizada sem
ela. Uma alternativa seria avaliar meios que pudessem minimizar a influencia da falta de
balanceamento nos projetos para os modelos de predição. Outra alternativa seria testar
essa técnica com a utilização de medidas complementares ao modelo, como as medidas
de Recall, Precision, F-measure, ou então a utilização de outra medida única como MCC
(Matthews correlation coefficient) no lugar do valor da curva ROC. Dessa forma, possí-
veis outlayers presentes no processo de clusterização para predição cruzada de projetos
poderiam ser descartados.

Tabela 7. Uma análise da frequência de distribuição dos valores obtidos com a


execução do modelo de predição, com o uso do algoritmo Naive Bayes, local-
mente nos clusters formados e globalmente sem qualquer agrupamento
Execução Nr. Clusters <=0,3 >0,3 e <=0,4 >0,4 e <0,5 >=0,5 e <0,6 >=0,6 e <=0,7 >0,7 % >=0,7
Local 19 2 0 0 4 4 9 47,37%
Global 19 1 0 4 5 3 3 15,79%

Tabela 8. Uma representação dos resultados da execução do modelo aplicados


localmente nos agrupamentos formados e globalmente, sem qualquer agrupa-
mento
Cluster Proj. teste do cluster Nr. Instâncias Cluster Nr. Instâncias Projeto ROC do centróide ROC do teste ROC Global ROC Modelo
cluster 1 uclmda 191 169 0,998 0,876 0,735 0,876
cluster 2 lportal 14998 3583 0,824 0,729 0,510 0,729
cluster 3 massiv 5653 562 0,534 0,741 0,751 0,741
cluster 4 qtwin 42909 2489 0,675 0,875 0,883 0,875
cluster 5 irrlicht 5725 224 0,490 0,563 0,575 0,563
cluster 6 jbookshelf 80 32 0,049 0,067 0,433 0,933
cluster 7 unladen-swallow 29144 2959 0,754 0,762 0,530 0,762
cluster 8 mplayer-ce 10957 628 0,587 0,551 0,555 0,551
cluster 9 redshell 1458 194 0,313 0,439 0,431 0,561
cluster 10 impala 2265 208 0,447 0,421 0,422 0,579
cluster 11 fm-classic 146 71 0,156 0,618 0,657 0,618
cluster 12 jasperreports 2227 503 0,903 0,881 0,889 0,881
cluster 13 gotjava 3986 491 0,390 0,035 0,835 0,965
cluster 14 airhead-research 152 49 0,080 0,605 0,473 0,605
cluster 15 gexpert 467 147 0,000 0,000 0,000 0,000
cluster 16 jchassis 219 68 0,116 0,238 0,220 0,762
cluster 17 reaper3d 495 108 0,259 0,615 0,655 0,615
cluster 18 moast 805 258 0,954 0,022 0,682 0,022
cluster 19 gnome-jabber 547 97 0,214 0,639 0,567 0,639

4. Ameaças à validade
A construção e execução dos modelos de predição apresentados neste trabalho, têm al-
gumas características que podem ter influenciado nos resultados obtidos. Uma delas está
relacionada aos algoritmos de classificação e a técnica de feature selection empregada,
especialmente sobre sua influência em projetos que sofrem de imbalance.
O valor da curva ROC e a influência que sofre por projetos com imbalance é outra
ameaça à validade deste trabalho.
Tabela 9. Representação dos projetos pertencentes ao Cluster18
Projeto Nr. Instâncias Projeto Nr. Buggy Nr. Clean ROC Teste ROC Global
any23 38 36 2 0,472 0,653
aost 13 10 3 0,833 0,400
arcanea-project 44 25 19 0,528 0,434
benojt 95 92 3 0,076 0,888
elj-win32 11 6 5 0,767 0,667
google-collections 82 80 2 0,119 0,869
hazelcast 65 55 10 0,084 0,956
herostats 20 15 5 0,907 0,067
jaxlib 50 48 2 0,594 0,719
jython 170 22 148 0,921 0,567
mvdsv 69 63 6 0,392 0,730
nano 30 19 11 0,900 0,756
tdt 22 1 21 0,990 0,048
theresa 53 50 3 0,713 0,953
workhub2 43 40 3 0,159 0,683

5. Trabalhos relacionados

Nesta seção serão analisadas pesquisas relacionadas com o tema predição cruzados de
defeitos em projetos. Foram selecionados os trabalhos de Zimmermann [Zimmermann
et al. 2009] e Menzies [Menzies et al. 2011], sendo apresentados a seguir.
O trabalho realizado por [Zimmermann et al. 2009] abordou 12 projetos de grande
porte e realizou 622 predições, tendo 3,40% de resultado positivo na predição entre proje-
tos. Seus estudos apontaram, que projetos estarem no mesmo contexto não é o suficiente
para torná-los preditores eficientes. Um exemplo disso foram os resultado da predição en-
tre Internet Explorer e Firefox. Contudo, é importante observar que o próprio autor revela
que o contexto pode ter sido afetado pelo subconjunto das métricas escolhidas para predi-
ção. Esse é um problema não presente neste trabalho, pois a escolha das métricas não foi
feita por análise humana e sim pelo processamento dos algoritmos de feature selection.
Na sequencia, o trabalho de [Menzies et al. 2011] sugere que o trabalho de predi-
ção de defeitos, para projetos agrupados separadamente, apresentam melhores resultados
que analisados coletivamente. Para avaliar essa teoria, o autor realizou o agrupamento
de um conjunto de projetos disponíveis no repositório PROMISE, sendo eles: CHINA;
NasaCoc; Luciane 2.4 e Xalan 2.6. A forma de agrupamento foi com uso do algoritmo
WHERE, criado pelo autor, que procura agrupar atributos semelhantes dos projetos ana-
lisados. Essa abordagem de agrupamento entre projetos, foi seguida neste trabalho, con-
tudo, a forma empregada foi diferente, com a utilização de do valor da curva ROC obtido
com a execução da classificação com algoritmos de feature selection.
O número de projetos analisados em um processo de predição cruzada de defeitos
é variável. Zimmermann [Zimmermann et al. 2009] trabalhou com 12 projetos de grande
porte, já Herbold [Herbold 2013] selecionou 44 conjunto de dados de um total de 14
projetos. Já este trabalho selecionou 1270 projetos de software livre ou acadêmicos, e
realizou 25.400 predições com os conjuntos formados pelos prjetos.
Este trabalho preconiza o uso da clusterização e da seleção de atributos para o
processo de predição, entretanto, a forma como essas duas atividades são tratadas neste
trabalho são distintas das pesquisas anteriores. A clusterização por similaridade entre os
projetos, baseada no valor da curva ROC e a seleção de atributos, por meio do uso da
técnica de feature selection, são duas das principais diferenças deste trabalhos.
6. Trabalhos futuros
A continuidade desta pesquisa pretende estender os resultados obtidos com a adição de
outros algoritmos de clusterização, como: K-Means e K-NN, para comparar os resultados
com agrupamento de projetos pela similaridade do valor da curva ROC.
Também há intenção de adicionar outros indicadores dos modelos de predição na
clusterização. Uma possibilidade é trabalhar com agrupamentos, que considerem também
os valores de F-Measure, Recall, Precision e MCC.
Por fim, há a possibilidade de analisar o comportamento do modelo de predição
com acréscimo de outros algoritmos de classificação e feature selection. Outras pesquisas
podem ser direcionadas à formas de tratamento do clusters que sofram de imbalance.

7. Conclusão
A incidência de defeitos no software em uso por seus usuários, têm forte impacto na
percepção de qualidade. A utilização da predição cruzada de defeito entre projetos é
uma alternativa importante a ser considerada, ainda mais para projetos, que estão em fase
inicial de desenvolvimento, permitindo reduzir a ocorrência de defeitos em seus produtos.
Um dos princípios de sua utilização é identificar semelhanças entre projetos. Al-
goritmos de clusterização permitem encontrar padrões de similaridade, sendo uma técnica
utilizada noutras pesquisas, que utilizam métricas de software para encontrar projetos se-
melhantes [Jureczko and Madeyski 2010, Zhang et al. 2014, Zimmermann et al. 2009].
Este trabalho propôs uma alternativa ao uso de métricas para estabelecer a simi-
laridade entre projetos. Com o uso de algoritmos de classificação e técnica de feature
selection, utilizou a medida de avaliação de modelos de predição, chamada Área Sob a
Curva ROC (curva ROC), para agrupar projetos semelhantes. Portanto, para avaliar essa
alternativa, neste trabalho as seguintes questões de pesquisa foram trabalhadas:
QP1: Existe algum algoritmo de classificação, que apresenta melhor performance
para ser utilizado com a técnica proposta? Para responder essa questão de pesquisa foram
comparados 5 algoritmos. Naive Bayes teve o melhor desempenho, com 31,58% de suas
classificações com valores de curva ROC acima de 0,7 e 52,63% acima de 0,6. Já o
algoritmo J48 foi o de pior desempenho, sem classificações com valores acima de 0,6.
QP2: Existe diferença nos resultados da predição cruzada de defeitos, quando a
técnica proposta neste trabalho é utilizada? Para responder essa questão de pesquisa a
técnica de agrupamento de projetos por similaridade da curva ROC foi implementada ge-
rando conjuntos de agrupamentos. Em cada um, foi aplicada predição cruzada entre os
projetos com a utilização de Naive Bayes, depois o mesmo procedimento foi realizado
em todos os 1270 projetos pertencentes ao dataset.Os resultados encontrados impedem a
confirmação da existência de diferenças. Contudo, algumas lições aprendidas precisam
ser observadas. A criação dessa técnica imaginava, que o valor da curva ROC poderia ser
um bom preditor para predição cruzada entre projetos, quando esses também estivessem
agrupados por essa medida. Portanto, quando projetos passassem por um processo de
classificação, com utilização de feature selection, e apresentassem altos valores de curva
ROC, ali estariam projetos que poderiam ser bons preditores para predição cruzada. Da
mesma forma, quando houvessem projetos com baixo valor de curva ROC, ali estariam
projetos com baixa capacidade de predição cruzada entre eles. Pois se um agrupamento
sempre erra, sinal que ele também é um bom preditor. Essa regra foi formada e os resul-
tados da predição cruzada entre os projetos de cada agrupamento foram comparados com
os resultados obtidos com a predição realizada globalmente.
Os resultados dos Clusters15 e 18 invalidam a regra, impedindo comprovação es-
tatística, que a forma de agrupar projetos pela similaridade do curva ROC, gera melhores
resultados. Contudo, existem peculiaridades nesses dois agrupamentos que eram desco-
nhecidos comprometendo os resultados encontrados. A exclusão desses dois agrupamen-
tos da análise estatística gera um valor de p-value=0.03562 para o teste com a técnica
de Mann-Whitney, que permitiria afirmar, que tal forma de agrupamento gera melhores
resultados. Essa informação reforça, que o uso de medidas únicas, como o valor da curva
ROC, pode ser uma opção para estabelecer similaridade entre projetos, para predição
cruzada de defeito, mas precisa ter os problemas ligados ao imbalance dos agrupamen-
tos tratados, reduzindo o impacto da classificação com uso de feature selection. Dessa
forma, se reduz o comprometimento dos agrupados formados e se espera ter resultados
mais eficientes na predição cruzada. Enfim, uma coisa é certa, a técnica apresentada neste
trabalho, reduz o custo do processo de predição, se comparado com o esforço necessário
para predizer projetos sem qualquer agrupamento.

Referências
[Bacchelli et al. 2010] Bacchelli, A., DÁmbros, M., and Lanza, M. (2010). Are popular
classes more defect prone? In Proceedings of the 13th International Conference on
Fundamental Approaches to Software Engineering, FASE’10, pages 59–73, Berlin,
Heidelberg. Springer-Verlag.
[Bowes et al. 2012] Bowes, D., Hall, T., and Gray, D. (2012). Comparing the performance
of fault prediction models which report multiple performance measures: recomputing
the confusion matrix. In Wagner, S., editor, PROMISE, pages 109–118. ACM.
[Catal and Diri 2009] Catal, C. and Diri, B. (2009). A systematic review of software fault
prediction studies. Expert Systems with Applications, 36(4):7346–7354.
[Chandrashekar and Sahin 2014] Chandrashekar, G. and Sahin, F. (2014). A survey on fea-
ture selection methods. Computers & Electrical Engineering, 40(1):16 – 28. 40th-year
commemorative issue.
[Faceli et al. 2011] Faceli, K., Lorena, A. C., Gama, J., and Carvalho, A. (2011). Inte-
ligência artificial: Uma abordagem de aprendizado de máquina. Livros Técnicos e
Científicos.
[Ghotra et al. 2015] Ghotra, B., McIntosh, S., and Hassan, A. E. (2015). Revisiting the
impact of classification techniques on the performance of defect prediction models.
37th International Conference on Software Engineering (ICSE 2015).
[Graves et al. 2000] Graves, T. L., Karr, A. F., Marron, J. S., and Siy, H. (2000). Software
Change History. IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 26(7):653–
661.
[Hall et al. 2012] Hall, T., Beecham, S., Bowes, D., Gray, D., and Counsell, S. (2012). A
systematic literature review on fault prediction performance in software engineering.
IEEE Trans. Softw. Eng., 38(6):1276–1304.
[Herbold 2013] Herbold, S. (2013). Training data selection for cross-project defect pre-
diction. In Proceedings of the 9th International Conference on Predictive Models in
Software Engineering, PROMISE ’13, pages 6:1–6:10, New York, NY, USA. ACM.
[Jiang et al. 2007] Jiang, Y., Cukic, B., and Menzies, T. (2007). Fault prediction using early
lifecycle data. pages 237–246.
[Jureczko and Madeyski 2010] Jureczko, M. and Madeyski, L. (2010). Towards identifying
software project clusters with regard to defect prediction. In Proceedings of the 6th
International Conference on Predictive Models in Software Engineering, PROMISE
’10, pages 9:1–9:10, New York, NY, USA. ACM.
[Kohavi 1995] Kohavi, R. (1995). The power of decision tables. pages 174–189.
[Lessmann et al. 2008] Lessmann, S., Baesens, B., Mues, C., and Pietsch, S. (2008). Bench-
marking classification models for software defect prediction: A proposed framework
and novel findings. Software Engineering, IEEE Transactions on, 34(4):485–496.
[McCabe 1976] McCabe, T. J. (1976). A complexity measure. IEEE Trans. Softw. Eng.,
2(4):308–320.
[Menzies et al. 2011] Menzies, T., Butcher, A., Marcus, A., Zimmermann, T., and Cok, D.
(2011). Local vs. global models for effort estimation and defect prediction. In Proce-
edings of the 2011 26th IEEE/ACM International Conference on Automated Software
Engineering, ASE ’11, pages 343–351, Washington, DC, USA. IEEE Computer Soci-
ety.
[Moser et al. 2008] Moser, R., Pedrycz, W., and Succi, G. (2008). A comparative analysis
of the efficiency of change metrics and static code attributes for defect prediction. In
Proceedings of the 30th International Conference on Software Engineering, ICSE ’08,
pages 181–190, New York, NY, USA. ACM.
[Ostrand and Weyuker 2007] Ostrand, T. J. and Weyuker, E. J. (2007). How to measure
success of fault prediction models. In Fourth International Workshop on Software
Quality Assurance: In Conjunction with the 6th ESEC/FSE Joint Meeting, SOQUA
’07, pages 25–30, New York, NY, USA. ACM.
[Ostrand et al. 2005] Ostrand, T. J., Weyuker, E. J., and Bell, R. M. (2005). Predicting the
Location and Number of Faults in Large Software Systems. IEEE TRANSACTIONS
ON SOFTWARE ENGINEERING, 31(4):340–355.
[Pinzger et al. 2008] Pinzger, M., Nagappan, N., and Murphy, B. (2008). Can developer-
module networks predict failures? pages 2–12.
[Radjenovic et al. 2013] Radjenovic, D., Hericko, M., Torkar, R., and Zivkovic, A. (2013).
Software fault prediction metrics: A systematic literature review. Information & Soft-
ware Technology, 55(8):1397–1418.
[Zhang et al. 2014] Zhang, F., Mockus, A., Keivanloo, I., and Zou, Y. (2014). Towards
building a universal defect prediction model. pages 182–191.
[Zimmermann et al. 2009] Zimmermann, T., Nagappan, N., Gall, H., Giger, E., and
Murphy, B. (2009). Cross-project defect prediction: A large scale experiment on data
vs. domain vs. process. pages 91–100.

Você também pode gostar