35
Universidade Federal de Pernambuco Centro de Informática Graduação em Ciência da Computação Seleção Dinâmica de Técnicas de Aprendizado para Predição de Quantidade de Falhas em Softwares Antonio José Gadelha de Albuquerque Neto Trabalho de Graduação Recife 20 de Junho de 2019

Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

Universidade Federal de PernambucoCentro de Informática

Graduação em Ciência da Computação

Seleção Dinâmica de Técnicas deAprendizado para Predição de

Quantidade de Falhas em Softwares

Antonio José Gadelha de Albuquerque Neto

Trabalho de Graduação

Recife20 de Junho de 2019

Page 2: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

Universidade Federal de PernambucoCentro de Informática

Antonio José Gadelha de Albuquerque Neto

Seleção Dinâmica de Técnicas de Aprendizado para Prediçãode Quantidade de Falhas em Softwares

Trabalho apresentado ao Programa de Graduação em Ci-ência da Computação do Centro de Informática da Univer-sidade Federal de Pernambuco como requisito parcial paraobtenção do grau de Bacharel em Ciência da Computação.

Orientador: George Darmiton da Cunha Cavalcanti

Recife20 de Junho de 2019

Page 3: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

Dedico esse trabalho ao meu Deus que me deu forçasdurante toda a caminhada. Também, a todo mundo que

sempre acreditou em mim.

Page 4: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

Agradecimentos

Agradeço primeiramente a Deus, que esteve ao meu lado o tempo todo e sempre foi bem maisdo que eu mereço.

Aos meus pais, por tudo que eles sempre fizeram por mim. Por terem me proporcionadouma vida ímpar e por todos os ensinamentos que me fizeram ser quem eu sou hoje. Agradeçotambém aos meus irmãos e demais familiares por todo o apoio e carinho.

A Raissa Dias, minha namorada, por ter estado comigo durante toda minha caminhada medando apoio, me escutando, me aconselhando, me suportando em momentos de estresse e tudomais. Sem ela, tudo teria sido bem mais difícil.

A todos meus amigos pelos momentos de diversão e companheirismo, que tornaram a mi-nha jornada mais sadia. Um agradecimento em especial a Ismael Cefas, por praticamente serum irmão para mim.

Aos meus colegas do Duyu, que fazem o trabalho ser algo divertido e que me ensinarammuito do que eu sei hoje.

Ao professor George Darmiton por todos os ensinamentos e orientações. Por toda a suadedicação em ser professor e por todas as cobranças que me fizeram crescer. Seu suporte foifundamental para a realização desse trabalho.

Finalmente, agradeço aos meus educadores do colégio Damas e, em especial, a todos osprofessores do Centro de Informática da UFPE por tudo que me foi ensinado.

iv

Page 5: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

Just have a little faith.—MICHAEL SCOFIELD (Prison Break)

Page 6: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

Resumo

Predição de falhas em softwares é uma tarefa relevante para planejamentos de sistemas, poisrecursos disponíveis podem ser alocados de forma mais efetiva, melhorando o desempenhodas empresas. Estudos mostram que existem várias técnicas de aprendizado capazes de prevernúmero de erros, mas cada uma dela tem seus pontos negativos. O objetivo desse trabalhoé avaliar abordagens de seleção dinâmica que fazem uso de múltiplos regressores, em quecada previsor seja utilizado apenas na região dos dados em que ele tem o melhor desempenho.O sistema define regiões de atuação para cada técnica e ao testar um exemplo, o regressorque provavelmente terá a melhor performance, de acordo com a relação da instâncias comagrupamentos de dados similares, será utilizado. O desempenho do sistema foi medido com9 bases de regressão do repositório PROMISE através de um 5-Fold Cross Validation e osresultados foram comparados com a performance de cada regressor utilizado isoladamente.Os resultados da abordagem proposta se mostram mais robustos do que ao se utilizar técnicasisoladas, mas existem alguns pontos que podem ser atacados para melhorar o comportamentodo sistema e atingir índices ainda melhores.

Palavras-chave: predição de falhas em softwares, regressão, seleção dinâmica, aprendizagemde máquina.

vi

Page 7: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

Abstract

Software fault prediction is a relevant task for systems planning, since available resources canbe allocated more effectively, improving the performance of companies. Studies show thatthere are several learning techniques capable to predict the number of errors, but each onehas its downsides. The goal of this study is to evaluate dynamic selection approaches that usesmultiple regressors, in which each predictor will be used only in the data region that it performsthe better. The system defines decision regions for each technique and when testing an example,the regressor that will probably have better performance, accordingly to the instance’s relationwith groupings of similar data, is chosen. The system’s performance was measured with 9regression datasets from PROMISE Repository, a 5-Fold Cross Validation was made and theresults were compared to the performance of each regressor ran individually. The proposedapproach’s results are superior than using isolated techniques, but there are still some pointsthat can be improved to achieve an even better performance.

Keywords: software faults prediction, regression, dynamic selection, machine learning.

vii

Page 8: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

Sumário

1 Introdução 1

2 Fundamentação 32.1 Trabalhos Relacionados 32.2 Conceitos Básicos 4

2.2.1 K-Fold Cross Validation 42.2.2 SMOTER 42.2.3 X-Means 42.2.4 Regressão Linear 52.2.5 Multi-Layer Perceptron 52.2.6 Regressão com Árvore de Decisão 5

3 Sistema 63.1 Divisão da Base de Dados 93.2 Balanceamento dos Dados de Treinamento 93.3 Escolha e Treinamento dos Regressores 103.4 Agrupamento dos Dados de Validação 113.5 Seleção dos Melhores Regressores por Grupo 113.6 Predição dos Erros 11

4 Metodologia 124.1 Bases 124.2 Protocolo Utilizado 134.3 Métricas de Avaliação 13

4.3.1 Erro Médio Absoluto (MAE) 134.3.2 Erro Médio Relativo (MRE) 144.3.3 Predição no Nível l 144.3.4 Precisão 144.3.5 Recall 15

5 Experimentos 165.1 Desempenho dos Regressores 17

5.1.1 Regressão Linear 175.1.2 Multi-Layer Perceptron 185.1.3 Árvore de Decisão 19

5.2 Uso dos Regressores no Sistema 19

viii

Page 9: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

SUMÁRIO ix

5.3 Diferenças de Resultado 20

6 Conclusão 21

Page 10: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

Lista de Figuras

3.1 Fluxograma do Treinamento do Sistema de Seleção Dinâmica de Regressores 63.2 Fluxograma do Teste do Sistema de Seleção Dinâmica de Regressores 7

x

Page 11: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

Lista de Tabelas

4.1 Bases utilizadas nos experimentos e suas características 12

5.1 Desempenho do Sistema de Seleção Dinâmica de Regressores Implementado 165.2 Resultados obtidos por Rathore e Kumar. Não foi documentado com detalhes

o desempenho em relação às métricas precision e recall 165.3 Resultados obtidos por Rathore e Kumar para as técnicas isoladas. 175.4 Desempenho da Regressão Linear 185.5 Desempenho do MLP 185.6 Desempenho da Árvore de Decisão 195.7 Proporção de vezes que cada regressor foi atribuído a um agrupamento 205.8 Proporção de vezes que cada regressor foi utilizada para prever os erros de um

padrão de teste. 20

xi

Page 12: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

CAPÍTULO 1

Introdução

