Você está na página 1de 10

Implementao em Java de um Algoritmo de rvore de Deciso Acoplado a

um SGBD Relacional


Mauricio Onoda & Nelson F. F. Ebecken
COPPE/UFRJ Universidade Federal do Rio de Janeiro
monoda@uninet.com.br nelson@ntt.ufrj.br


Resumo
Atualmente um dos tpicos mais pesquisados em data mining a sua integrao com banco de dados. Os
reflexos destes esforos j aparecem nos grandes bancos de dados comerciais, que esto fornecendo solues
integradas de data mining. Este trabalho avalia o acoplamento de um algoritmo de rvore de deciso no usual
com um sistema gerenciador de banco de dados relacional e analisa o desempenho da sua implementao em
Java.

Abstract
Nowadays one of the most researched topics in data mining is its integration with database. The reflexes of these
efforts already appear in the major commercial databases, which are supplying integrated solutions of data
mining. This work evaluates the coupling of an unusual decision tree algorithm to a relational database
management system, and analyzes the performance of the implementation in Java.


1. Introduo

As pesquisas iniciais em data mining foram concentradas na definio de novas
operaes de minerao e no desenvolvimento de algoritmos, sendo a maioria dos sistemas de
data mining implementada utilizando sistema de arquivos e estrutura de dados especfica.
Estes sistemas que operam diretamente num arquivo de dados (normalmente todo carregado
na memria principal) tornaram-se insuficientes medida que as aplicaes envolveram a
minerao de grandes data warehouses. Apesar da utilizao de SGBD (Sistema Gerenciador
de Banco de Dados) em data mining no ser nova, a maioria das aplicaes ainda utiliza a
arquitetura fracamente acoplada, onde os dados so lidos diretamente do banco de dados,
tupla a tupla, usando a interface de cursor do SGBD. Este acoplamento fraco caracteriza-se
pelo sistema de banco de dados ser executado num espao de endereamento diferente do
processo de data mining.
Este trabalho avalia o desempenho da implementao em Java de um algoritmo de
rvore de deciso no usual, em ambiente de microinformtica, numa abordagem fracamente
acoplada. Este algoritmo, denominado PUBLIC (PrUning and BuiLding Integrated in
Classification) [1], diferencia-se dos demais por realizar a poda da rvore durante a fase de
crescimento. No PUBLIC, a fase de crescimento baseada no algoritmo SPRINT (Scalable
PaRallelizable INduction on decision Trees) [2], considerado o estado da arte na classificao
de grande volume de dados, e a fase de poda baseia-se no princpio do MDL (Minimum
Description Length) [3]. Estas caractersticas tornam este algoritmo adequado para o ambiente
computacional escolhido. A utilizao do Java proporciona uma soluo mais verstil e
abrangente, uma vez que a maioria dos grandes bancos de dados comerciais j possui verses
onde est embutida uma mquina virtual Java (JVM - Java Virtual Machine). Para
comparao de desempenho com o Java, o mesmo algoritmo tambm foi implementado em
PL/SQL, aproveitando-se das caractersticas do banco de dados Oracle utilizado.
O trabalho est organizado como apresentado a seguir. A seo 2 mostra uma
classificao das principais arquiteturas para integrao entre data mining e banco de dados.
A seo 3 apresenta um resumo sobre rvores de deciso. O detalhamento da implementao
deste trabalho est na seo 4. A seo 5 contm a descrio das bases de dados utilizadas
para testes e os resultados obtidos. Finalmente, na seo 6 so reunidas as concluses deste
trabalho.

2. Arquiteturas para integrao entre data mining e SGBD

Uma classificao abrangente para as diversas alternativas de arquiteturas para
acoplamento entre data mining e um sistema de banco de dados apresentada em BEZERRA
et al. [4], onde as abordagens foram divididas em trs categorias principais: convencional,
fortemente acoplada e caixa-preta (black box). Na categoria convencional, tambm chamada
de fracamente acoplada, no h integrao entre o SGBD e a aplicao de data mining. Os
dados so lidos, tupla a tupla, do banco de dados utilizando o mecanismo de cursor do SGBD.
Na categoria fortemente acoplada, as operaes intensivas de dados e as operaes que
consomem muito tempo do algoritmo de data mining so inseridas no SGBD. Esta categoria
pode ser subdividida em duas abordagens : SQL aware e Extensions aware. Na abordagem
SQL aware, estas operaes so mapeadas em SQL padro, enquanto que na Extensions
aware as aplicaes de data mining utilizam extenses do banco de dados e extenses do
SQL. A abordagem Extensions aware agrega as seguintes opes:

Funes internas: uma funo interna um pedao de cdigo escrito como UDF (user-
defined function), no IBM DB2/CS, ou como stored procedure, no Oracle PL/SQL. Nesta
abordagem, parte do algoritmo de data mining expressa como uma coleo de UDF ou de
stored procedures, os quais so apropriadamente utilizados em expresses SQL.
Tipos de dados: neste caso, as aplicaes de data mining utilizam alguns tipos de dados
especficos do SGBD para melhorar o tempo de execuo do algoritmo.
Extenses do SQL: o SQL estendido para permitir execues de operaes intensivas de
dados no SGBD na forma de primitivas. Assim, as vantagens das extenses do SQL so
utilizadas pelas aplicaes para realizar suas tarefas de minerao. Uma vantagem da
utilizao de extenses do SQL sobre o SQL padro (SQL aware) que algumas
informaes, como por exemplo sumrios estatsticos, que poderiam ser obtidas atravs de
uma seqncia de comandos SQL, podem ser conseguidas atravs de um nmero menor de
requisies ao SGBD.

Na categoria caixa-preta, os algoritmos de data mining so totalmente inseridos no
SGBD. Neste caso, a aplicao envia ao SGBD uma simples requisio, que normalmente
uma expresso de consulta, solicitando a extrao de determinado conhecimento. A maior
desvantagem desta abordagem devido ao fato que nenhum algoritmo de data mining o
mais adequado para todos os conjuntos de dados. Assim, no h meios do algoritmo
implementado no SGBD ser o melhor em todas as situaes.

3. rvores de deciso

rvores de deciso so modelos estatsticos utilizados em problemas de predio
supervisionada, onde um conjunto de atributos utilizado para predizer o valor de um atributo
de sada (resultado), sendo o mapeamento destas entradas para a sada denominado modelo
preditivo. Os dados usados para estimar um modelo preditivo so um conjunto de casos
(observaes, exemplos) que contm valores das entradas e do resultado. Este modelo
aplicado em novos casos onde o resultado desconhecido. Uma rvore de deciso possui este
nome pois o modelo preditivo pode ser representado numa estrutura semelhante a uma rvore.
A rvore de deciso sempre lida de forma descendente, iniciando-se pelo n raiz. Cada n
interno representa uma quebra baseada nos valores de um atributo de entrada, o qual pode
aparecer em outras quebras na rvore. Os ns terminais de uma rvore so chamados folhas,
que representam o resultado predito. Quando o resultado discreto, o modelo chamado de
rvore de classificao, onde as folhas fornecem a classe predita e a sua probabilidade.
Quando o resultado contnuo, o modelo chamado de rvore de regresso. Neste caso, as
folhas fornecem apenas uma predio de valor do resultado.
O mtodo padro usado no crescimento da rvore de deciso baseado em parties
recursivas, que um algoritmo guloso descendente. Comeando no n raiz, um nmero de
quebras pertinentes a um atributo de entrada examinado. Para entradas contnuas, as
divises so segmentos disjuntos dos valores de entrada, enquanto que para entradas discretas
as divises so subconjuntos disjuntos das categorias de entrada. Vrias estratgias podem ser
utilizadas para determinar o conjunto de pontos de quebra, sendo que um critrio usado para
escolher qual a melhor opo. Ento, os casos no n raiz so divididos de acordo com a
quebra selecionada. A diviso repetida para cada n filho como se ele fosse a raiz de uma
nova rvore. A profundidade da rvore controlada pelo critrio de parada.
Uma rvore de deciso pode crescer at todo n ser puro (rvore mxima), quando ela
ter 100% de preciso nos dados de treinamento. A rvore mxima o resultado de
overfitting, pois ela se adapta variao sistemtica do resultado (sinal) e da variao
aleatria (rudo). Com isso, ela no generaliza bem os novos dados, os quais normalmente
contm muito rudo. Ao contrrio, uma rvore pequena com somente poucos ramos pode
subaproveitar os dados (underfitting) e, conseqentemente, pode falhar na adaptao ao sinal.
Isto resulta numa generalizao pobre. Para evitar estes problemas, necessrio executar a
poda da rvore, que pode ser do tipo descendente ou ascendente. Na poda descendente (top-
down pruning), ou pr-poda (pre pruning), podem ser utilizados os seguintes critrios de
parada: limite na profundidade da rvore, limite na quantidade de fragmentao (por exemplo,
no dividir um n se o nmero de casos ficar abaixo de determinado limite) ou significncia
estatstica (quando o teste chi-quadrado utilizado como critrio de quebra). Na poda
ascendente (bottom-up pruning), tambm chamada de ps-poda (post pruning), uma grande
rvore gerada e ento os ramos so cortados de maneira reversa usando um critrio de
seleo de modelo. A pr-poda normalmente mais rpida, mas consideravelmente menos
eficiente que a ps-poda.

