Você está na página 1de 16

Aplicao do Processo de KDD para Correlacionar Mtricas de Software

Andr Olivera1, Andrws Aires Vieira1, Fernando Bottin1, Karin Becker2


1

Aluno do Programa de Ps-Graduao em Computao (UFRGS) 2 Professora do Instituto de Informtica (UFRGS)

{andrwsvieira, arolivera, fernando.bottin, karin.becker}@inf.ufrgs.br

INTRODUO

A todo o momento dados vm sendo armazenados, formando grandes volumes de dados. Os dados armazenados contm informaes ocultas de grande relevncia para o negcio. Devido ao grande volume de dados, a extrao destas informaes no uma tarefa trivial. Existe uma grande necessidade de teorias e ferramentas para o auxlio dos analistas para a extrao e anlise de informaes teis. O conjunto destas teorias e ferramentas pertencente a um processo conhecido como Descoberta de Conhecimento em Banco de Dados (DCBD) ou ainda na lngua inglesa como Knowledge Discovery in Databases (KDD). O KDD preocupa-se com o desenvolvimento de mtodos e tcnicas para que os dados faam sentido, concentrando-se no mapeamento dos dados brutos em modelos mais compactos (relatrios, grficos), genricos (identificao de modelos que descrevem os dados) ou teis (modelos preditivos que estimem valores futuros) que os dados originais. No ncleo deste processo, se encontra a aplicao de tcnicas para a identificao e extrao de informaes relevantes, ocultas nos dados. Estas tcnicas so conhecidas como minerao de dados por identificarem padres e conhecimentos relevantes para o negcio, ou seja, minerar os dados a procura de informaes relevantes. Os mais diferentes tipos de dados podem ser minerados e dependendo de suas caratersticas diversos algoritmos podem ser utilizados para minerao, como as regras de associao, classificao, clustering, entre outras. Neste trabalho iremos trabalhar com conjuntos de dados compostos por mtricas de software, iremos abordar deste a extrao das mtricas at o processo final de descoberta de conhecimento, visando encontrar padres que possam contribuir para melhor o processo de desenvolvimento dos softwares atuais. 1.1 Motivao

A grande parta dos trabalhos encontrados na literatura que trabalham com mtricas de software e minerao de dados tem como objetivo predizer se um software propenso a falhas ou no. No entanto pouco vem se investigando se as mtricas de

software podem representar outros aspectos do software como, por exemplo, consumo de energia, uso de memria, entre tantas outras caratersticas. Neste contexto, esse artigo ir explorar tcnicas de minerao de dados com o objetivo de encontrar relaes entre as mtricas de projeto e cdigo, com intuito de melhor o processo de desenvolvimento de software, pois no momento em que se estiver definindo caratersticas de alto nvel do projeto j ser possvel ter uma ideia de como ser a codificao. 1.2 Objetivos

A partir da motivao apresentada na seo anterior, o nosso objetivo de negcio ser melhorar o processo de desenvolvimento de software, pois no momento em que conseguirmos prever caractersticas do software nas etapas inicias, daremos a oportunidade do gerente de projeto realizar alteraes no projeto o quanto antes, o que implicara em inmeras vantagens como, por exemplo, diminuir o preo do desenvolvimento de software, acelerar o time to market, entre tantas outras. Logo, nosso objetivo de minerao extrair modelos que reflitam relaes entre mtricas de cdigo e modelo. 1.3 Metodologia

Aps a definio dos objetivos foi idealizada uma metodologia para realizao deste trabalho, que pode ser vista a partir da Figura 1 de forma concisa. Cada uma dessas etapas sero devidamente explicadas no decorrer deste trabalho.
Extrao de Mtricas de Software Seleo dos Dados Limpeza e Prprocessamento Transformao dos Dados Escolha e aplicao dos Algoritmos

Escolha da Tcnica de Minerao

Anlise dos Resultados

Figura 1 Metodologia

MTRICAS DE SOFTWARE

