O IMPACTO DO USO DE ANÁLISE DE DADOS NA GERAÇÃO DE ... · Desta forma são estudados conceitos...
Transcript of O IMPACTO DO USO DE ANÁLISE DE DADOS NA GERAÇÃO DE ... · Desta forma são estudados conceitos...
LUIZ FELIPE PRESTES TEIXEIRA
O IMPACTO DO USO DE ANÁLISE DE DADOS NA GERAÇÃO
DE ESTIMATIVAS ATRAVÉS DE REDES BAYESIANAS
CANOAS, 2011
LUIZ FELIPE PRESTES TEIXEIRA
O IMPACTO DO USO DE ANÁLISE DE DADOS NA GERAÇÃO
DE ESTIMATIVAS ATRAVÉS DE REDES BAYESIANAS
Trabalho de Conclusão apresentado para a banca examinadora do Curso de Ciência da Computação do Centro Universitário La Salle – Unilasalle, como exigência parcial para a obtenção do grau de Bacharel em Ciência da Computação com ênfase em Desenvolvimento de Software.
Orientador: Prof. Me. Abraham Lincoln Rabelo de Sousa
CANOAS, 2011
LUIZ FELIPE PRESTES TEIXEIRA
O IMPACTO DO USO DE ANÁLISE DE DADOS NA GERAÇÃO
DE ESTIMATIVAS ATRAVÉS DE REDES BAYESIANAS
Trabalho de Conclusão aprovado como exigência parcial para a obtenção do grau de Bacharel em Ciência da Computação com ênfase em Desenvolvimento de Software do Curso de Ciência da Computação pelo Centro Universitário La Salle – Unilasalle.
Aprovado pela banca examinadora em ___ de _________ de 2011.
BANCA EXAMINADORA
______________________________________________
Prof. Me. Abraham Lincoln Rabelo de Sousa
Unilasalle
______________________________________________
Prof. Me. Gustavo Passos Tourinho
Unilasalle
______________________________________________
Prof. Me. Roberto Petry
Unilasalle
AGRADECIMENTOS
Agradeço a todos que contribuíram de forma direta ou indireta para a realização
deste trabalho, mas especialmente a minha família e aos meus amigos pela
colaboração a mim dedicada.
Agradeço também ao meu orientador Prof. Lincoln por ter me auxiliado ao
longo desta pesquisa com sua experiência, dedicação e atenção.
RESUMO
Apesar da constante evolução da engenharia de software ao longo dos anos a
geração de estimativas em projetos de software ainda é um dos problemas mais
complexos em um projeto de software. E mesmo com a utilização de base de dados
históricos e ferramentas de auxilio a tomada de decisão, por si só não são o
bastante para auxiliar efetivamente o gerente de projetos na tarefa de estimar,
principalmente devido a má qualidade dos dados inseridos na base.
Tendo em visto esta situação esta pesquisa tem como objetivo estudar o impacto
que a análise de dados exerce sobre as estimativas geradas através de Redes
Bayesianas. Desta forma são estudados conceitos de mineração de dados, como
técnicas, algoritmos, seu processo de coleta de conhecimento, problemas mais
comuns em grupos de dados, aprendizagem automatizada, redes bayesianas e suas
formas de conhecimento, o uso de base de dados históricos de projetos de software.
Como proposta de modelo são criados fluxos de mineração de dados, onde são
aplicadas técnicas e algoritmos de tratamento de dados em bases de dados
históricas, posteriormente esses dados servem para treinar a Rede Bayesiana e
posteriormente é possível a aplicação de vários testes.
Por fim conclui-se que a mineração de dados tem um alto impacto sobre as
estimativas geradas através de Redes Bayesianas, e aconselha-se o uso do
algoritmo K-Means.
Palavras chave: Redes bayesianas. Análise de Dados. Gerência de software.
ABSTRACT
Despite the constant evolution of software engineering over the years the generation
of estimates in software projects is still one of the most complex problems. And even
with the use of historical Project data set and tools to aid decision-making alone is
not enough to effectively assist the project manager on the task to estimate, mainly
due to poor quality of data entered in the database.
Having seen this situation this research aims to study the impact that the analysis of
data has on estimates generated through Bayesian networks. Thus are studied
concept of data mining, such as techniques, algorithms, the process of gathering
knowledge, the most common problems in groups of data, automated learning,
Bayesian networks and forms of knowledge, the use of the historical database of
projects of software. As proposed model are data mining fluxes, where these are
techniques and algorithms for processing data in historical databases, then these
data are used to train the Bayesian network and is then possible to apply various
tests.
Finally it was concluded that data mining has a high impact on the estimates
generated using Bayesian networks, and we recommend the use of K-Means
algorithm.
Key words: Bayesian networks. Data Analyses. Data Mining. Project Software
Manager. Software Engineering
LISTA DE ILUSTRAÇÕES
Figura 1 - Cone da Incerteza de um projeto de software. ......................................... 13
Figura 2 - Exemplo de grafo e tabelas de probabilidade de Redes Bayesianas. ...... 15
Figura 3 - Etapas da descoberta do conhecimento. .................................................. 19
Figura 4 - Exemplo de árvore de decisão em modo gráfico. ..................................... 26
Figura 5 - Exemplo gráfico das etapas do algoritmo de K-means. ............................ 28
Figura 6 - Esquema gráfico do Processo de desenvolvimento.................................. 34
Figura 7 – Fluxo de mineração de dados na ferramenta WEKA (KnowledgeFlow). .. 45
Figura 8 - Fluxo de mineração de dados com J48. ................................................... 48
Figura 9 - Fluxo de mineração de dados com algoritmo K-Means. ........................... 49
Figura 10 - Representação gráfica da Rede Bayesiana. ........................................... 51
Figura 11 - Predição da Rede Bayesiana para Esforço Requerido. .......................... 53
Figura 12 - Predição da Rede Bayesiana para Experiência necessária. ................... 54
Figura 13 - Estimando a dificuldade estimada de um projeto em uma base pura. .... 54
Figura 14 - Estimando esforço com algoritmo J48. ................................................... 55
Figura 15 - Estimando a experiência necessária de um projeto. ............................... 56
Figura 16 - Estimando a dificuldade em projetos. ..................................................... 57
Figura 17 - Estimativa de esforço mais precisa com uso algoritmo de K-Means. ..... 58
Figura 18 - Estimando nível de experiência para o projeto. ...................................... 59
Figura 19 - Estimando a dificuldade para o projeto de teste. .................................... 60
LISTA DE QUADROS Quadro 1 - Relação das tarefas do processo de desenvolvimento. .......................... 35
Quadro 2 - Características do projeto selecionado para testes na Rede Bayesiana. 52
Quadro 3 - Demonstrativo do resultado dos testes aplicados. .................................. 60
Quadro 4 - Demonstrativo dos projetos de testes utilizados. .................................... 61
Quadro 5 - Demonstrativo dos resultados gerais dos testes aplicados. .................... 61
SUMÁRIO 1 INTRODUÇÃO ...................................................................................................... 9
2 FUNDAMENTAÇÃO TEÓRICA ............................. ............................................. 11
2.1 Estimativas em projetos de software ............... ............................................... 11
2.2 Redes Bayesianas .................................. .......................................................... 14
2.2.1 Tipos de Probabilidade em Redes Bayesianas ................................ 15
2.2.2 Aprendizagem em Redes Bayesianas ............................................. 15
2.2.3 Discretização .................................................................................... 16
2.3 Mineração de Dados ................................ ......................................................... 17
2.3.1 Desafios que levam ao uso da mineração de dados ........................ 18
2.3.2 O Processo de Descoberta de Conhecimento em Banco de Dados 19
2.3.3 Tarefas de Mineração de dados ....................................................... 21
2.3.4 Qualidade de Dados ......................................................................... 22
2.3.5 Técnicas de análise de dados .......................................................... 24
2.4 Trabalhos Relacionados ............................ ....................................................... 29
3 ESTUDO DA ANÁLISE DO IMPACTO DA MINERAÇÃO DE DADOS EM
ESTIMATIVAS ATRAVÉS DE REDES BAYESIANAS ........... ................................. 31
3.1 Ferramentas para gerência de projetos ............. ............................................. 32
3.1.1 WebApsee – Gerenciador de Projetos de Software ......................... 32
3.1.2 Processo de desenvolvimento de software ...................................... 32
3.2 Base de dados sintética ........................... ........................................................ 36
3.3 Ferramentas para mineração de dados ............... ........................................... 43
3.3.1 Weka ................................................................................................ 43
3.4 Organização dos dados ............................. ....................................................... 46
3.5 Aplicando análise de dados em dados históricos de p rojetos ..................... 46
3.5.1 J48 – Árvores de Decisão ................................................................ 46
3.5.2 SimpleKMeans – K-means ............................................................... 48
3.6 Ferramentas para utilização de Redes Bayesianas ... .................................... 49
3.6.1 Treinando as Redes Bayesianas ...................................................... 50
3.7 Definindo a Rede Bayesiana para análise ........... ........................................... 50
3.8 Projeto para testes de predição em Redes Bayesianas ................................ 51
3.9 Analisando o impacto de mineração de dados em estim ativas geradas
através de Redes Bayesianas ....................... ......................................................... 52
3.9.1 Rede Bayesiana – Treinada com base de dados pura ..................... 53
3.9.2 Rede Bayesiana – Treinada com base de dados tratada com o
algoritmo J48. 55
3.9.3 Rede Bayesiana – Treinada com base de dados tratada com
algoritmo K-Means. ................................................................................................... 57
4 CONCLUSÃO ......................................... ............................................................ 62
REFERÊNCIA ........................................................................................................... 63
9
1 INTRODUÇÃO
A engenharia de software visa a melhoria do processo de desenvolvimento de
software, introduzindo normas e padrões a serem seguidos para que esse objetivo
seja atingido. Seguindo estes padrões, equipes de desenvolvimento buscam
produzir softwares de maior qualidade, redução de custos, além de alcançar uma
maior satisfação dos usuários finais. Contudo, unir todas estas características
citadas em um projeto de desenvolvimento de software continua sendo um desafio.
Devido a isto, a área de engenharia de software continua em freqüente evolução
buscando atender as novas exigências do mercado.
Há diversas pesquisas voltadas para a engenharia de software relacionada à
novas ferramentas e modelos para auxiliar os gerentes de projeto na complexa
tarefa de concretizar um projeto de desenvolvimento de software com sucesso.
Porém, mesmo com todo o progresso nos estudos e pesquisas, ainda há desafios a
serem solucionados. Entre eles é possível citar a elaboração de estimativas para os
projetos de desenvolvimento de software como sendo uma das tarefas mais
complexas que um gerente de projetos pode enfrentar (Pressman, 2009). As
estimativas são tão vitais para os projetos que podem determinar seu sucesso ou
fracasso. Sendo assim, as estimativas podem ser consideradas a fundação para
todas as outras atividades de planejamento do projeto.
As estimativas têm como principal objetivo mensurar o projeto que esta sendo
desenvolvido, este pode ser mensurado em diversos elementos como: custo, tempo,
esforço e qualidade. No entanto, há um grande índice de projetos com estimativas
imprecisas ou incorretas.
Há diversas técnicas que visam amenizar esse tipo de problema, sendo uma
das mais indicadas as Redes Bayesianas, que são grafos de probabilidade,
representando cenários de um projeto, com o objetivo de realizar predições levando
em conta situações de causa e efeito. Todavia o uso das Redes Bayesianas requer
dados históricos para que seu modelo seja treinado a fim de aperfeiçoar suas
predições. Entretanto nem sempre a base de dados históricos utilizada no
treinamento tem dados com a qualidade necessária, comprometendo a precisão das
estimativas geradas pela Rede Bayesiana.
10
Este estudo propõe apresentar uma análise do impacto que o uso de técnicas
de mineração de dados exercem sobre as estimativas geradas através de Redes
Bayesianas.
Se faz importante mencionar aqui que este trabalho faz parte de um projeto
desenvolvido conjuntamente com o colega Fábio Pittoli, cujo trabalho de conclusão
de curso se propõe a monitoração de projetos de desenvolvimento de software
utilizando Redes Bayesianas. O modelo de processo de desenvolvimento de
projetos elaborado por ele foi utilizado neste trabalho com o intuito de simular
situações rotineiras em um projeto de software, facilitando assim a criação de uma
base de dados histórica de projetos similares. O professor Abraham Lincoln Rabelo
de Sousa, cujo trabalho desenvolvido no doutorado abrange as áreas contempladas
tanto neste trabalho, quanto no trabalho do Fábio, colaborou largamente com sua
experiência e conhecimento na área.
Esta pesquisa esta disposta ao longo de cinco capítulos, sendo o segundo
deles um estudo sobre o estado da arte dos assuntos relacionados à esta pesquisa.
O terceiro capítulo aborda as questões que envolvem este estudo do impacto
de análise de dados em estimativas através de Redes Bayesianas, contendo os
modelos escolhidos bem como os critérios de análise e ferramentas utilizadas,
também relata os resultados obtidos com as experiências.
Na quarta seção é apresentada uma conclusão sobre os resultados obtidos e
sobre a pesquisa como um todo, além de trabalhos futuros sugeridos.
11
2 FUNDAMENTAÇÃO TEÓRICA
Nesta sessão serão apresentados os conceitos a serem aplicados para que se
atinjam os objetivos desta pesquisa tais como conceitos de estimativas, redes
bayesianas e análise de dados. Estes conceitos são importantes para entendimento
da solução proposta para essa pesquisa com relação ao problema dos ruídos em
bases de dados históricas de projetos de software.
2.1 Estimativas em projetos de software
Tendo o objetivo de mensurar o projeto, o delimitando em termos de tempo
necessário para o desenvolvimento, custos totais, esforços necessários, entre outras
características que um projeto de desenvolvimento de software possa a ter, as
estimativas são os pilares de um projeto e também uma das tarefas mais difíceis,
devido bastante ao alto nível de incerteza em que os projetos se encontram na fase
de estimar. As estimativas fazem parte de uma das fases mais importantes de um
projeto o planejamento.
De acordo com Pressman (2006), o planejamento trata-se de uma atividade
fundamental dentro da gerencia de projetos de software. Durante a fase de
planejamento o gerente de projeto deve estimar esforço exigido, o tempo, e o custo
que o projeto demandará.
Ressalta-se que os esforços com relação as estimativas se concentram em
garantir uma melhor qualidade do software, bem como ganhos na produtividade,
uma maior satisfação dos clientes e a diminuição do retrabalho e conseqüentemente
dos custos (CLEMENTES, 2001).
Entretanto, pesquisadores da área (LEHMAN, 1989; FUGGETA, 2000;
CLARKE, 2003; HANNAY, 2007) consideram que atualmente ainda há pouco
conhecimento disponível sobre os fenômenos e/ou incertezas que afetam o
desenvolvimento de software e sobre como reagir diante deles.
Os principais motivos para estimativas incorretas e imprecisas estão
provavelmente em suas origens, ou seja, em quem estimou. Muitas vezes um
gerente de projetos possui diversas responsabilidades e tem pouco tempo para o
planejamento do projeto em si, com isso o tempo para gerar as estimativas é ainda
12
mais curto. Além disso, há diversos outros fatores que podem complicar ainda mais
a tarefa do gerente de projetos tais como:
• Falta de atenção a detalhes pertinentes ao projeto;
• Requisitos que podem mudar a qualquer momento;
• Informações imprecisas sobre o produto desenvolvido.
• Complexidade do projeto acima do normal, e dessa forma, difícil de ser
estimado;
• Falta de uma base de dados históricos de projetos, levando as estimativas a
serem feitas de forma intuitiva.
• Falha na coleta dos dados do projeto levando a base de dados históricos a
apresentar ruídos.
• Uso de base de dados históricos de projetos de software, porém sem
tratamento dos dados adequado em conjunto a uma ferramenta de apoio a
tomada de decisões;
Segundo Pressman (2009) um dos maiores problemas de projetos de software
são as estimativas imprecisas, e isso se deve a o baixo nível de dados coletados
sobre os processos de desenvolvimento, ou seja, uma fraca base de dados de
projetos, que faz com que as estimativas sejam empíricas e altamente imprecisas.
Outro grande problema na geração de estimativas é o ambiente de incertezas
que envolvem os projetos de software. Isso ocorre devido a etapa onde as
estimativas são exigidas, normalmente logo no inicio do planejamento, quando ainda
não se tem o real escopo do projeto. Muitas vezes somente se conta com requisitos
básicos que podem vir a mudar e dessa forma as estimativas geradas estão sujeitas
a muitos erros. Inúmeros estudos indicam que as estimativas deveriam ser criadas
em uma fase mais avançada do projeto quando os requisitos e o escopo real
estivessem bem definidos, evitando assim que mudanças alterassem o
comportamento do projeto e com isso as estimativas poderiam ter uma precisão
maior. Uma boa estimativa é aquela que tem 25% ou menos de erro, em pelo menos
75% dos casos (McConnell, 2006).
13
Figura 1 - Cone da Incerteza de um projeto de software. Fonte: McConnel, 2008.
Os custos dos projetos se tornam cada vez mais onerosos quando se trata de
erros de estimativas, pesadas multas muitas vezes têm de ser pagas por empresas,
além de que a corrida para vencer as estimativas incorretas faz com que os
softwares não tenham os cuidados necessários ao serem implementados e com isso
percam bastante sua qualidade. Desta forma terão de passar por diversas fases de
manutenção gerando ainda mais custos para as empresas, ou até mesmo a perda
de contratos.
De acordo com pesquisas realizadas pelo “Standish Group”, grupo de pesquisa
sobre falhas e sucessos em projetos de desenvolvimento de software, em 2009,
verificaram que aproximadamente 24% dos projetos falharam, tendo apenas 32%
dos projetos sendo entregues no prazo correto e outros 44% tiveram de ser
alterados para redução do escopo por que estavam atrasados e com estouro de
orçamento. Uma das maiores causas apontadas para as falhas nos projetos são as
mudanças nos requisitos, o que conseqüentemente é uma das maiores causas de
estimativas imprecisas. O prognóstico para 2011 prevê um aumento da margem de
projetos finalizados com sucesso.
14
Uma boa prática para ter estimativas mais precisas é o uso de históricos de
projetos anteriores, evitando as estimativas por impulso ou baseadas em
experiências próprias. O ideal seria que a cada projeto suas características e dados
pertinentes a todo o processo de desenvolvimento fossem coletados e guardados
para serem utilizados nos próximos projetos como apoio a tomada de decisão para
novas estimativas (Pressman, 2009).
Porém, analisar grandes quantidades de dados e extrair alguma informação útil
e com isso gerar estimativas ou predizer um evento que poderá ocorrer se torna
uma tarefa extremamente difícil se não auxiliada por uma ferramenta. Desta forma,
para auxilio na elaboração de estimativas de software já foram estudados diversos
modelos e ferramentas, todas utilizando métricas distintas, e muitas vezes de alta
complexidade. Todavia, tratando-se de uma tarefa árdua e em meio a um ambiente
de muita incerteza, as ferramentas que fazem uso de Redes Bayesianas parecem as
mais indicadas para auxiliar o gerente de projetos nessas situações, uma vez que
são normalmente utilizadas em modelos que envolvem incerteza e ainda tem a
capacidade de aprendizado contínuo para aperfeiçoar suas predições.
2.2 Redes Bayesianas
Pode ser descrita como uma tabela de conjunção de probabilidades do
universo de um problema. Segundo Russel e Norving (2006) as redes bayesianas
são representadas de forma gráfica mostrando as relações de causalidade entre
variáveis de um sistema, como exemplifica a figura 2. Em termos técnicos, são
grafos acíclicos dirigidos que representam dependências entre variáveis ou
diagramas que organizam o conhecimento entre causas e efeitos.
Segundo Charniak (1991), a principal vantagem de raciocínio probabilístico
sobre raciocínio lógico é o fato de que agentes podem tomar decisões racionais
mesmo quando não existe informação suficiente para se provar que uma ação
funcionará.
Normalmente utilizadas em modelos que necessitam de raciocínios baseados
em incerteza contendo nós que representam as variáveis e arcos que denotam as
conexões entre elas (Korb; Nicholson, 2003). Basicamente, uma rede bayesiana é
formada por um conjunto de variáveis e arcos as ligando. Cada variável possui um
conjunto de estados sendo estes mutuamente exclusivos e para cada variável que
15
possui certo pai, existe uma tabela de probabilidades. Matematicamente uma Rede
Bayesiana pode ser representada por uma tabela de probabilidades que envolvem o
universo de um problema.
Figura 2 - Exemplo de grafo e tabelas de probabilidade de Redes Bayesianas. Fonte: Russel e Norving, 2006.
2.2.1 Tipos de Probabilidade em Redes Bayesianas
As Redes Bayesianas possuem dois tipos de probabilidade: a priori e a
posterior. A priori significa que, mesmo sem referencial de informações sobre o
universo do problema, a Rede Bayesiana consegue extrair algum conhecimento
probabilístico de seu modelo. Após a rede ser executada uma primeira vez, novas
informações podem ser atribuídas a seus nodos e então executa-se a rede
novamente obtendo-se a probabilidade a posterior, também conhecida como
probabilidade condicional (Russel; Norving, 2006).
2.2.2 Aprendizagem em Redes Bayesianas
Segundo Carneiro (1999), a aprendizagem de redes bayesianas envolve o
processo de construção de uma rede que represente uma distribuição de
probabilidades em um determinado domínio de aplicação, sendo que a
aprendizagem pode ser:
16
• Supervisionada: quando um especialista participa de praticamente todas as
etapas da construção da rede bayesiana, aplicando sua própria experiência
na construção.
• Não Supervisionada: Aprendizagem automatizada, divididas em duas partes:
aprendizagem da estrutura e a dos parâmetros numéricos, onde a construção
da rede bayesiana se da através de uma base de dados e tem participação
dos especialistas para coleta de dados e testes. Segundo Koehler (2002)
esse processo de aprendizagem se divide em algumas etapas. Por Exemplo,
gerar a rede bayesiana que ira representar as relações entre as variáveis de
um problema e então se especifica como a distribuição de probabilidades ira
ser representada em cada nó e finalmente se extrai as estimativas das
probabilidades (treinadas com a base de dados).
Os algoritmos de aprendizagem em Redes Bayesianas podem ser divididos em
dois tipos:
• Aprendizagem Paramétrica: faz uso de distribuições de probabilidade
condicional (Castelo; Kocka, 2003).
• Aprendizagem da Estrutura: Define quais arestas devem ser adicionadas ao
grafo, levando em conta as ligações dos vértices (Cheng; Greiner, 2001).
2.2.3 Discretização
Algumas ferramentas utilizadas nesse estudo como o GENIE utilizam técnicas
de discretização para aprendizagem de Redes Bayesianas, assim fica mais fácil de
serem definidos os limites (intervalos) de valores de cada variável, para analises da
Rede Bayesiana. A discretização de dados pode ser definida como transformar uma
variável continua em uma variável discreta (CERQUIDES, 1997). O uso desse tipo
de variável torna o processo de aprendizagem e inferência mais eficientes, fazendo
muitas vezes com que a Rede Bayesiana fique mais adequada ao domínio do
problema.
Algumas vantagens para o uso da discretização são:
• Muitos algoritmos para aprendizagem ou inferência não conseguem
trabalhar com variáveis contínuas (LUDL; WIDMER, 2000).
17
• Os classificadores resultantes de um processo de discretização são
significativamente menos complexos e algumas vezes mais precisos que os
classificadores obtidos com dados contínuos (FRANK; WITTEN, 1999).
• Ao aplicar algoritmos de indução de variáveis discretas em variáveis
continuas podem gerar muitos relacionamentos e pouco poder preditivo
(WANG; LIU, 1998).
O uso de aprendizagem automatizada em Redes Bayesianas com bases de
dados históricas é importante para dar a Rede maior conhecimento sobre o domínio
do problema e suas características, podendo fazer com que as predições sejam
ainda mais precisas. Contudo, é necessário que tais dados tenham o máximo de
qualidade e o mínimo de ruído possível, até mesmo sendo conveniente o uso de
técnicas de mineração de dados, afim de que esse processo de aprendizado não se
volte contra o especialista que irá consultá-lo.
2.3 Mineração de Dados
Avanços rápidos na tecnologia de coleta e armazenamento permitiram que as
organizações acumulassem uma vasta quantidade de dados. Entretanto, a extração
de informação útil desses armazéns de dados não se mostra uma tarefa simples,
uma vez que a complexidade dos conjuntos de dados ou o tamanho excessivamente
grande pode requerer técnicas não tradicionais de análise de dados (Tan; Steinbach;
Kumar, 2009).
A mineração de dados é uma tecnologia que combina métodos tradicionais
com algoritmos sofisticados de processamento de dados. Suas técnicas são
organizadas a fim de analisar e processar grandes volumes de dados e tem como
intuito a descoberta automática de informação e padrões úteis que, de outra forma,
poderiam passar despercebidos, além de poder fornecer uma capacidade de
previsão de uma observação futura.
Ela pode apoiar uma ampla gama de aplicações de inteligência de negócios
como criação de perfis de usuários, vendas direcionadas entre outros. A exemplo
também pode ser aplicada na engenharia de software, onde pode ser utilizada para
análise de dados de projetos de software.
Muitas áreas cientificas contribuem para o avanço da mineração de dados
como computação paralela para processamentos de alto desempenho, banco de
18
dados com o armazenamento, Inteligência artificial com o aprendizado de máquina e
reconhecimento de padrões e estatísticas.
Nem todas tarefas de recuperação de dados podem ser consideradas
mineração de dados, como por exemplo o uso de um gerenciador de banco de
dados para que seja recuperado registros individuais através de uma consulta
simples ou uma busca por paginas web, pois essas tarefas baseiam-se em técnicas
tradicionais da ciência da computação e em recursos óbvios dos dados para criar
estruturas de índice para organizar e recuperar de forma eficiente as informações.
Contudo, a mineração de dados vem sendo utilizada para aprimorar sistemas de
recuperação de dados (Tan; Steinbach; Kumar, 2009).
2.3.1 Desafios que levam ao uso da mineração de dados
Conforme mencionado anteriormente, em alguns casos as técnicas tradicionais
de análise de dados, não conseguiam na prática vencer os desafios impostos pelos
novos conjuntos de dados, entre esses desafios estão:
• Escalabilidade: Devido ao aumento da coleta e armazenamento de dados,
alguns conjuntos de dados têm tamanhos gigantescos. Os algoritmos de
mineração de dados empregam técnicas de escalabilidade em suas buscas
e empregam estratégias especiais ao fazerem buscas exponenciais.
• Alta Dimensionalidade: Podem haver conjuntos de dados com milhares de
atributos. Normalmente as técnicas de análise de dados tradicionais foram
desenvolvidas para conjuntos de baixa dimensionalidade e por isso não
funcionam bem com altas dimensionalidades, além da complexidade
computacional que aumenta conforme o numero de dimensões.
• Dados Complexos e Heterogêneos: Primeiramente os conjuntos de dados
eram contínuos ou categorizados e continham atributos do mesmo tipo,
porém isso mudou drasticamente. Atualmente há diversos dados
heterogêneos como dados complexos que requerem um nível maior de
análise, uma vez que para analisar esse tipo de dado deve ser levado em
consideração seus relacionamentos entre dados, como auto-correlação
temporal e espacial, relacionamento pais e filhos entre outros.
• Propriedade de distribuição de dados: As vezes os dados de uma análise
não estão todos no mesmo local ou até mesmo são propriedades de uma
19
organização, podem estar distribuídos de forma aleatória geograficamente e
pertencentes a múltiplas entidades. O que requer que técnicas de análise
distribuídas sejam utilizadas.
• Análises não Tradicionais: A abordagem tradicional é baseada em hipótese-
e-teste, assim uma hipótese é uma proposta e são juntados dados para que
sejam analisados em cima dessa proposta. Contudo, esse processo é
trabalhoso e, nos tempos atuais, esse processo requer a geração e a
avaliação de milhares de hipóteses, então para contornar isso com isso há
o desenvolvimento de novas técnicas para agilizar o e automatizar o
processo de geração de propostas.
2.3.2 O Processo de Descoberta de Conhecimento em Banco de Dados
A mineração de dados é parte integral da descoberta de conhecimento que é a
transformação de dados encontrados nas bases de dados em informações úteis, ou
seja, encontrar dados padrões que sejam válidos para certos objetivos, visando
assim melhorar o entendimento de um problema ou tomada de decisão. Para que
isso ocorra há diversas etapas de transformação dos dados que são descritas a
seguir:
Figura 3 - Etapas da descoberta do conhecimento. Fonte: Tan, Steinbach e Kumar, 2009.
20
• Entendimento do Domínio do Problema: Define o tipo de conhecimento a
descobrir, o que pressupõe uma compreensão do domínio bem como tal
decisão que tal conhecimento pode ajudar a melhorar.
• Selection: Criação do conjunto de dados alvo, selecionando um conjunto de
dados ou focando em um subconjunto, onde os padrões e informações serão
encontrados.
• Pré-processamento: Tem como objetivo transformar dados brutos em um
formato apropriado para análises subseqüentes, onde é feita a limpeza dos
dados e a eliminação de ruídos, podendo também estimar os ruídos, escolha
de estratégias para manipular campos de dados ausentes, adequando os
dados as ferramentas de mineração. Essa etapa do processo tem-se como a
mais custosa, mais trabalhosa e demorada no processo geral de descoberta
do conhecimento (Tan; Steinbach; Kumar, 2009).
• Redução de dados e projeção (Transformation): Localização de
características úteis para representar os dados dependendo do objetivo da
tarefa, visando a redução do número de variáveis ou instâncias a serem
consideradas e com isso também há um enriquecimento semântico das
informações.
• Mineração de dados (Data Mining): Selecionar os métodos a serem utilizados
para localizar padrões nos dados, seguida da efetiva busca por padrões de
interesse numa forma particular de representação ou conjunto de
representações; busca pelo melhor ajuste dos parâmetros do algoritmo para a
tarefa em questão.
• Pós-processamento: Seu principal objetivo é assegurar que apenas
resultados validos sejam integrados com o sistema de apoio a decisão. Nessa
etapa podem ser utilizadas técnicas como a visualização onde uma
diversidade de pontos de vista será utilizado para explorar os dados,
medições estatísticas ou testes de hipóteses. Após esse passo estar
completo podemos dizer que “Fechamos o Laço”, que é uma expressão
freqüentemente utilizada para referir ao processo de integrar as informações
a um sistema de auxílio a tomada de decisões (Tan; Steinbach; Kumar,
2009).
21
2.3.3 Tarefas de Mineração de dados
As tarefas de mineração de dados consistem na especificação do que estamos
querendo buscar nos dados, e estão divididas em duas categorias principais:
• Tarefas de Previsão: O objetivo desta tarefa é prever o valor de um
determinado atributo baseado nos valores de outros atributos. O atributo a
ser previsto é conhecido como variável dependente ou alvo , enquanto os
atributos utilizados para fazer a previsão são conhecidos como as variáveis
independentes ou explicativas .
• Tarefas Descritivas: Tem como objetivo derivar padrões (correlações,
tendências, grupos, trajetórias e anomalias) que resumem os
relacionamentos subjacentes nos dados. As tarefas descritivas da
mineração de dados são muitas vezes exploratórias em sua natureza e
freqüentemente requerem técnicas de processamento para validar e
explicar seus resultados (Tan; Steinbach; Kumar, 2009).
Dentro dessas categorias há 4 tarefas centrais da mineração de dados:
o Modelagem de Previsão: Tem como objetivo construir um modelo para a
variável alvo como função das variáveis explicativas. Há dois tipos de
tarefas de modelagem de previsão que são classificação e regressão .
A classificação é usada para variáveis alvo discretas, por exemplo,
prever se um usuário web irá comprar em uma livraria online pois a
variável alvo é binária e na regressão são usadas variáveis alvo
contínuas, por exemplo prever o futuro preço de um produto, afinal a
variável alvo preço é contínua (Tan; Steinbach; Kumar, 2009).
o Analise de associação: Utilizada para descobrir padrões altamente
associados dentro dos dados. Esses padrões são normalmente
representados como regras de implicação ou subconjunto de
características. Devido ao tamanho da busca o objetivo principal da
análise de associação é extrair os padrões mais interessantes de uma
forma mais eficiente.
o Análise de grupo: Procura encontrar grupos de observações
intimamente relacionadas de modo que as observações que pertençam
ao mesmo grupo sejam mais semelhantes entre si do que de outros
grupos. Com isso o algoritmo de agrupamento tem como meta identificar
22
semelhanças entre dados e dispor estes em grupos de acordo com o
seu grau de similaridade. Sendo assim os dados ficam organizados em
subconjuntos homogêneos, o que torna a visualização pelo usuário mais
simples e compreensível.
o Detecção de anomalias: É a tarefa de reconhecer e identificar
observações que são diferentes do resto dos dados. Essas observações
são conhecidas como anomalias ou fatores estranhos. Ou seja, de uma
base ou conjunto de dados de diversas informações todas terão um
padrão para aquele grupos de informações e as que apresentarem uma
diferença desse padrão podem ser consideradas anômalas.
2.3.4 Qualidade de Dados
Com as coletas de dados em alta escala, muitos dos dados que são coletados
não tem serventia imediata para quem esta acessando a base e manipulando os
dados. Com isso essas bases ficam cada vez mais recheadas de uma diversidade
imensa de dados que depois poderão ser utilizados com diversas finalidades. Em
razão disso muitas vezes as técnicas de mineração de dados são aplicadas a dados
que foram coletados com outros propósitos, por isso quase sempre a mineração de
dados não pode se valer da qualidade da fonte de dados, sendo assim a mineração
de dados enfoca a correção de problemas relacionados a qualidade dos dados e
também especificando o nível de baixa qualidade de dados se necessário (Tan;
Steinbach; Kumar, 2009). Normalmente esse passo de detecção e correção é
chamado de “Limpeza de Dados”.
Não se pode esperar que os dados sejam perfeitos, sempre há a possibilidade
de haverem erros nos dados que se esta manipulando e esses erros podem ter
diversas origens tais como: erro humano, limitações no dispositivo de medição,
falhas no processo de coleta de dados, a falta de valores, ou ate mesmo objetos
duplicados, além de quando os dados parecem perfeitos, porém são inconsistentes.
Segue abaixo alguns dos erros mais comuns encontrados em dados:
• Erros de medição e Coleta de Dados: Refere-se a qualquer problema
resultante do processo de medição. Um exemplo comum é o valor
registrado diferente do valor real em alguma extensão. Para atributos
contínuos essa diferença é chamada de erro. Já o termo coleção de dados
23
se refere a erros como a omissão de objetos de dados. Tanto erros de
medição quanto de coleta podem ser sistemáticos ou aleatórios. Um
“Ruído ” é um componente aleatório de um erro de medição, ele pode
envolver a distorção de um valor ou a adição de valores ou objetos não
legítimos. Esses “ruídos” podem atrapalhar as análises a serem feitas nos
dados coletados, porém há técnicas para diminuir os ruídos mesmo sendo
uma tarefa muitas vezes onerosa e de alta dificuldade. Essas técnicas
muitas vezes nem mesmo tentam retirar os ruídos, mas simplesmente
tentam encontrar padrões que possam estar perdidos no meio dos ruídos.
Isso se deve a tamanha dificuldade de eliminar os ruídos, algumas
técnicas já trabalham permitindo a existência de ruídos porem apenas se
preocupando que o resultado seja o mínimo aceitável, chamamos essas
técnicas de “Algoritmos Robustos”.
• Precisão, Foco e Exatidão: Há casos onde a qualidade do processo de
medição e os dados são medidos pela precisão e foco, onde precisão
seria a proximidade de medições repetidas e foco a variação sistemática
de medições em relação a quantidade medida. A precisão muitas vezes é
medida pelo desvio padrão de determinados valores, enquanto o foco
pega-se a diferença media do conjunto de valores. Há também a exatidão
que esta diretamente ligada ao foco e a precisão, a exatidão é a
proximidade das medições em relação ao valor real da quantidade a ser
medida.
• Externos: São objetos que tem características diferentes da maioria dos
outros objetos em um conjunto ou valores incomuns de atributos com
relação a valores mais normais. Porém devemos deixar claro que há
diferença entre externos e ruídos apesar de ambos representarem
anomalias, os externos podem ser valores ou objetos legítimos.
• Valores Faltando: É muito comum objetos terem valores faltando, ora por
que não foram coletados, ou os valores não são aplicáveis a todos os
objetos. Enfim, há diversos motivos para falta de valores, porém esses
valores devem ser levados em conta na análise de dados, há diversas
estratégias a serem seguidas quando há falta de valores como:
o Eliminar Objetos ou Atributos: Uma das estratégias mais simples e
eficaz é eliminar os objetos com valores faltando, contudo deve-se
24
ter bastante cuidado ao se eliminar um objeto, porque mesmo
parcialmente preenchido de dados esse objeto pode ter alguma
informação pertinente dentro de si. Talvez uma boa saída para esse
outro problema seria eliminar apenas atributos de objetos que
tiverem valores faltando.
o Eliminar Valores Faltando: Muitas vezes os valores faltando podem
ser estimados de maneira confiável, usando-se valores restantes.
Se os valores forem contínuos então os valores de seus vizinhos
mais próximos podem ser utilizados para estimar o valor faltando,
se forem categorizados utiliza-se mais comum.
o Ignorar Valores Faltando: Muitas vezes se ignora valores faltando.
O uso dessa técnica pode se dar quando há um comportamento em
comum entre os objetos e seus valores faltando, ou seja, na maioria
ou totalidade dos objetos o valor faltando é o mesmo.
o Valores Inconsistentes: Algo comum de ocorrer é que dados podem
ter valores inconsistentes e é de suma importância detectar e
corrigir essas inconsistências se possível.
o Dados Duplicados: Vários objetos podem se apresentar de forma
duplicada ou semi-duplicada (quase aparentemente iguais).
Primeiramente devem ser verificadas as inconsistências em ambos
os objetos duplicados e então se deve ter o cuidado de não fundir
objetos semelhantes e sim apenas os exatamente duplicados.
Podemos chamar esse processo de desduplicação.
2.3.5 Técnicas de análise de dados
Enquanto as tarefas especificam o que estamos querendo buscar nos dados,
os padrões ou regularidades, a técnica de mineração consiste na especificação de
métodos que nos garantam como descobrir os padrões que nos interessam. As
técnicas em mineração de dados são aplicadas as tarefas, em geral cada técnica
têm o seu tipo de tarefa a qual se adéqua melhor. A seguir podemos conferir
algumas técnicas de mineração de dados:
• Técnicas de Redução de Dimensionalidade: Conjuntos de dados podem
ter milhares de atributos, se for feita uma análise onde cada palavra ou
25
dados contenha milhares de atributos, sua dimensionalidade tende a
crescer cada vez mais e na maioria das vezes fica difícil analisar tais
dados, pois os dados se tornam mais dispersos no espaço que ocupam.
O maior beneficio para a redução de dimensionalidade é que as analises
funcionam melhor se a dimensionalidade for menor, além de levar o
modelo a ser mais compreensível e permitir que dados sejam visíveis
mais facilmente. Normalmente para esse tipo de problema são aplicadas
técnicas de álgebra linear, como a Análise de Componentes
Principais (PCA) que atua sobre atributos contínuos que encontram
novos atributos que sejam combinações lineares aos originais, sejam
ortogonais entre si e capturem a quantidade máxima de variações de
dados. Além dessa técnica temos a Decomposição de Valor Único
(SVD) que é uma técnica relacionada a PCA onde em conjunto com o
conceito de valores únicos e vetores únicos, capturam uma estrutura de
matriz permitindo assim que essa seja fatorada e decomposta e assim
seja expresso em formato padrão.
• Técnicas de Visualização: Essas técnicas variam bastante de acordo
com o tipo de dados que esta sendo analisado e podem ser
classificados de acordo com o número de atributos envolvidos ou
características especiais. As técnicas variam entre Gráfico de tronco e
folhas, histogramas, histogramas bidimensionais, gr áficos de
caixas, gráficos de dispersão e relatórios textuais .
• Técnicas de Descoberta de regras de associação: Estabelece como
correlação entre certos itens de dados em um conjunto. Um exemplo
desse regra seria que se 90% dos dados tem um certo comportamento
“T”, também poderiam ter um comportamento “P”, os 90% seriam o que
se chama de confiança da regra. Um algoritmo que implementa regras
de associação é o algoritmo de Apriori que segue o seguinte principio
“Se um conjunto de itens é freqüente seu subconjunto também deve ser
freqüente”. Essas técnicas são utilizadas para diminuir o conjunto de
itens candidatos e assim se chegar a um número ideal de itens
candidatos, explorados durante a criação de itens freqüentes. Se não
aplicada essa técnica o conjunto de itens a ser explorado pode ser
exponencialmente grande.
26
• Árvores de Decisão: É uma árvore onde cada nodo não terminal
representa uma decisão ou teste (Goebel; Gruenwald, 1999), com
objetivo principal de separar as classes, como é demonstrado na figura
4, retirada do relatório de resultados do algoritmo J48 (algoritmo de
árvores de decisão, encontrado na ferramenta WEKA). Tuplas de
classes diferentes tendem a serem alocadas em subconjuntos
diferentes, cada um descrito por uma regra simples. As regras podem
ser expressas como declarações lógicas, em linguagens como SQL,
podendo assim ser aplicadas diretamente a novas tuplas. Normalmente
são aplicadas a tarefas de regressão e classificação. Um importante
recurso das árvores de decisão é a poda dos nodos que contém erros
de classificação, esse processo verifica o montante de erro baseado nas
heurísticas de classificação da árvore antes e depois da poda e então
decide de acordo com o nível de erro máximo configurado para a árvore
se executa o processo ou não. Tradicionalmente esse processo começa
pelas folhas da árvore e vai subindo até a raiz.
Figura 4 - Exemplo de árvore de decisão em modo gráfico. Fonte: Autoria própria.
27
• Raciocínio Baseado em Casos: Tem por base o vizinho mais próximo,
pegando seus valores e combinando para atribuir valores de classificação
ou de previsão, conhecido também como MBR (Memory-Based Reasoning
– raciocínio baseado em memória), Segundo Dias (2006) é uma técnica de
mineração de dados que usa exemplos conhecidos como modelos para
fazer previsões sobre exemplos desconhecidos.
Na aplicação do MBR, segundo Dias (2006), existem quatro passos
importantes:
1. Escolher o conjunto de dados de treinamento;
2. Determinar a função de distância;
3. Escolher o número de vizinhos mais próximos;
4. Determinar a função de combinação.
• Algoritmos Genéticos: São métodos generalizados de busca e otimização
que simulam os processos naturais de evolução. Trata-se de um
procedimento iterativo para evoluir uma população de organismos e é
utilizado em mineração de dados para formular hipóteses sobre
dependências entre variáveis com certo formalismo, usando operadores de
seleção, cruzamento e mutação gerando sucessivas gerações de soluções.
Após varias iterações o algoritmo vai evoluindo e somente as soluções de
maior poder de previsão sobrevivem ate que haja convergência entre os
organismos (Harrison, 1998).
• Redes Neurais Artificiais: As redes neurais são uma classe especial de
sistemas modelados seguindo analogia com o funcionamento do cérebro
humano e são formadas de neurônios artificiais conectados de maneira
similar aos neurônios do cérebro humano (Goebel; Gruenwald, 1999).
Segundo Goebel e Gruenwald (1999), como no cérebro humano, a
intensidade de interconexões dos neurônios pode alterar (ou ser alterada
por algoritmo de aprendizagem) em resposta a um estímulo ou uma saída
obtida que permite a rede aprender. Uma das principais vantagens das
redes neurais é sua variedade de aplicação, mas os seus dados de entrada
são difíceis de serem formados e os modelos produzidos por elas são
difíceis de entender (Harrison, 1998). A técnica de redes neurais é
apropriada às seguintes tarefas: classificação, estimativa e segmentação.
28
• K-Means: Trata-se de um algoritmo clássico para classificação (cluestering)
e segmentação de dados de acordo com categorias. Esta classificação é
baseada em análise e comparações entre os valores numéricos dos dados.
Desta maneira, o algoritmo automaticamente vai fornecer uma classificação
automática sem a necessidade de nenhuma supervisão humana, ou seja,
sem nenhuma pré-classificação existente. Por causa desta característica, o
K-Means é considerado como um algoritmo de mineração de dados não
supervisionado (Pang-Ning Tan, Michael S, Vipin Kumar, 2009). O algoritmo
define classes e valores que são os centróides e vai determinar a qual
classe cada linha pertence, para isso faz-se uma comparação entre os
valores da linha e a distância deles para o centróide. Normalmente esse
cálculo da distância é feito pela distância euclidiana, que leva em conta a
execução repetidas vezes do teorema de Pitágoras.
Basicamente o algoritmo de K-means é composto pelas seguintes etapas:
1. Selecionar um número K de pontos como centróides;
2. Associar todos os pontos para o centróide mais próximo;
3. Recalcular a centróide para cada cluster;
4. Repetir as etapas 2 e 3 até que os centróides não mudem (ou
mudem pouco de acordo com um limite).
Figura 5 - Exemplo gráfico das etapas do algoritmo de K-means. Fonte: MacQueen, 1967.
29
• Validação Cruzada (CrossValidationFoldMaker): Técnica amplamente
utilizada quando o objetivo do modelo é a predição e quando se quer ter
certeza da precisão do modelo utilizado para análise de dados. Essa técnica
verifica como os resultados de uma análise estatística irão generalizar para
uma base de dados independente. O principal conceito do algoritmo de
validação cruzada é o particionamento do conjunto de dados, dividindo-o em
conjunto de treinamento (traininig-set) e conjunto de testes (test-set), onde o
conjunto de testes serve para validar o conjunto de treinamento criado. Isso
ocorre devido uma função de aproximação que é utilizada para verificar os
dados de saída dos conjuntos. Ela se adapta aos dados do conjunto de
treinamento e posteriormente é testada pelos dados do conjunto de teste. No
método K-Fold de validação cruzada esse particionamento pode ser feito
diversas vezes (k vezes), a cada teste feito em uma das partições maior se
torna a precisão do conjunto de dados.
2.4 Trabalhos Relacionados
Até o momento não foi encontrado nenhuma publicação que apresentasse um
estudo sobre o impacto da análise de dados em estimativas de software geradas
através de Redes Bayesianas.
A pesquisa que mais se assemelha é um artigo apresentado por Gernot
Liebchende, Bheki Twala, Martin Shepperd e Michelle Cartwright através da
publicação “Assessing the Quality and Cleaning of a Software Project Dataset: An
Experience Report“ em 2006, que se trata de um relatório sobre uma experiência
usando três técnicas de eliminação de ruídos em bases de dados de projetos de
software, com o intuito de verificar qual técnica qualificaria melhor os dados para uso
posterior em ferramentas de auxilio a tomada de decisão.
Outra publicação semelhante em alguns aspectos principalmente por testes
com Redes Bayesianas é o artigo “Bayesian Network Models for Web Effort
Prediction: A Comparative Study”, de Emilia Mendes e Nile Mosley em 2008 que
surge como uma importante fonte de referencia na área de Redes Bayesianas, pois
propõe comparar, usando um conjunto de dados cruzados, vários modelos de Redes
Bayesianas para estimar esforço. Ao longo do artigo é apresentado os motivos da
30
utilização das redes bayesianas bem como todo o desenvolvimento e comparativo
das oito redes utilizadas, sendo quatro delas geradas automaticamente através da
utilização das ferramentas Hugin e PowerSoft. Destaca-se que foram utilizados
dados de 130 projetos web para realizar o estudo.
Outro estudo possível de ser citado é o artigo de Jhonas Bonfante Guinzani,
Priscyla Waleska Targino de Azevedo Simões, Merisandra Co�rtes de Mattos, Jane
Bettiol através da publicação “Mineração de Dados em Redes Bayesianas Utilizando
a API da Shell Belief Network Power Constructor (BNPC)”. Esta pesquisa tem como
objetivo a integração de softwares de apoio a tomada de decisões com base de
dados históricos, com a finalidade de auxiliar o gerente de projetos de software na
sua tomada de decisões. Para concretizar esse objetivo o modelo proposto utiliza
técnicas de mineração de dado em conjunto com redes bayesianas, oferecendo
assim recursos de aprendizagem automatizada. Tendo como intuito que essas
regras sejam integradas ao uma interface gráfica intuitiva para o gerente de projetos.
31
3 ESTUDO DA ANÁLISE DO IMPACTO DA MINERAÇÃO DE DADO S EM
ESTIMATIVAS ATRAVÉS DE REDES BAYESIANAS
Neste capitulo será descrito as etapas do desenvolvimento realizado nesta
pesquisa, bem como as ferramentas e as técnicas utilizadas para a análise do
impacto que a mineração de dados exerce em estimativas geradas através de uma
Rede Bayesiana. O resultado desse experimento consiste em uma análise das
mudanças comportamentais da Rede Bayesiana quando treinada com uma base
normal, que nunca passou por um processo de mineração de dados, e quando
treinada com a base resultante de um processo de mineração de dados.
Nesse experimento foram utilizados dois algoritmos para classificação dos
dados: J48 (Arvores de decisão) e SimpleKMeans (K-means), afim de atestar que o
processo de analise de dados e eliminação de ruídos em bases de dados históricos,
tem um impacto significativo nas predições geradas através de Redes Bayesianas.
Além desses resultados foram analisados outros aspectos envolvendo as técnicas
de mineração de dados, relativo a performance e a taxa de erros corrigidos em cada
algoritmo.
Para atingir esse objetivo, devemos seguir uma serie de passos os quais
compreendem: a modelagem de um processo de desenvolvimento de software, a
construção de uma base de dados históricos de projetos sintética para simulação, a
utilização de ferramentas e técnicas para mineração de dados, além de ferramentas
para auxilio à tomada de decisões que fazem predições através de redes
bayesianas. O objetivo é demonstrar o impacto que a analise de dados exerce sobre
estimativas geradas através de Redes Bayesianas, levando em consideração um
workflow de atividades que o gerente de projetos sempre deveria executar que
exemplifica o modelo proposto de uso de bases históricas de projetos, análise de
dados e ferramentas de apoio a tomada de decisão (Redes Bayesianas).
As ferramentas utilizadas neste experimento foram Weka (Mineração de
dados), Genie (Redes Bayesianas) e WebApsee (Ferramenta para Gerencia de
Projetos), que serão detalhadas ao decorrer deste capítulo.
32
3.1 Ferramentas para gerência de projetos
Para simular um projeto atual foi utilizada uma ferramenta para gerenciar
projetos. Nela foi definido um processo de desenvolvimento simulando um projeto de
software real, também foram definidas algumas variáveis contidas em qualquer
projeto de software, como definição de atividades, numero de participantes, tempo
estimado de cada atividade, entre outras. Esse processo e suas variáveis são
importantes para a simulação, pois definem vários aspectos da base dados histórica
e simulam o comportamento de um gerente de projetos. A ferramenta selecionada
para esse estudo foi o WebApsee.
3.1.1 WebApsee – Gerenciador de Projetos de Software
Centrado em processo de software, a ferramenta WebApsee foi desenvolvido
pelo LABES-UFPA em 2003 a partir de um projeto de pesquisa sobre problemas
críticos relacionados a gerencia de projetos. Em um ambiente fácil e intuitivo o
gerente de projetos pode facilmente gerenciar qualquer projeto. Dentre as suas
funcionalidades destacam-se:
• Modelar um processo de desenvolvimento de Software.
• Definir tarefas para cada etapa do projeto.
• Criar atores, identificar suas experiências e habilidades.
• Alocação de recursos dentro do projeto de software.
• Atribuir tarefas ao atores.
• De uma forma geral, o gerente de projetos pode acompanhar e monitorar
todo o processo de desenvolvimento de um projeto de software.
O WebApsee foi desenvolvido em JAVA e tem seus dados guardados em base
de dados relacionais e seu fonte é open source (código fonte aberto).
3.1.2 Processo de desenvolvimento de software
Para esta pesquisa foi modelado um processo de desenvolvimento de software
na ferramenta WebApsee, baseado no “RUP for small projects”, que trata-se de um
processo de desenvolvimento focado em projetos pequenos. Segundo o RUP
33
(Rational Unified Project), que pode ser definido como um framework para boas
praticas de gerência de software, esse processo possui sete etapas bases. No
entanto, para este estudo foram utilizadas apenas seis, descritas a seguir:
• Requisitos: Etapa onde são coletados os requisitos principais do projeto e
definidos seus limites, ou seja, onde o projeto é mensurado. Nesse ponto,
os itens elencados servem principalmente para dar uma margem de custo e
para fazer uma linha de entendimento entre o desejo do cliente e
desenvolvedores. Podemos ainda mensurar o projeto em termos de
funcionalidades e definir a interface de usuários. Para o sucesso dessa
etapa é extremamente necessário a participação de todos os envolvidos no
projeto (stakeholders). Trata-se, portanto de uma das mais importantes
etapas de um projeto, pois possui influência direta nas demais etapas como
análise, testes, gerenciamento de mudanças e gerência do projeto.
• Análise: Etapa onde os requisitos serão interpretados e definidos em
termos do sistema a ser desenvolvido. Pode ser feita a modelagem e
definição da arquitetura do sistema, além da identificação de seus
elementos, prototipação e revisão da interface dos usuários, construção de
diagramas de classe e diagramas de caso de uso. Todos os artefatos
gerados nessa etapa têm como principal objetivo facilitar a tarefa dos
desenvolvedores de abstrair as funcionalidades inseridas nos requisitos e
transformá-las em um sistema.
• Implementação: Essa etapa propõe definir, criar e organizar o código fonte
do sistema, construindo objetos e todos os arquivos pertinentes ao
funcionamento do mesmo. Também prevê a execução de testes orientados
aos desenvolvedores como testes de unidade.
• Testes: Nesta etapa é atestada a qualidade do projeto. Com base nos
testes é possível se ter certeza do correto funcionamento do software
desenvolvido e se atende a todos os requisitos listados pelos stakeholders.
Algumas atividades executadas nessa etapa são: documentação de erros
encontrados, descrição de melhorias em módulos do sistema, validar a
correta execução das rotinas do software dentre outras. Diversas pesquisas
dizem que a etapa de testes em um projeto de software condiz com 30 a 50
por cento do seu custo, no entanto, se houverem testes rigorosamente
aplicados, os riscos e custo do projeto final t
• Gerência de Mudança:
e objetos que são criados ou atualizados no projeto atual, contribuindo para
que não haja conflitos com os artefatos e códigos gerados. Pode
idéia de quem criou ou atualizou cada pequeno pedaço do projeto, além de
que a gerência de mudança dispõe de todos os artefatos para a completa
execução do projeto.
• Gerência de Projeto:
segue uma linha (framework) pr
desenvolvimento de software. Nessa etap
gerência de risco, planejamento das iterações, execução e monitoria do
projeto. Essa etapa para o RUP não visa gerenciar pessoas (contratações e
alocações), orçamentos ou
descrita nesse processo do RUP tem como influê
Figura 6 - Esquema
O processo ainda possui algumas características variáveis que foram definidas
como padrões e estão em todos os projetos
eventualmente estão espalhadas nas s
• Tarefas: Foram de
conforme mostra o quadro
por cento do seu custo, no entanto, se houverem testes rigorosamente
aplicados, os riscos e custo do projeto final tendem a ser menores.
Gerência de Mudança: Nesta etapa são controladas as inúmeras versões
e objetos que são criados ou atualizados no projeto atual, contribuindo para
que não haja conflitos com os artefatos e códigos gerados. Pode
criou ou atualizou cada pequeno pedaço do projeto, além de
que a gerência de mudança dispõe de todos os artefatos para a completa
execução do projeto.
Gerência de Projeto: Etapa que ocorre em todo o ciclo de vida do projeto e
egue uma linha (framework) pré-definido para a maioria dos projetos de
desenvolvimento de software. Nessa etapa podemos ter o controle da
ncia de risco, planejamento das iterações, execução e monitoria do
projeto. Essa etapa para o RUP não visa gerenciar pessoas (contratações e
ocações), orçamentos ou contratos e fornecedores. A gerê
processo do RUP tem como influência o PMBOK.
Esquema gráfico do Processo de desenvolvimento.Fonte: Autoria própria.
O processo ainda possui algumas características variáveis que foram definidas
como padrões e estão em todos os projetos que o utilizam, essas características
eventualmente estão espalhadas nas seis etapas contidas no processo
Foram definidas tarefas de suma importância para o processo
conforme mostra o quadro abaixo. Essas atividades estão divididas entre as
34
por cento do seu custo, no entanto, se houverem testes rigorosamente
endem a ser menores.
Nesta etapa são controladas as inúmeras versões
e objetos que são criados ou atualizados no projeto atual, contribuindo para
que não haja conflitos com os artefatos e códigos gerados. Pode-se ter uma
criou ou atualizou cada pequeno pedaço do projeto, além de
que a gerência de mudança dispõe de todos os artefatos para a completa
todo o ciclo de vida do projeto e
definido para a maioria dos projetos de
a podemos ter o controle da
ncia de risco, planejamento das iterações, execução e monitoria do
projeto. Essa etapa para o RUP não visa gerenciar pessoas (contratações e
contratos e fornecedores. A gerência de projetos
ncia o PMBOK.
desenvolvimento.
O processo ainda possui algumas características variáveis que foram definidas
, essas características
eis etapas contidas no processo e são elas:
de suma importância para o processo
Essas atividades estão divididas entre as
35
etapas já definidas do processo, algumas atividades podem ser não
executadas em alguns projetos de menor porte.
Tarefas - Processo
Etapas Tarefas Tempo
Otimista Médio Pessimista
Análise
Definição da Arquitetura 1 2 4
Design da base de dados 2 4 6
Design de Interfaces de usuário 3 7 9
Estruturar Casos de Uso 2 5 8
Gerenciamento
de
Mudanças
Revisar as requisições de mudanças
1 3 7
Submeter as Requisições de mudança
2 5 9
Gerenciamento
do
Projeto
Identificar e avaliar riscos 1 2 5
Planejar fases e iterações 2 4 7
Programar e atribuir atividades 1 3 6
Implementação
Estruturar modelo de Implementação
1 3 5
Implementar design dos elementos
1 3 5
Planejar integração dos sistemas
2 4 8
Revisar Código 2 3 5
Requisitos
Descobrir atores e caso de uso 2.5 5 7
Detalhar Requisitos 4 8 10
Elencar Stakeholders 0.5 1 2
Testes
Determinar os resultados dos testes
3 6 8
Estruturar a abordagem dos testes
2 5 7
Executar o conjunto de testes 3 7 9
Implementar conjunto de testes 2 4 6
Quadro 1 - Relação das tarefas do processo de desenvolvimento. Fonte: Autoria própria.
• Tempo Estimado para Execução: Cada tarefa definida no processo e que
seja executada em determinado projeto tem pré-definidos intervalos de
36
tempos estimados para sua execução que vão de “Otimista, Médio e
Pessimista”, conforme é possível ver no quadro 1.
• Participantes: Foi definido um número de participantes mínimo e máximo
para cada etapa do processo, sendo que esse número pode variar de
acordo com os projetos.
• Coeficientes de Experiência: Foram definidos valores de experiência para
cada um dos participantes do projeto, também há uma variação dos
participantes de cada etapa, nem sempre todos os participantes possíveis
tomam parte nas tarefas de uma determinada etapa.
3.2 Base de dados sintética
Para a pesquisa foi criada uma base de dados sintética simulando dados
históricos de projetos de software. A amostragem da base de dados é de cem
projetos de software. Cada projeto é formado por um conjunto de quarenta e sete
variáveis. Para criação da base de dados foi levado em consideração projetos que
seguissem os padrões do “RUP-for small projects” em seu processo de
desenvolvimento, cada projeto da base de dados é formando pelas seis etapas
conforme definido no processo de software descrito (Requisitos, Análise,
Implementação, Testes, Gerencia de Mudanças e Gerencia de Projetos), além de
variáveis com valores parciais e finais. Algumas variáveis são dependentes, assim
como podem exercer influência sobre outras. Como principal semente para os
valores aleatórios que compõe as variáveis da base de dados, foi utilizado intervalos
de valores possíveis para as mais diversas características (número mínimo e
máximo de participantes em determinadas etapas, experiência mínima e máxima,
entre outras características) do projeto modelado no WebApsee, que também segue
os moldes do “RUP-for small projects”.
Os cálculos utilizados para geração dos dados simulados são, em sua maioria,
misturas de fórmulas empíricas que resumem as possibilidades de comportamento
de um projeto ao longo de seu ciclo de vida. Esses elementos visam a aleatoriedade
dos eventos nos projetos da base e também um relacionamento lógico entre os itens
da base de acordo com seus valores, como por exemplo, a relação de experiência
da equipe e o esforço real em uma determinada etapa (relação inversamente
proporcional uma vez que uma equipe experiente tende a ter um esforço menor para
37
a conclusão da etapa), de forma que alguns conceitos e heurísticas foram levados
em conta para cálculos de algumas variáveis.
A base de dados esta dividida em três grupos de variáveis para cada projeto:
Identificação do projeto , Etapas do processo e Valores finais do projeto . A
seguir um resumo com as principais definições das variáveis utilizadas, separadas
por grupos de variáveis explicando as fórmulas que as compreendem e influências
que exercem ou sofrem em relação a outras variáveis:
• Identificação do Projeto: Grupo onde estão variáveis que identificam os
projetos listados.
o Name (nome do projeto): Nome dado ao projeto serve para facilitar a
visualização e comparação de valores. É formado por uma palavra
“Projeto-“ mais o número do projeto (1-100).
o Started Date (data de início): É a data de inicio do projeto, é
importante para fixar uma linha temporal dos projetos, mas tem cunho
meramente informativo. As datas são geradas de forma aleatória com
um algoritmo que seleciona um intervalo de data entre (08/1997 –
08/2011).
�������08/1997 , 08/2011�
• Etapas do Processo: Grupo de variáveis que quantificam os resultados de
cada etapa de um projeto, são parciais de cada projeto, simulam os valores
obtidos pelo grupo de atividades que formam a etapa. As variáveis que
constituem esse grupo são:
o Staff Number (Número de Participantes): O número de participantes
de uma determinada etapa do projeto. Esse número é definido por uma
função aleatória que define um valor em um intervalo de participantes
possíveis para determina etapa.
����������_�������������, ���_������������� �
o Staff Experience (Experiência do grupo): Após definido o número de
participantes da etapa, são definidas as experiências dos participantes
daquela etapa do projeto. Essa experiência é definida como um total da
38
experiência de todos participantes e é calculada por uma função
aleatória que pega valores possíveis dentro de um intervalo da
experiência do grupo de participantes. Esse valor pode variar bastante
uma vez que nem sempre todos os possíveis participantes irão atuar
em uma determinada etapa.
����������_�����������, ���_������������
o Novelty (Novidade): Variável aleatória para classificar o nível de
inovação de uma etapa do projeto, ou seja, se as tarefas que fazem
parte de determinada etapa abordam assuntos inovadores e nunca
antes explorados pela equipe de desenvolvimento do projeto. Esse
nível vai do menor (1) ao maior (10).
������� , !�
o Complexity (Complexidade): Variável aleatória para classificar o nível
de complexidade de uma etapa do projeto, semelhante a “novelty”,
refere-se ao nível de complexidade das atividades de uma etapa. Seus
valores variam aleatoriamente do nível menor de complexidade (1) ao
nível maior (10).
������� , !�
o Difficulty (Dificuldade): Variável que indica o nível de dificuldade de
uma etapa do projeto, levando em consideração a dificuldade
encontrada no conjunto de tarefas que formam essa etapa. O cálculo
da dificuldade para as etapas dos projetos é feito de acordo com uma
média da complexidade com o nível de novidade de cada etapa.
"�#$�%�%� & '#��(���%�%�) *
39
o Time (days) (Tempo em dias): Tempo total que uma etapa do projeto
levou para ser finalizada. Calculado em dias, o tempo total é obtido
através de uma formula que aleatoriamente retorna um tempo dentro
de um intervalo definido pelo gerente de projetos, que vai do mais
otimista ao mais pessimista para o grupo de atividades da etapa. Esse
tempo também leva em consideração o coeficiente
“experiência/dificuldade”, calculado por uma media da experiência dos
participantes pela dificuldade da etapa em questão, conforme
demonstra a seguinte formula:
+� ,-�+��.. ���������� & ��..��/(�0�) 1 2 345546789:; ���ã# �#�.. > ���%#��!. ), !. ?�
���ã# �#�.. > ���%#� �!. @, �
Juntando esse coeficiente ao calculo do tempo é possível criar-se um
cenário de aleatoriedade no tempo total entre os projetos e as
diferentes etapas que os envolvem, tendo em vista que dificilmente um
projeto será igual à outro em todos os aspectos que o envolve. Dessa
forma, a formula do tempo de uma etapa é:
�����������##������� A �#�.. , ����#���������� A �#�.. �
o Real Effort (Esforço Real): É o esforço real necessário para o
desenvolvimento do projeto. Esta distribuído entre as etapas do
projeto, quantificando o esforço real de cada uma. Para este cálculo,
conforme mostra a equação abaixo, foi utilizado o cálculo de esforço
que é a divisão entre os participantes de uma determinada etapa pelo
total de tempo necessário para execução dessa etapa. No caso da
base de dados em questão o esforço esta calculado em horas por isso
a equação é multiplicada por seis, que seriam o número de horas
produtivas em um dia de trabalho.
"+��.. �/�B��C��� �%�0�� * A @
40
o Estimated Effort (Esforço Estimado): Representa o esforço estimado
para cada etapa do projeto. Esse valor é definido no planejamento do
projeto e nem sempre é cumprido a risca. Desta forma este valor varia
dependendo da dificuldade da etapa e também do seu conjunto de
tarefas definidas. Esse valor é calculado por uma função randômica
que seleciona um valor dentro de um intervalo definido que vai dos
possíveis tempos “otimistas” a “normais” para cada etapa do projeto e
também leva em conta o numero de participantes possíveis para essa
etapa, também é calculada em termos de horas conforme a formula
que segue abaixo.
-����������_%���_����.��, ���_%���_����.���� �/�������������� 1 A @
• Valores finais do projeto: Onde são informados os valores finais de cada
projeto, já somados com cada etapa. Serão as variáveis utilizadas no
processo de mineração de dados e posteriormente nas Redes
Bayesianas, elas são:
o Scenario (Cenários): Cenários são status finais dos projetos que
representam o inicio e fim do projeto. Nesses cenários são informadas
as condições que o projeto foi iniciado e como terminou em relação ao
tempo estimado para finalização do projeto. A geração de valores
desse campo baseia-se em uma função aleatória para definir o inicio
do projeto entre os possíveis valores (“Começou em Tempo”,”Começou
Atrasado”) e para os valores finais do projeto referente ao seu termino
leva em consideração se o esforço estimado foi maior que o esforço
real (Requerido) do projeto, ou seja, se o esforço estimado for maior ou
igual ao real então significa que o projeto terminou a tempo, caso
contrario, o projeto terá atrasado.
o Scenario ID: Identificador numérico dos cenários.
o Size – Nominal / Size (Tamanho por classificação): Apenas
classifica os projetos de acordo com seu tamanho em termos de
numero total de pontos por função.
41
o Size – PF (Tamanho em pontos por função): Define o tamanho total
de um determinado projeto em termos de funcionalidades produzidas.
Para o calculo dessa variável foi utilizado uma função randômica para
trazer entre os limites mínimos e máximos definidos como tamanhos de
projetos possíveis.
�������D!, ?!!!�
o Accuary (Precisão): Valor que representa a precisão das informações
do projeto como um todo (requisitos, funcionalidades...). Esse valor é
definido com base em uma função randômica.
������� , !�
o Total Staff Experience (Total Experiência do Grupo) : Representa o
total de experiência dos participantes dos projetos. É calculado em
função da soma das experiências dos participantes de cada etapa.
EF +��.. ����������G
o Total Difficulty (Dificuldade do projeto) : Representa o total de
dificuldade das etapas dos projetos. É calculado em função da soma
das dificuldades de cada etapa e dividido pelo numero de etapas.
EF %�..��/(�0G /@
o Novelty (Novidade): Representa o valor total de novidade de um
determinado projeto. É calculado pela soma dos valores do nível de
novidade de cada etapa e por fim divido por 6.
EF �#$�(�0G /@
42
o Complexity (Complexidade): Representa o valor total de
complexidade de um determinado projeto. É calculado pela soma dos
valores do nível de complexidade de cada etapa e por fim divido por 6.
EF �#��(����0G /@
o Total Staff (Numero total de participantes): Representa o valor total
de participantes de um determinado projeto. É calculado pela soma do
numero de participantes de cada etapa.
EF �/� ���..G
o Estimated Effort (Esforço total estimado): Representa o valor total
do esforço estimado de um determinado projeto. É calculado pela soma
dos valores de esforço estimado para cada etapa.
EF ���. �..#��G
o Real Effort (Esforço real do projeto): Representa o valor total do
esforço real necessário para finalizar um determinado projeto. É
calculado pela soma dos valores de esforço real para cada uma de
suas etapas.
EF ���( �..#��G
o Total time (hours) (Total em horas): Representa o valor total de
horas necessárias para finalizar um determinado projeto. É calculado
pela soma dos valores de dias que cada etapa levou para ser finalizada
vezes o número de horas produtivas definidas para cada projeto por dia
(6).
EF ����G A @
43
o Total time (days) (Total em dias): Representa o valor total de dias
necessários para finalizar um determinado projeto. É calculado pela
soma dos valores de dias que cada etapa levou para ser finalizada.
EF ����G
A base de dados contém uma série de informações sobre os projetos, porém
como a coleta de dados nem sempre é bem definida, padronizada e executada,
além de dados também são inseridos ruídos. Dessa forma para melhorar a
qualidade dos dados foi aplicada técnicas de mineração de dados.
3.3 Ferramentas para mineração de dados
Para aumentar a qualidade dos dados históricos de projetos de software foi
necessário estudar e selecionar uma ferramenta de mineração de dados. Neste tipo
de ferramenta é possível ser definido um conjunto de dados e aplicar uma série de
técnicas para eliminação de ruídos e descoberta de padrões. Com esse objetivo
foram estudadas as seguintes ferramentas Weka, Rapidminer, PolyAnalyst. A
ferramenta Weka se mostrou a mais vantajosa para uso, devido a ser uma
ferramenta aberta (open source), com API de desenvolvimento totalmente
disponível, o que para trabalhos futuros possibilita a construção de um modelo igual
ao executado nesse estudo, porém de forma totalmente automatizada, além das
facilidades de uso e do manual disponível.
3.3.1 Weka
Weka (Waikato Environment for Knowledge Analysis) é um pacote
desenvolvido pela Universidade de Waikato, em 1993, com o intuito de agregar
algoritmos para mineração de dados na área de inteligência artificial. O software é
licenciado pela General Public License sendo, assim, possível a alteração do seu
código-fonte.
Possui uma série de heurísticas para mineração de dados relacionada à
classificação, regressão, clusterização, regras de associação e visualização, entre
44
elas: J48 (Decision Tree), K-means, NaiveBayes, Linear Regression, IB1, Bagging,
LogistBoot, Part, Ridor, ID3 e LMT.
O Weka tem como objetivo agregar algoritmos provenientes de diferentes
abordagens/paradigmas na subárea da inteligência artificial dedicada ao estudo da
aprendizagem por parte de máquinas. Essa subárea pretende desenvolver
algoritmos e técnicas que permitam a um computador "aprender" (no sentido de
obter novo conhecimento) de forma indutiva ou dedutivamente.
O Weka procede à análise computacional e estatística dos dados fornecidos
recorrendo a técnicas de data-mining tentando indutivamente a partir dos padrões
encontrados gerar hipóteses para soluções e nos extremos inclusive teorias sobre
os dados em questão.
O processo de extração do conhecimento do Weka segue praticamente o
processo seguido pelos conceitos de mineração de dados e é composto por cinco
etapas:
• Seleção : etapa de escolha da base de dados a ser analisada.
• Pré-processamento : etapa de “limpeza” dos dados, ou seja, reduzir
discrepâncias de valores com ruídos e corrigir inconsistências.
• Transformação : transformação de dados, estes são modificados ou
transformados em formatos apropriados à mineração, que pode por
agregação, generalização, normalização, construção de atributos ou
redução de dados.
• Mineração de dados : etapa de utilização de técnicas e algoritmos. É nesta
etapa que os testes realizados com o Weka são obtidos.
• Interpretação : etapa de análise dos resultados obtidos por meio da
mineração dos dados, e a partir dos quais se adquire o conhecimento.
Weka possui uma ferramenta própria que contem diversas opções de
manipulação de dados, essa ferramenta também já demonstra os resultados das
analises, tendo apenas como requisito que se configure uma base de dados para
que a ferramenta possa acessar. Weka é desenvolvido em linguagem Java, sendo
assim possível através de sua API incorporar suas ferramentas e algoritmos em
qualquer sistema.
O Weka também conta com uma opção chamada “KnowledgeFlow”, conforme
mostra a figura 7, onde é possível que seja montado um fluxo de mineração dados.
Figura 7 – Fluxo de mineração de dados na ferramenta WEKA
Nessa opção é possível
uma serie de algoritmos e técnicas de mineração de dados
as mais diversas técnicas e algoritmos no mesmo fluxo. Esse painel
algoritmos de classificação, clusterização, associação, filtragem e avali
conta com uma serie de relatórios e gráficos onde pode ser
dos dados resultantes. Para as experiências realizadas nesse estudo foram
utilizados esse tipo de fluxos de mineração de dados.
O primeiro passo para a construção d
carregamento da base de dados para o fluxo, então após essa definição deve
atrás de quais nodos (técnicas e algoritmos) serão utilizados.
técnicas e algoritmos serão utilizados o usuário deve adicionar os nodos
selecionados no quadro
conexão dos nodos é sempre
passados de um nodo
sequência de execução para que a mineração de dados seja aplicada corretamente.
Depois de terminada a construção do “
Fluxo de mineração de dados na ferramenta WEKA Fonte: Autoria própria.
possível ao usuário acessar a um painel onde
uma serie de algoritmos e técnicas de mineração de dados, podendo ser misturadas
as mais diversas técnicas e algoritmos no mesmo fluxo. Esse painel
algoritmos de classificação, clusterização, associação, filtragem e avali
conta com uma serie de relatórios e gráficos onde pode ser atestada a qualidade
. Para as experiências realizadas nesse estudo foram
utilizados esse tipo de fluxos de mineração de dados.
O primeiro passo para a construção do fluxo de mineração de dados, é o
carregamento da base de dados para o fluxo, então após essa definição deve
atrás de quais nodos (técnicas e algoritmos) serão utilizados. Após
técnicas e algoritmos serão utilizados o usuário deve adicionar os nodos
selecionados no quadro e ligá-los como um workflow comum
conexão dos nodos é sempre realizada informando quais tipos de dados serão
passados de um nodo para outro, de forma que os nodos precisam seguir uma
ncia de execução para que a mineração de dados seja aplicada corretamente.
terminada a construção do “KnowledgeFlow” o usuário precisa iniciar o
45
(KnowledgeFlow).
onde estão distribuídos
, podendo ser misturadas
as mais diversas técnicas e algoritmos no mesmo fluxo. Esse painel, além de conter
algoritmos de classificação, clusterização, associação, filtragem e avaliação, ainda
atestada a qualidade
. Para as experiências realizadas nesse estudo foram
o fluxo de mineração de dados, é o
carregamento da base de dados para o fluxo, então após essa definição deve-se ir
Após decidido quais
técnicas e algoritmos serão utilizados o usuário deve adicionar os nodos
comum de dados. Essa
informando quais tipos de dados serão
, de forma que os nodos precisam seguir uma
ncia de execução para que a mineração de dados seja aplicada corretamente.
o usuário precisa iniciar o
46
processo de mineração, acompanhar pelo log os status de execução e ao final do
processo coletar os dados nos relatórios inseridos no fluxo.
3.4 Organização dos dados
Para o correto uso do conjunto de dados é necessário que haja uma
organização, dessa forma fazendo com que os dados possam ser utilizados com as
diferentes ferramentas selecionadas. Como neste estudo são utilizadas as
ferramentas Weka e Genie, e ambas aceitam como entrada um arquivo no formato
excel/csv, esse é o formato padrão de transporte de dados para a análise.
3.5 Aplicando análise de dados em dados históricos de projetos
Com o objetivo de qualificar os dados da base de dados histórica executando
uma limpeza dos dados e eliminando ruídos, a fim de atestar o impacto que análise
de dados exerce em estimativas através de Redes Bayesianas, foram criados dois
fluxos (processos) de mineração de dados utilizando a opção “KnowledgeFlow” da
ferramenta Weka. Cada um dos fluxos criados utilizam diferentes técnicas de
mineração de dados, as técnicas selecionadas foram os algoritmos j48 e
SimpleKMeans . Os algoritmos em questão foram escolhidos devido a serem
bastante referenciados na literatura como boas opções para classificação de dados
e eliminação de ruídos em grandes conjuntos de dados.
3.5.1 J48 – Árvores de Decisão
O algoritmo J48 utilizado para mineração de dados foi configurado para
construir uma árvore de nodos binários, cada folha contendo no máximo dois
elementos. Foi utilizado um coeficiente de confiança baixo para evitar o alto número
de ruídos que possam passar despercebidos pelo algoritmo, com isso também
temos um número elevado de podas na árvore o que diminui bastante a amostragem
final da base de dados a ser analisada.
Para criação do fluxo de mineração de dados utilizando o algoritmo de J48,
conforme mostra a figura 8, foram utilizadas os seguintes nodos no KnowledgeFlow:
47
• CSVLoader: Onde deve ser selecionada o arquivo da base de dados a
ser utilizado. Quando executado o fluxo irá carregar e preparar a base.
• ClassAssigner: É o classificador geral de qualquer conjunto de dados
utilizado no algoritmo, ele obrigatoriamente deve ser nominal. No caso
da base de dados utilizada, foi selecionado o atributo “Scenario” da base
de dados.
• CrossValidationFoldMaker: Serve para analisar o conjunto de dados e
atestar sua validade, faz isso usando uma equação para calcular o valor
do erro médio de seus testes. Neste experimento foi configurado que
esse teste deveria ser repetido dez vezes. A cada repetição a precisão
dos dados aumenta.
• J48: Após as classificações e testes, os dados são enviados para o
algoritmo J48, que irá classificá-los utilizando o algoritmo de árvore de
decisão. Esse nodo irá gerar três saídas: uma do tipo “graph” e duas
saídas do tipo “batchClassifier” que são
“ClassifierPerformanceEvaluator” e “PredictionAppender”.
• Graph: Nodo que possibilita que sejam analisados de forma gráfica os
nodos da árvore de decisão.
• ClassifierPerformanceEvaluator: É um nodo que tem como objetivo
analisar a performance do algoritmo executado. Disponibiliza diferentes
formas para que isso seja analisado tanto em texto como modo gráfico.
• PredictionAppender: Nodo que reuni os dados analisados pelo algoritmo
possibilitando uma análise prévia dos mesmos de forma gráfica ou que
eles sejam salvos em um outro arquivo, para serem utilizados
posteriormente.
Figura
3.5.2 SimpleKMeans – K
O algoritmo SimpleKMeans
cálculo de distância euclidiana
faltantes por valores melhores qualificados pela
relação ao centroide, o n
por fim foram limitados três
Para a criação do fluxo de mineração de dados utilizando o algoritmo
SimpleKMeans, conforme mostra a figura 9,
• CSVLoader: Onde deve ser selecionada o arquivo da base de dados
utilizado. Quando executado o fluxo irá carregar e preparar a base.
• CrossValidationFoldMaker:
atestar sua validade, faz isso usando uma equação para calcular o valor do
erro médio de seus testes. Em nosso exp
teste deveria ser repetido dez vezes. A cada repetição a precisão dos dados
aumenta.
• SimpleKMeans:
algoritmo SimpleKMeans que ir
means com distâ
Figura 8 - Fluxo de mineração de dados com J48.Fonte: Autoria própria.
K-means
SimpleKMeans utilizado no experimento foi configurado
ncia euclidiana, também foi definido que o algoritmo substitua valores
faltantes por valores melhores qualificados pelas médias de sua
o ao centroide, o número de iterações para o algoritmo foi definido em 5
três clusters.
Para a criação do fluxo de mineração de dados utilizando o algoritmo
conforme mostra a figura 9, foram utilizados os seguintes nodos:
CSVLoader: Onde deve ser selecionada o arquivo da base de dados
Quando executado o fluxo irá carregar e preparar a base.
CrossValidationFoldMaker: Serve para analisar o conjunto de dados e
atestar sua validade, faz isso usando uma equação para calcular o valor do
erro médio de seus testes. Em nosso experimento foi configurado que esse
teste deveria ser repetido dez vezes. A cada repetição a precisão dos dados
SimpleKMeans: Após os dados serem validados, são enviados para o
algoritmo SimpleKMeans que irá classificá-los utilizando o algoritmo
means com distância euclidiana. Esse nodo irá gerar três
48
Fluxo de mineração de dados com J48.
foi configurado usando o
, também foi definido que o algoritmo substitua valores
suas proximidades em
mero de iterações para o algoritmo foi definido em 500 e
Para a criação do fluxo de mineração de dados utilizando o algoritmo
foram utilizados os seguintes nodos:
CSVLoader: Onde deve ser selecionada o arquivo da base de dados a ser
Quando executado o fluxo irá carregar e preparar a base.
Serve para analisar o conjunto de dados e
atestar sua validade, faz isso usando uma equação para calcular o valor do
erimento foi configurado que esse
teste deveria ser repetido dez vezes. A cada repetição a precisão dos dados
os, são enviados para o
los utilizando o algoritmo de K-
três saídas, uma “text”
e duas saídas para o “
“ClassifierPerformanceEvaluator
• ClassifierPerformanceEvaluator:
a performance do algoritmo executado. Disponibiliza diferentes formas para
que isso seja analisado tanto em texto como modo gráfico.
• PredictionAppender:
possibilitando uma an
sejam salvos em um outro arquivo, para
Figura 9 - Fluxo de mineração de dados com algoritmo K
3.6 Ferramentas para utilização de R
Para uso e manipulação
ferramenta Genie. A escolha
uma versão bastante robusta em termos de funcionalidade de form
também possui uma API
construção de Redes Bayesianas via có
Outro fator importante que ajudou na escolha foi a fácil interface
modelagem de Redes Bayesianas.
Laboratory, o Genie se mostra uma das melhores opções gratuitas para modelagem
de Redes Bayesianas.
e duas saídas para o “batchCluster” que vão para os nodos
ClassifierPerformanceEvaluator” e “PredictionAppender
ClassifierPerformanceEvaluator: É um nodo que tem como
a performance do algoritmo executado. Disponibiliza diferentes formas para
que isso seja analisado tanto em texto como modo gráfico.
PredictionAppender: Nodo que reuni os dados analisados pelo algoritmo
possibilitando uma análise previa dos mesmo de forma gráfica ou que eles
sejam salvos em um outro arquivo, para consulta posterior
Fluxo de mineração de dados com algoritmo KFonte: Autoria própria.
Ferramentas para utilização de R edes Bayesianas
Para uso e manipulação de Redes Bayesianas para este estudo foi utilizado a
A escolha dessa ferramenta se deu principalmente por possuir
uma versão bastante robusta em termos de funcionalidade de form
ma API (SMILE) para desenvolvimento que é muito intuitiva na
Bayesianas via código.
utro fator importante que ajudou na escolha foi a fácil interface
modelagem de Redes Bayesianas. Criado em 1998, pela
o Genie se mostra uma das melhores opções gratuitas para modelagem
49
vão para os nodos
PredictionAppender”.
É um nodo que tem como objetivo analisar
a performance do algoritmo executado. Disponibiliza diferentes formas para
que isso seja analisado tanto em texto como modo gráfico.
Nodo que reuni os dados analisados pelo algoritmo
os mesmo de forma gráfica ou que eles
consulta posterior.
Fluxo de mineração de dados com algoritmo K-Means.
para este estudo foi utilizado a
se deu principalmente por possuir
uma versão bastante robusta em termos de funcionalidade de forma gratuita,
para desenvolvimento que é muito intuitiva na
utro fator importante que ajudou na escolha foi a fácil interface para a
pela Decision Systems
o Genie se mostra uma das melhores opções gratuitas para modelagem
50
3.6.1 Treinando as Redes Bayesianas
Para treinar as Redes Bayesianas com diferentes bases de dados históricas,
foram necessários alguns passos na ferramenta Genie:
• Carregar a Rede Bayesiana: É o primeiro passo, deve ser selecionada
qual Rede será utilizada para os testes.
• Carregar os dados: Então se deve carregar os dados da base de dados
para dentro da ferramenta Genie.
• Discretização dos dados: Primeiramente os dados devem ser
discretizados, assim facilita o treinamento das Redes. Na própria
descritização a Rede reconhece os intervalos que cada valor ira fazer
parte, podendo ser configurado mais ou menos intervalos de valores
para um nodo da rede, nesse estudo foram utilizados três intervalos de
valores.
• Associar valores e treinar: O último passo após definir os intervalos de
cada nodo da Rede Bayesiana é associar as colunas da base de dados
aos nodos que existem na Rede Bayesiana e então treinar as Redes.
3.7 Definindo a Rede Bayesiana para análise
A Rede Bayesiana utilizada no experimento foi incorporada dos modelos
propostos pelo MODIST (Models of Uncertainty and Risk for Distributed Software
Development), que é um método e ferramenta para ajudar os gerentes de projetos a
tomarem decisões mais efetivas em relação a qualidade e risco dos projetos. A
Rede Bayesiana utilizada visa agrupar alguns aspectos importantes para o
desenvolvimento de projeto de software, principalmente em termos de estimativas
como esforço, experiência necessária, tamanho do projeto dentre outros, a fim de
auxiliar o gerente de projetos na sua tomada de decisão no início de cada projeto.
Conforme se pode ver na figura 10 a Rede Bayesiana é composta por oito nodos.
Figura 10
3.8 Projeto p ara testes de predição em Redes Bayesianas
Para esta análise,
Primeiramente treinada
tipo de tratamento de dados, então
dados que passou pelo processo de mineração de dados com uso do algoritmo
e por fim a mesma Rede
processo de mineração com o uso do algoritmo SimpleKMeans
Depois do processo de treinamento da Rede Bayesiana
bases de dados, foi selecionado um projeto
análise na Rede Bayesiana,
Bayesiana em seus diferentes treinamentos
impacto que a análise de dados exerce sobre as Redes Bayesianas para diferentes
tipos de predições, como esforço requer
equipe e sobre o cenário de dificuldade do projeto.
O projeto escolhido para ser analisado na Rede Bayesiana,
forma aleatória. Levou-se
escolher ou estar vivenciando qualquer tipo de projeto e seu desejo seria obter ajuda
10 - Representação gráfica da Rede Bayesiana.Fonte: Autoria própria.
ara testes de predição em Redes Bayesianas
, a Rede Bayesiana foi testada em diferentes estágios
rimeiramente treinada com uma base de dados pura, que nunca sofreu qualquer
tipo de tratamento de dados, então posteriormente foi treinada
processo de mineração de dados com uso do algoritmo
e por fim a mesma Rede Bayesiana foi treinada com uma base resultante do
processo de mineração com o uso do algoritmo SimpleKMeans.
processo de treinamento da Rede Bayesiana
selecionado um projeto de uma base de dados histórica, para
yesiana, a fim de comparar os resultados obtidos pela Rede
Bayesiana em seus diferentes treinamentos. Desta forma foi possível atestar o
lise de dados exerce sobre as Redes Bayesianas para diferentes
tipos de predições, como esforço requerido, nível de experiência necessário da
equipe e sobre o cenário de dificuldade do projeto.
O projeto escolhido para ser analisado na Rede Bayesiana,
se em consideração que um gerente de projetos poderia
escolher ou estar vivenciando qualquer tipo de projeto e seu desejo seria obter ajuda
51
Representação gráfica da Rede Bayesiana.
testada em diferentes estágios.
que nunca sofreu qualquer
treinada com uma base de
processo de mineração de dados com uso do algoritmo J48
uma base resultante do
processo de treinamento da Rede Bayesiana com as diferentes
de uma base de dados histórica, para
comparar os resultados obtidos pela Rede
. Desta forma foi possível atestar o
lise de dados exerce sobre as Redes Bayesianas para diferentes
ido, nível de experiência necessário da
O projeto escolhido para ser analisado na Rede Bayesiana, foi escolhido de
em consideração que um gerente de projetos poderia
escolher ou estar vivenciando qualquer tipo de projeto e seu desejo seria obter ajuda
52
a estimar esse projeto, fazendo uso de sua base de dados histórica juntamente com
um processo de análise de dados e Redes Bayesianas. O projeto selecionado tem
as seguintes características que serão analisadas pela rede:
Propriedade Valor
Nome Projeto-39
Numero de etapas 6
Cenário Começou em tempo - terminou atrasado
Accurary (precisão) 1
Total Experiência 36
Dificuldade Média
Complexidade Média
Novidade Média
Esforço Estimado 183
Esforço Real 258
Tamanho (Pontos por Função) 4869
Tamanho Grande
Quadro 2 - Características do projeto selecionado para testes na Rede Bayesiana. Fonte: Autoria própria.
3.9 Analisando o impacto de mineração de dados em e stimativas geradas
através de Redes Bayesianas
Para a análise foi necessário simular o comportamento de um gerente de
projetos na primeira fase do projeto, o planejamento. Onde uma das suas principais
preocupações é a geração de estimativas, dessa forma procurando auxilio a tomada
de decisões em ferramentas de Redes Bayesianas. Levando em conta testes
realizados nos três tipos de bases de dados já mencionadas, os testes visam avaliar
o nível de precisão que as estimativas são geradas em relação a um projeto já
finalizado. Isso quer dizer que já sabemos os dados do projeto a ser testado. Porém
para a nossa análise o mais importante é atestar o comportamento da rede com
diferentes bases de dados na geração de estimativas e quais delas têm um índice
maior de precisão para o gerente de projetos. Com esse objetivo realizamos três
tipos de testes na Rede Bayesiana.
3.9.1 Rede Bayesiana –
Essa Rede Bayesiana foi treinada
qualquer tipo de manipulação, seus dados foram carregados na re
seguintes resultados para os testes propostos
• Estimando o esforço Requerido
esforço segundo os dados informados do projeto
de precisão baixa em
Rede marcou que provavelmente o projeto teria um esfor
alto como foi o que ocorreu.
enquanto os projetos de médio esforço foram a maioria com 43% conforme
mostra a figura abaixo.
Figura 11 - Predição da Rede Bayesiana para Esforço Requerido.
• Estimando nível de experiência
do projeto: A Rede
necessário para
seria necessário uma equipe experiente
estar incorreto, os resultados podem ser vistos na figura abaixo
– Treinada com base de dados pura
Rede Bayesiana foi treinada com uma base de dados que nunca sofreu
qualquer tipo de manipulação, seus dados foram carregados na re
seguintes resultados para os testes propostos:
sforço Requerido: A Rede Bayesiana na hora de esti
ndo os dados informados do projeto de testes
o baixa em relação ao que realmente aconteceu no projeto. A
Rede marcou que provavelmente o projeto teria um esfor
alto como foi o que ocorreu. A taxa de projetos com esforço alto foi de 38%
os projetos de médio esforço foram a maioria com 43% conforme
mostra a figura abaixo.
Predição da Rede Bayesiana para Esforço Requerido.Fonte: Autoria própria.
nível de experiência necessário em relação a p
to: A Rede Bayesiana quando estimando o ní
rio para um projeto com o nível de precisão baix
rio uma equipe experiente, o que o projeto de teste mostra
, os resultados podem ser vistos na figura abaixo
53
com uma base de dados que nunca sofreu
qualquer tipo de manipulação, seus dados foram carregados na rede e tiveram os
: A Rede Bayesiana na hora de estimar o
de testes, teve uma taxa
ao que realmente aconteceu no projeto. A
Rede marcou que provavelmente o projeto teria um esforço médio e não
projetos com esforço alto foi de 38%
os projetos de médio esforço foram a maioria com 43% conforme
Predição da Rede Bayesiana para Esforço Requerido.
relação a precisão (accurary)
quando estimando o nível de experiência
baixo, estimou que não
o que o projeto de teste mostra
, os resultados podem ser vistos na figura abaixo.
Figura 12 - Predição da Rede Bayesiana para Experiência necessária.
• Estimando nível
Quando definido uma equipe experiente, a
todos os projetos ser
difícil e ter esforço alto, o que mais uma vez o projeto
incorreto, conforme
Figura 13 - Estimando a dificuldade estimada de um projeto em uma base pura
Predição da Rede Bayesiana para Experiência necessária.Fonte: Autoria própria.
nível de dificuldade de um projeto com equipe experiente:
Quando definido uma equipe experiente, a rede estimou que praticamente
todos os projetos serão fáceis, ignorando a possibilidade de um projeto se
difícil e ter esforço alto, o que mais uma vez o projeto
, conforme pode ser observado na figura 13.
Estimando a dificuldade estimada de um projeto em uma base puraFonte: Autoria própria.
54
Predição da Rede Bayesiana para Experiência necessária.
de dificuldade de um projeto com equipe experiente:
rede estimou que praticamente
, ignorando a possibilidade de um projeto ser
de teste mostra ser
Estimando a dificuldade estimada de um projeto em uma base pura.
Os testes com esse tipo de base de dados (pura,
demonstraram estimativas pouco confiáveis para o gerente de projetos, se
margem de acerto muito pequena e predições bastante imprecisas.
3.9.2 Rede Bayesiana –
Esta Rede em questão foi treinada com uma base que passou por um processo
de mineração de dados com técni
baixa confiança (mais podas)
treinamento, foram aplicados os
• Estimando esforço r
base também
incorreta o esforço real necessário par
precisão das es
indicou esforço
Figura
• Estimando o nível
(accurary) do projeto:
Os testes com esse tipo de base de dados (pura,
demonstraram estimativas pouco confiáveis para o gerente de projetos, se
margem de acerto muito pequena e predições bastante imprecisas.
– Treinada com base de dados tratada com o algoritmo J48.
Rede em questão foi treinada com uma base que passou por um processo
de mineração de dados com técnicas de arvores de decisão (J48) e
baixa confiança (mais podas) para evitar um numero alto de ruídos.
foram aplicados os testes com os seguintes resultados:
Estimando esforço requerido: A aplicação deste teste
também demonstrou que a Rede Bayesiana
incorreta o esforço real necessário para o projeto do tipo selecionado
das estimativas não foram satisfatórias uma vez que também
indicou esforço requerido como médio e não alto.
Figura 14 - Estimando esforço com algoritmo J48.Fonte: Autoria própria.
nível de experiência necessário em relação a Precisã
(accurary) do projeto: Configurando a rede para estimar
55
Os testes com esse tipo de base de dados (pura, sem tratamento)
demonstraram estimativas pouco confiáveis para o gerente de projetos, sendo a
margem de acerto muito pequena e predições bastante imprecisas.
Treinada com base de dados tratada com o algoritmo J48.
Rede em questão foi treinada com uma base que passou por um processo
cas de arvores de decisão (J48) e coeficiente de
para evitar um numero alto de ruídos. Após o
testes com os seguintes resultados:
teste com esse tipo de
demonstrou que a Rede Bayesiana estimou de forma
a o projeto do tipo selecionado. A
timativas não foram satisfatórias uma vez que também
Estimando esforço com algoritmo J48.
necessário em relação a Precisão
onfigurando a rede para estimar a experiência
necessária em um projeto
estimativa um pouco mais precisa em
ainda pouco precisa e relevante para
estimativa mais
possível observar que h
relação a base anterior
nesse quesito.
Figura 15 - Es
• Estimando dificuldade de um projeto
estimativa sobre a dific
estimado médio,
base, acertando com 95% de precis
dificuldade enfrentada
na figura 16.
em um projeto com baixa precisão, foi
um pouco mais precisa em relação ao projeto de teste
ecisa e relevante para o gerente de projetos
estimativa mais aproximada era a de experiência média
possível observar que houve uma melhora na precisão da estimativa
relação a base anterior, se aproximando mais de uma estimativa
Estimando a experiência necessária de um projeto.Fonte: Autoria própria.
dificuldade de um projeto com equipe experiente: A precisã
estimativa sobre a dificuldade de um projeto de tamanho grande e esfor
dio, com uma equipe experiente, foi o teste mais preciso dessa
acertando com 95% de precisão a estimativa para
dificuldade enfrentada nesse tipo de projeto. Conforme pode ser observado
56
foi possível ver uma
o projeto de testes. Porém
o gerente de projetos, uma vez que a
de experiência média e não alta. É
ouve uma melhora na precisão da estimativa com
mais de uma estimativa ideal
de um projeto.
com equipe experiente: A precisão da
uldade de um projeto de tamanho grande e esforço
foi o teste mais preciso dessa
o a estimativa para possível
Conforme pode ser observado
Figura
Os testes com a base de dados usando tratamento com algoritmos J48
obtiveram uma margem de precisão maior em relação a base de dados pura,
mostrando estimativas mais próximas as características do projeto de teste.
ainda não se mostraram estimativas
3.9.3 Rede Bayesiana
Means.
Os testes a seguir foram aplicado
fluxo de mineração de dados usando algoritmo K
euclidiana, para classificação
podem ser conferidos a seguir:
• Estimando esfor
considerável na precisã
base. Informando
retornou esforço requerido alto como estimativa
estar mais aproximada das características do projeto de teste
Figura 16 - Estimando a dificuldade em projetos.Fonte: Autoria própria.
Os testes com a base de dados usando tratamento com algoritmos J48
obtiveram uma margem de precisão maior em relação a base de dados pura,
mostrando estimativas mais próximas as características do projeto de teste.
ainda não se mostraram estimativas confiáveis para um gerente de projetos.
Rede Bayesiana – Treinada com base de dados tratada com
Os testes a seguir foram aplicados a uma base de dados que passou por um
fluxo de mineração de dados usando algoritmo K-Means, fazendo uso
para classificação e eliminação de ruídos. Os resultados dos testes
podem ser conferidos a seguir:
esforço requerido: Foi verificado que houve
na precisão desse tipo de estimativa quando
nformando as configurações do projeto de teste a Rede Bayesiana
o requerido alto como estimativa mais provável
mais aproximada das características do projeto de teste
57
Estimando a dificuldade em projetos.
Os testes com a base de dados usando tratamento com algoritmos J48
obtiveram uma margem de precisão maior em relação a base de dados pura,
mostrando estimativas mais próximas as características do projeto de teste. Porém
confiáveis para um gerente de projetos.
tratada com algoritmo K-
a uma base de dados que passou por um
fazendo uso de distância
Os resultados dos testes
o que houve um aumento
quando gerada com essa
de teste a Rede Bayesiana
provável, mostrando
mais aproximada das características do projeto de teste.
Figura 17 - Estimativa de esforço mais precisa com uso algoritmo de K
• Estimando nível
do projeto: Novamente foi verificado que a rede teve
estimar o nível de
precisão em relação as duas bases anteriores com o mesmo teste
aumento na precisão foi considerável
Estimativa de esforço mais precisa com uso algoritmo de KFonte: Autoria própria.
nível de experiência necessário em relação a p
Novamente foi verificado que a rede teve uma
estimar o nível de experiência necessário para este tipo de
em relação as duas bases anteriores com o mesmo teste
aumento na precisão foi considerável.
58
Estimativa de esforço mais precisa com uso algoritmo de K-Means.
o a precisão (accurary)
uma precisão maior ao
este tipo de projeto de baixa
em relação as duas bases anteriores com o mesmo teste. O
Figura 18 -
• Estimando dificuldade de um projeto com equipe experiente: A precis
estimativa de
características do projeto de testes,
sendo a dificuldade
- Estimando nível de experiência para o projetoFonte: Autoria própria.
dificuldade de um projeto com equipe experiente: A precis
estimativa de dificuldade a ser enfrentada em um projeto com as
do projeto de testes, foi altamente precisa
dificuldade média a mais provável.
59
Estimando nível de experiência para o projeto.
dificuldade de um projeto com equipe experiente: A precisão da
a ser enfrentada em um projeto com as
altamente precisa definindo como
Figura 19 -
Os testes com a base de dados tratada com o algoritmo de K
que obtiveram maior sucesso para geração de estimativas tendo um nível maior de
acerto e precisão nas estimativas geradas
outras bases de dados, conforme demonstra o quadro comparativo abaixo.
Testes
Base de dados pura sem uso de análise de dados
Estimando Esforço
Estimando Experiência
Estimando Dificuldade
Base de dados minerada com
Estimando Esforço
Estimando Experiência
Estimando Dificuldade
Base de dados minerada com algoritmo K
Estimando Esforço
Estimando Experiência
Estimando Dificuldade
Quadro 3 - D
Estimando a dificuldade para o projeto de testeFonte: Autoria própria.
Os testes com a base de dados tratada com o algoritmo de K
que obtiveram maior sucesso para geração de estimativas tendo um nível maior de
nas estimativas geradas em relação aos testes anteriores com
conforme demonstra o quadro comparativo abaixo.
Testes Executados na Rede Bayesiana
Correto Predição Rede B.
Base de dados pura sem uso de análise de dados
- Médio
- Baixa
- Fácil
Base de dados minerada com algoritmo J48
- Médio
- Médio
SIM Médio
Base de dados minerada com algoritmo K -Means
SIM Alto
SIM Alta
SIM Média
Demonstrativo do resultado dos testes aplicados.Fonte: Autoria própria.
60
para o projeto de teste.
Os testes com a base de dados tratada com o algoritmo de K-Means foram os
que obtiveram maior sucesso para geração de estimativas tendo um nível maior de
em relação aos testes anteriores com
conforme demonstra o quadro comparativo abaixo.
Executados na Rede Bayesiana
Predição Rede B. Status do projeto
Alto
Alta
Médio
Alto
Alta
Médio
Alto
Alta
Média
emonstrativo do resultado dos testes aplicados.
61
Além do teste com o projeto demonstrado acima, foi realizado mais nove testes
exatamente iguais, porém utilizando outros projetos também selecionados de forma
aleatória da base de dados históricos de projetos de software. Os outros projetos
utilizados possuíam as mais diversas características conforme pode ser visto na
tabela abaixo:
Quadro 4 - Demonstrativo dos projetos de testes utilizados. Fonte: Autoria própria.
Os resultados obtidos em todos os testes seguem representados no quadro
abaixo:
Resultados - 10 projetos de testes (N° Acertos das Predições)
Estimando
Esforço Estimando Experiência Estimando Dificuldade
Rede Bayesiana com
base de dados - original 4 1 3
Rede Bayesiana com
Base de dados - J48 7 4 4
Rede Bayesiana com
Base de dados – K-
means
9 7 9
Quadro 5 - Demonstrativo dos resultados gerais dos testes aplicados. Fonte: Autoria própria.
62
4 CONCLUSÃO
Tendo em vista o estudo realizado atesta-se que é de extrema importância que
as empresas incentivem seus gerentes de projetos a sempre guardarem um
histórico detalhado de todos os projetos os quais participem. Todavia apenas utilizar
essa base em conjunto a um sistema de apoio a tomada de decisão (Redes
Bayesianas) não configura estimativas mais precisas para o gerente de projetos,
afinal não é possível atestar com 100% de certeza a qualidade dos dados inseridos
na base. Provavelmente haverá ruídos inseridos na base que podem gerar
estimativas imprecisas.
Conclui-se que é extremamente importante aplicar um processo de análise de
dados à base de dados históricos com o objetivo de melhorar a qualidade para os
sistemas de apoio a tomada de decisão e que a analise de dados tem um impacto
bastante alto em estimativas geradas através de Redes Bayesianas aumentando
aproximadamente 70% as chances de estimativas mais precisas. Pode-se ainda
atestar que o uso do algoritmo K-means se mostrou mais apto em questões de
eliminação de ruídos e em relação à classificação de dados, superando a precisão
das estimativas da Rede Bayesiana em relação ao algoritmo J48. Isto se deve
provavelmente devido ao comportamento de poda e redução de amostras que o J48
apresenta em sua execução.
Como trabalhos futuros podemos considerar o estudo comparativo de
diferentes técnicas de mineração de dados para fins de analisar quais técnicas
teriam melhor desempenho no treinamento de Redes Bayesianas, podendo ser
desenvolvido um catalogo de técnicas e suas características.
Outra sugestão seria a coleta e utilização de uma base de dados de projetos
reais em conjunto a dados reais de um projeto em andamento para realização dos
mesmos experimentos.
63
REFERÊNCIA
BOEHMA, Barry; ABTS, Chris; CHULANI, Sunita. Software development cost estimation approaches. University of Southern California. Annals of Software Engineering 10. Los Angeles, CA, USA. 2000. CARNEIRO, Alexandre Lênin; Aprendizado automático em redes bayesianas , Dissertação (Mestrado em Ciência da Computação) – Universidade de Brasília, Brasília, Brasil. 1999. CASTELO, Robert; KOCKA, Tomás. On inclusion-drive learning of bayesian networks. Machine Learning Research Vol.4. 2003. CERQUIDES, J.; MANTARAS, R. L. Proposal and empirical comparison of a parallelizable distance-based discretization method . INTERNATIONAL CONFERENCE ON KNOWLEDGE DISCOVERY AND DATA MINING. 1997. CHARNIAK, Eugene. Bayesians networks without tears . IA Magazine. 1991. CHENG, Jie; GREINER, Russel. Learning bayesian belief network classifiers: algorithms and system. Proceedings of the 14 Biennial Conference of the Canadian Society on Computational Studies of Intelligence: Advances in Artificial Intelligence. Ottawa, Canada. 2001. CLEMENTS, P.; Northrop, L.M. Software product lines - practices and patterns. Addison-Wesley. 2001. DEMARCO, Tom. Controle de projetos de software . Editora Campus. Rio de Janeiro, Brasil. 1991. DIAS, Maria Madalena. Estudo e análise de técnicas e ferramentas de mineração de dados. Universidade Federal de Santa Catarina, UFSC. Santa Catarina, Brasil. 2006. FERNANDES, Anita Maria da Rocha, Inteligência artificial: noções gerais – 2 imp . VisualBooks. Florianopolis, Brasil. 2005. FRANK, E.; WITTEN, I. H. Making better use of global discretization . INTERNATIONAL CONFERENCE ON MACHINE LEARNING. Bled, Slovenia, 1999. GENIE. Disponível em: <http://genie.sis.pitt.edu/about.html>. Acesso em nov., 2011. GOEBEL, M.; GRUENWALD, L.; A survey of data mining and knowledge discovery software tools . SIGKDD Explorations. 1999. GUINZANI, Jonas Bonfante; SIMÕES, Priscila W. T.; MATTOS, Merisandra Côrtes de; BETTIOL, Jane. Mineração de dados em redes bayesianas utilizando a API da shell belief network power constructor (BNPC). Curso de Ciência da Computação – Universidade do Extremo Sul Catarinense (UNESC). Criciúma, SC, Brasil. 2006.
64
HALL, Mark; FRANK, Eibe; HOLMES, Geoffrey; PFAHRINGER, Bernhard; REUTEMANN, Peter; WITTEN, Ian H. The weka data mining software: an update . SIGKDD Explorations, Volume 11, Issue 1. 2009. HARRISON, T.H. Intranet data warehouse . Berkeley. 1998. HOLMES, Geoffrey; ANDREW, Donkin; WITTEN, Ian H. WEKA: a machine learning workbench . Department of Computer Science University of Waikato, Hamilton, New Zealand. 2002. JAIN, Sapna; AALAM, M Afshar; DOJA, M. N. K-Means clustering using weka interface. Proceedings of the 4th National Conference. INDIACom-2010. 2010. KOEHLER, Cristiane; NASSAR, Sílvia Modesto. Modelagem de redes bayesianas a partir de base de dados médicas . SIMPOSIO DE INFORMÁTICA EN SALUD. 2002. KOHAVI, R. A. Study of cross-validation and bootstrap for accurac y estimation and model selection . International joint Conference on artificial intelligence. 1995. KORB, K.; NICHOLSON, A. E. Bayesian artificial intelligence . CRC Press. Boca Raton, FL, USA. 2003. KREMER, R. Sistema de apoio à decisão para previsões genéricas utilizando técnicas de data mining. Trabalho de Conclusão de Curso – Centro e Ciências Exatas. Universidade Regional de Blumenau, Blumenau. 1999. LEHMAN, M.M. Process models, process programs, programming suppo rt. Proceedings of the 9th International Conference on Software Engineering. Monterey, CA. 1987. LEHMAN, M.M. Uncertainty in computer applications and its contro l through the engineering of software. Journal of Software Maintenance 1. 1989. LIEBCHEN, Gernot; TWALA, Bheki; SHEPPERD, Martin. Assessing the quality and cleaning of a software project dataset: an expe rience report. Brunel University, UK – EASE. 2006. LIU, Qin; MINTRAM, Robert C. Preliminary data analysis methods in software estimation . Software Quality Journal. 2005. LUDL, M.; WIDMER, G. Relative unsupervised discretization for regression problems . EUROPEAN CONFERENCE ON MACHINE LEARNING. Barcelona. 2000. MACQUEEN. J. B. Some methods for classification and analysis of mul tivariate observations. 5-th Berkeley Symposium on Mathematical Statistics and Probability. Berkeley, University of California Press, 1967.
65
MATSUURA, Jackson Paul. Discretização para aprendizagem bayesiana: aplicação no auxílio à validação de dados em proteção ao vôo. ITA - Instituto Tecnológico de Aeronáutica. São José dos Campos, SP, Brasil. 2003. MCCONNELL, Steve. Software estimation, demystifying the black art - m icrosoft press. 2006. MODIST Method and Tool User Manual ; MODIST Models of Uncertainty and Risk for Distributed Software Development IST-2000-28749. Deliverable 7.1. WP7/AGENA/TECH/DEL/1, Version 3. 2004. MODIST. Disponível em: <http://www.agenarisk.com/resources/MODIST.shtml>. Acesso em nov. Software development cost estimation approaches 2011. NÄRMAN, Per; PONTUS, Johnson; LAGERSTRÖM, Robert; FRANKE, Ulrik; EKSTEDT, Mathias. Data collection prioritization for system quality a nalysis . Electronic Notes in Theoretical Computer Science. 2009. NASCIMENTO JR, C. L.; YONEYAMA, T. Inteligência artificial em controle e automação . São Paulo. 2000. PIFER, A. C.; GUEDES, L. A. Aprendizagem estrutural de redes bayesianas utilizando métrica MDL modificada . IEEE LATIN AMERICA TRANSACTIONS, VOL. 5. 2007. PRESSMAN, Roger S. Engenharia de software . São Paulo: Pearson Makron Books. 1995. ROHDEN, Rafael Barasuol. A importância da engenharia de software na computação nos dias atuais. Universidade Regional do Noroeste do Estado do Rio Grande do Sul (UNIJUI), Departamento de Tecnologia – DETEC. Brasil. 2009. RUP – for small projects. Disponível em: <http://www.wthreex.com/rup/smallprojects/ index.htm>. Acesso em nov. 2011. RUSSEL, J. Stuart; NORVING, Peter. Artifical Intelligence: a modern approach. Prentice Hall. 2006. SHEPPERD, Martin; SCHOFIELD, Chris. Estimating software project effort using analogies . IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 23, NO. 12. 1997. SOMMERVILLE, I. Engenharia de software. Addison Wesley, 6a edição. 2003. STEINBACH, Michael; TAN, Pang-Ning; KUMAR, Vipin; KLOOSTER, Steven; POTTER, Christopher; TORREGROSA, Alicia. Clustering earth science data: goals, issues and results; department of computer science and engineering. Army HPC Research Center. University of Minnesota. 2002. TAN, Pang-Ning; STEINBACH, M.; KUMAR, V. Introdução ao data mining mineração de dados. Rio de Janeiro: CIENCIA MODERNA. 2009.
66
The Standish Group International. Boston, Massachussets. Disponível em: <www. standishgroup.com>. Acesso em nov. 2011. VASQUEZ, Carlos E; SIMÕES, Guilherme S. Albert. Análise de pontos de função. Erica. 2005. WANG, K.; LIU, B. Concurrent discretization of multiple attributes . THE PACIFIC RIM INTERNATIONAL CONF. ON ARTIFICIAL INTELLIGENCE. 1998. WEBAPSEE (2003). Disponível em: http://www.webapsee.com.br. 2003. Acesso em nov. 2011.