4. Implementao

Existem vrios classificadores que constroem rvore de deciso, sendo que geralmente
eles geram toda a rvore para depois pod- la. Esta fase de poda serve para melhorar a preciso
e prevenir contra o overfitting. Entretanto, a gerao de uma rvore de deciso em duas fases
distintas pode resultar num desperdcio de esforo considerado se uma subrvore inteira
construda na primeira fase for podada na segunda fase. Se durante a fase de construo, antes
de dividir um n, puder ser concludo que ele ser podado na prxima fase, este esforo pode
ser evitado. Desta forma, como as leituras dos dados so repetidas vrias vezes para gerar uma
subrvore, pode-se conseguir redues significativas de I/O e melhorar o desempenho do
processo.
Este trabalho est baseado no PUBLIC, que um classificador tipo rvore de deciso
que integra as duas fases. Se ele parar a expanso de um n somente quando determinado que
o mesmo ser podado na prxima fase, h a garantia de que a rvore gerada exatamente a
mesma do que a obtida pela execuo das duas fases separadamente, uma aps a outra.
Entretanto, determinar, durante a fase de construo, se um n ser podado na outra fase
problemtico porque a rvore ainda est parcialmente gerada. Isto requer que seja estimado
para cada folha desta rvore parcial, baseado nos registros contidos na folha, o menor custo da
subrvore originada por esta folha. Quanto maior este valor, maior a quantidade de poda
possvel na fase de construo da rvore. Apesar do PUBLIC utilizar a entropia para
selecionar o melhor ponto de diviso dos dados, neste trabalho utilizou-se o ndice Gini,
originalmente proposto por BREIMAN et al. [5], como definido no SPRINT. A grande
vantagem deste ndice que seus clculos necessitam somente da distribuio dos valores de
classes em cada partio.
Enquanto que os conhecidos classificadores CART [5] e C4.5 [6] utilizam o
crescimento da rvore em profundidade (depth-first), no PUBLIC o crescimento da rvore
feito em largura (breadth-first) para permitir que a poda possa ser realizada de forma
integrada. Durante esta fase de crescimento, o objetivo em cada n determinar o ponto de
quebra que melhor divide os dados de treinamento pertencentes a esta folha. Para descobrir a
melhor quebra para um n so avaliadas todas as quebras dos atributos, sendo escolhido para
dividir o n o atributo que contm o ponto de quebra com o menor valor de ndice Gini. Neste
trabalho, como so utilizadas somente rvores binrias, um algoritmo guloso aplicado em
atributos discretos para dividir os valores sempre em dois grupos.
Para prevenir o overfitting, o princpio do MDL utilizado para a poda da rvore,
tornando-a menos especfica. A poda baseada no MDL possui as seguintes vantagens em
comparao com outros algoritmos de poda: produz rvores com boa preciso para uma
grande variedade de conjuntos de dados, produz rvores de menor tamanho e
computacionalmente eficiente. O princpio do MDL afirma que a melhor rvore aquela que
pode ser codificada usando o menor nmero de bits [1]. Assim, o desafio para a fase de poda
achar a subrvore de uma rvore que pode ser codificada com o menor nmero de bits. O
custo de codificao de rvore compreende trs custos separados: o custo para codificar a
estrutura de uma rvore, o custo para codificar cada diviso, com o atributo e o respectivo
valor e o custo para codificar as classes dos registros em cada folha da rvore.
A estrutura de uma rvore pode ser codificada usando um simples bit para cada n pois
precisa especificar apenas se um n interno ou uma folha. Como no PUBLIC so
consideradas somente rvores binrias, esta tcnica de codificao para representar rvores
quase tima [1]. No custo para codificar cada diviso, o atributo a ser dividido pode ser
codificado usando log
2
a bits (a o nmero de atributos), enquanto que o valor do atributo
depende se ele contnuo ou discreto. Sendo v o nmero de valores distintos para o atributo a
ser dividido, se o mesmo for contnuo, h v-1 pontos diferente onde o n pode ser dividido, e
log
2
(v-1) bits so necessrios para codificar o ponto de quebra. Se o atributo for discreto,
existem 2
v
subconjuntos diferentes de valores, sendo seu custo de diviso log
2
(2
v
-2). Para um
n interno N, seu custo de diviso ser denotado por C
split
(N). O custo para codificar os
registros em cada folha dado pela Equao 4.1 [3], sendo S um conjunto que contm n
registros pertencentes a uma das k classes e n
i
o nmero de registros com classe i.