A grande demanda de mercado por sistemas que atendam aos mais diversos tipos de requisitos trazem tona um problema, como medir a qualidade dos produtos de software? A atividade de medir algo no nova e muitas vezes bastante complexa, principalmente no que diz respeito a processos, estimativas e claro ao cdigo produzido para gerar o produto final. Uma das principais dificuldades est na definio da mtrica, ou seja, o que ser medido. Esta tarefa est ligada ao que se deseja descobrir e diretamente ligada aos objetivos do que se deseja construir. Uma vez definida a mtricas, inicia-se o processo de coleta, que em muitos casos dependendo da natureza da mtrica, tambm no uma tarefa trivial, por fim a mtrica deve ser analisada e para isto deve ter sido definida de maneira a facilitar a sua anlise. A aplicao de mtricas no domnio da engenharia de software comeou em meados da dcada de 1970 [1], como uma ferramenta para a gerncia efetiva dos processos de desenvolvimento e manuteno, onde foram utilizadas mtricas para medio e avaliao da qualidade de um produto de software. A retrica pergunta, por que medir software? Tem muitas respostas, contudo a principal resposta que se faz necessrio melhorar os processos de gerenciamento do desenvolvimento de um produto de software, a fim de obter um produto com melhor qualidade. Quando se fala em gerenciamento, objetivamente devem-se controlar todas as etapas do processo e para isto se faz necessrio um conjunto de indicadores para apoiar a tomada de decises em todas as etapas relativas construo do produto final. Mtricas de software podem ser classificadas quanto ao objeto das mtricas, ou seja, o mbito da sua aplicao, quanto ao critrio utilizado na sua determinao e quanto ao mtodo de obteno da medida [2]. A maneira mais ampla de classific-las quanto ao objeto da mtrica, subdividindo-as em mtricas de produtos, que medem a complexidade e tamanho final do programa ou sua qualidade (confiabilidade, manutenibilidade etc.), e em mtricas de processo, que se referem ao processo de concepo e desenvolvimento do software, medindo, por exemplo, o processo de desenvolvimento, tipo de metodologia usada e tempo de desenvolvimento [3]. Quanto aos critrios, as mtricas so diferenciadas em mtricas objetivas e mtricas subjetivas. As objetivas so obtidas atravs de regras bem definidas, sendo a melhor forma de possibilitar comparaes posteriores consistentes. Assim, os valores obtidos por elas deveriam ser sempre os mesmos, independentemente do instante, condies ou indivduo que os determinam. A obteno dessas mtricas passvel de automatizao, como por exemplo, o nmero de linhas de cdigo (LOC). As mtricas subjetivas podem partir de valores, mas dependem de um julgamento que tambm um dado de entrada para ser levantadas, como por exemplo, o modelo de estimativa de custo [4], que depende da classificao do tipo de software (se o software embarcado, distribudo etc.). Outra maneira de classificar as mtricas de software, quanto ao mtodo de obteno, dividi-las em primitivas ou compostas.

As mtricas primitivas so aquelas que podem ser diretamente observadas em uma nica medida, como o nmero de linhas de cdigo, erros indicados em um teste de unidade ou ainda o total de tempo de desenvolvimento de um projeto. As mtricas compostas so as combinaes de uma ou mais medidas como o nmero de erros encontrados a cada mil linhas de cdigo ou ainda o nmero de linhas de teste por linha de cdigo. Levando em conta esse contexto, iremos trabalhar com mtricas objetivas de produto, primitivas e compostas, pelo fato de ser possvel extrai-las de forma automtica.

PROCESO DE KDD

O processo de Descoberta de Conhecimento em Base de Dados (KDD) um processo no trivial de identificao de padres novos, vlidos e potencialmente teis [5]. Estes padres esto ocultos nos dados e devem ser novos para o sistema, de preferncia para o usurio, vlidos em relao aos dados armazenados e as polticas do negcio, teis para sua devida utilizao nas tarefas para o qual foi requisitado. Podemos definir dados como um conjunto de fatos sobre determinado assunto e padres, como uma linguagem ou um modelo que descreve um subconjunto destes fatos. Ou seja, identificar um padro ajustar um modelo aos dados ou identificar uma estrutura no conjunto de dados, descrevendo-os de forma genrica. O KDD um processo iterativo composto de diversas etapas que envolvem a preparao dos dados, procura por padres, avaliao e refinamento. O processo interativo, pois todas as etapas contm tarefas e decises a serem feitas pelos usurios. Iterativo, pois todas as etapas esto conectadas. Caso a etapa de avaliao no seja satisfatria, de acordo com o processo, deve-se voltar para a etapa de preparao dos dados. A Figura 2 representa o processo.