Identificar potenciais erros no desenvolvimento de softwares é uma atividade que possui granderelevância no mercado, pois possuir a capacidade de prever quais módulos do projeto têm maischances de falhar pode ser determinante para o desenvolvimento das ferramentas, principal-mente nos momentos de alocação e gerenciamento de recursos [18].

Utilizar técnicas de aprendizagem de máquina, com as quais o computador "aprende" a to-mar decisões baseadas em dados, é a melhor forma de tentar detectar falhas nos sistemas comantecedência, já que essa é uma atividade de alta complexidade para ser realizada apenas porhumanos. Existem diversas técnicas de aprendizado que servem para realizar predições, cadauma se comportando de maneira diferente [6]. Considerando que software é um termo muitoamplo, existem muitos projetos com características bem distintas, então utilizar apenas umatécnica de aprendizado para realizar a predição de erros costuma gerar modelos que funcionambem para um determinado grupo de sistemas, mas que não possuem boa capacidade de gene-ralização [17]. Para se obter resultados melhores, pode-se tentar utilizar múltiplas máquinasde aprendizado para que os problemas possam ser atacados de maneira especializada, visandoalcançar um bom desempenho para todos os tipos de softwares.

Existem algumas formas diferentes de se utilizar múltiplos técnicas para fazer a predição.Uma delas é escolher previamente uma técnica de acordo com as características específicasde cada sistema a ser testado. Com um conjunto de dados de treinamento em mãos, primeiroprocura-se agrupar os módulos dos projetos de acordo com seus atributos, para que módulosde características similares compartilhem do mesmo grupo. Entendendo que os agrupamentospossuem alto índice de similaridade, possivelmente cada técnica de aprendizado vai ter umadecisão parecida para todos componentes de um grupo. Dessa forma, pode-se medir qual aabordagem possui o melhor desempenho dentro de cada um dos agrupamentos.

No momento em que uma instância desconhecida vier a ser testada para a predição, determina-se a qual grupo ela pertence, com base em suas características, e se escolhe o algoritmo deaprendizagem que teve os melhores resultados dentro daquele grupo. Com isso, obtém-se omodelo que provavelmente dará a resposta mais próxima da ideal para essa instância de teste,justamente pelo fato da técnica escolhida ter tido um bom desempenho em instâncias similaresa ela.

Um estudo recente [17] propôs um sistema que realiza uma seleção dinâmica de regressorespara estimar o número de falhas em softwares. No estudo é citado que essa área de regressãoem predição de falhas é pouco explorada, pois é dado mais ênfase a atividades de classificação.A proposta desse trabalho de graduação é alcançar os resultados obtidos pelos autores e propormelhorias no funcionamento da abordagem, para que os números obtidos possam ser aindamelhores e a ferramenta tenha mais poder de generalização.

1

Page 13: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

CAPÍTULO 1 INTRODUÇÃO 2

Esse trabalho pretende responde às seguintes perguntas:

Q1: Qual é a performance da abordagem proposta de seleção dinâmica de regressores parapredizer o número de falhas em softwares?

Q2: A técnica proposta consegue fazer uma seleção dinâmica que possui resultados melhoresdo que ao se utilizar regressores isoladamente?

Esse trabalho é organizado da seguinte forma: O Capítulo 2 descreve trabalhos relacionadosna área de predição de quantidade de falhas em softwares e apresenta conceitos básicos parao entendimento da técnica proposta no Capítulo 3. O Capítulo 4 explica a metodologia queserá utilizada na realização dos experimentos que, junto com os resultados, são apresentadosno Capítulo 5. O Capítulo 6 finaliza com a conclusão do trabalho.

Page 14: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

CAPÍTULO 2

Fundamentação

Esse Capítulo visa discutir alguns trabalhos da literatura relacionados à predição de falhas emsoftwares e à seleção dinâmica de técnicas de aprendizado, além de abordar alguns conceitosque são necessários para o entendimento completo do funcionamento da técnica proposta. Arevisão da literatura se encontra na Seção 2.1, enquanto a Seção 2.2 apresenta os conceitosbásicos.

2.1 Trabalhos Relacionados

Graves et al. [5] utilizaram um modelo simples de Regressão Linear para predizer falhas emsistemas de telecomunicação e obtiveram bons resultados.

Chen e Ma [3] analisaram o desempenho de diferentes técnicas para a identificação defalhas em datasets da base PROMISE [1] e mostraram que abordagens baseadas em regressãotinham um comportamento muito bom. Provaram também que a Regressão com Árvore deDecisão tinha uma performance acima das demais.

Em 2008, Menzies et al. [11] mostraram que o paradigma de pesquisa do momento, de usarapenas uma técnica de aprendizado para prever falhas, tinha atingido o seu limite de desempe-nho e, por isso, propuseram que os estudos parassem de usar apenas abordagens isoladas parautilizar métodos que considerassem múltiplas técnicas.

Dietterich [4], Mısırlı et al. [12] e Rathore e Kumar [16] fizeram pesquisas sobre algunsmétodos de ensemble, sistemas em que múltiplas abordagens influenciam na resposta final, eprovaram que eles se comportam melhor do que utilizar técnicas isoladas.

Menzies et al. também apresentaram um estudo experimental [10] cuja conclusão indicavaque o uso de técnicas de agrupamento poderia resultar em um modelo dinâmico com resultadosmais robustos.

Por fim, Rathore e Kumar [17] propuseram um método de seleção dinâmica de regressoresutilizando agrupamento de instâncias. O modelo se mostrou inovador pois ainda não existemmuitos estudos sobre seleção dinâmica de regressores [15]. A técnica proposta apresentouresultados melhores que os das abordagens já existentes, e que não fazem uso de qualquerforma de dinamismo na predição. Esse artigo, inclusive, é o que foi usado como base para apesquisa e desenvolvimento desse trabalho.

3

Page 15: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

2.2 CONCEITOS BÁSICOS 4

2.2 Conceitos Básicos

2.2.1 K-Fold Cross Validation

K-Fold Cross Validation é uma técnica de aprendizado de máquina que divide o dataset em Kpartes estratificadas e de tamanhos iguais que serão revezadas como sendo parte dos conjuntosde treinamento, validação e teste. Dessa forma, o modelo consegue ficar mais generalizado,pois ele tem a oportunidade de treinar com diferentes tipos de dados para tentar prever oserros de grupos distintos. Logo, o resultado fica mais fiel ao desempenho do modelo, pois ospossíveis vieses de treinamento são minimizados ao se rotacionar os subsets.

2.2.2 SMOTER

O SMOTER [19] é uma técnica de geração de dados sintéticos especializada em problemas deregressão. Baseada na abordagem SMOTE [2], o SMOTER segue o mesmo princípio de quedados da classe minoritária precisam de maior relevância no treinamento dos modelos, e paraisso, novas instâncias devem ser geradas.

O primeiro passo da técnica é separar a base em dois grupos: o de dados com boa repre-sentação no dataset e os de dados com pouca representação, já que em problemas de regressãonão existem os conceitos de classe minoritária e majoritária. No caso de predição de falhas emsoftwares, é fácil de separar, pois a maioria das instâncias das bases não possuem erro, logo, osdados com pouca representação são as instâncias com erros.

Após a separação ser feita, a geração de dados sintéticos é realizada na partição dos dadosde menor representação. O SMOTER gera um novo dado escolhendo aleatoriamente uma dasinstâncias existentes, além de selecionar algum vizinho aleatório dessa instância. Cada atributodo novo dado sintético será um valor randômico que esteja posicionado entre os valores desseatributo nas duas instâncias selecionadas, seguindo a Equação 2.1.

