Documente Academic
Documente Profesional
Documente Cultură
APROVADA POR:
_______________________________________
Prof. Marta L. Q. Mattoso, D. Sc.
(Presidente)
_______________________________________
Prof. Nelson Francisco Favilla Ebecken, D. Sc.
_______________________________________
Prof. Maria Luiza Machado Campos, Ph. D.
_______________________________________
Prof. Alex Alves Freitas, Ph. D.
i
SOUSA, MAURO SÉRGIO RIBEIRO
Mineração de Dados: Uma
implementação fortemente acoplada a um
sistema gerenciador de banco de dados
paralelo [Rio de Janeiro] 1998
VIII, 67 p., 29, 7 cm (COPPE/UFRJ,
M.Sc., Engenharia de Sistemas e
Computação, 1998)
Tese – Universidade Federal do Rio
de Janeiro, COPPE
1. Mineração de Dados.
2. Paralelismo em SGBDs.
I. COPPE/UFRJ II.Título (série)
ii
Resumo da tese apresentada à COPPE / UFRJ como parte dos requisitos necessários
para a obtenção do grau de Mestre em Ciências (M. Sc.).
MINERAÇÃO DE DADOS:
UMA IMPLEMENTAÇÃO FORTEMENTE ACOPLADA A UM SISTEMA
GERENCIADOR DE BANCO DE DADOS PARALELO
iii
Abstract of Thesis presented to COPPE/UFRJ as a partial fulfillment of the
requirements for the degree of Master of Science (M. Sc.).
iv
À minha filha, Júlia, nascida no decorrer do mestrado, e à minha esposa, Eliane,
que, com paciência e muita compreensão, muito me incentivou a cumprir mais esta
etapa de minha vida.
Aos meus pais, Tércio e Wilma, pelo apoio e por terem me oferecido uma boa
educação, muitas vezes fazendo sacrifícios, mas nunca encarando como uma obrigação,
mas sim como uma maneira de dar um futuro melhor para mim e para meus irmãos.
v
AGRADECIMENTOS
vi
ÍNDICE
2.1.CLASSIFICAÇÃO .............................................................................................................. 5
2.1.1.Árvores de Decisão ................................................................................................. 5
2.1.2.Redes Neurais ......................................................................................................... 6
2.2.REGRAS DE ASSOCIAÇÃO................................................................................................. 6
2.3.AGRUPAMENTO (CLUSTERING) ........................................................................................ 7
2.4.PADRÕES SEQÜENCIAIS ................................................................................................... 7
2.5.VISÃO GERAL DE SISTEMAS DE MINERAÇÃO DE DADOS.................................................... 8
2.5.1.Quest ...................................................................................................................... 8
2.5.2.DBMiner................................................................................................................. 8
2.5.3.SKICAT .................................................................................................................. 9
2.5.4.Outros Trabalhos .................................................................................................... 9
vii
CAPÍTULO 5.......... - IMPLEMENTAÇÃO DE UM ALGORITMO DE MINERAÇÃO DE
DADOS EM UM SGBD PARALELO............................................. 32
6.1.ESTUDO DE CASO........................................................................................................... 50
6.2.CRESCIMENTO DA ÁRVORE ............................................................................................ 51
6.3.TÉCNICAS DE FRAGMENTAÇÃO ...................................................................................... 54
6.4.PODA ............................................................................................................................ 55
6.5.EXTRAÇÃO DE REGRAS.................................................................................................. 56
7.CONCLUSÕES.................................................................................................................. 59
viii
CAPÍTULO 1 - Introdução
1
SP2), utilizando tanto arquivos isolados quanto a família de produtos de banco de dados
DB2. Neste caso, o SGBD também é acessado de um modo fracamente acoplado.
Mostrando a importância da utilização de bancos de dados em mineração de dados,
Freitas [20, 21, 23] apresentou uma série de primitivas para indução de regra (IR), após
a análise de vários algoritmos de Knowledge Discovery in Databases (KDD) do
paradigma de IR. As primitivas podem ser traduzidas em tipos de comandos SQL que
oferecem um potencial grau de paralelismo em SGBDs paralelos.
Um requisito de mineração de dados é a eficiência e poder de expansão de seus
algoritmos, o que torna ainda mais relevante o uso de paralelismo para oferecer uma
maneira de processar tarefas longas em tempo hábil. Neste contexto, sistemas de banco
de dados paralelos desempenham um papel importante, porque eles podem oferecer,
entre outras vantagens, implementação de paralelismo transparente e simples para
processar grandes conjuntos de dados. É importante perceber que, quando mencionamos
o uso de grandes quantidades de informação em mineração de dados, não estamos nos
referindo aos usuais volumes dos SGBDSs existentes, os quais podem alcançar mais de
um terabyte de dados. Métodos de mineração de dados normalmente varrem
repetidamente o conjunto de dados completo, sendo a mineração em tais bases de dados
ainda não citada na literatura corrente. Para estes métodos, um grande número de
atributos (algumas dezenas) e um número razoável de casos (algumas centenas de
milhares) representam um problema suficientemente complexo a ser resolvido nos dias
de hoje.
O problema que este trabalho visa abordar é representado pela necessidade do
manuseio de uma quantidade cada vez maior de informações durante processos de
mineração de dados e pela incapacidade de grande parte das aplicações atualmente
existentes em fazê-lo. Devido às características dos processos de mineração, o uso de
paralelismo é um outro fator importante a ser considerado, uma vez que um grande
volume de dados é envolvido e o término do processo em um tempo hábil é
naturalmente importante para o seu sucesso. Algumas soluções baseadas em arquivos
isolados foram propostas, mas a utilização de um SGBD representa uma solução
natural, uma vez que SGBDs vêm sendo utilizados com sucesso no gerenciamento do
negócio e, atualmente, podem armazenar conhecimento valioso não conhecido. Nosso
trabalho contribui com uma solução que integra um algoritmo de aprendizado de
2
máquina, paralelismo e uma utilização fortemente acoplada de um SGBD [45, 46, 47].
Nós ressaltamos as vantagens de uma forte integração de técnicas de mineração de
dados a sistemas de banco de dados, endereçando problemas de desempenho com
processamento paralelo e fragmentação de dados.
Visando validar nossos experimentos, utilizamos o Oracle Parallel Server
(OPS), configurado em um sistema RISC/6000 SP2 da IBM com 4 (quatro) nós. Um
conjunto de procedimentos armazenados escritos em PL/SQL foi construído, sendo
estes procedimentos armazenados dentro do dicionário de dados do Oracle, oferecendo
alto desempenho e integração nativa com o banco de dados. Os experimentos foram
validados através de uma aplicação genérica representando diversas situações adversas,
contendo um volume de tuplas e atributos que caracterizam uma aplicação complexa.
Esta tese foi organizada da seguinte forma. No capítulo 2, apresentamos as
principais técnicas utilizadas em mineração de dados e analisamos alguns sistemas
existentes. No capítulo 3, discutimos possibilidades de gerência de dados a serem
utilizados no processo de mineração. Em particular, analisamos a adequação do
processamento paralelo em SGBDs ao processo de mineração de dados e apresentamos
a funcionalidade oferecida pelo OPS. O capítulo 4 apresenta a combinação de técnicas
escolhidas para o desenvolvimento de mineração de dados fortemente acoplada a um
SGBD paralelo. A apresentação das técnicas conta com uma discussão quanto às
possibilidades de implementação via SGBDs. O capítulo 5 discute as soluções adotadas
na implementação das técnicas descritas no capítulo 4 junto ao servidor paralelo da
Oracle. A validação da implementação é realizada através de um estudo de caso sobre
uma aplicação complexa descrita no capítulo 6, onde também são apresentados os
resultados de desempenho obtidos. Finalmente, no capítulo 7, apresentamos nossas
conclusões e futuros trabalhos a serem realizados.
3
CAPÍTULO 2 - Técnicas de Mineração de Dados
Interpretação
Avaliação
Mineração de
Dados
Transformação
Pré-processamento conhecimento
padrões
Seleção dados
dados transformados
pré-processados
alvo
dados
4
2.1. Classificação
Classificação é uma tarefa de mineração de dados bastante conhecida que vem
sendo estudada nas comunidades de aprendizado de máquina e estatística por um longo
tempo [10,12,31,34,42]. Seu objetivo é classificar casos em diferentes classes, baseado
em propriedades (atributos) comuns entre um conjunto de objetos em uma base de
dados. O modelo de classificação construído é utilizado para predizer classes de novos
casos que serão incluídos em um banco de dados. Aplicações adequadas para
classificação incluem diagnóstico médico, avaliação de risco de crédito, detecção de
fraude e propaganda direcionada.
Entre os algoritmos de classificação, existem dois métodos amplamente
utilizados: árvores de decisão e redes neurais.
5
O principal problema relativo a árvores é que elas precisam de uma considerável
quantidade de dados para desvendar estruturas complexas. Por outro lado, árvores
podem ser construídas de forma consideravelmente mais rápida do que alguns métodos
alternativos de classificação, produzindo resultados com precisão similar [37].
Existem várias implementações utilizando algoritmos de aprendizado baseados
em árvores de decisão, tais como o CART [12], ID3 e seu sucessor C4.5 [42] e o
SPRINT (implementação paralela do SLIQ) [44, 34].
80% das transações que negociam fraldas e leite também lidam com mamadeiras,
6
t[k] = 1 se t comprou o item ik e t[k] = 0 caso contrário. É interessante perceber que,
neste momento, não estamos preocupados com quantidades, isto é, quantos itens são
comprados em cada transação. Agora seja X um conjunto de itens tal que X ⊂ I.
Podemos dizer que uma transação t satisfaz X se, para todos os itens em X, t[k] = 1.
Uma regra de associação é uma implicação da forma X ⇒Y, onde X ⊂ I, Y ⊂ I,
e X ∩Y = ∅. Se c% das transações em T que contêm X também contêm Y, então c%
representa o fator de confiabilidade da regra. A regra X ⇒Y tem o suporte s% se s% das
transações em T contêm X ∪ Y.
O problema de mineração de regras de associação pode ser decomposto em duas
partes:
• Gerar todas as combinações de itens que possuam um suporte de transações
acima de um limite mínimo informado. Essas combinações de itens com
suporte acima do mínimo são chamadas de conjuntos grandes. Esta fase é
considerada a tarefa que consome mais tempo do algoritmo.
• Para todos os conjuntos grandes, gerar regras de associação para o banco de
dados de transação, o que é feito de uma maneira bastante direta.
7
definido, isto é, a porcentagem de seqüências de dados que contêm o padrão está acima
de um limite fornecido. Consequentemente, algoritmos de padrões seqüenciais são úteis
para descobrir tendências nos dados, tais como:
O número de revistas de esporte vendidas a clientes com receita entre 20,000 e
30,000 morando na cidade 2 está crescendo.
2.5.1. Quest
O sistema de mineração de dados Quest [6] vem endereçando o desenvolvimento
de algoritmos rápidos e escaláveis. Os algoritmos implementados incluem regras de
associação, generalização, padrões seqüenciais, agrupamento baseado em séries
temporais e classificação. Os algoritmos do Quest foram paralelizados utilizando
máquinas multiprocessadas da IBM (SP2). Eles têm trabalhado com a implementação
paralela da mineração de regras de associação (APRIORI [8]) e com o algoritmo de
classificação SPRINT [44], onde vários processadores são capazes de trabalhar juntos
para construir um modelo de classificação, particularmente uma árvore de decisão.
Estes algoritmos utilizam tanto arquivos isolados quanto a família de produtos DB2,
mas bancos de dados são acessados de um modo fracamente acoplado usando SQL
dinâmico. O sistema Quest é comercialmente disponível através do Intelligent Miner da
IBM [49].
2.5.2. DBMiner
O DBMiner [26,27] integra mineração de dados com sistemas de bancos de
dados relacionais, oferecendo uma interface para a descoberta de conhecimento baseada
em SQLs para generalização de dados baseada em operações relacionais, facilitando sua
integração com SGBDs relacionais. O DBMiner foi projetado com ênfase na
simplicidade e extensibilidade. Seus módulos incluem caracterização e associação de
múltiplos níveis, descoberta de regras discriminantes, classificação e predição.
8
2.5.3. SKICAT
O sistema SKICAT [17] (Sky Image Cataloging Analysis Tool) foi
implementado para processar imagens do Second Palomar Observatory Sky Survey
(POSS-II). Ele utiliza uma variedade de técnicas de classificação supervisionada para
automatizar a redução e análise de grandes conjuntos de dados de astronomia,
integrando métodos para processamento de imagens, classificação de dados e
gerenciamento de bancos de dados. Desta forma, o propósito do SKICAT é permitir e
maximizar a extração de informação significativa de um grande banco de dados de uma
maneira eficiente e em tempo hábil. Alguns algoritmos de aprendizado (GID3*, O-Btree
e RULER) são usados para produzir árvores de decisão e regras de classificação a partir
de dados de treinamento consistindo de objetos classificados na astronomia.
Freitas [20, 21, 23] apresentou uma série de primitivas para indução de regras,
após analisar vários algoritmos de KDD do paradigma de IR. Operações principais do
procedimento de avaliação de regras candidatas são descritas considerando
características de desempenho e paralelização. As primitivas podem ser traduzidas em
cláusulas GROUP BY / ORDER BY usuais em comandos SQL, os quais
freqüentemente oferecem um alto grau de paralelismo em SGBDs paralelos.
Holshemeir et al. [28] implementaram uma arquitetura de dois níveis para
descobrir regras. Um SGBD (Monet Database Server, desenvolvido em CWI) foi
utilizado nos experimentos, sendo o algoritmo ID3 utilizado como ponto de partida. Os
resultados são apresentados usando um estudo de caso com 100k casos (2.6Mb
comprimidos). Na execução paralela, uma relação de 25k foi utilizada com 4 nós.
9
CAPÍTULO 3 - Paralelismo na Gerência dos
Dados de Mineração
10
Implementações usando arquivos isolados oferecem algumas vantagens relacionadas a
resultados de desempenho.
Um SGBD paralelo deve ser projetado para tirar proveito da arquitetura no qual
o mesmo se baseia, visando o processamento paralelo eficiente das consultas típicas,
evitando comunicação desnecessária entre processadores. SGBDs paralelos baseados
em arquiteturas de memória distribuída freqüentemente implementam envio de funções.
Isto significa que tabelas e outros conjuntos de dados são estaticamente particionados e
operações baseadas nestas partições são efetuadas pelos nós que as possuem, em
11
resposta a uma mensagem enviada pelo processo coordenador. A principal vantagem do
envio de funções é sua escalabilidade. Além disso, a contenção na rede compartilhada é
minimizada porque somente fragmentos de planos de execução e respostas filtradas são
transmitidas. Por outro lado, o envio de funções em arquiteturas de memória distribuída
apresenta o problema de desbalanceamento de carga, uma vez que uma subutilização de
recursos pode ocorrer quando os dados não estão distribuídos uniformemente entre os
nós, ou quando os dados relevantes a uma consulta estão localizados em apenas um
subconjunto dos nós existentes.
Uma abordagem que pode ser usada em arquiteturas de discos compartilhados e
também de memória distribuída é o envio de dados, no qual qualquer processo pode
requisitar qualquer bloco de disco. Vários processos cooperantes executando em
paralelo oferecem paralelismo de UCP e E/S. Em sistemas de memória distribuída, as
mensagens podem ser usadas para enviar blocos do banco de dados para outros nós a
partir da rede. A principal vantagem do envio de dados é o balanceamento de carga
automático, uma vez que os dados podem ser divididos entre processos escravos durante
a execução da consulta. Além disso, o dicionário de dados está disponível através do
cluster, de tal forma que qualquer nó pode checar a sintaxe do SQL e otimizar
comandos. Uma desvantagem é o acesso remoto a discos potencialmente ineficiente em
máquinas de memória distribuída. Além disso, o alto tráfego de dados na rede pode
comprometer o desempenho do sistema, principalmente a medida que o número de
processadores aumenta.
Idealmente, a melhor abordagem seria uma que eliminasse as desvantagens do
envio de funções e de dados, usando as melhores características disponíveis, com o
mínimo de sobrecarga possível.
12
explicado por diversos motivos, tais como a importância de tais tarefas para o uso
comercial, além de sua natural escalabilidade.
Uma variedade de algoritmos de mineração foram construídos para serem
executados em paralelo, tirando proveito de arquiteturas paralelas utilizando rotinas de
programação específicas. Como uma solução alternativa, sistemas de banco de dados
paralelos podem oferecer paralelismo de uma forma transparente para a aplicação.
Existem várias vantagens associadas à segunda abordagem:
• A implementação se torna mais simples.
Não existe a necessidade de utilizar rotinas paralelas disponíveis em algumas
linguagens de programação. O SGBD é por si só responsável por paralelizar as
consultas que por ele são processadas. Devemos estruturar nossas consultas de tal
forma que elas possam explorar o máximo possível do paralelismo oferecido por
um SGBD em particular.
• O SGBD é capaz de escolher entre planos de execução serial e paralelo
transparentemente para a aplicação.
Dependendo do algoritmo de mineração de dados e da técnica utilizada, fica claro
que o paralelismo é mais útil nas fases iniciais e intermediárias do processo. Na
construção de árvores de decisão, por exemplo, o conjunto de treinamento é
recursivamente subdividido e processado. Desta forma, assumindo que apenas
paralelismo de dados é explorado, a partir de algum ponto do processamento, o
paralelismo pode não ser útil porque a sobrecarga imposta pela comunicação entre
processos coordenador e escravo passa a representar o tempo dominante da
consulta, uma vez que poucos exemplos de treinamento estão sendo pesquisados.
Baseados em estatísticas sobre os dados, o SGBD pode avaliar o custo de planos de
consulta seriais e paralelos e decidir qual é o mais vantajoso, dependendo também
da quantidade de recursos de máquina disponíveis.
• Oportunidade para fragmentação de dados.
A fragmentação da base de dados [35,40] oferece várias vantagens relacionadas ao
reduzido número de acessos a páginas necessários para a leitura dos dados. Dados
irrelevantes para a consulta podem ser simplesmente ignorados dependendo do
filtro especificado nos comandos SQL. Além disso, alguns SGBDs podem
processar cada partição em paralelo, utilizando planos de execução diferentes
13
quando aplicável. Em geral, SGBDs oferecem o gerenciamento automático de tal
funcionalidade.
14
cluster podem ter acesso concorrente de escrita e leitura aos dados localizados nos
discos compartilhados.
Devido ao fato que o OPS é um ambiente projetado para trabalhar com discos
compartilhados, uma parte essencial para seu funcionamento em uma arquitetura MPP é
o software que gerencia o bloqueio distribuído entre os nós (Distributed Lock Manager
- DLM). O DLM permite que vários recursos sejam compartilhados por múltiplos nós,
sincronizando acessos a blocos de disco entre os vários componentes do cluster.
15
como nested loops e hash joins. No método nested loop todas as tuplas de uma
tabela são lidas e o SGBD tenta encontrar o valor correspondente em uma outra
tabela utilizando uma varredura de índice. Agrupamentos (são implementados
utilizando uma operação de ordenação) e ordenações, incluindo o uso do operador
DISTINCT, também podem ser resolvidos em paralelo.
• Amostragem, construção de histogramas e coleta de estatísticas.
Estes são métodos para coletar estatísticas que serão utilizadas pelo otimizador para
encontrar o melhor plano de execução para uma consulta. Como para tabelas com
um grande volume de dados a tarefa de gerar estatísticas de maneira exata consome
bastante tempo, o servidor Oracle oferece a possibilidade de amostragem de dados,
analisando apenas uma parte das informações. Histogramas são estruturas
particularmente úteis para mapear a distribuição dos valores de atributos, visando
oferecer ao otimizador melhor embasamento para decidir entre usar ou não índices.
• Inclusão, atualização e exclusão.
Estas operações pode ser paralelizadas se elas envolvem qualquer comando
SELECT que pode ser resolvido em paralelo. Por exemplo, podemos inserir
diretamente em uma tabela o resultado de uma consulta.
• CREATE TABLE AS SELECT em paralelo.
Esta construção faz com que seja possível criar tabelas de agregação em paralelo.
Isto é particularmente útil em grandes ambientes de data warehousing. Através da
especificação de operação “unrecoverable”, a sobrecarga imposta pelo
gerenciamento de integridade de uma transação durante um comando CREATE
TABLE AS SELECT pode ser removido.
• Fast full index scan.
Um fast full index scan é efetuado quando todas as colunas usadas em uma consulta
estão presentes em um índice, de tal forma que apenas o índice é utilizado, sem a
necessidade de procurar por dados da tabela. Esta operação funciona da mesma
forma que um full table scan, com a diferença que esta operação lida com menos
dados, uma vez que um índice representa uma estrutura mais compacta (somente
algumas colunas estão incluídas).
16
3.4.2. Consultas Paralelas e a Regra 9/13
O Oracle Parallel Server utiliza uma regra chamada 9/13 ao paralelizar
consultas. Em um primeiro passo, o Oracle cria um processo coordenador (PC), o qual é
responsável pela criação de processos escravos (PE) e distribuição dinâmica do trabalho
entre eles, balanceando a carga e retornando o resultado para o cliente.
tamanho partição =
número de blo cos da tabela
(1)
número de processos escravos
Fragmentos de
Planos de Execução PE001
PE002 Processos
Processo
Coordenador PE003 Escravos
PE004
O PC atribui a cada escravo uma partição 9/13 para que o mesmo trabalhe.
Assim que cada escravo termina sua tarefa, o PC atribui as partições 3/13 utilizando um
critério first-come, first-serve. O primeiro escravo a terminar de processar sua partição
9/13 recebe uma partição 3/13 para trabalhar até que todas as partições 3/13 tenham sido
exploradas. Quando isto acontece, o PC passa a distribuir as partições 1/13 também da
mesma forma. Esta técnica procura minimizar os efeitos de um distribuição desigual dos
17
dados através das áreas de disco, sendo o processo coordenador da consulta responsável
pela balanceamento dinâmico da carga entre todos os processos escravos. Para maiores
informações, uma descrição mais detalhada sobre o Oracle Parallel Server pode ser
encontrada em [24, 32, 41].
18
processadores disponíveis e quantidade de discos utilizados para armazenar os dados
correspondentes.
n1 n2 n3 n4
19
CAPÍTULO 4 - Mineração de Dados Utilizando Árvores
de Decisão
20
4.1. Crescimento da Árvore
O algoritmo constrói a árvore a partir dos dados de treinamento, recursivamente
subdividindo o conjunto de dados até que cada partição consista de nós “puros”, isto é,
cada nó folha represente apenas uma única classe, ou algum outro critério de parada seja
satisfeito, por exemplo um número mínimo de itens definido pelo usuário é alcançado.
O algoritmo de árvore de decisão gera um modelo de classificação na forma de
uma árvore, uma estrutura como a da Figura 5, constituída por:
a) um nó folha ⇒ indica uma classificação.
b) um nó interno (de decisão) ⇒ especifica algum teste a ser efetuado em um único
atributo, com duas ou mais sub-árvores representando cada possível saída do teste.
wage_increase
21
idade
<= 20 > 20
• Atributos Discretos. Existem várias abordagens que lidam com este tipo de atributo.
Podemos criar uma sub-árvore para cada valor distinto, duas sub-árvores e
segmentar os valores em dois grupos, criar quantas sub-árvores forem necessárias
ou, se os valores puderem ser ordenados, tratar um atributo discreto como um
contínuo. Quando existirem muitos valores distintos, um algoritmo guloso é
normalmente aplicado para dividir os valores em grupos.
not in
in {economic,
{economic,
medium}
medium} economic compact medium large
car type
car type
in
in {economic, in {medium} <= medium > medium
large} {compact}
22
os dados estão fisicamente armazenados de maneira ordenada, não existe a garantia que
os mesmos serão lidos em sua ordem física. Consequentemente, uma ordenação
adicional é realizada antes de cada fase, tirando proveito dos recursos de máquinas
paralelas. Este fato certamente degrada o desempenho do algoritmo, mas garante que a
informação será processada corretamente.
Construir_Arvore_Decisao (DadosTreinamentoT)
INICIO
Subdividir (T);
FIM;
Subdividir (Dados S)
INICIO
SE todos os elementos em S pertencem à mesma classe ENTAO
FIM;
SENAO
PARA CADA atributo A FAÇA
Avaliar quebra no atributo A;
FIM-PARA
Usar melhor quebra encontrada para subdividir S em S1, ..., Sn;
Subdividir (S1);
...
Subdividir (Sn);
FIM-SE
FIM;
23
usado como critério de quebra. O teste que implementamos é chamado de índice gini.
Para um conjunto de dados T contendo exemplos de n classes, gini(T) é definido como
gini (T )= 1 − ∑ p j
2
(2 )
onde pj é a freqüência relativa da classe j em T.
Quando uma quebra divide T em dois subconjuntos, T1 and T2, com n1 e n2
exemplos respectivamente, o novo índice dos dados divididos ginisplit(T) é dado por:
n1 n
ginisplit (T ) = gini(T1 )+ 2 gini(T2 ) (3).
n n
24
SELECT idade, classe, COUNT(*) 0 1 0 1
FROM relacao_mineracao
GROUP BY idade, classe 0 0 9 8
Cabaixo Cacima
idade classe cont.
0 1 0 1
18 0 5
5 2 4 6
18 1 2
20 1 4
21 0 1 0 1 0 1
24 0 3
24 1 2 5 6 4 2
0 1 0 1
6 6 3 2
25
produzindo estruturas menos complexas e, consequentemente, de mais fácil
entendimento.
Existem três abordagens que podem ser utilizadas:
• Pré-poda (pre-pruning)
Ao mesmo tempo em que o algoritmo está construindo a árvore, ele testa se um
critério de parada é satisfeito. A abordagem de pré-poda é mais rápida mas menos
confiável [12].
• Pós-poda (post-pruning ou crescimento e poda)
Na primeira fase, crescemos a árvore até que cada folha represente casos
pertencentes à mesma classe. Esta abordagem é mais lenta, mas mais confiável.
• Pré-poda e pós-poda
Esta estratégia combina as duas abordagens, na maioria das vezes implementando
um critério de pré-poda não agressivo, mas agressivo o suficiente para diminuir o
tempo de UCP necessário para processar os dados de treinamento.
26
utilizando casos em todos os outros blocos e testada com o bloco reservado. Esta técnica
oferece a desvantagem de necessitar que n árvore sejam construídas, o que obviamente é
uma tarefa que consome um tempo considerável, principalmente quando um grande
volume de dados é utilizado.
A outra família para predição de taxas de erro usa apenas os dados de
treinamento a partir do qual a árvore foi construída. Um exemplo de tais técnicas é a
pessimistic error rate [42].
Como estamos interessados principalmente em mineração de dados em grandes
volumes de dados, podemos assumir que possuímos dados em abundância. Desta forma,
decidimos usar a primeira família de técnicas, aleatoriamente dividindo os dados em
duas partes, de tal maneira que ambas possuam a mesma distribuição de classes.
A estratégia implementada para podar a árvore de decisão é a mais simples que
poderia ser utilizada. Começamos de baixo na árvore, examinando cada sub-árvore dos
nós de decisão. Nós consideramos a substituição desta sub-árvore por uma folha
representando o escopo corrente ou pelo ramo mais utilizado. A alternativa que
conduzir a uma previsão de taxa de erro menor guiará a poda da árvore [42]. Este
processo é apresentado na Figura 9.
0 1 0 1
80 exemplos
200 exemplos 338 exemplos
35 exemplos
23 exemplos
Figura 9: Fase de poda. A raiz da sub-árvore mostrada acima está sendo substituída por um nó
folha representando a classe mais freqüente no escopo correspondente.
27
Visando alcançar o paralelismo, construímos uma função em PL/SQL que é
capaz de classificar casos de poda baseados na árvore de decisão criada durante a
primeira fase (crescimento da árvore). A função recebe os valores dos atributos usados
no processo de mineração de dados, lê o conjunto de poda completo e calcula o
resultado em paralelo.
SELECT classe, Classify(idade, tipo_carro, tipo_seguro)
FROM relacao_mineracao_poda
[WHERE ...]
A função Classify retornará a classe prevista. Uma vez possuindo as classes real
e prevista, podemos calcular a taxa de erro relacionada ao conjunto de treinamento.
IF A THEN Classe C,
IF A- THEN C,
28
onde a expressão A- é obtida removendo uma condição Xi de A.
A importância de cada condição Xi pode ser calculada usando-se as tuplas dos
conjuntos de treinamento e poda. Cada caso que satisfaz o antecedente A- pertence ou
não à classe C e satisfaz ou não a condição Xi. O número de casos em cada um destes
quatro grupos podem ser organizados em uma tabela 2 x 2:
A regra R cobre S_C + S_nC casos, sendo S_nC deles correspondentes a uma
classificação errônea. Analogamente, a regra R- cobre S_C + S_nC + nS_C + nS_nC,
sendo S_nC + nS_nC correspondentes a classificações errôneas. Para calcular a tabela
acima, poderíamos utilizar um comando SQL com a seguinte estrutura:
29
Utilizando uma construção existente no servidor Oracle, podemos traduzir esta
consulta de tal forma que a mesma retorne apenas uma única linha. É importante
ressaltar que este tipo de consulta é facilmente processada por um SGBDP.
O cálculo da taxa de erro das regras R e R- para avaliar se uma condição Xi deve
ou não ser excluída pode ser obtido utilizando-se valores reais dos conjuntos de
treinamento e poda, uma vez que assumimos que estamos lidando com um grande
volume de dados. Uma opção que permite utilizarmos um outro método de estimativa
de precisão também foi implementada, baseada no método proposto por Quinlan e
utilizado do software C4.5 [42]. Este método é chamado de taxa de erro pessimista
(pessimistic error rate), que estima o erro verdadeiro associado a um nó folha como
sendo o limite superior para a distribuição binomial para algum nível de confiança CF
(ex. 25%). Este limite superior é escrito como UCF(E,N), onde N representa o número de
casos cobertos pelo nó folha e E o número de casos erradamente cobertos. Se a taxa de
erro pessimista for maior que a da regra original, então não faz sentido excluir a
condição.
Ao invés de utilizar uma busca exaustiva para encontrar o subconjunto das
condições dentre todos os existentes que deve ser excluído, uma abordagem baseada em
um algoritmo guloso é utilizada. Cada iteração deste procedimento é repetida até que
não haja melhora na precisão do classificador.
30
Suponha que, a partir do conjunto de regras obtido após a fase de generalização,
tenhamos que escolher um subconjunto das regras S para cobrir uma classe C em
particular. A importância deste subconjunto pode ser percebida pelo número de casos
cobertos por S que não pertencem à classe C (falsos positivos) e o número de casos da
classe C que não sejam contemplados por qualquer regra em S (falsos negativos). A
importância do subconjunto S de regras é avaliada utilizando o princípio MDL
(Minimum Description Length) [42]. Este princípio oferece a base para eliminar regras
muito complexas sem diminuir a precisão do modelo de classificação.
Existem diversas maneiras de encontrarmos o melhor subconjunto S. Podemos,
por exemplo, checar todos os possíveis subconjuntos e escolher o melhor deles,
abordagem que pode consumir um tempo considerável. Este processo leva à produção
de um modelo de classificação tão preciso quanto uma árvore podada, com a vantagem
de oferecer um entendimento mais fácil das regras descobertas.
31
CAPÍTULO 5 - Implementação de um Algoritmo de
Mineração de Dados em um SGBD Paralelo
Cliente Servidor
FILTRO
Dados
32
5.2. Integração Fortemente Acoplada
A idéia de executar computação definida pelo usuário dentro de SGBDs,
evitando tráfego de rede desnecessário, tem sido uma grande preocupação em vários
SGBDs. Um exemplo deste tipo de implementação são os procedimentos armazenados
em bancos de dados comerciais. Por exemplo, o servidor Oracle oferece a possibilidade
de implementar código procedural em PL/SQL e armazená-lo dentro do próprio
dicionário de dados, em uma forma pré-compilada. (o PL/SQL é uma linguagem
interpretada).
MakeDecisionTree
PruneTree
errorRate errorRate
ExtractRules
Classify Classify
giniSplit giniSplit
F2 F2 F2 F2 F2 F2 F2 F2
Figura 11: Integração com o SGBD. Abordagem simplificada mostrando as chamadas do cliente
e as funções em PL/SQL que são executadas pelo servidor a partir de comandos.
33
É importante ressaltar que devemos minimizar o número de chamadas ao
servidor de banco de dados. Idealmente, deveríamos ser capazes de efetuar um comando
em SQL da seguinte forma:
34
paralelizar um código escrito em PL/SQL é construindo uma função armazenada, a qual
pode ser chamada a partir de um comando em SQL.
Uma abordagem típica utilizada que permite que consultas dos usuários lidem
com relações menores, causando um menor número de acessos a páginas, é a
fragmentação vertical. No caso de árvores de decisão, seria necessário criar uma relação
35
para cada par atributo/classe (lembre-se que árvores de decisão trabalham com listas de
atributos, em cada fase tentando encontrar o melhor ponto de quebra entre todos os
atributos), assim como é feito com arquivos isolados no SPRINT [44].
36
ocorrências para cada par atributo / classe, uma vez que não podemos separar casos
possuindo o mesmo valor para o atributo. Desta maneira, o critério de quebra é
computado mais rapidamente que antes. Quando o atributo possui muitos valores
distintos, uma discretização é aconselhável [22, 29], minimizando a parte seqüencial do
comando SQL, representado pela função giniSplit. O resultado final desta consulta é o
melhor ponto de quebra de um dado atributo. Este processo é repetido para todos os
outros atributos, de forma que o menor valor é escolhido.
Devido à forma em que o servidor Oracle processa um comando SQL com uma
cláusula GROUP BY, a implementação teve que ser modificada, pois chegaríamos a um
resultado incorreto se mantivéssemos a utilização do comando apresentado. Para
processar um GROUP BY em paralelo, cada processador fica responsável por um
subconjunto de valores distintos da consulta (atributo / classe). Dentro de cada
subconjunto, consequentemente em cada processador, é feito uma ordenação dos
valores visando o cálculo do número de ocorrências para cada combinação atributo /
classe. Quando todos os processadores terminam de processar seu subconjunto, uma
união de resultados é realizada. O problema é que o Oracle não garante que os dados
retornados por uma cláusula GROUP BY estejam em forma ordenada, apesar do mesmo
utilizar uma operação de ordenação para resolvê-lo, sendo para isto necessário uma
cláusula ORDER BY adicional. Se um ORDER BY não for realizado, o resultado final
estará dividido em n grupos ordenados de valores, onde n representa o número de
processadores / processos envolvidos na consulta, como representado no esquema da
Figura 12.
37
SELECT TKBEG attrib_value, CLASS_A class_value, count(*) num_classes
FROM MR_D GROUP BY TKBEG, CLASS_A
1945 2 6 1946 1 6
1948 1 3 1948 2 3
1952 2 3 1950 2 6
1954 2 11 Processador 1951 1 30 Processador
1955 1 51 #1 1953 1 42 #3
1956 0 3
1958 1 165
1959 2 77
1960 1 270
1943 1 3
1943 2 3
1944 2 3
1947 1 6 Processador
1945 1 9
1953 2 15 #2
1950 1 6 Processador
1954 1 60
1952 1 39 #4
1955 1 34
1957 1 159
1958 2 11
1959 1 228
1960 2 114
Figura 12: Processamento paralelo de consultas com agrupamentos. Resultado obtido por uma
consulta utilizando cláusula GROUP BY solucionada em paralelo.
38
similares foram encontrados, o que reforça ainda mais a afirmação de que a linguagem
PL/SQL é fortemente ligada ao servidor de banco de dados.
39
Neste caso, um maior número de linhas é lido e armazenado em estruturas
internas do PL/SQL (equivalente a vetores). Um algoritmo guloso é aplicado para
descobrir a melhor divisão de valores, onde melhor mais uma vez significa possuir o
menor índice gini. A implementação deste módulo está baseado no software C4.5 [42].
Finalmente, é oferecida a possibilidade de tratar um atributo discreto exatamente
da mesma forma que um atributo contínuo, ou seja, podemos particionar os valores
utilizando uma construção do tipo <= e >. As mesmas observações referentes aos
atributos contínuos se aplicam neste caso.
5.5. Poda
Durante a fase de poda, uma função definida pelo usuário baseada na árvore
original é utilizada para classificar casos de poda em paralelo. Esta função, que é
chamada a partir de um comando SQL, é utilizada para calcular o número de acertos e
erros durante a classificação.
40
IF salario <= 3000 THEN
IF estado_civil = ‘S’ THEN
RETURN 0; -- (equivalente a uma regra IF salario <= 3000
-- AND estado_civil = ‘S’ THEN classe = 0);
ELSIF estado_civil = ‘C’ THEN
...
ELSIF estado_civil = ‘D’ THEN
...
END IF;
ELSE
IF Ano_fim_contrato <= 2000 THEN
...
ELSE
...
END IF;
END IF;
41
propriamente dita, criamos uma outra tabela que possui valores associados a cada um
dos nós folhas, através de um comando SQL da seguinte forma:
0 1 0 2
Classe Número de
Classificações
Figura 13: Fase de poda. Cada um dos nós folha da árvore pode possuir um conjunto de linhas
associadas a classificações relacionadas aos dados de poda.
Como representado na Figura 13, cada um dos nós folha da árvore possui um
conjunto de linhas associadas a classificações, de acordo com o resultado computado
utilizando os dados de poda. No caso da substituição de um nó interno por um nó folha,
estes dados são utilizados para descobrir a classe mais freqüente da sub-árvore em
questão, além de computar qual a taxa de erro associada a esta nova estrutura da árvore,
se esta fosse escolhida, sem a necessidade de consultar os dados de poda novamente. Ao
considerar a substituição do nó interno pela sua sub-árvore mais freqüente, estes dados
são utilizados para descobrir qual a sub-árvore mais utilizada. Para realizar a nova
classificação dos casos de poda associados às demais subárvores, a leitura dos dados de
42
poda é inevitável, consistindo na tarefa mais custosa do módulo de poda, principalmente
na medida em que analisamos possíveis alterações em nós localizados em níveis
superiores da árvore, os quais representam uma maior quantidade de dados de poda.
43
pode ser gerada, sendo necessária a criação de uma função que dinamicamente leia a
base de dados para realizar a classificação.
Medicao
Figura 14: Fragmentação horizontal. Vários fragmentos são criados baseados em funções de
fragmentação.
44
representam funções de fragmentação. A relação original pode ser obtida utilizando um
comando SQL que une todos os fragmentos em um só resultado. Alguns SGBDs
paralelos, particularmente o servidor Oracle, são capazes de utilizar estas funções
(regras associadas a tabelas) para eliminar algumas partições ao ler os dados,
dependendo do filtro utilizado no comando SQL correspondente.
HPS
n1 n2 n3 n4
F1 F1 F2 F2 F3 F3 F4 F4
Figura 15: Desbalanceamento de carga. Após um certo ponto do algoritmo, as leituras estarão
concentradas em somente algumas partições. Desta forma, a maioria dos nós estarão efetuando
leituras remotas. F1, F2, F3 e F4 representam fragmentos distribuídos entre quatro nós (N1, N2,
N3 e N4). Discos com uma cor diferente dos demais indicam que estes estão sendo
correntemente acessados pela aplicação.
45
HPS
n1 n2 n3 n4
F1
F2
F3
Figura 16: Balanceamento de Carga. Ainda trabalhamos com partições entre os quatro nós, com
a diferença que os dados estão espalhados entre todos os discos disponíveis. Porções de discos
com cor diferente significam que parte dos dados estão sendo lidos pela aplicação de mineração.
Uma abordagem típica utilizada que permite que consultas do usuário lidem com
relações menores, causando um menor número de acessos a páginas, é a fragmentação
vertical [40]. No caso de árvores de decisão, seria necessário criar uma relação para
cada par atributo/classe (lembre-se que árvores de decisão trabalham com listas de
atributos, em cada fase tentando encontrar o melhor ponto de quebra dentre todos os
atributos), assim como é realizado com arquivos isolados no SPRINT [44].
Figura 17. Representação de dois fragmentos de uma relação após uma fragmentação vertical
característica de árvores de decisão.
46
5.8. Fragmentação e Problemas de Alocação
47
filtros. Na segunda fase, no máximo uma junção entre duas tabelas é necessária; na
terceira, no máximo uma junção de três tabelas, e assim por diante. Junções em SGBDs
representam tarefas que consomem bastante tempo, até mesmo quando processadas em
paralelo (o servidor Oracle pode efetuar junções em paralelo usando métodos chamados
nested loops, merge joins, hash joins e star joins).
48
CAPÍTULO 6 - Avaliação de Desempenho
49
6.1. Estudo de caso
Nós construímos uma única relação, apesar de uma série de tabelas normalizadas
estarem disponíveis, devido a problemas de desempenho relacionados a operações de
junção. O servidor Oracle oferece uma variedade de métodos para efetuar junções, mas,
mesmo quando efetuados em paralelo, junções representam uma tarefa custosa. Esta
única relação é relativamente pequena, cabendo inteiramente em memória, com
aproximadamente 50Mb, 200.000 tuplas e 70 atributos. Para propósitos de mineração de
dados, esta relação é consideravelmente grande quando comparada a outras que
aparecem na literatura. Nós manuseamos atributos com diferentes características:
atributos discretos com poucos (2) e vários atributos distintos (86), atributos contínuos
com apenas alguns valores distintos (55) e atributos contínuos com muitos valores
distintos (18.545).
Diversas medições foram efetuadas ao executar o algoritmo de mineração de
dados. Alguns passos foram efetuados seqüencialmente, devido à natureza da linguagem
de programação do Oracle (PL/SQL). Enfatizamos o uso de comandos SQL sempre que
possível para implementar a lógica do algoritmo. Estes comandos SQL são efetuados
pelo servidor paralelo de banco de dados, representando as tarefas mais custosas do
algoritmo, porque eles são responsáveis por lidar com grandes volumes de dados e por
realizar computações sempre que aplicável.
Visando validar os experimentos realizados utilizando o estudo de caso, usamos
o Oracle Parallel Server 7.3.2.3, instalado em um IBM RISC/6000 SP com quatro nós e
memória distribuída de 1.75 Gb [38]. Os dados da relação foram armazenados em uma
única tablespace, espalhada pelos diversos discos existentes no cluster. Cuidados foram
50
tomados para que uma mesma quantidade de tuplas estivesse armazenada em cada um
dos nós existentes. Uma outra tablespace, também espalhada por todos os nós, foi
utilizada para armazenamento de índices criados para auxiliar na filtragem das
informações. Durante algumas medições, apresentamos os tempos de resposta de
consultas quando os dados envolvidos não estão no cache da máquina (cold) e quando
estes mesmos dados já estão em memória (hot). Foi reservado um cache de 100Mb para
as instâncias do Oracle ativas em cada um dos nós.
Execução Serial
2500 Execução Paralela (4 nós)
Tempo de Resposta (0.01 segs)
2000
1500
1000
500
0
1 2 3 4 5 6
Profundidade da Árvore
Figura 18: Tempo de resposta para execuções paralela e serial para um atributo discreto com
poucos valores distintos (tipo de profissional – 4 valores) durante a fase de crescimento da
árvore.
51
quantidade mais reduzida de dados, sendo uma varredura seqüencial melhor que uma
varredura completa de uma tabela em paralelo. Para tornar o processamento seqüencial
o mais eficiente possível, foram criados índices bitmap no lugar dos tradicionais índices
utilizando árvores B, até mesmo para alguns atributos contínuos, pois os primeiros são
especialmente úteis para consultas que possuam filtros com diversas comparações
utilizando o operador de conjunção (AND).
800 Cold
750 Hot
Tempo de Resposta (0.01 segs)
700
650
600
550
500
450
400
1 2 3 4 5 6 7 8 9 10 11 12 13 14
Profundidade da Árvore
Figura 19: Comportamento das consultas paralelas de acordo com a profundidade da árvore para
um atributo discreto com poucos valores distintos (tipo de profissional – 4 valores).
52
As consultas também são influenciadas pelo tipo de atributo que estamos usando
no algoritmo de mineração. Atributos discretos (Figura 20) normalmente resultam em
um melhor tempo de resposta. Isto acontece pois menos pontos de quebra serão
analisados e menos dados serão recuperados pela aplicação. Atributos contínuos
normalmente manuseiam muitos valores distintos, representando uma tarefa bastante
custosa. Entretanto, na medida em que descemos na árvore, atributos contínuos são
freqüentemente representados por menos valores distintos, resultando em melhores
tempos de reposta, como apresentado na Figura 21.
3000 Cold
Hot
2500
Tempo de Resposta (0.01 segs)
2000
1500
1000
500
0
1 2 3 4
Número de Processadores
Figura 20: Tempo de resposta associado a um atributo discreto com poucos valores distintos
(tipo de profissional – 4 valores) durante a fase de crescimento da árvore. Este gráfico
representa os tempos associados à descoberta do atributo a ser usado como nó raiz da árvore de
decisão.
3000 Cold
Hot
Tempo de Resposta (0.01 segs)
2500
2000
1500
1000
500
0
1 2 3 4
Número de Processadores
Figura 21: Tempo de resposta associado a um atributo contínuo com muitos valores distintos
(prêmio - 18.545 valores) durante a fase de crescimento da árvore. Este gráfico representa os
tempos associados à descoberta do atributo a ser usado como nó raiz da árvore de decisão.
53
A maior parte da paralelização ocorre ao lidar com nós de decisão que estão no
topo da árvore, de tal forma que mais dados estão sendo analisados. Para estas fases,
percebemos uma melhora de desempenho significativa quando dois nós são utilizados.
Entretanto, ao adicionar mais nós de processamento, o tempo de resposta não decresce
na mesma taxa. Esta situação representa a influência de acesso a tuplas remotas. Uma
vez que as linhas são altamente correlacionadas, nós adicionais também aumentam o
custo de comunicação.
A árvore de decisão foi gerada com aproximadamente 38.000 nós e uma
profundidade igual a 43 (quarenta e três), o que comprova a complexidade do problema.
Uma visão parcial da árvore é apresentada na Figura 22, onde podemos visualizar
alguns atributos situados no topo da mesma.
tariff_date
<= 1985
benefits
<= 0 > 0
bonus sex
<= 58 > 58
<= 1970
age job
= ‘0’ = ‘3’
= ‘1’ = ‘2’
Figura 22: Visão parcial da árvore de decisão construída após a análise dos dados de
treinamento.
54
É importante ressaltar que estes testes visam oferecer uma visão de uma solução ideal,
que nem sempre pode ser alcançada.
6.4. Poda
A fase de poda é representada por consultas consideravelmente menos
complexas em relação às fases de crescimento da árvore e extração de regras, até porque
os critérios utilizados para a realização dos processos são bastante simples. Em níveis
onde a profundidade de um nó interno sendo analisado é alta, as consultas são
extremamente rápidas, principalmente porque para a verificação do segundo critério de
poda (substituição de um nó interno por sua subárvore mais freqüentemente utilizada)
envolve uma menor quantidade de exemplos a serem classificados novamente.
55
Na medida em que analisamos níveis no topo da árvore, um processo
consideravelmente mais demorado é realizado, justamente pelo fato de estarmos
trabalhando com um conjunto maior de exemplos. A verificação do primeiro critério
(substituição por nó folha) mantém-se relativamente constante, uma vez que os
exemplos de teste não precisam ser consultados, estando todas as informações
necessárias presentes na tabela intermediária gerada em uma fase inicial do processo de
poda, que originou uma tabela de aproximadamente 32.000 linhas, as quais estão
relacionadas a aproximadamente 20.000 nós folha. Considerando que esta tabela
intermediária contém poucos atributos, o tamanho deste objeto no banco de dados é
consideravelmente menor que a relação de mineração original utilizada, ocupando, na
situação apresentada no estudo de caso, menos que 1Mb. Consultas seriais se
apresentam suficientemente eficientes para este tipo de problema, situação que pode se
alterar na medida em que uma massa de dados maior for utilizada.
Uma vantagem da utilização da poda que pode ser facilmente percebida está
relacionada ao menor tempo que será gasto na próxima fase (extração de regras), uma
vez que menos regras serão analisadas. O número de regras a serem analisadas é
representado pela quantidade de nós folha, quantidade esta que é reduzida após a poda.
56
scan. A seguir apresentamos um exemplo de consulta para a verificação se é vantajoso
ou não eliminar a condição TKBEG <= 1985) da regra originalmente gerada.
Onde:
EPERWEART – tipo de profissional (discreto)
EPSEXCD – sexo (discreto)
EPGEBUDAT – data de nascimento (contínuo)
TKBEG – início da tarifa do componente (contínuo)
TKLEIST – benefícios assegurados do componente (contínuo)
TKINKPRL – prêmio (contínuo)
CLASSE – atributo alvo
400,00
Execução Paralela
Tempo de Resposta (0.01 segs) .
350,00
Execução Serial
300,00
250,00
200,00
150,00
100,00
50,00
0,00
Regra 1a 2a 3a 4a 5a 6a 7a 8a
Figura 23: Extração de Regras. Características das consultas típicas na fase de extração de
regras.
57
à regra. A partir deste momento, são efetuadas 9 (nove) outras consultas para verificar
qual das 9 (nove) condições existentes na expressão que representa a regra deve ser
eliminada. Na próxima fase 8 (oito), a seguir 7 (sete) e assim por diante. Neste exemplo,
a regra original foi generalizada em uma regra com apenas 2 (duas) expressões.
58
7. Conclusões
59
relação à escolha de planos de execução seriais ou paralelos para a consulta, o SGBD
gerou resultados satisfatórios de acordo com o número de nós existentes no sistema,
característica importante dependendo da técnica de mineração utilizada, como
comentado anteriormente. Uma análise mais detalhada utilizando um maior número de
processadores é desejável. A fragmentação de dados, uma característica que auxilia na
melhora do desempenho e flexibilidade de administração dos dados, mostrou uma área
em potencial a ser explorada, obviamente levando em consideração as característica da
técnica de mineração utilizada.
60
dados utilizadas não apresentem características inovadoras, sua combinação
implementada sobre um SGBD paralelo constitui uma experiência prática inovadora.
Este trabalho abre portas para outras pesquisas a serem realizadas nesta área, as
quais poderiam abordar aspectos que não puderam ser contemplados seja por problemas
existentes na versão atual do SGBD instalado, seja por alguma característica específica
existente no SGBD utilizado, ou simplesmente devido ao grande número de variáveis a
serem consideradas em um curto intervalo de tempo. Por exemplo, uma maior ênfase à
medição de desempenho associada à partição dos dados poderia ser realizada, ênfase
que não pode ser dada de uma forma completa devido a problemas existentes na versão
do produto instalada, apesar de ter sido possível verificar o potencial existente neste tipo
de abordagem ao utilizar operações de mineração de dados. Além disso, pesquisas sobre
mineração de dados incremental representam uma área ainda a ser bastante explorada,
principalmente considerando-se sua integração com SGBDs, onde novas informações
estão sucessivamente sendo cadastradas. De acordo com novos dados que serviriam de
entrada, poderíamos ajustar gradativamente o modelo criado através da análise de dados
históricos, ao invés de efetuar um processamento completo utilizando todo o conjunto
de dados.
61
devido a problemas de desempenho relacionados a operações de junção, ainda há
espaço para outros experimentos nesta área. Por exemplo, é interessante que sejam
realizados testes utilizando uma abordagem típica de ambientes de data-warehousing,
onde uma modelagem de dados baseada em star schema é amplamente utilizada. Este
tipo de experimento é de vital importância, pois esta representaria uma solução que
evitaria a criação de ambientes separados para os dois processos. Isto torna-se ainda
mais importante na medida em que a implantação de um ambiente de data-warehousing
anterior ao início de um processo de mineração de dados é um caminho natural a ser
seguido nos dias atuais.
62
Referências Bibliográficas
[1] AGERWALA, T., MARTIN, J. L., MIRZA, J. H., et al. “SP2 system architecture”,
IBM Systems Journal – Scalable Parallel Computing, v. 34, n. 2, 1995.
[2] AGRAWAL, R., GEHRKE, J., GUNOPULOS, D., et al. “Automatic Subspace
Clustering of High Dimensional Data for Data Mining Applications”. In:
Proceedings of the ACM SIGMOD International Conference on Management of
Data, pp. 94-105, Seattle, 1998.
[3] AGRAWAL, R., GHOSH, S., IMELINSKI, T., et al. “An Interval classifier for
database mining applications”. In: Proceedings of the 18th Conference on Very
Large Databases, pp.560-573, Vancouver, 1992.
[4] AGRAWAL, R., IMIELINSKI, T., SWAMI, A. “Database Mining: A Performance
Perspective”. In: Proceedings of IEEE Transactions on Knowledge Discovery and
Data Engineering (TKDE), v. 5., n.6, pp. 914-925, 1993.
[5] AGRAWAL, R., IMIELINSKI, T., SWAMI, A. “Mining association rules between
sets of items in large databases”. In: Proceedings of the ACM SIGMOD
International Conference on the Management of Data, pp.207-216, Washington D.
C., 1993.
[6] AGRAWAL, R., METHA, M., SHAFER, J., et al. “The Quest Data Mining
System”. In: Proceedings of the 2nd International Conference on Knowledge
Discovery in Databases and Data Mining, pp. 244-249, Portland, 1996.
[7] AGRAWAL, R., SHIM, K. “Developing Tightly-Coupled Data Mining
Applications on a Relational Database System”. In: Proceedings of the 2nd
International Conference on Knowledge Discovery in Databases and Data Mining,
pp. 287-290, Portland, 1996.
[8] AGRAWAL, R., SRIKANT, R. “Fast Algorithms for mining association rules”. In:
Proceedings of the 20th International Conference on Very Large Databases, pp.
487-499, Santiago, 1994.
[9] ARANTES, J. A. A., BOTELHO, P. L., EBECKEN, N. F. F., CALOBA, L. P.
“Ship’s Classification by its Magnetic Signature”. In: Proceedings of IEEE World
Conference on Computational Intelligence,1988.
63
[10] BLOCKEEL, H., DE RAEDT, L. “Top-down Induction of Logical Decision
Trees”. In: Proceedings of the 9th Dutch Conference on Artificial Intelligence
(NAIC), 1997.
[11] BIGUS, J. P., Data Mining with Neural Networks, McGraw-Hill, 1996.
[12] BREIMAN, L., FRIEDMAN, J., OLSHEN, R., et al. Classification and Regression
Trees. Pacific Groves, CA, Wadsworth, 1984.
[13] CHEN, M. S., HAN, J., YU, P. S. “Data Mining: An Overview from Database
Perspective” In: IEEE Trans. on Knowledge and Data Engineering, Vol. 8, No. 6,
pp.866-883, 1996.
[14] CHOENNI, R., KERSTEN, M. L., AKKER, J. F. P. “On multi-query
optimization”. In: Report CS-R9638, CWI, Computer Science / Department of
Algorithmics and Architecture, Amsterdam, 1996.
[15] EBECKEN, N. F. F. “Prediction of Metereologic Conditions Using Data Mining
Techniques”. In: Proceedings of the 3rd Workshop on Computational Methods for
Oceanic, Atmospheric and Ground Water Flows, LNCC, Rio de Janeiro, 1997.
[16] FAYYAD, U., PIATESKY-SHAPIRO, G., SMYTH, P., et al. (Eds.) Advances in
Knowledge Discovery and Data Mining.AAAI/MIT Press. 1996.
[17] FAYYAD, U, DJORGOVSKI, S., WEIR, N. “Automating the Analysis and
Cataloging of Sky Surveys”. In [16], pp.471-493, 1996.
[18] FAYYAD, U., PIATESKY-SHAPIRO, G., SMYTH, P. “From Data Mining to
Knowledge Discovery: An Overview”, In [16], pp.1-34. 1996.
[19] FAYYAD, U., PIATESKY-SHAPIRO, G., SMYTH, P. “From Data Mining to
Knowledge Discovery in Databases”, Artificial Intelligence Magazine, pp. 37-54,
Fall, 1996.
[20] FREITAS, A., Generic, Set-oriented Primitives to Support Data-parallel
Knowledge Discovery in Relational Database Systems, Ph. D. dissertation,
University of Essex, UK, 1997.
[21] FREITAS, A., LAVINGTON, S. Mining Very Large Databases with Parallel
Processing. Kluwer Academic Publishers, 1998.
[22] FREITAS, A., LAVINGTON, S. “Speeding up Knowledge Discovery in Large
Databases by Means of a New Discretization Algorithm”. In Proceedings of the
14th British International Conference on Databases. pp. 124-133, Edinburgh.
[23] FREITAS, A., LAVINGTON, S. “Towards Large-Scale Knowledge Discovery in
Databases (KDD) by Exploiting Parallelism in Generic KDD Primitives”. In:
64
Proceedings of the 3rd International Workshop on Next Generation Information
Technologies and Systems (NGITS), Neve Ilan, 1997.
[24] HALLMARK, G. “Oracle Parallel Warehouse Server”. In: Proceedings of the 13th
International Conference on Data Engineering, pp.314-320, Birmingham,1997.
[25] HALLMARK, G. “Tuning the Performance of the Oracle7 Parallel Query Option”.
International Oracle User Week, 1995.
[26] HAN, J., FU, Y., KOPERSKI, K., MELLI, et al. “Knowledge Mining in Databases:
An Integration of Machine Learning Methodologies with Database Technologies”,
Canadian AI Magazine, 1995.
[27] HAN, J., FU, Y., WANG, W., CHIANG, J., et al. “DBMiner: A System for Mining
Knowledge in Large Relational Databases”. In: Proceedings of the International
Conference on Knowledge Discovery in Databases, pp. 250-255, Portland, 1996.
[28] HOLSHEIMER, M., KERSTEN, M. L., SIEBES, A., “Data Surveyor: Searching
the Nuggets in Parallel”. In: Advances in Knowledge Discovery and Data Mining,
pp.447-467, AAAI Press, 1996.
[29] KERBER, R. “ChiMerge: Discretization of Numeric Attributes”. In Proceedings of
the 10th National Conference on Artificial Intelligence. , pp-123-128, San Jose,
1992.
[30] KIM, W. Modern Database Systems. New York, Addison-Wesley / ACM Press,
1995.
[31] KUFRIN, R. “Decision Trees on Parallel Processors”. In: Parallel Processing for
Artificial Intelligence 3, Elsevier Science, pp.279-306, 1997.
[32] LINDER, B. “Oracle Parallel RDBMS on Massively Parallel Systems”. In:
Proceedings of the 2nd International Conference on Parallel and Distributed
Information Systems, pp. 67-68, San Diego, 1993.
[33] MERZ, C. J. , MURPHY, P. M. UCI Repository of machine learning databases.
http://www.ics.uci.edu/~mlearn/MLRepository.html. University of California,
Irvine, Dept. of Information and Computer Sciences, 1998.
[34] METHA, M., AGRAWAL, R., RISSANEN, J. “SLIQ: A Fast Scalable Classifier
for Data Mining”. In: Proceedings of the 5th International Conference on
Extending Database Technology (EDBT), pp. 18-32, Avignon, 1996.
[35] METHA, M., DEWITT, D. J. “Data Placement in shared-nothing parallel database
systems”. VLDB Journal, v.6, n.1, Springer-Verlag, January, 1997.
65
[36] MEYER, L. A. V. C., MATTOSO, M.L.Q. “Sistemas de Banco de Dados
Distribuídos e Paralelos”. In: Tutorial dos Anais do XII Simpósio Brasileiro de
Banco de Dados, Apostila publicada como separata com 38 págs.
[37] MITCHELL, T. M., Machine Learning. McGraw-Hill, 1997.
[38] NACAD. http://www.nacad.ufrj.br, 1998.
[39] NAVATHE, S. B., ELMASRI, R., Fundamentals of Database Systems, 2 ed.,
Redwood City, The Benjamin/Cummings Publishing Company Inc, 1994.
[40] NAVATHE, S. B., RA, M. “Vertical Partitioning for Database Design: A
Graphical Algorithm”. In: Proceedings of the ACM SIGMOD International
Conference on Management of Data, pp.440-450, 1989.
[41] ORACLE CORPORATION. Oracle Parallel Server Concepts & Administration
Rel. 7.3. Oracle Technical Manual, 1997.
[42] QUINLAN, J. R., C4.5: Programs for Machine Learning. Morgan Kaufman, 1993.
[43] QUINLAN, J. R., “Simplifying decision trees”. International Journal of Man-
Machine Studies 27, pp. 221-234, 1997.
[44] SHAFER, J., AGRAWAL, R., METHA, M. “SPRINT: A Scalable Parallel
Classifier for Data Mining”. In: Proceedings of the 22nd International Conference
on Very Large Databases, pp. 544-555, Mumbi, 1996.
[45] SOUSA, M. S., MATTOSO, M.L.Q., EBECKEN, N.F.F. “Data Mining: A Tightly-
Coupled Implementation using a Parallel Database Server”. In: Proceedings of the
International Conference on Database and Expert Systems Applications Workshop
"Parallel Databases: innovative applications and new architecture", IEEE CS,
Vienna, 1998.
[46] SOUSA, M. S., MATTOSO, M.L.Q., EBECKEN, N.F.F. “Data Mining on Parallel
Database Systems”. In: Proceedings of the International Conference on Parallel
and Distributed Processing Techniques and Applications: Special Session on
Parallel Data Warehousing, CSREA Press, pp. 1147-1154, Las Vegas, 1998.
[47] SOUSA, M. S., MATTOSO, M.L.Q., EBECKEN, N.F.F. “Data Mining: a database
perspective”. In: Proceedings of the International Conference on Data Mining, Rio
de Janeiro, 1998.
[48] SRIKANT, R., AGRAWAL, R. “Mining Sequential Patterns: Generalizations and
Performance Improvements”. In: Proceedings of the 5th International Conference
on Extending Database Technology (EDBT), pp. 3-17, Avignon, 1996.
66
[49] TKACH, D. S. Information Mining with the IBM Intelligent Miner Family.
http://www.software.ibm.com/data/pubs/papers/#whitefam. IBM White Paper,
1998.
[50] TSUR, D., ULLMAN, J. D., ABITEBOUL, S., et al. “Query Flocks: A
Generalization of Association-Rule Mining”. In: Proceedings of the ACM
SIGMOD International Conference on Management of Data, pp. 1-12, Seattle,
1998.
[51] VALDURIEZ, P. “Parallel Database Systems: open problems and new issues”.
International Journal on Distributed and Parallel Databases, v. 1, n. 2, pp. 137- 165,
1993.
67