Figura 2 Processo de KDD [5]

No desenvolvimento desse trabalho iremos passar por todas as etapas do processo de KDD, alm de construir nosso prprio dataset a partir da extrao automtica de mtricas de mtricas de software.

3.1

Extrao das Mtricas

A necessidade da utilizao de ferramentas para automatizar tarefas nas mais diferentes reas do conhecimento algo comumente discutido e isto no seria diferente na para a extrao de mtricas de software. Para o desenvolvimento deste trabalho foram utilizadas trs ferramentas que auxiliaram no processo de extrao de mtricas, foram elas, Understand [6], MagicDraw [7], SDMetrics [8]. Para extrao das mtricas foram escolhidos seis parsers HTML. A escolha do tipo da aplicao deu-se pelo fato da alta utilizao de parsers em nosso cotidiano, tanto em nossos desktops, como em tablets e smartphones, sendo uma das partes mais sensveis e complicadas de um navegador. Alm disso, foi possvel encontrar vrias verses de parsers de cdigo aberto e em uma mesma linguagem da programao, no caso optou-se apenas por parsers codificados Java. Dentre os parsers codificados em Java e open source, foram selecionados os seguintes: HTML Parser [9] HtmlCleaner [10] Jericho HTML Parser [11] Jsoup [12] JTidy [13] TagSoup [14]

O primeiro passo aps a seleo dos parsers foi extrair as mtricas de cdigo, para tal tarefa foi utilizada a ferramenta Understand [6], foi escolhida tal ferramenta devido a sua grande praticidade, sendo apenas necessrio importar os cdigos fonte para ento exportar as mtricas de cdigo. No total o Understand gera um total de 99 mtricas, das quais 53 podem ser aplicadas a projetos Java. Um exemplo de extrao das mtricas pode ser vista na Figura 3.

Figura 3 Mtricas de Cdigo Extradas pelo Understamd

Por outro lado, o processo de extrao de mtricas de projeto (e.g. Diagrama de Classes), foi um pouco mais trabalhoso, sendo necessrio realizar um processo de engenharia reversa com auxlio da ferramenta MagicDraw [7], para ento exportar os modelos e importar na ferramenta SDMetrics [8] e extrair as mtricas de modelo. Um exemplo da extrao das mtricas de modelo pode ser visto na Figura 4.

Figura 4 Mtricas de Projeto Extradas pelo SDMetrics

O processo geral de extrao das mtricas pode ser observado na Figura 5.

Figura 5 Processo de Extrao de Mtricas

3.2

Seleo dos Dados

A fase de seleo de dados a primeira no processo de descobrimento de informao e possui impacto significativo sobre a qualidade do resultado final, uma vez que nesta fase escolhido o conjunto de dados contendo todas as possveis variveis (atributos) e registros (observaes) que faro parte da anlise. O processo de seleo bastante

complexo, uma vez que os dados podem vir de uma srie de fontes diferentes (data warehouses, planilhas, sistemas legados) e podem possuir os mais diversos formatos. Nessa primeira fase do processo de KDD, decidimos por selecionar apenas as mtricas de classe, deste modo, desprezando mtricas do mtodos, interfaces, pacotes e etc. Para fazer essa seleo foi necessrio um esforo na programao de scripts, os quais foram codificados em Lua [15]. Aps essa etapa tnhamos 12 datasets apenas com as mtricas de classe. 3.3 Limpeza e Pr-processamento

O Pr-processamento e limpeza dos dados uma parte crucial no processo de KDD, pois a qualidade dos dados vai determinar a eficincia dos algoritmos de minerao. Nesta etapa devem ser realizadas tarefas que eliminem dados redundantes e inconsistentes, recuperem dados incompletos e avaliem possveis dados discrepantes ao conjunto, chamados de outliers. Nesta fase tambm so utilizados mtodos de reduo ou transformao para diminuir o nmero de variveis envolvidas no processo, visando com isto melhorar o desempenho do algoritmo de anlise. Nesta etapa decidimos por selecionar apenas os atributos em que tinham valor em todas as observaes e por selecionar apenas as mtricas de classe que existissem em ambos os nveis (projeto e cdigo). Um exemplo desse processo pode ser visto na Figura 6.