new[a] = case[a]+RANDOM(0,1)× (case[a]−neigh[a]) (2.1)

Após a geração de todos os atributos, o erro, que é o campo objetivo da regressão, levará emconsideração a distância do dado gerado com as duas instâncias que foram selecionadas paragerá-lo, seguindo a Equação 2.2, de forma que o valor de erro do novo dado seja mais parecidocom o valor da instância mais próxima a ele.

new[Y ] =DIST (new,neigh)× case[Y ]+DIST (new,case)×neigh[Y ]

DIST (new,case)+DIST (new,neigh(2.2)

Até que os dois subsets possuam o mesmo tamanho, novas instâncias continuam sendogeradas segundo essa regra.

2.2.3 X-Means

A técnica X-Means [14] é um algoritmo de agrupamento, cuja função é retornar sub-gruposdos dados originais em que os elementos de cada partição sejam o mais similares entre si

Page 16: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

2.2 CONCEITOS BÁSICOS 5

e diferentes dos demais. Baseado no K-Means [7], o seu diferencial é não precisar de umparâmetro de entrada que defina a quantidade de agrupamentos que serão gerados.

O X-Means começa seu processo executando o K-Means com K=2 e centroides aleatórios.Após o resultado da operação, cada um dos grupos gerados passarão por uma nova execução doK-Means com K=2, mas com os centroides sendo pontos gerados em direções opostas a partirdo centroide do grupo atual. Depois dessa divisão é checado se é melhor manter o agrupamentocomo estava ou se a divisão foi mais benéfica para os dados. A checagem é feita utilizando ocritério de informação Bayesiano [8], também conhecido como critério de Schwarz. Os sub-grupos continuam sendo divididos até que nenhuma operação melhore o modelo de acordo comas métricas estatísticas.

2.2.4 Regressão Linear

Regressão linear(LR - Linear Regression) é um modelo estatístico, em que se traça uma retano hiperplano dos dados que tenta modelar o comportamento dos pontos, a fim de conseguirprever o valor de uma nova entrada. A equação da reta é definida por cálculos de ajustes apartir dos pontos, o mais comum sendo o método dos mínimos quadrados, que tenta minimizara soma dos quadrados da diferença entre os valores reais e o pontos na reta calculada.

2.2.5 Multi-Layer Perceptron

O Multi-Layer Perceptron(MLP) é uma rede neural que combina perceptrons(retas no hiper-plano que separam os dados) em camadas para extrair informações e conseguir predizer o valorde uma nova entrada. Por ser uma rede complexa, o MLP pode ser usado para problemas declassificação e também de regressão, basta ajustar a função de ativação dos neurônios da rede.

2.2.6 Regressão com Árvore de Decisão

Árvore de Decisão é uma ferramenta de aprendizado de máquina que divide os dados em par-tições distintas a partir de regras booleanas que buscam divisões ótimas, ou seja, regras queseparem completamente as instâncias de diferentes classes. As divisões são calculadas a partirda entropia dos conjuntos que serão gerados. As separações dos dados são chamadas de nós,que continuam sendo criados até que todo o conjunto esteja perfeitamente particionado.

Para problemas de regressão, a Árvore de Decisão consegue se adaptar fazendo a simplesmudança de que na geração dos seus nós não será mais avaliado se as classes estão bem divi-didas, mas sim se os valores contínuos estão bem distribuídos. Assim, temos a Regressão comÁrvore de Decisão(DTR - Decision Tree Regression)

Page 17: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

CAPÍTULO 3

Sistema

Diante do problema de detecção de quantidade de falhas em softwares e das várias aborda-gens utilizadas na literatura, é proposto um sistema de seleção dinâmica de regressores para arealização da tarefa.

A ideia de se usar uma abordagem de seleção dinâmica vem do conceito de que cada técnicade aprendizado atua melhor em diferentes tipos de situações [20]. Então, divide-se os dadosem agrupamentos menores para cada técnica ter a oportunidade de ser aplicada nas regiões emque o seu desempenho é superior.

O sistema funciona dividindo a base em grupos de instâncias similares e a cada agrupa-mento é atribuído o regressor que possuir a melhor performance sobre os dados desse conjunto.Com isso, na etapa de teste, procura-se o grupo com maior similaridade a instância e utiliza-seo regressor associado a esse agrupamento para estimar a quantidade de erros.

O funcionamento geral do treinamento do sistema é mostrado no fluxograma presente naFigura 3.1. As caixas azuis são as entradas do modelo, as caixas amarelas representam os mó-dulos operacionais e de verde é a saída do algoritmo. O módulo Divisão realiza uma divisãoestratificada dos dados e uma explicação mais detalhada da sua funcionalidade se encontra naSeção 3.1, juntamente com uma descrição da divisão do dataset inicial em conjuntos de treina-mento, validação e teste. O módulo Balanceamento, que é discutido na Seção 3.2 realiza umoversample nos subsets de treinamento. O Fit é o módulo responsável por treinar os regressorese criar os modelos preditivos, seus detalhes se encontram na Seção 3.3. O Clusterização é des-crito na Seção 3.4 e é responsável pela divisão do conjunto de validação em sub-agrupamentos.Por fim, o Seletor seleciona a melhor configuração de regressores de acordo com os gruposgerados pelo Clusterização, essa etapa é explicada na Seção 3.5.

Figura 3.1 Fluxograma do Treinamento do Sistema de Seleção Dinâmica de Regressores

6

Page 18: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

CAPÍTULO 3 SISTEMA 7

Figura 3.2 Fluxograma do Teste do Sistema de Seleção Dinâmica de Regressores

Após a fase de treinamento ser concluída, a fase de teste é bem simples e pode ser visuali-zada na Figura 3.2. O módulo Preditor decide qual o melhor regressor para cada instância efornece como saída o número de falhas dela. O funcionamento detalhado da fase de avaliaçãose encontra na Seção 3.6.

O pseudo-código da abordagem é apresentado no Algoritmo 1. Como entrada, o sistemarecebe uma base de dados D e um conjunto de regressores R. Antes de qualquer coisa, énecessário realizar a divisão da base D em conjuntos de treinamento T , validação V e testeX(linha 1).

Após a divisão, o sistema entra na fase de treinamento e o primeiro passo é utilizar o Divisãopara particionar os dados de treino em um conjunto ST de subsets de treinamento(linha 2).Entre as linhas 3 e 8 é realizado o Fit de cada previsor ri de R utilizando um subconjuntosti de ST , já balanceado pelo Balanceamento(linha 5). Essa etapa gera um conjunto FR deregressores treinados.

A fase de validação inicia na linha 9 com a geração de agrupamentos por meio do Cluste-rização. Para cada grupo gi em groups, é medido o desempenho de cada regressor f r j de FRaplicado em gi(linha 15) até que se encontre o de menor erro para aquele agrupamento(linhas16 a 20). Guarda-se em um conjunto S a informação do centroide de cada grupo, assim comoo melhor regressor associado a ele(linhas 21 e 22). Esse processo é realizado pelo móduloSeletor.

Na fase de teste, utiliza-se o conjunto X e o S para gerar um vetor de respostas Y . O Preditorseleciona o centroide mais próximo de cada instância xi de X a partir de todos os centroides c jdos grupos de S(linhas 28 a 34). A partir do centroide c j mais próximo, utiliza-se o regressorassociado r j para prever o número de erros de xi(linha 35) que é incorporado ao vetor Y (linha36), finalizando o processo.

Todo o sistema foi implementado em Python, com auxílio de algumas bibliotecas públicas.

Page 19: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

CAPÍTULO 3 SISTEMA 8

Algorithm 1 Seleção Dinâmica de RegressoresInputD: Base de DadosR: Conjunto de RegressoresOutputY : Valores de erro estimados para X

1: T,V,X ← split(D)2: ST ← split(T ) . Treinamento3: FR←{}4: for each ri,sti in R,ST do5: balancedSubset← SMOT ER(sti)6: f ri← f it(ri,balancedSubset)7: FR← FR∪{ f ri}8: end for9: groups← XMeans(V ) . Validação

10: S←{}11: for each gi in groups do12: error← ∞

13: reg← ø14: for each f r j in FR do15: e← eval( f r j,gi)16: if e < error then17: error← e18: reg← f r j19: end if20: end for21: c← centroid(gi)22: S← S∪{(c,reg)}23: end for24: Y ←{} . Teste25: for each xi in X do26: distance← ∞

27: regressor← ø28: for each (c j,r j) in S do29: d← dist(xi,c j)30: if d < distance then31: distance← d32: regressor← r j33: end if34: end for35: y← predict(xi,regressor)36: Y ← Y ∪{y}37: end for

Page 20: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

3.1 DIVISÃO DA BASE DE DADOS 9

Os autores do artigo base utilizaram o Weka, entretanto, escolheu-se usar Python por todo o po-der e versatilidade da linguagem, pois o Weka não fornece tanta liberdade de desenvolvimento.

3.1 Divisão da Base de Dados

Para o funcionamento do sistema é necessário que os dados de entrada sejam divididos em doisgrupos: um para ser usado no treinamento dos regressores e outro para formar agrupamentoscom objetivo de medir o desempenho dos regressores treinados. Como é importante fazer aavaliação do sistema, também se separa um terceiro grupo distinto para realização dos testes.

Os dados são divididos de forma estratificada, para que cada um dos três subsets mantenhama proporção de representatividade da base original.

O número de instâncias do grupo de treinamento deve ser o maior, por essa ser a fase quemais necessita de informações, tendo em vista que um aprendizado com poucos dados nãocostuma ter bom desempenho pois não há informação suficiente para formar um bom modelo.Além desse ponto, o sistema propõe que cada regressor treine com um subset de dados distintos,para que eles sejam o mais especializados possível. Por tudo isso, é interessante que sejaseparado para o conjunto de treino mais que a metade da base, então, foi escolhido o valorde 60%, por ser uma quantidade grande o suficiente para ser dividida em partes menores semperder poder de aprendizado, mas também não é um número tão grande a ponto de deixar osconjuntos de validação e teste com dados insuficientes. O conjunto de treinamento também édividido estratificadamente no módulo Divisão de maneira a gerar três subconjuntos de treino,que é a quantidade de regressores que serão utilizados no sistema.

O conjunto de validação também possui um papel importante, pois é dele que serão forma-dos os grupos que definirão as regiões de atuação de cada regressor, logo, é necessária uma boaquantidade de dados para que os agrupamentos sejam bem formados. Por outro lado, também énecessário ter um número grande de instâncias reservadas para o teste, para que a avaliação dosistema seja mais precisa. Para que nenhuma dessas importantes tarefas sejam prejudicadas, orestante dos dados é dividido igualmente entre os dois conjuntos, ficando 20% do total da basepara cada conjunto.

3.2 Balanceamento dos Dados de Treinamento

Como na maioria dos datasets sobre falhas em softwares, existem mais instâncias sem erro doque com erro, se faz necessário que haja um balanceamento dos dados antes do treinamentodos regressores para que o aprendizado não seja enviesado.

Existem duas formas de balancear um conjunto: realizar nele um undersampling ou umoversampling. A diferença entre os dois é muito básica, ao se fazer um undersampling, remove-se instâncias dos dados com maior representatividade para que a quantidade fique equivalentea dos dados menos representativos, enquanto o oversampling gera novas instâncias iguais ousemelhantes às de menor influência da base.

Cada uma das abordagens possui suas vantagens, mas para não perder representatividadede dados e por conta das bases do PROMISE [1] não serem tão grandes, é mais interessante

Page 21: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

3.3 ESCOLHA E TREINAMENTO DOS REGRESSORES 10

que seja realizado um oversampling, ao invés de um undersampling.A técnica escolhida para realizar o balanceamento do conjunto de treinamento foi o SMO-

TER, por ser uma abordagem com resultados robustos para problemas de regressão.Após o SMOTER ser aplicado, pelo módulo Balanceamento, separadamente nos subsets

do conjunto de treinamento, os dados passam para a fase de fitting dos regressores, em que cadatécnica de aprendizado receberá um subconjunto responsável pelo seu aprendizado.

3.3 Escolha e Treinamento dos Regressores

Existem diversas técnicas de regressão e qualquer uma pode ser aplicada nesse sistema, jáque ele funciona com uma abordagem de seleção dinâmica. Rathore e Kumar [17] aplicaramtestes em seis diferentes abordagens, que são as mais utilizadas na área de predição de falhasem software, e concluíram que diante dos dados do problema em questão as técnicas com osmelhores desempenhos são Regressão Linear, Multi-Layer Perceptron e Regressão com Árvorede Decisão.

As demais técnicas poderiam até ser somadas a esses três regressores escolhidos, mas, se-guindo o funcionamento do sistema de que os dados de treinamento são subdivididos de formaque cada técnica de aprendizado seja ligada a um grupo distinto de instâncias, dividir os dadosde treino em mais partes resultaria em menos informações para os regressores aprenderem, osautores concluíram que isso poderia deixar o treinamento ineficiente, portanto, seria ideal queo número de técnicas de aprendizado escolhidas não fosse muito alto. Se o sistema utilizassealguma noção de agrupamento na fase de divisão dos dados de treino, seria cabível consideraro uso de mais previsores, porém, como a divisão é realizada aleatoriamente, três regressores éum número bom.

Os parâmetros dos regressores foram definidos de acordo com o que foi explicitamenterelatado por Rathore e Kumar no trabalho deles [17]. É colocado no artigo que os parâmetrosnão explicitados estavam presentes em um script disponível no Github, mas o arquivo possuisenha de acesso. Foi tentado estabelecer contato com os autores, mas não houve resposta.Por isso, o restante dos valores não-citados foram setados como o default do Weka, que foi aferramenta utilizada na implementação deles.

A regressão linear foi aplicada com o método dos mínimos quadrados como medida dedistância. Fora essa informação, nada mais foi acrescentado, então, os valores-padrão foramutilizados.

O MLP funcionou com o método de back-propagation para calibragem do modelo e afunção de ativação dos neurônios foi a sigmoide. O restante dos parâmetros ficou sendo odefault do Weka, que define 0.01 como sendo a taxa de aprendizado e utiliza uma camadaescondida com dois neurônios.

A Árvore de Decisão não teve nada explicitado e o default do Weka não apresenta nenhumvalor fora do comum, então o DecisionTreeRegressor do scikit-learn foi utilizado sem nenhumamudança de parâmetro.

Após a inicialização das técnicas de aprendizado, no módulo Fit cada regressor recebe umsubset já balanceado do conjunto de treinamento para que o modelo possa ser treinado. Apósisso, eles são guardados para serem utilizados mais à frente na abordagem.

Page 22: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

3.4 AGRUPAMENTO DOS DADOS DE VALIDAÇÃO 11

3.4 Agrupamento dos Dados de Validação

Os dados de validação têm uma grande importância no funcionamento do sistema, como ci-tado anteriormente nesse trabalho. O conjunto de validação será dividido em agrupamentosde instâncias similares, para que os regressores sejam aplicados sobre esses grupos e possa sermedida a informação de quais técnicas possuem o melhor desempenho para cada agrupamento.Com isso, é definida a região de atuação de cada uma das técnicas de aprendizado.

Para dividir os dados foi escolhido o algoritmo X-Means, por ser uma versão mais flexíveldo K-Means em que não é preciso predefinir o número de agrupamentos que devem ser gerados.O X-means é executado sobre o conjunto de validação no módulo Clusterização e dá comosaída k grupos. O X-Means é amplamente utilizado no campo científico para atividades deagrupamento.

3.5 Seleção dos Melhores Regressores por Grupo

Com os agrupamentos do conjunto de validação e com os regressores devidamente treinados,o sistema entra no módulo Seletor, que executa-se todas as técnicas sobre todos os grupos. Aeficiência de cada regressor é medida pelo erro absoluto médio entre as previsões e os valoresreais de bugs presentes em cada instância do agrupamento.

Para cada grupo é atribuído um regressor, aquele com o menor erro médio naquele agrupa-mento, que será responsável por predizer o número de erros das instâncias de teste que tenhamcomportamento similares ao desse grupo de dados. Esse comportamento se baseia na ideiade que se uma técnica foi muito boa pra predizer o valor de instâncias semelhantes, ele tam-bém terá um bom desempenho ao medir o valor de um novo dado que se assemelhe com essasinstâncias.

3.6 Predição dos Erros

Pro fim, como é mostrado na Figura 3.2, o módulo Preditor fornece a saída do sistema. Coma chegada de um dado de teste, procura-se identificar com qual agrupamento do conjunto devalidação ele mais se assemelha. Esse passo é realizado olhando para todos os grupos e vendoqual possui o centroide com a menor distância euclidiana para a instância de entrada.

Ao medir todas as distâncias e se determinar com que grupo esse dado de teste mais separece, o regressor atribuído a esse agrupamento será o responsável por prever a quantidade deerros que essa instância possui.

Page 23: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

CAPÍTULO 4

Metodologia

Esse Capítulo explica como serão feitos os testes sobre o sistema proposto. A Seção 4.1 des-creve quais as bases de dados foram utilizadas e o porquê da escolha, a Seção 4.2 mostra comoos experimentos serão realizados e a Seção 4.3 explica cada métrica que será usada para avaliaro desempenho do modelo.

4.1 Bases

Foram utilizadas 9 bases de dados do repositório PROMISE [1]. Todas os 9 datasets são rela-cionados com o problema de detecção de quantidade de falhas em softwares.

Cada instância desses dados representa uma classe de um programa, as colunas são caracte-rísticas do código dessa classe e de sua estrutura e a última coluna é reservada para armazenara quantidade de bugs encontrados nessa classe do programa.

Já que a coluna que mostra as falhas é uma coluna numérica, o problema em questão éum problema de regressão, apesar de que não seria impossível transformar o problema emuma classificação, só seria necessário transformar o valor ’0’ em uma classe sem erros e todovalor maior que ’0’ em uma classe defeituosa. Como o objetivo desse trabalho é predizer aquantidade de erros, manteremos as bases da maneira que elas são.

Como pode ser observado na Tabela 4.1, a maioria das bases possui uma maioria de instân-cias que não apresentam erros, mas a quantidade de dados com erros também não é insignifi-cante, o que permite que o sistema proposto possa ser aplicado sem ressalvas.

Dataset #Atributos #Instâncias %FalhasAnt 1.6 24 351 26,2Ant 1.7 24 747 22,2

Camel 1.4 24 872 16,6Camel 1.6 24 965 19,5Xalan 2.4 24 723 15,2Xalan 2.5 24 803 48,2Xalan 2.6 24 885 46,4Xerces 1.3 24 453 15,2Xerces 1.4 24 588 74,3

Tabela 4.1 Bases utilizadas nos experimentos e suas características

12

Page 24: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

4.2 PROTOCOLO UTILIZADO 13

4.2 Protocolo Utilizado

Para se obter resultados mais robustos, uma abordagem de K-Fold Cross Validation foi esco-lhida para o problema.

O sistema proposto precisa que os dados sejam distribuídos em três conjuntos(treinamento,validação e teste), portanto, em cada iteração um fold é separado para o teste, outro para avalidação e o restante permanece como conjunto de treinamento.

Como no trabalho de Rathore e Kumar [17] os datasets são divididos em 60% para trei-namento, 20% para validação e 20% para teste, optou-se por manter essa proporção, então onúmero de folds escolhidos para a estratégia foi de 5. Um número mais alto de K poderia tersido escolhido, mas poderia ser prejudicial à abordagem, pois o conjunto de validação precisade um número considerável de instâncias para que bons agrupamentos sejam gerados, então,uma quantidade menor que 20% dos dados poderia ser ruim para o algoritmo.

Para a fase de agrupamento, existe um parâmetro opcional do X-Means que define o númeromáximo de grupos que ele pode formar. Como citado na Seção 3.3, alguns detalhes de imple-mentação do artigo não estão disponíveis, então foi escolhido seguir o valor default do Weka,pois foi a ferramenta utilizada pelos autores. O valor padrão da implementação do X-Means noWeka é 4, por ser um número baixo, o algoritmo tende a gerar sempre 4 grupos e entende-seque esse não é o comportamento ideal, porém, como não existem evidências dos autores teremutilizado outro valor e pelos resultados terem sido bons, adotou-se para esse trabalho o valor 4,mas com a ressalva de que esse é um ponto que pode ser melhorado.

Para que os experimentos possam ser replicados é necessária a definição de uma seed randô-mica, que garante que os resultados obtidos sempre serão os mesmos. Os autores não especi-ficam qual valor eles utilizaram, logo, um valor qualquer foi escolhido. Em todas as fases dosistema, a seed randômica utilizada foi 1000.

Após as 5 execuções completas, os resultados das previsões são comparados com os valoresreais de erro segundo as métricas de avaliações descritas na próxima Seção.

4.3 Métricas de Avaliação

No artigo de Rathore e Kumar[17], as métricas utilizadas para avaliar o desempenho do sistemaforam o Erro Médio Absoluto, Erro Relativo Absoluto e Predição no Nível l. Nesse trabalho,também foi medido a precisão e o recall do modelo. Essas medidas funcionam da seguinteforma:

4.3.1 Erro Médio Absoluto (MAE)

Valor médio da diferença absoluta entre os valores reais e os valores previstos (Equação 4.1).

MAE =1n

n

∑j=1| y j− y j | (4.1)

Sendo y j o valor real de erros de uma instância e y j o valor de erros previstos para essainstância. n é a quantidade de módulos testados.

Page 25: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

4.3 MÉTRICAS DE AVALIAÇÃO 14

O Erro Médio Absoluto pode variar entre 0 e infinito, sendo 0 o valor ideal para a métrica.

4.3.2 Erro Médio Relativo (MRE)

Similar ao Erro Médio Absoluto, mas após tirar a diferença absoluta do valor real e do valorprevisto, divide-se o resultado pelo valor real, para obter-se um erro normalizado (Equação 4.2).Para esse trabalho, foi feita uma pequena modificação nessa métrica, dividindo os resultadospelo valor real + 1, para tratar os casos em que o valor real seja 0 e a divisão seria impossível.

MRE =1n

n

∑j=1

| y j− y j |y j +1

(4.2)

Sendo y j o valor real de erros de uma instância e y j o valor de erros previstos para essainstância. n é a quantidade de módulos testados.

O Erro Médio Relativo pode variar entre 0 e infinito, sendo 0 o valor ideal para a métrica.

4.3.3 Predição no Nível l

Mostra a porcentagem de previsões que obtiveram resultados próximos ao valor real, numadistância menor ou igual a l% do valor total (Equação 4.3). O número escolhido pelos autoresfoi de 30%, pois MacDonell [9] mostra que para uma predição ser considerada razoável eladeve ser no máximo 30% diferente do valor real.

Pred(l) = w/n (4.3)

Sendo l o limiar de diferença aceitável, n a quantidade total de casos testadas e w a quanti-dade de instâncias que obedecem à Equação 4.4.

(y j ≤ (1+ l)× y j)∧ (y j ≥ (1− l)× y j) (4.4)

Sendo y j o valor real de erros de uma instância e y j representa o número de erros previstopara essa instância.

A Predição no Nível l pode variar entre 0% e 100%, sendo 100% o valor ideal para amétrica, que indica que todos os casos de teste foram preditos dentro do intervalo desejado.

4.3.4 Precisão

Razão entre a quantidade de instâncias que de fato possuem erros e foram marcadas comopossuindo erros e a quantidade total de instâncias marcadas como tendo erro (Equação 4.5).Mostra quanto do total marcado é relevante. É definido que qualquer valor previsto maior que0 representa uma instância que foi marcada como tendo falhas.

Precision =TruePositive

TruePositive+FalsePositive(4.5)

True Positive é a quantidade de instâncias com erro que foram marcadas corretamente eFalse Positive são as marcadas como tendo erro, mas que não possuem.

Page 26: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

4.3 MÉTRICAS DE AVALIAÇÃO 15

A precisão varia entre 0 e 1, sendo 1 o valor ideal para a métrica.

4.3.5 Recall

Razão entre a quantidade de instâncias que, de fato, possuem erros e foram marcadas comopossuindo erros e o total de instâncias que possuem erros (Equação 4.6). Mostra quanto dorelevante foi marcado.

Recall =TruePositive

TruePositive+FalseNegative(4.6)

False Negative é a quantidade de instâncias com erros que foram marcadas como se nãotivessem falhas.

O recall varia entre 0 e 1, sendo 1 o valor ideal para a métrica.

Page 27: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

CAPÍTULO 5

Experimentos

Os experimentos foram realizados de acordo com a metodologia apresentada no Capítulo 4 eos resultados (Tabela 5.1) se comportaram de maneira similar ao do artigo de Rathore e Kumar(Tabela 5.2). As diferenças observadas podem ter sido geradas por alguns fatores: o númeroalto de técnicas que utilizam números randômicos e pelos autores não especificarem nenhumvalor de seed, além de todos os problemas citados anteriormente sobre definição de parâmetrosusados nas técnicas, dado que não foi obtido acesso ao documento com esses valores.

Dataset MAE MRE Pred(0.3) Precision RecallAnt 1.6 0,61 0,42 64,60% 0,47 0,79Ant 1.7 0,56 0,33 67,39% 0,45 0,67

Camel 1.4 0,60 0,37 71,45% 0,31 0,37Camel 1.6 0,91 0,57 60,41% 0,26 0,41Xalan 2.4 0,32 0,23 73,87% 0,31 0,46Xalan 2.5 0,68 0,43 42,95% 0,51 0,88Xalan 2.6 0,62 0,40 50,97% 0,57 0,83Xerces 1.3 0,59 0,35 75,31% 0,39 0,58Xerces 1.4 1,95 0,59 49,84% 0,87 0,93

Tabela 5.1 Desempenho do Sistema de Seleção Dinâmica de Regressores Implementado

Dataset MAE MRE Pred(0.3)Ant 1.6 0,42 0,26 69,45%Ant 1.7 0,38 0,25 69,31%

Camel 1.4 0,40 0,20 74,43%Camel 1.6 0,65 0,31 65,68%Xalan 2.4 0,18 0,09 63,01%Xalan 2.5 0,53 0,36 53,14%Xalan 2.6 0,51 0,28 59,54%Xerces 1.3 0,33 0,19 80,43%Xerces 1.4 1,67 0,44 47,33%

Tabela 5.2 Resultados obtidos por Rathore e Kumar. Não foi documentado com detalhes o desempenhoem relação às métricas precision e recall

Como pode ser observado, os resultados obtidos ficaram abaixo do que foi apresentadopelos autores, mas em geral essa diferença não foi grande, inclusive em duas bases o pred(0.3)

16

Page 28: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

5.1 DESEMPENHO DOS REGRESSORES 17

teve um desempenho melhor.No artigo, os autores não detalharam o desempenho da ferramenta para as métricas de

precision e recall, mas para esse trabalho foi julgado importante utilizar essas medidas. A únicavez em que os autores citaram a precisão e revocação, eles fizeram sem detalhar o desempenhopor dataset, informando apenas um intervalo numérico. Não foi informado a partir de quaisbases esse intervalo foi estabelecido e também não foi explicitado o que eles consideram comoVerdadeiro e Falso Positivos.

Na Seção 5.3 essa questão das diferenças de resultados voltará a ser discutida com maiorprofundidade.

5.1 Desempenho dos Regressores

Nessa Seção será mostrado o desempenho de cada regressor utilizado no sistema de seleçãodinâmica. A avaliação será realizada com a mesma abordagem de 5-Fold Cross Validationutilizada no sistema geral, mas como não há necessidade de um conjunto de validação, o foldque seria destinado a validação será agregado ao conjunto de treinamento.

Os regressores receberam os mesmos parâmetros explicitados na Seção 3.3. Os autoresdo artigo original também fizeram avaliação dos regressores isolados, mas não avaliaram odesempenho do pred(0.3), nem de precision e recall. Os resultados do artigo estão presentes naTabela 5.3 e serão discutidos na Seção 5.3.

Dataset LR MLP DTRMAE MRE MAE MRE MAE MRE

Ant 1.6 0,52 0,31 0,70 0,44 0,40 0,22Ant 1.7 0,38 0,20 0,53 0,27 0,39 0,20

Camel 1.4 0,48 0,27 0,63 0,38 0,43 0,24Camel 1.6 0,67 0,40 0,92 0,64 0,63 0,35Xalan 2.4 0,23 0,12 0,33 0,22 0,25 0,14Xalan 2.5 0,54 0,39 0,75 0,51 0,56 0,40Xalan 2.6 0,53 0,33 0,63 0,36 0,52 0,30Xerces 1.3 0,56 0,39 0,74 0,50 0,34 0,20Xerces 1.4 1,73 0,57 2,24 0,68 1,68 0,47

Tabela 5.3 Resultados obtidos por Rathore e Kumar para as técnicas isoladas.

5.1.1 Regressão Linear

Em geral, a regressão linear não apresentou bons resultados (Tabela 5.4). Por ser um modelolinear, os valores previstos pela técnica tendem a ser números com decimais, o que faz com queo erro do modelo suba um pouco, tendo em vista que a quantidade de falhas em um softwarevai ser sempre um número inteiro.

O desempenho baixo do precision, somado a um recall muito alto, evidencia que o modeloteve uma quantidade grande de Falsos Positivos. Devido a esse fato, pode-se entender que

Page 29: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

5.1 DESEMPENHO DOS REGRESSORES 18

Dataset MAE MRE Pred(0.3) Precision RecallAnt 1.6 0,65 0,47 48,73% 0,27 0,96Ant 1.7 0,61 0,46 41,61% 0,23 0,99

Camel 1.4 0,88 0,71 24,43% 0,17 0,98Camel 1.6 1,00 0,74 23,10% 0,20 1,00Xalan 2.4 0,52 0,45 29,47% 0,15 1,00Xalan 2.5 0,64 0,43 37,48% 0,48 1,00Xalan 2.6 0,64 0,42 39,66% 0,46 0,99Xerces 1.3 0,91 0,70 29,99% 0,16 0,93Xerces 1.4 1,87 0,61 36,73% 0,75 0,99

Tabela 5.4 Desempenho da Regressão Linear

o modelo ficou enviesado para marcar erros, justamente por conta da linearidade da técnica.Muitos valores preditos ficaram próximos de zero, mas como não eram exatamente zero, éentendido que o software possui bugs. A técnica ainda rotulou algumas instâncias como se elaspossuíssem uma quantidade negativa de erros.

Devido aos defeitos de sua linearidade, a técnica não é a mais adequada para prever valoresde instâncias que não possuem erros, pois é um pouco difícil que a técnica dê como resposta ovalor 0. Mas, para instâncias com falhas, a regressão linear tem um comportamento que podeser considerado aceitável.

5.1.2 Multi-Layer Perceptron

O MLP teve resultados ainda piores que o da Regressão Linear e sofreu do mesmo problema devalores decimais (Tabela 5.5). A técnica também não foi capaz de fazer uma boa distinção entreinstâncias com e sem falhas, mostrando que também teve um alto número de Falsos Positivos,devido ao baixo precision, e praticamente não definiu nada como tendo exatamente zero falhas,pois, além da precisão baixa, o recall foi de 1 para quase todas as bases. As métricas de errotiveram valores maiores e o pred(0.3) foi muito baixo, mostrando que o modelo foi incapaz deacertar a maioria dos casos.

Dataset MAE MRE Pred(0.3) Precision RecallAnt 1.6 0,79 0,56 13,65% 0,26 1,00Ant 1.7 0,75 0,55 10,73% 0,22 1,00

Camel 1.4 0,91 0,73 19,26% 0,17 1,00Camel 1.6 1,11 0,84 21,11% 0,20 1,00Xalan 2.4 0,50 0,44 39,00% 0,15 1,00Xalan 2.5 0,64 0,44 34,15% 0,48 1,00Xalan 2.6 0,69 0,46 31,52% 0,46 1,00Xerces 1.3 1,01 0,79 26,43% 0,16 0,96Xerces 1.4 2,27 0,82 37,94% 0,74 1,00

Tabela 5.5 Desempenho do MLP

Page 30: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

5.2 USO DOS REGRESSORES NO SISTEMA 19

Os resultados abaixo do esperado podem ser justificados pela quantidade baixa de neurôniosutilizados, apenas uma camada escondida de dois neurônios. Com outra configuração, a redepoderia ser mais robusta. Dessa forma, que foi utilizada por Rathore e Kumar [17], o modelofica pouco robusto, é ruim para instâncias sem erro e para instâncias com falhas se mostra umpouco mais aceitável, mas ainda assim o desempenho é fraco.

5.1.3 Árvore de Decisão

Teve os melhores resultados dentre as três técnicas utilizadas (Tabela 5.6). De começo, apenaso fato de sua saída ser discretizada já é uma vantagem sobre os outros dois regressores. Apesardo número de erros ter sido baixo e do precision ter sido melhor, o que evidencia uma melhorcapacidade de identificar instâncias sem falhas, o recall do modelo ficou num nível fraco.

Dataset MAE MRE Pred(0.3) Precision RecallAnt 1.6 0,53 0,30 69,50% 0,58 0,59Ant 1.7 0,59 0,36 68,46% 0,41 0,48

Camel 1.4 0,60 0,36 72,13% 0,31 0,37Camel 1.6 0,75 0,45 68,07% 0,32 0,38Xalan 2.4 0,35 0,24 75,25% 0,34 0,42Xalan 2.5 0,64 0,39 53,92% 0,63 0,65Xalan 2.6 0,59 0,32 62,83% 0,69 0,69Xerces 1.3 0,46 0,24 80,58% 0,45 0,49Xerces 1.4 1,99 0,54 61,22% 0,91 0,95

Tabela 5.6 Desempenho da Árvore de Decisão

O modelo se mostrou mais eficaz em distinguir instâncias sem falhas, talvez por conta dosresultados inteiros, e os seus valores de erros médios foram baixos. Mas, isso não é uma coisatotalmente boa, pela mesma razão dos valores discretizados, muitas instâncias ficaram comuma previsão exata, mas qualquer erro do modelo já significa pelo menos 1,0 de diferença aovalor real. Considerando esse fato, os valores de pred(0.3) são surpreendentes, mostrando quea árvore ficou bem modelada.

5.2 Uso dos Regressores no Sistema

Em todas as execuções do sistema foram gerados 4 agrupamentos pelo X-Means no Clusteri-zação, pela razão explicada na Seção 4.2. As técnicas foram distribuídas nos grupos de acordocom a Tabela 5.7. Em geral, a Árvore de Decisão(DTR) foi a mais escolhida, mas com umaquantidade bem próxima ao MLP.

Em relação ao teste, a distribuição foi um pouco diferente, como pode ser observado na Ta-bela 5.8. A árvore de decisão foi amplamente utilizada, enquanto o MLP, que ficou responsávelpor uma quantidade agrupamentos similar, foi utilizado até menos que a regressão linear.

Já que na fase de teste os dados não precisam ser balanceados, um número maior de padrõessem falhas são avaliados pelo sistema, por conta do desbalanceamento. A preferência das

Page 31: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

5.3 DIFERENÇAS DE RESULTADO 20

Técnica AgrupamentosLR 25%

MLP 36,11%DTR 38,89%

Tabela 5.7 Proporção de vezes que cada regressor foi atribuído a um agrupamento

Técnica UtilizaçãoLR 15,69%

MLP 10,67%DTR 73,64%

Tabela 5.8 Proporção de vezes que cada regressor foi utilizada para prever os erros de um padrão deteste.

instâncias de teste pela árvore de decisão indicam que ela deve ter ficado responsável pelosgrupos com a maioria de suas instâncias possuindo 0 erros. Esse comportamento corrobora asconclusões da Seção 5.1.3 de que a árvore é melhor pra prever padrões sem falhas por conta dadiscretização da sua saída.

O MLP e a regressão linear provavelmente ficaram responsáveis por grupos com maioriade instâncias tendo erros, portanto eles seriam naturalmente menos escolhidos na fase de teste.Isso também justifica o desempenho ruim dessas técnicas apresentados nas Seções 5.1.1 e 5.1.2,pois provavelmente elas tiveram um desempenho superior em prever instâncias com erros, masnos testes as falhas são casos minoritários.

5.3 Diferenças de Resultado

Como podemos observar nas Tabelas 5.3, 5.4, 5.5 e 5.6, quase todos os resultados obtidos pelosautores foram melhores que os apresentados nesse trabalho. Isso se deve às incertezas acercados parâmetros de treinamento do modelo. Como os previsores utilizados são todos regressoresjá consolidados do scikit-learn [13] e o processo foi feito com o K-fold cross validation, tambémdo scikit-learn, não há espaço para considerações de erro de programação.

Como as bases utilizadas para avaliação são as mesmas e foi usada uma validação cruzadapara minimizar a influência de números randômicos, a única forma de explicação dos resultadosobtidos nesse trabalho terem sido abaixo dos apresentados por Rathore e Kumar é o fato dosparâmetros utilizados por eles no treinamento dos regressores serem desconhecidos.

Portanto, é aceitável a diferença de resultado observadas na Tabelas 5.1 e 5.2, pois o re-sultado do sistema dinâmico implementado não tem como ser comparável ao do artigo se aspróprias técnicas de aprendizado possuem desempenhos diferentes.

Page 32: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

CAPÍTULO 6

Conclusão

O sistema proposto possui bons resultados e é eficaz em predizer quantidade de falhas emsoftwares, porém, existe muito espaço para melhorias de desempenho. Alguns aspectos quepodem ser melhorados são:

• Procurar parâmetros que melhorem os desempenhos dos regressores

• Utilizar mais regressores, para que as regiões de decisão sejam melhor divididas.

• Dividir o conjunto de treinamento entre os regressores de maneira a especializá-lo melhorem uma região específica. Uma divisão aleatória, mesmo que estratificada, garante queele vai ter uma representação geral do problema, mas com menor volume dados paraaprender. A ideia do próprio artigo é especializar o regressor em uma determinada região,então a divisão poderia ser feita utilizando alguma noção de agrupamento de dados.

• Utilizar outro algoritmo de agrupamento, talvez um hierárquico, para gerar grupos maisconcisos. Ou, no mínimo, alterar o parâmetro limitante de 4 grupos gerados pelo X-Means, para ele gerar o máximo que puder.

• Selecionar os melhores regressores de cada agrupamento de alguma outra forma que nãoseja apenas o erro médio, para valorizar mais a distinção entre as instâncias com e semerros. Poderia se fazer uma combinação de métricas, utilizando o próprio erro médio,mas tendo, também, noções de precision e recall.

• Selecionar o grupo ao qual a instância de teste pertence por alguma lógica que valorizeo tamanho dos grupos e que não seja uma simples distância euclidiana em relação aoscentroides.

• Ajustar as saídas dos regressores, para evitar erros com casas decimais, o que prejudicamuito a métricas de precision, devido a valores previstos muito próximos aos valoresreais, porém inevitavelmente diferentes.

Com certeza, alguns outros aspectos também podem ser atacados para buscar uma melhoriano funcionamento do sistema. Mas, de qualquer forma, os resultados alcançados já são bons eo sistema proposto é inovador na área de previsão de quantidade de falhas em software.

21

Page 33: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

Referências Bibliográficas

[1] G Boetticher. The promise repository of empirical software engineering data.http://promisedata. org/repository, 2007.

[2] Nitesh V Chawla, Kevin W Bowyer, Lawrence O Hall, and W Philip Kegelmeyer. Smote:synthetic minority over-sampling technique. Journal of artificial intelligence research,16:321–357, 2002.

[3] Mingming Chen and Yutao Ma. An empirical study on predicting defect numbers. InSEKE, pages 397–402, 2015.

[4] Thomas G Dietterich. Ensemble methods in machine learning. In International workshopon multiple classifier systems, pages 1–15. Springer, 2000.

[5] Todd L Graves, Alan F Karr, James S Marron, and Harvey Siy. Predicting fault incidenceusing software change history. IEEE Transactions on software engineering, 26(7):653–661, 2000.

[6] Tracy Hall, Sarah Beecham, David Bowes, David Gray, and Steve Counsell. A syste-matic literature review on fault prediction performance in software engineering. IEEETransactions on Software Engineering, 38(6):1276–1304, 2012.

[7] John A Hartigan and Manchek A Wong. Algorithm as 136: A k-means clustering algo-rithm. Journal of the Royal Statistical Society. Series C (Applied Statistics), 28(1):100–108, 1979.

[8] Robert E Kass and Larry Wasserman. A reference bayesian test for nested hypotheses andits relationship to the schwarz criterion. Journal of the american statistical association,90(431):928–934, 1995.

[9] Stephen G MacDonell. Establishing relationships between specification size and softwareprocess effort in case environments. Information and Software Technology, 39(1):35–45,1997.

[10] Tim Menzies, Andrew Butcher, David Cok, Andrian Marcus, Lucas Layman, ForrestShull, Burak Turhan, and Thomas Zimmermann. Local versus global lessons for defectprediction and effort estimation. IEEE Transactions on software engineering, 39(6):822–834, 2012.

22

Page 34: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

REFERÊNCIAS BIBLIOGRÁFICAS 23

[11] Tim Menzies, Burak Turhan, Ayse Bener, Gregory Gay, Bojan Cukic, and Yue Jiang.Implications of ceiling effects in defect predictors. In Proceedings of the 4th internationalworkshop on Predictor models in software engineering, pages 47–54. ACM, 2008.

[12] Ayse Tosun Mısırlı, Ayse Basar Bener, and Burak Turhan. An industrial case study ofclassifier ensembles for locating software defects. Software Quality Journal, 19(3):515–536, 2011.

[13] F. Pedregosa, G. Varoquaux, A. Gramfort, V. Michel, B. Thirion, O. Grisel, M. Blondel,P. Prettenhofer, R. Weiss, V. Dubourg, J. Vanderplas, A. Passos, D. Cournapeau, M. Bru-cher, M. Perrot, and E. Duchesnay. Scikit-learn: Machine learning in Python. Journal ofMachine Learning Research, 12:2825–2830, 2011.

[14] Dan Pelleg, Andrew W Moore, et al. X-means: extending k-means with efficient estima-tion of the number of clusters. In Icml, volume 1, pages 727–734, 2000.

[15] Santosh S Rathore and Sandeep Kumar. A study on software fault prediction techniques.Artificial Intelligence Review, 51(2):255–327, 2019.

[16] Santosh Singh Rathore and Sandeep Kumar. Linear and non-linear heterogeneous en-semble methods to predict the number of faults in software systems. Knowledge-BasedSystems, 119:232–256, 2017.

[17] Santosh Singh Rathore and Sandeep Kumar. An approach for the prediction of number ofsoftware faults based on the dynamic selection of learning techniques. IEEE Transactionson Reliability, 68(1):216–233, 2019.

[18] Qinbao Song, Zihan Jia, Martin Shepperd, Shi Ying, and Jin Liu. A general softwaredefect-proneness prediction framework. IEEE transactions on software engineering,37(3):356–370, 2011.

[19] Luís Torgo, Rita P Ribeiro, Bernhard Pfahringer, and Paula Branco. Smote for regression.In Portuguese conference on artificial intelligence, pages 378–389. Springer, 2013.

[20] Naonori Ueda. Optimal linear combination of neural networks for improving classifi-cation performance. IEEE Transactions on Pattern Analysis and Machine Intelligence,22(2):207–215, 2000.

Page 35: Seleção Dinâmica de Técnicas de Aprendizado para Predição ...tg/2019-1/TG_CC/tg_ajgan.pdf · Predição de falhas em softwares é uma tarefa relevante para planejamentos de

Este volume foi tipografado em LATEX na classe UFPEThesis (www.cin.ufpe.br/~paguso/ufpethesis).