+ =
i
k
i
i
k
n k
n
n
n S C
2
log
2
log
2
1
log ) (
2
2 2 2


(4.1)

Depois de formulado o custo de uma rvore, o objetivo calcular o custo mnimo de
uma rvore gerada na fase de construo. Sendo S um conjunto de registros em N e N
1
e N
2

so filhos de N, a subrvore de custo mnimo de raiz N, se N uma folha, ele mesmo. O
custo da subrvore de N com menor valor C(S)+1 ( requerido 1 bit para especificar se o n
uma folha). Se N um n interno da rvore com dois filhos N
1
e N
2
, ento h duas opes
para a subrvore de custo mnimo: somente o n N (isto corresponde a podar os dois filhos do
n N e convert- lo numa folha), ou N junto com seus dois filhos e as subrvores de custo
mnimo de N
1
e N
2
. Destas duas opes, a que possui menor custo ser a subrvore de custo
mnimo para o n N. O custo da primeira opo C(S) +1. Para calcular o custo da segunda
opo, o procedimento chamado recursivamente para processar o custo mnimo da
subrvore de cada um dos filhos. O custo desta segunda opo fica ento
C
split
(N)+1+minCustoN
1
+minCustoN
2
. Neste algoritmo, os filhos de um n N so podados se
o custo para codificar os registros de dados em N menor que o custo de codificao da
subrvore de custo mnimo de N.
Como no PUBLIC a poda deve ser realizada numa rvore parcial, no se pode assumir
que o custo da subrvore de menor valor de uma folha N seja C(S)+1. Isto verdade para uma
rvore j totalmente construda, mas falso para uma rvore parcial pois esta folha pode ainda
ser dividida posteriormente. Conseqentemente, o custo da subrvore de N pode ser um pouco
menor que C(S)+1 como resultado da sua diviso. Se C(S)+1 sobre-estimar o custo da
subrvore de menor valor de N, pode ocorrer o over-pruning, ou seja, ns podem ser podados
durante a fase de construo, mas que no seriam realmente durante a fase de poda. Isto
indesejvel, pois a proposio do PUBLIC que a rvore induzida por este classificador seja
a mesma que a construda por um classificador tradicional. RASTOGI et al. [1] propem que
seja subestimado o custo mnimo da subrvore de cada n folha que ainda pode ser
expandido. Com a subestimao deste custo, os ns podados so um subconjunto daqueles
ns que, de qualquer forma, teriam sido podados durante a fase de poda. Assim, a poda
executada em PUBLIC distingue trs tipos de ns folha: o primeiro tipo de folhas so aquelas
que ainda precisam ser expandidas, o segundo tipo so aquelas que j so resultantes de uma
poda e o terceiro consiste naquelas que no precisam ser expandidas pois so ns puros. No
primeiro tipo, determinado um limite inferior dos custos das subrvores destas folhas. Nos
outros dois tipos, utilizado o custo de C(S)+1. Alm disso, quando os filhos de um n N so
podados, todos os seus descendentes so removidos da fila Q utilizada pelo procedimento de
construo. Desta forma fica garantido que eles no sero expandidos por este procedimento.
O algoritmo de poda do PUBLIC mostrado na Figura 4.1 chamado pelo programa de
construo da rvore periodicamente, ou depois que um certo nmero de ns dividido (este
pode ser um parmetro definido pelo usurio), a partir do n raiz da rvore parcialmente
gerada. Neste trabalho a poda est sendo executada da segunda forma. importante ressaltar
que, depois de concluda a fase de construo, no existir nenhum n folha que ainda precisa
ser expandido.

Procedimento ProcessaCusto&PodaPUBLIC(N N)

1. Se N uma folha ainda a ser expandida
2. Retornar o limite inferior do custo da subrvore de N
3. Se N uma folha j podada ou uma folha no expansvel
2. Retornar C(S)+1
3. minCustoN
1
= ProcessaCusto&PodaPUBLIC(N
1
)
4. minCustoN
2
= ProcessaCusto&PodaPUBLIC(N
2
)
5. minCustoN = min{C(S)+1, C
split
(N)+1+minCustoN
1
+minCustoN
2
}
6. Se minCustoN = C(S)+1
7. Podar ns filhos N
1
e N
2
da rvore
8. Remover ns N
1
e N
2
e todos os seus descendentes da fila Q
9. Marcar o n N como j podado
10. Retornar minCustoN

Figura 4.1 Algoritmo de poda do PUBLIC

Qualquer subrvore de um n N deve ter um custo de pelo menos 1, e este valor unitrio
uma simples, mas conservadora, estimativa para o custo da subrvore de menor valor de um
n folha que ainda poder ser expandido. Dois outros algoritmos foram testados por
RASTOGI et al. [1] para melhorar esta estimativa de custo mnimo das subrvores dos ns
folhas. Estes dois estimadores foram bem melhores mas no o suficiente para promover
ganhos significativos no nmero de ns podados com relao primeira estimativa. Os
resultados indicaram que uma significativa melhora do desempenho pode ser realizada
somente utilizando o custo unitrio.

4.1. Ambiente computacional

Com o intuito de avaliar o desempenho do algoritmo PUBLIC implementado em Java
utilizou-se o Oracle 8i v.8.1.7 (release 3) configurado em um microcomputador Pentium II
350Mhz com 128MB de memria principal e executando o Windows NT Server 4.0, onde foi
instalado o pacote Java SDK 2 v.1.3.0. O acesso da aplicao Java ao banco de dados Oracle
realizado atravs do driver JDBC Thin. Com o objetivo de ter uma referncia para
comparao de desempenho, este algoritmo PUBLIC tambm foi implementado numa
arquitetura fortemente acoplada, onde os procedimentos foram escritos em Oracle PL/SQL,
que uma extenso do SQL, e armazenados dentro do dicionrio de dados do Oracle. A
utilizao da linguagem PL/SQL s foi possvel devido sua capacidade de trabalhar com
SQL dinmico, no possuindo similar em outros bancos de dados. Uma caracterstica
operacional do PL/SQL que, por ser uma linguagem de programao proprietria, sua
utilizao fica restrita aos bancos de dados da Oracle. Uma avaliao de desempenho de uma
abordagem fortemente acoplada com PL/SQL em ambiente Oracle paralelo mostrada em
SOUSA et al. [7]. Observa-se que, em ambas as implementaes (Java e PL/SQL), os
comandos SQL executados so os mesmos.

4.2. Java

Em trs anos, o Java passou de uma linguagem de programao usada no
desenvolvimento de simples programas com interface grfica que podiam ser enviados pela
Web para uma plataforma para desenvolvimento e disponibilizao de aplicaes corporativas
e de Internet. O Java tornou-se muito popular entre os desenvolvedores de aplicao porque
os deixou mais produtivos e por ser uma linguagem moderna, robusta e orientada a objeto.
Alm disso, segundo ORACLE [8], a popularidade sem precedentes do Java decorrente de
trs benefcios:

1. O desenvolvimento de aplicaes mais simples: o Java oferece caractersticas como o
suporte para rede e para programao concorrente (multithreading), que tornam o
desenvolvimento de aplicaes mais simples que a maioria dos seus predecessores;
2. As aplicaes so independentes de plataforma: o mesmo cdigo binrio Java pode ser
executado em qualquer plataforma que suporta uma mquina virtual Java, incluindo
mainframes;
3. As aplicaes podem ser desenvolvidas como componentes: o Java oferece um modelo de
componentes, o JavaBeans, que permite aos desenvolvedores definir e encapsular
componentes que podem ser montados com componentes escritos por outros
desenvolvedores.

Atravs de um programa Java, h duas opes para acessar banco de dados: o JDBC
e/ou o SQLJ, onde ambos so APIs (tambm denominados drivers, pacotes). O JDBC (Java
Database Connectivity) um padro independente de fabricante, desenvolvido pela empresa
Javasoft, o qual foi modelado com base no ODBC, desenvolvido pela Microsoft. O JDBC
atualmente o mtodo "de facto" para acessar banco de dados com o Java. Muitas empresas,
entre as quais Oracle, Intersolv e Weblogic, desenvolveram tipos de drivers JDBC. O SQLJ
um padro para embutir SQL diretamente em programas Java. Ele um produto de uma
juno de esforos da Oracle, IBM, Sybase, Tandem e Informix. Apesar do JDBC e do SQLJ
serem complementares, o JDBC necessrio quando se utiliza SQL dinmico, que o caso
desta aplicao, enquanto que o SQLJ utilizado para SQL esttico.
A Oracle oferece dois drivers JDBC para o lado cliente, o Thin e o OCI, e um driver
JDBC para servidor (dentro do Oracle JServer). O Thin um driver tipo 4, escrito totalmente
em Java, enquanto o OCI um driver tipo 2, que um nvel implementado no topo do Oracle
Call Interface (biblioteca C para acessar o SGBD Oracle). O driver JDBC para servidor
executado no mesmo espao de endereamento e processo do banco de dados, acessando
diretamente SQL e PL/SQL.

5. Estudo de casos

Para avaliar a implementao realizada neste trabalho, foram conduzidos experimentos
utilizando as seguintes bases de dados: base de dados real de domnio pblico, base de dados
de meteorologia e base de dados de companhia de seguro. Estas duas ltimas bases, que
tambm contm dados reais, foram consideradas pois possuem uma dimensionalidade
adequada aos testes pretendidos, uma vez que as bases de dados reais de domnio pblico
geralmente so pequenas. Estes experimentos utilizaram o mtodo denominado holdout [9]
para a estimativa de taxa de erro, onde uma parte dos dados reservada para treinamento e o
restante utilizado para teste. Na prtica, foi selecionado aleatoriamente 30% dos dados para
teste, ficando os 70% restantes para treinamento.

Base de dado real de domnio pblico: foi utilizada a base de dados denominada Adult,
uma das maiores do UCI Machine Learning Repository [10], com 48.842 registros. Esta
base possui 8 atributos discretos e 6 atributos contnuos, com 2 classes de sada. Alm
disso, tambm possui valores ausentes.
Base de dados meteorolgicos: so dados adquiridos no Aeroporto do Rio de Janeiro, cuja
finalidade a previso de nevoeiro. Os arquivos texto gerados, um para cada ano, com o
registro da observao meteorolgica horria de superfcie com informaes de 36
atributos coletados diariamente foram concatenados numa nica base de dados,
totalizando 28.596 registros. COSTA [11] realizou uma limpeza nestes dados devido ao
grande nmero de inconsistncias e rudos, o que resultou num conjunto com 18 atributos
de entrada e 1 atributo de sada, para um total de 26.492 registros.
Base de dados de companhia de seguro: estes dados foram extrados de um data
warehouse que coleta e analisa dados de uma companhia privada de seguro de vida. Os
arquivos disponibilizados pela companhia descrevem o relacionamento entre clientes,
contratos de seguro e componentes de tarifa, sendo que a identificao de alguns atributos,
bem como a explicao sobre o contedo dos mesmos, esto protegidas por questes de
sigilo. As tabelas inicialmente armazenadas no servidor paralelo Oracle do NACAD/UFRJ
foram agrupadas numa nica tabela, com 80 atributos e 147.478 registros. Aps a limpeza
dos dados realizada por COSTA [11], o conjunto resultante ficou com 130.143 registros e
64 atributos, assim distribudos: 9 atributos com informaes de clientes, 33 atributos de
caractersticas de famlia, 13 atributos de contratos de seguro, 15 atributos de
componentes de tarifa e 1 atributo contendo a classificao do cliente.

5.1. Resultados

O desempenho da implementao em Java e o erro calculado para as bases de dados
avaliadas esto mostrados na Tabela 5.1. Nestes resultados, como as rvores geradas so
binrias, o tamanho de cada rvore (nmero de ns) a medida da sua complexidade.

Base de dados
Tamanho
da rvore
(ns)
Tempo de
execuo (s)
Java
Erro
(%)
Adult 105 717 18,32
Meteorologia 183 379 36,75
Seguro 267 39.006 30,86

Tabela 5.1 Resultados da implementao em Java

Na Tabela 5.2 compara-se o desempenho do algoritmo PUBLIC implementado em Java
e em PL/SQL.

Base de dados
Tempo de
execuo (s)
Java
Tempo de
execuo (s)
PL/SQL
Adult 717 797
Meteorologia 379 398
Seguro 39.006 38.413

Tabela 5.2 Comparao entre Java e PL/SQL

6. Concluses

Enquanto a maioria das pesquisas envolvendo a integrao de SGBD com data mining
direciona-se a melhorar a escalabilidade e o desempenho das tcnicas de anlise de dados,
este trabalho mostrou que completamente vivel a execuo de data mining em ambiente de
microinformtica com Java. A caracterstica de poda integrada do algoritmo PUBLIC foi
fundamental para o sucesso nas execues dos experimentos pois, devido capacidade de
processamento do microcomputador, invivel aguardar o final da construo da rvore para
grandes bases de dados no caso de ps-poda.
Um ponto que ressaltou nos experimentos realizados foi o desempenho semelhante
entre o Java e o PL/SQL. No incio deste trabalho alguns desenvolvedores experientes
afirmaram que, neste tipo de aplicao, o Java seria muito mais lento que o PL/SQL. Este fato
mostra que a utilizao do Java deve ser considerada em solues de data mining integradas
com SGBD pois tambm garante aplicao uma grande portabilidade, uma vez que os
principais bancos de dados comerciais j interagem com o Java.
Os resultados desta implementao abrem possibilidades para pesquisas na rea de data
mining incremental utilizando este tipo de plataforma, cujo conjunto aproximar-se-ia das
necessidades das corporaes, onde a repetio de todo o processo de minerao para uma
determinada base de dados devido incluso de novos registros computacionalmente
onerosa.

Referncias bibliogrficas

[1] RASTOGI, R., SHIM, K., PUBLIC: A Decision Tree Classifier that Integrates
Building and Pruning. In: Proceedings of the 24
th
International Conference
on Very Large Databases (VLDB), New York, USA, 1998. http://www.bell-
labs.com/user/rastogi/pub.html.
[2] SHAFER, J., AGRAWAL, R., MEHTA, M., SPRINT: A Scalable Parallel
Classifier for Data Mining. In: Proceedings of the 22
nd
International
Conference on Very Large Databases (VLDB), Mumbai (Bombay), India,
1996. http://www.almaden.ibm.com/cs/quest/PUBS.html.
[3] MEHTA, M., RISSANEN, J., AGRAWAL, R., MDL-based Decision Tree
Pruning. In: Proceedings of the International Conference on Knowledge
Discovery in Databases and Data Mining (KDD), Montreal, Canada, 1995.
http://www.almaden.ibm.com/cs/quest/PUBS.html.

[4] BEZERRA, E., MATTOSO, M., XEXO, G., An analysis of the integration
between data mining applications and database systems, In: Proceedings of
the 2
nd
International Conference on Data Mining (Data Mining II), pp. 151-
160, Cambridge, UK, 2000.
[5] BREIMAN, L., FRIEDMAN, J. H., OLSHEN, R. A., et al., Classification and
Regression Trees, First CRC Press reprint, Boca Raton, USA, Chapman &
Hall / CRC, 1998.
[6] QUINLAN, J. R., C4.5: Programs for Machine Learning, 7 ed., San Mateo,
USA, Morgan Kaufmann Publishers, 1993.
[7] SOUSA, M. S. R., MATTOSO, M., EBECKEN, N. F. F., Mining a large
database with a parallel database server, IDA Intelligent Data Analysis,
n.3 (1999), pp. 437-451, Oct.1999.
[8] ORACLE CORPORATION, Developing Stored Procedures In Java, Oracle
Technical White Paper, Redwood Shores, USA, 1999.
[9] WITTEN, I. H., FRANK, E., Data Mining Practical Machine Learning Tools
and Techniques with Java Implementations, 1
st
ed., San Francisco, USA,
Morgan Kaufmann Publishers, 2000.
[10] UCI MACHINE LEARNING REPOSITORY. http:///www.ics.uci.edu/~mlearn/
MLRepository.html.
[11] COSTA, M. C. A, Data Mining em Computadores de Alto Desempenho
Utilizando-se Redes Neurais, Tese de D.Sc., COPPE/UFRJ, Rio de Janeiro,
1999.

Você também pode gostar