Figura 6 Limpeza e Pr-processamento das mtricas

3.4

Transformao dos Dados

A Transformao dos dados a fase do KDD que antecede a fase de Data Mining. Aps serem selecionados, limpos e pr-processados, os dados necessitam ser armazenados e formatados adequadamente para que os algoritmos possam ser aplicados. Alm disto, nesta fase, se necessrio, possvel obter dados faltantes atravs da transformao ou combinao de outros, so os chamados dados derivados. Um

exemplo de um dado que poderia ser calculado a partir de outro uma mtrica composta. Porm nessa etapa por no possuirmos dados faltantes, nosso trabalho foi apenas de mudar a forma como os dados estavam armazenados, juntando os 12 datasets em apenas 1. Onde, para cada classe concatenou-se as mtricas de projeto e cdigo na mesma linha, conforme pode ser vista na Tabela 1, MP significa mtrica de projeto e MC mtrica de cdigo.
Tabela 1 Modo de armazenamento dos dados

Classe MP1

MP2

...

MP19

MC1

MC2

...

MC42

Ao final desse processo geramos um nico dataset, onde cada linha (registro) era composta pelo nome da classe, 19 mtricas de projeto e 42 mtricas de cdigo.

3.5

Escolha da Tcnica de Minerao

Logo aps os dados terem sido limpos e pr-processados, iremos aplicar as tcnicas de minerao de dados para alcanar os objetivos definidos. Os objetivos identificados podem ser descritos como tarefas de classificao, regresso, agrupamento, predio, etc. As tcnicas so escolhidas de acordo com as caractersticas dos dados. Algumas tcnicas de minerao contm parmetros que so utilizados em seu funcionamento, tambm faz parte desta etapa encontrar os melhores parmetros, para que o mtodo possa ser o mais preciso e gil possvel. Inicialmente pensamos em utilizar a tcnica de associao para poder associar uma (ou mais) mtricas de projeto a uma de cdigo, porm percebemos que a tcnica no se encaixava no que realmente estvamos procurando, pois no estamos trabalhando com a possibilidade de se uma mtrica acontecer outra poder acontecer, como por exemplo, se eu compro jornal eu compro suco. Ns estamos trabalhando com valores reais e queremos dizer se que se uma (ou mais) mtricas de projeto tem um valor X a uma mtrica de cdigo ter valor prximo de Y. Logo, optamos por uma tcnica de predio numrica, onde esta visa descobrir um possvel valor futuro de uma varivel. As predies numricas visam prever valores para variveis contnuas, diferente de tcnicas de classificao que tentam prever variveis discretas (com algumas excees). Os mtodos mais conhecidos para predio numrica so as regresses. As tcnicas de regresso modelam o relacionamento de variveis independentes (chamadas preditoras) com uma varivel dependente (chamada resposta). As variveis preditoras so os atributos dos registros, e a resposta o que se quer predizer. Aps definir a tcnica, foram definidas as variveis preditoras (todas mtricas de projeto) e as variveis dependentes (mtricas de cdigo), como s podemos prever uma varivel por vez, optamos por criar 42 modelos preditivos, uma para cada mtrica de cdigo.

3.6

Escolha dos Algoritmos

Conforme descrito anteriormente, pretende-se extrair um conjunto de mtricas de cdigo (MC1, MC2, ..., MCn) baseado em um conjunto de mtricas de projeto, a abordagem proposta pode ser descrita como na Figura 7.

Figura 7 - Previso de mtricas de cdigo

Neste trabalho, estamos supondo que diferentes algoritmos podem se comportar e obter resultados distintos para realizar a estimativa de cada mtrica de cdigo. Dessa forma, utilizamos algoritmos distintos (tanto lineares como no-lineares) para realizar regresso linear e comparamos eles de modo a escolher o melhor modelo (gerado pelo melhor algoritmo) para cada mtrica de cdigo. Os algoritmos de regresso considerados no trabalho foram os seguintes: Regresso linear por mnimos quadrados (lm): Esta a tcnica mais simples de regresso linear onde a funo alvo estimada atravs da minimizao da soma dos quadrados das diferenas entre os valores reais e os estimados, chamadas de resduos. Como todos os mtodos lineares, o algoritmo supe que existe uma relao linear entre os atributos preditores e o atributo alvo que se deseja estimar. Foi utilizado o mtodo lm do pacote Stats do R, ao qual utiliza o mtodo de decomposio QR para realizar as decomposies de matrizes. Modelo linear generalizado/Regresso de Poisson (glm): uma generalizao flexvel da regresso por mnimos quadrados, que permite que a varivel alvo tenha modelos de distribuio de erro diferentes de uma distribuio normal. A regresso linear generalizada permitindo o modelo linear ser associado varivel alvo atravs de uma funo de ligao e permitindo que magnitude da varincia de cada medida seja uma funo do seu valor previsto. Como descrio de distribuio de erro e funo de ligao foi utilizada a regresso Poisson, que geralmente utilizada para modelar contagem de dados e tabelas de contingncia. Para a realizao do trabalho, foi utizado o mtodo glm do pacote Stats do R. Mquinas de Vetor de Suporte (svm): Mquinas de vetor de suporte so modelos de aprendizagem supervisionada que podem ser utilizados tanto para tarefas de classificao como para tarefas de regresso. A ideia bsica do SVM consiste na construo de hiperplanos para separao de dados linearmente separveis e

transformaes de dados no linearmente separados atravs de uma funo kernel. Para o trabalho foi utilizado o mtodo svm do pacote e1071 do R. Para o kernel foi utilizada uma funo radial de grau 3. Multivariate Adaptive Regression Splines MARS (earth): uma tcnica de regresso no-paramtrica que pode ser vista como uma extenso de modelos lineares que modela no-linearidades e interaes entre as variveis automaticamente. Foi utilizado o pacote Earth (mtodo Earth) do R para construir o modelo. rvores de Regresso CART (rpart): rvores de regresso so parecidas com rvores de deciso, contudo as folhas contm previses numricas ao invs de deciso. Para o trabalho foi utilizado o mtodo rpart do pacote rpart. Para simplificar o trabalho, as rvores geradas no foram podadas, para realizar a diviso dos nodos, foi utilizado o mtodo anova. Redes Neurais (nnet): Redes neurais uma tcnica de regresso (pode ser utilizada tambm para classificao) que consegue resolver problemas no lineares. No trabalho utilizou-se uma rede MLP (Perceptron de Mltiplas Camadas) com o algoritmo Backpropagation. Para a minimizao dos erros foi utilizado o algoritmo BFGS, com weight decay de 0,0001. Configurou-se para que a camada oculta tivesse 20 neurnios, e o treinamento da rede fosse feito em at 1.000 iteraes. Foi utilizado o pacote nnet. Random Forest (randomForest): O algoritmo Random Forest constri uma floresta de Random Trees, cada uma utilizando subconjuntos aleatrios das variveis candidatas a preditoras escolhendo, como modelo final, a rvore que apresenta o melhor desempenho. Foram utilizadas forestas com 500 rvores para o trabalho. Foi utilizado o pacote randomForest do R. Para a comparao dos modelos preditivos, os dados foram mesclados e foi utilizado 10-fold cross validation. A cada passo do cross validation, foi calculada a raiz do erro mdio quadrtico (RMSE) gerando um total de 10 RMSEs para cada um dos 7 algoritmos para cada uma das mtricas de cdigo. O RMSE foi a mtrica utilizada para a escolha dos melhores modelos. Dois mtodos foram utilizados para a escolha dos modelos. O primeiro mtodo selecionou-se o algoritmo que obteve em mdia o melhor RMSE em todas as passadas do cross validation; Selecionou-se o modelo com melhor (menor) valor de RMSE gerados por esse algoritmo. J no segundo mtodo, selecionouse simplesmente o modelo com melhor desempenho dentre todos os 70 modelos gerados (10 passadas do cross validation x 7 algoritmos), sem considerar se o algoritmo selecionado gera modelos em mdia pior que outros algoritmos.

RESULTADOS

Os resultados do experimento podem ser visualizados na Erro! Fonte de referncia no encontrada..


Tabela 2 Resultados do experimento

1 2 3 4 5

classes AvgCyclomatic AvgCyclomaticModified AvgCyclomaticStrict AvgEssential MaxCyclomatic

rmse1 2.056 2.068 2.765 1.238 3.855

algoritmo1 randomF randomF randomF randomF randomF

rmse2 1.265 1.262 1.590 0.342 3.394

algoritmo2 svm svm svm svm svm

6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

classes rmse1 algoritmo1 MaxCyclomaticModified 3.860 randomF MaxCyclomaticStrict 4.123 svm MaxInheritanceTree 0.003 earth MaxNesting 1.166 randomF SumCyclomatic 9.638 randomF SumCyclomaticModified 9.680 randomF SumCyclomaticStrict 14.831 randomF SumEssential 4.107 randomF AvgLine 15.202 randomF AvgLineBlank 1.974 randomF AvgLineCode 12.119 randomF AvgLineComment 1.048 randomF CountLine 122.789 randomF CountLineBlank 5.910 svm CountLineCode 83.312 randomF CountLineCodeDecl 15.481 randomF CountLineCodeExe 46.455 randomF CountLineComment 46.341 randomF CountSemicolon 42.266 randomF CountStmt 50.956 randomF CountStmtDecl 13.244 randomF CountStmtExe 31.705 svm RatioCommentToCode 0.319 randomF CountClassBase 0.000 lm CountClassCoupled 2.487 randomF CountClassDerived 0.012 earth CountDeclClassMethod 1.255 rpart CountDeclClassVariable 1.577 lm CountDeclInstanceMethod 1.396 lm CountDeclInstanceVariable 1.095 randomF CountDeclMethod 0.006 earth CountDeclMethodAll 0.490 earth CountDeclMethodDefault 0.779 lm CountDeclMethodPrivate 0.922 lm CountDeclMethodProtected 0.614 randomF CountDeclMethodPublic 0.001 nnet PercentLackOfCohesion 11.281 randomF

rmse2 3.490 4.123 0.003 1.166 7.647 7.603 10.593 3.513 6.674 0.714 5.961 0.484 76.590 5.910 59.690 12.807 34.701 36.295 30.652 38.131 11.034 31.705 0.319 0.000 2.487 0.012 0.962 1.214 1.396 1.095 0.001 0.490 0.779 0.809 0.551 0.001 11.281

algoritmo2 svm svm earth randomF lm lm lm lm svm svm svm svm svm svm svm svm svm svm svm svm earth svm svm rpart randomF earth svm svm lm randomF nnet earth lm svm svm nnet randomF

A primeira coluna representa o valor RMSE do modelo que teve melhor desempenho e o algoritmo selecionado pelo mtodo 1, enquanto a segunda coluna mostra os mesmos itens quando o mtodo de seleo o segundo. A primeira caracterstica que possvel observar na tabela que diferentes algoritmos tem resultados distintos dependendo de qual mtrica de cdigo ele ir prever, conforme havamos pensado. Em segundo lugar, possvel notar que o mtodo de seleo do melhor modelo realmente faz diferena. Isso acontece devido ao fato que nem sempre o algoritmo que

tem um melhor desempenho em mdia produz o melhor modelo. A Figura 88 resume quais algoritmos foram selecionados em utilizando o primeiro (caso 1) e o segundo mtodo de seleo (caso 2).Figura 1

Seleo de Modelos

caso 1 caso 2
25 28

6 0 0

4 glm svm

3 4 earth

1 1 rpart

2 2 nnet

4 rf

lm

Figura 8 - Algoritmo utilizado por modelos selecionados

O algoritmo Random Forest foi o algoritmo que teve mais modelos selecionados no experimento pelo primeiro mtodo de seleo (28 dos 42 modelos), ou seja, ele apresentou um desempenho em mdia melhor que os outros nas etapas da validao cruzada. Por outro lado o algoritmo SVM, apresentou melhores resultados no segundo mtodo de escolha, indicando que na maioria dos casos ele conseguiu criar os modelos com menor quantidade de erro. Os valores em evidncia na tabela apresentam erros muito maiores com relao aos demais, acreditamos que isso pode ocorrer pelos seguintes motivos: a distribuio dos dados no permite que se obtenham boas aproximaes, portanto deveria ser feita alguma transformao que permitisse uma melhor estimativa. Ou ainda o comportamento desses valores no pode ser descritos atravs das variveis preditoras selecionadas. O desempenho dos diversos algoritmos para prever a varivel CountDeclMethodAll foi plotado na Figura 9. Nesse grfico, cada formato/cor de ponto indica um algoritmo diferente. Nesse tipo de grfico, desejado que os pontos fiquem na linha diagonal (funo f(x) = x), onde o valor real foi previsto corretamente, o desvio dessa linha indica um erro na estimao para aquele valor. Todas as predies do cross-validation (661 observaes) foram plotadas no grfico. possvel observar claramente o bom desempenho obtido pelo algoritmo earth para prever essa varivel, como j havia sido observado na Tabela 2.

Figura 9 Grfico Preditos vs. Observados para a mtrica countDeclMethodAll, com todas observaes.

Tambm possvel observar o comportamento indesejado dos resultados providos pelo algoritmo glm, tais resultados foram observados na previso da maioria das mtricas de cdigo e indica que, provavelmente o algoritmo no foi devidamente parametrizado para trabalhar com os dados ao qual foi submetido. Outro comportamento interessante acontece com o algoritmo rpart, nota-se que para uma determinada faixa de valores observados, o algoritmo estima o mesmo resultado. Isso acontece devido ao comportamento da arvore de regresso que tenta discretizar a sada da rvore, contudo, o algoritmo no apresentou desempenho insatisfatrio em geral. Para mostrar mais detalhadamente como foi feita a seleo, selecionamos a varivel AvgCyclomatic que obteve um erro regular comparado com as outras. Abaixo possvel observar algumas estatsticas bsicas sobre a distribuio dessa varivel atravs do comando do R summary:
> summary(dataset$AvgCyclomatic) Min. 1st Qu. Median Mean 3rd Qu. 0.000 1.000 1.000 2.375 2.000 Max. 76.000

Pode-se notar que essa varivel (assim como vrias outras analisadas) apresentam valores muito maiores que o terceiro quartil, que podem ser considerados outliers na anlise e que prejudica na gerao dos modelos de alguns algoritmos de aprendizagem de mquina. As estatsticas do RMSE das diversas iteraes do validao cruzada para cada algoritmo mostrada abaixo:
"Resultados RMSE Min. 1st Qu. 1.823 2.521 "Resultados RMSE Min. 1st Qu. 1.723 2.260 para algoritmo Median Mean 3.099 4.142 para algoritmo Median Mean 3.555 4.389 LM" 3rd Qu. 4.086 GLM" 3rd Qu. 4.704 Max. 9.730 Max. 10.200

"Resultados RMSE Min. 1st Qu. 1.265 1.743 "Resultados RMSE Min. 1st Qu. 2.254 2.725 "Resultados RMSE Min. 1st Qu. 1.917 2.446 "Resultados RMSE Min. 1st Qu. 2.571 3.101 "Resultados RMSE Min. 1st Qu. 2.032 2.310

para algoritmo Median Mean 3.102 3.937 para algoritmo Median Mean 3.022 3.969 para algoritmo Median Mean 2.995 4.100 para algoritmo Median Mean 3.729 4.437 para algoritmo Median Mean 2.711 3.727

SVM" 3rd Qu. 4.266 RPART" 3rd Qu. 3.425 EARTH" 3rd Qu. 3.956 NNET" 3rd Qu. 4.661 RF" 3rd Qu. 3.235

Max. 9.868 Max. 8.464 Max. 9.530 Max. 8.453 Max. 8.486

Pelo primeiro mtodo de escolha, escolhemos o algoritmo Random Forest que possui um RMSE mais baixo na mdia geral com o valor de 3,727, logo o modelo escolhido nesse caso o menor que possui um RMSE de 2,032. J, quando vamos selecionar o modelo pelo segundo mtodo, escolhemos o algoritmo que obteve o menor RMSE de todos, independentemente do RMSE mdio obtido, assim, escolhemos o modelo criado pelo SVM que tem um erro de 1,265 (independente de sua mdia ser maior do que a do Random Forest 3,937 > 3,727). Na Figura 10 possvel visualizar graficamente um modelo gerado pelo rpart. A compreenso do modelo uma das principais vantagens de se trabalhar com modelos baseados em rvores de deciso.

Figura 10 - rvore Recursiva para prever AvgCyclomatic

Nessa rvore so utilizadas 4 variveis para descrever a mtrica AvgCyclomatic, respondendo as perguntas da raiz da rvore at os nodos, o valor estimado pelo modelo.

CONCLUSOES

Com realizao desse trabalho conseguimos entender melhor cada processo do KDD, pois atravs dele pudemos passar por cada etapa, desde a formao do nosso prprio conjunto de dados (que no propriamente dita uma etapa do KDD) at a anlise dos nossos resultados. E ainda conseguimos criar modelos capazes de estimar grande parte das mtricas de cdigo, conhecendo apenas as mtricas de projeto, com isso, o gerente de projeto pode tomar decises nas fases iniciais, tendo uma ideia do impacto de tais decises no nvel de codificao. E como trabalhos futuros tais relaes podem ser aplicadas camada mais baixa das mtricas, ou seja, mtricas de hardware, para ento poder determinar que uma mtrica de alto nvel (projeto) tem a relao (ou no) com uma mtricas baixo nvel (hardware). Alm disso, ainda podemos refinar algumas etapas do KDD como, aplicar transformaes adequadas nos dados, utilizar uma pr-seleo de atributos preditores, transformar em um problema de classificao e ainda estudar (entender) melhor o processo de regresso e como avalia-lo melhor.

REFERNCIAS
[1] S. L. Fenton e N. E. Pfleeger, Software Metrics: A Rigorous and Practical Approach, 1 ed., Boston : PWS : London : International Thomson Computer Press, 1996. [2] P. R. M. Meirelles, Levantamento de Mtricas de Avaliao de projetos de software Livre, USP, So Paulo, 2008. [3] R. S. E. d. S. Presman, Engenharia de Software, 6 Edio ed., So Paulo: McGraw-Hill, 2006. [4] B. W. Boehm, Software Engineering Economics., New Jersey: Prentice-Hall, 1981. [5] U. Fayyad, G. Piatetsky-Shapiro e P. Smyth, Databases, From Data Mining to Knowledge Discovery in Databases, AI Magazine, vol. 17, pp. 37-54, 1996. [6] Understand, 2013. [Online]. Available: http://www.scitools.com/. [Acesso em Maio 2013]. [7] MagicDraw, No Magic, 2013. [Online]. Available: http://www.nomagic.com/. [Acesso em Nov 2013]. [8] SDMetrics, 2013. [Online]. Available: http://www.sdmetrics.com/index.html. [Acesso em Julho 2013]. [9] HTML Parser, 2006. [Online]. Available: http://htmlparser.sourceforge.net/. [Acesso em Nov 2013]. [10] HtmlCleaner, Set 2013. [Online]. Available: http://htmlcleaner.sourceforge.net/. [Acesso em Nov 2013].

[11] Jericho HTML Parser, Jan 2013. [Online]. http://jericho.htmlparser.net/docs/index.html. [Acesso em Nov 2013].

Available:

[12] J. Hedley, Jsoup, 2013. [Online]. Available: http://jsoup.org/. [Acesso em Nov 2013]. [13] JTIDY, Dez 2009. [Online]. Available: http://jtidy.sourceforge.net/. [Acesso em Nov 2013]. [14] TagSoup, 2011. [Online]. Available: http://ccil.org/~cowan/XML/tagsoup/. [Acesso em Nov 2013]. [15] Lua, PUC Rio, 2013. [Online]. Available: http://www.lua.org/. [Acesso em Nov 2013].

Você também pode gostar