Universidade de Caxias do Sul Centro de Ciências Exatas e Tecnologia Departamento de Informática Curso de Bacharelado em Ciência da Computação APLICAÇÃO DE REDES NEURAIS ARTIFICIAIS À MINERAÇÃO DE DADOS por Daniel Luís Notari Trabalho de Conclusão para a obtenção do grau de Bacharel em Ciência da Computação. Orientadora: Sandra Rovena Frigeri Caxias do Sul, Dezembro 1997. AGRADECIMENTOS Um agradecimento muito especial eu faço aos meus pais pela sua dedicação, esforço, apoio e compreensão expressados ao longo dos anos. Eu agradeço, a minha namorada Rafaela, pela compreensão e carinho dedicados ao longo do tempo que estamos namorando. A minha orientadora, Sandra Rovena Frigeri, eu agradeço de coração todos os ensinamentos transmitidos, pela paciência e compreensão dedicados a mim. A Lia Cláudia Matté, eu agradeço as sugestões que foram muito úteis ao desenvolvimento deste trabalho. E, agradeço aos professores do Departamento de Informática da Universidade de Caxias do Sul e funcionários do Laboratório de computação a ajuda, de qualquer forma que tenha sido, prestada ao longo destes seis anos que eu estou cursando o curso de computação. SUMÁRIO LISTA DE FIGURAS......................................................................................................................................6 LISTA DE TABELAS.....................................................................................................................................7 LISTA DE SÍMBOLOS ..................................................................................................................................8 LISTA DE ABREVIATURAS ......................................................................................................................10 RESUMO ......................................................................................................................................................11 ABSTRACT ..................................................................................................................................................12 1. INTRODUÇÃO.........................................................................................................................................13 2. DESCOBERTA DO CONHECIMENTO EM BANCO DE DADOS (DCBD)........................................17 2.1 CONCEITOS RELACIONADOS À DESCOBERTA DO CONHECIMENTO EM BD ...................................................27 2.1.1 Modelos ........................................................................................................................................27 2.1.2 Classes..........................................................................................................................................27 2.2 TIPOS DE DESCOBERTA ..........................................................................................................................28 3. MINERAÇÃO DE DADOS ......................................................................................................................30 3.1 MODELOS DE MINERAÇÃO DE DADOS .....................................................................................................30 3.2 TÉCNICAS DE MINERAÇÃO DE DADOS .....................................................................................................31 3.2.1 Agrupamento................................................................................................................................. 31 3.2.2 Classificação ................................................................................................................................32 3.2.3 Regressão .....................................................................................................................................32 3.2.4 Modelagem de Dependência .........................................................................................................33 3.2.5 Detecção de Desvios .....................................................................................................................33 3.2.6 Sumarização ................................................................................................................................. 33 3.2.7 Associação....................................................................................................................................34 3.2.8 Seqüência......................................................................................................................................34 3.2.9 Agrupamentos por Séries Temporais .............................................................................................35 3.3 MÉTODOS DE MINERAÇÃO DE DADOS .....................................................................................................35 3.3.1 Regressão Não Linear e Métodos de Classificação .......................................................................36 3.3.2 Árvores de Decisão e Regras.........................................................................................................36 3.3.3 Regras de Indução ........................................................................................................................36 3.3.4 Visualização dos Dados ................................................................................................................37 3.3.5 Métodos Baseados em Exemplos ...................................................................................................37 3.3.6 Modelos Probabilísticos de Gráficos de dependência....................................................................37 4 3.3.7 Modelos de Aprendizado Relacional .............................................................................................38 3.4 APLICAÇÕES DE MINERAÇÃO DE DADOS ................................................................................................. 38 3.4.1 Marketing .....................................................................................................................................38 3.4.2 Vendas a Varejo............................................................................................................................38 3.4.3 Finanças .......................................................................................................................................39 3.4.4 Saúde e Medicina..........................................................................................................................39 3.4.5 Ciências........................................................................................................................................39 3.5 DATA WAREHOUSE (ARMAZÉM DE DADOS)...............................................................................................40 4. REDES NEURAIS ARTIFICIAIS ............................................................................................................41 4.1 CARACTERÍSTICAS DO CÉREBRO HUMANO ..............................................................................................41 4.2 COMPUTAÇÃO INTELIGENTE: MANIPULAÇÃO DE SÍMBOLOS OU RECONHECIMENTO DE PADRÕES................43 4.3 CONCEITOS E ELEMENTOS DE REDES NEURAIS ARTIFICIAIS......................................................................44 4.4 PARADIGMAS DE APRENDIZAGEM ...........................................................................................................47 4.4.1 Aprendizado Supervisionado .........................................................................................................47 4.4.2 Aprendizado Não Supervisionado..................................................................................................48 4.4.3 Aprendizado de Reforço ................................................................................................................49 4.5 PROCESSO DE APRENDIZAGEM DE UM ÚNICO NEURÔNIO ..........................................................................50 4.5.1.1 Definição de um neurônio único............................................................................................................. 51 4.5.1.2 Treinar um único neurônio..................................................................................................................... 52 4.6 TOPOLOGIAS DE REDES NEURAIS ARTIFICIAIS .........................................................................................52 4.6.1 Redes Feedforward .......................................................................................................................52 4.6.2 Redes Recorrentes Limitadas ........................................................................................................53 4.6.3 Redes Completamente Recorrentes................................................................................................53 4.7 MODELOS DE REDES NEURAIS ARTIFICIAIS .............................................................................................54 4.7.1 Modelos Adaptativos.....................................................................................................................54 4.7.1.1 Perceptron ............................................................................................................................................. 55 4.7.1.2 Adaline.................................................................................................................................................. 56 4.7.1.3 Madaline ............................................................................................................................................... 57 4.7.1.4 Rede Multinível..................................................................................................................................... 58 4.7.1.5 Função Básica Radial (RBF).................................................................................................................. 59 4.7.1.6 Teoria da Ressonância Adaptativa (ART)............................................................................................... 59 4.7.1.7 Redes Neurais Probabilísticas (RNP) .................................................................................................... 60 4.7.2 Modelos Competitivos...................................................................................................................60 4.7.2.1 Redes Kohonen...................................................................................................................................... 61 5. REDES NEURAIS ARTIFICIAIS E MINERAÇÃO DE DADOS...........................................................63 5.1 FUNÇÕES BÁSICAS DE REDES NEURAIS ARTIFICIAIS .................................................................................65 5.1.1 Classificação ................................................................................................................................65 5.1.2 Agrupamento................................................................................................................................. 66 5 5.1.3 Memória Associativa.....................................................................................................................67 5.1.4 Regressão ou Modelagem..............................................................................................................68 5.1.5 Previsão de Séries Temporais........................................................................................................68 5.2 TREINAMENTO DE UMA REDE NEURAL ARTIFICIAL ..................................................................................68 5.2.1 Monitorar o treinamento de uma RNA...........................................................................................70 5.2.2 Controle do processo de treinamento através de parâmetros de aprendizagem .............................71 5.2.3 Processo iterativo de desenvolvimento ..........................................................................................72 5.2.4 Evitar a Saturação da RNA ...........................................................................................................74 5.2.5 Automação do Processo ................................................................................................................75 5.3 ANÁLISE DO APRENDIZADO DE UMA REDE NEURAL ARTIFICIAL ...............................................................75 5.3.1 Análise Sensitiva...........................................................................................................................76 5.3.2 Geração de Regras para Redes Neurais Artificiais........................................................................76 5.3.3 Visualização..................................................................................................................................77 5.4 EXTRAÇÃO DE REGRAS ..........................................................................................................................77 5.4.1 Métodos de Extração de Regras Baseados em Procura de Regras.................................................78 5.4.2 Um Método de Extração de Regras Baseado no Aprendizado .......................................................81 6. DESCRIÇÃO DO PROTÓTIPO ..............................................................................................................83 6.1 OBJETIVOS DO PROTÓTIPO .....................................................................................................................83 6.2 ETAPAS REALIZADAS DO PROCESSO DE DCBD .........................................................................................83 6.2.1 Compreensão ................................................................................................................................84 6.2.2 Seleção dos Dados ........................................................................................................................84 6.2.3 Pré-Processamento dos Dados ......................................................................................................85 6.2.4 Transformação..............................................................................................................................86 6.2.5 Escolher a Tarefa da Mineração de Dados ...................................................................................86 6.2.6 Escolher o Algoritmo de Mineração de Dados ..............................................................................86 6.3 DESENVOLVIMENTO DO PROTÓTIPO ........................................................................................................87 6.3.1 Menu Principal .............................................................................................................................88 6.4 RESULTADOS .........................................................................................................................................92 7. CONCLUSÃO ...........................................................................................................................................93 8. BIBLIOGRAFIA.......................................................................................................................................95 LISTA DE FIGURAS Figura 2.1 : Contexto do DCBD [FEL96].......................................................................... 17 Figura 2.2 : Modelo de Sistema de DCBD [FEL96].......................................................... 26 Figura 4.1 : Neurônio Humano.......................................................................................... 43 Figura 4.2 : Topologia Linear [BIG96] ............................................................................. 45 Figura 4.3 : Topologia Retro-Alimentada [BIG96]........................................................... 45 Figura 4.4 : Topologia Totalmente Conectada [BIG96] ................................................... 45 Figura 4.5 : Topologia Multinível [BIG96] ....................................................................... 46 Figura 4.6 : Neurônio Artificial ......................................................................................... 47 Figura 4.7 : Aprendizado Supervisionado [BIG96] .......................................................... 48 Figura 4.8 : Aprendizado Não Supervisionado [BIG96]................................................... 49 Figura 4.9 : Aprendizado de Reforço [BIG96].................................................................. 50 Figura 4.10 : Redes Neurais Feedforward [BIG96] ........................................................... 53 Figura 4.11 : Redes Completamente Recorrentes [BIG96].............................................. 54 Figura 4.12 : Algoritmo de Aprendizado da Regra Delta [OSO91] ................................. 57 Figura 5.1 : Processo Iterativo para Treinamento de RNA [BIG96]................................ 73 Figura 5.2 : Uma regra de Procura [CRA]........................................................................ 79 Figura 6.1 : Menu Principal............................................................................................... 88 Figura 6.2 : Formulário de Treinamento........................................................................... 89 Figura 6.3 : Formulário de Atributos de uma tabela. ....................................................... 90 Figura 6.4 : Formulário contendo o nome das tabelas...................................................... 91 Figura 6.5 : Formulário com os dados da tabela selecionada pelo usuário ...................... 91 LISTA DE TABELAS Tabela 5.1 : Aplicações Comerciais de RNA [BIG96]....................................................... 64 Tabela 5.2 : Parâmetros de Aprendizado para RNA ([BIG96]) ....................................... 69 LISTA DE SÍMBOLOS D Valor do disparo (ativação) de um neurônio de uma RNA. d Padrão de Aprendizagem. E Vetor de valores de entrada. Er Erro estimado. F Função de ativação de uma rede neural artificial. f(a) Valor da função de ativação para o valor do parâmetro a. I/i Número de entradas de uma rede neural artificial. Io Saída desejada (mentor input). k Número de camadas de uma RNA. L Representa um rótulo. P Vetor de Pesos. S Saída atual da rede neural artificial. t Variável que indica tempo. t+n Indica uma quantidade de tempo maior que t. x Representa um conjunto de valores de entrada para uma RNA. X Conjunto de itens. Xi/xi Valor de entrada para a RNA. O i representa o índice do vetor ou xo Primeiro valor de entrada para a RNA. Xt Conjunto de itens de uma transação. X1 Representa um neurônio. X2 Representa um neurônio. X3 Representa um neurônio. y Valor de saída de uma RNA. matriz. 9 Yt+n Conjunto de itens de uma transação t+n. w Representa o valor de uma conexão de peso de um neurônio de uma Wi/wi Conjunto de pesos de uma RNA. O i representa o índice do vetor ou wo Representa o bias de uma RNA. β Fator de ajuste de convergência. RNA. matriz. 10 LISTA DE ABREVIATURAS ADALINE Adaptive Linear Element ART Teoria da Ressonância Adaptativa BD Banco de Dados DCBD Descoberta de Conhecimento em Banco de Dados IBM International Business Machine KDD Knowledge Discovery in Databases LMS Least Mean Square MADALINE Multiples Adaptive Linear Element MLP Multilayer Perceptron NPDU Núcleo de Processamento de Dados da Universidade de Caxias do Sul RBF Função Básica Radial RMS Root Mean Square RNA Redes Neurais Artificiais RNP Redes Neurais Probabilísticas SGBD Sistema Gerenciador de Banco de Dados SQL Structured Query Language 11 RESUMO O objetivo deste trabalho é estudar a utilização de redes neurais artificiais na etapa de mineração de dados do processo de descoberta do conhecimento em banco de dados. O processo de descoberta do conhecimento em banco de dados (DCDB) tem por objetivo extrair conhecimento útil para uma determinada empresa ou aplicação a partir de bases de dados transacionais. A mineração de dados é uma das etapas do processo de DCBD que tem por objetivo realizar a extração de padrões. Neste sentido, as redes neurais artificiais podem ser usadas para realizar esta tarefa, já que elas permitem reconhecimento de padrões. 12 ABSTRACT The goal of this work is to study the artificial neural networks used in the data mining step in the process of knowledge discovery in database (KDD). The purpose of the KDD process is the extraction of useful knowledge from transactional databases of specific business or applications. The data mining is one step of the KDD process that executes the patterns extraction. In this sense, the neural networks can be used to accomplish this task, since they allow patterns recognition. 1. INTRODUÇÃO Muitas empresas em todo o mundo, não importando o tipo de negócio em que trabalham, utilizam os serviços de informática. Cada uma destas empresas possui um grande volume de dados armazenados que são as bases dos seus sistemas administrativos e de produção. Além disso, essas empresas possuem um grande volume de dados históricos, que já não são necessários a atividade fim da empresa, mas que devem ser mantidos por razões legais e fiscais. Toda esta informação armazenada representa um fonte de conhecimento não explorada, que poderia ser útil tanto para a empresa conhecer melhor a dinâmica do seu negócio, como para fazer o seu planejamento, ou seja, ter maior conhecimento na hora de tomar decisões. Os sistemas gerenciadores de banco de dados (SGBD) fornecem recursos de recuperação de dados, muito potentes, mas que retornam apenas a informação explicitamente armazenada, não sendo capazes de deduzir e nem de induzir conhecimento. A recuperação tradicional de dados em um SGBD fornece ao usuário consultas sobre os dados na forma como os dados estão gravados, isto é, uma consulta pode listar vários atributos de uma tabela, gerar um relatório com diversos formatos diferentes ou gerar gráficos sobre a soma total de vendas de um determinado produto num período. Basicamente, estas consultas acessam o SGBD de acordo com o que o cliente solicita e fornece uma visualização destes dados de várias maneiras como gráficos e relatórios. Esta grande quantidade de dados históricos que pode parecer um desperdício de espaço e dinheiro, juntamente com o grande volume de dados manipulados diariamente pela empresa podem se tornar muito mais úteis do que são atualmente. Desde que se possa realizar cruzamentos entre todas essas informações para procurar padrões ou relações entre as informações. Entretanto, manipular um grande volume de dados com esse objetivo é uma tarefa não trivial que tem um alto custo de processamento. Existem diversas técnicas desenvolvidas para que se possa manipular grandes volumes de dados, de forma eficiente e, a partir destes, se possa extrair conhecimento ou algum outro tipo de informação. Neste sentido, o processo de descoberta de conhecimento em base de dados (DCBD) tem por principal objetivo fazer uma exploração em grandes bases de dados com o intuito de descobrir padrões que possam ser úteis à empresa, principalmente, para ampliar o conhecimento da empresa sobre o seu próprio negócio. Uma empresa com maior 14 conhecimento tem melhor capacidade de tomada de decisão e, isso pode ser um diferencial no mercado mundial que está tão competitivo. As decisões no mundo dos negócios precisam ser tomadas cada vez mais com agilidade, rapidez e precisão. Por isso, cada vez mais são necessárias ferramentas que suportem este trabalho e apresentem o conhecimento de forma compreensível, o que é alvo de estudo da área de DCBD. O termo descoberta do conhecimento em banco de dados, foi usado pela primeira vez em 1989 para referenciar o processo para encontrar conhecimento em dados e para enfatizar o alto nível de aplicação de métodos particulares de mineração de dados [FAY96]. O processo de descoberta do conhecimento pode ser compreendido como o processo não trivial de identificação de padrões válidos, potencialmente úteis, recentes e enfim compreensíveis dos dados [FRA92]. O processo de DCBD se difere de consultas tradicionais realizadas em um SGBD porque pesquisa por padrões nos dados, isto é, procura informações escondidas em uma base de dados. Em uma consulta tradicional, se o usuário quer que uma consulta liste o total de vendas por clientes num mês; o usuário sabe que o sistema gerará o relatório porque há dados suficientes em sua base de dados para tanto. Mas, se o usuário quiser saber se existe alguma relação entre os produtos comprados por seus clientes, terá que utilizar o processo de DCBD ao invés de utilizar as consultas tradicionais. O processo de DCBD não tem por objetivo a geração de novos dados para satisfazer alguma necessidade específica de alguma aplicação em particular (como por exemplo, o controle de acesso por cartão magnético das pessoas que freqüentam um teatro). Na realidade, o processo de DCBD possibilita que o usuário pesquise por informações úteis em um banco de dados, as quais não poderiam ser fornecidas por sistemas específicos. O enfoque principal do processo de DCBD é trabalhar com as base de dados existentes e fornecer informações desconhecidas a priori pela empresa, informações que se encontram "escondidas" nos dados. A validade do conhecimento descoberto somente poderá ser avaliada com base nos objetivos que a empresa tem ao aplicar o processo de DCBD. Portanto uma etapa muito importante neste processo é a definição dos objetivos, ou seja, que tipo de conhecimento que se deseja descobrir, onde será aplicado esse conhecimento, etc. Estas informações irão orientar o processo de descoberta, definindo a forma de extração de conhecimento a ser utilizada na etapa de mineração de dados. Uma das etapas do processo de DCBD é a mineração de dados que consiste na aplicação de algoritmos, baseados em técnicas de extração de padrões dos dados. Esta é uma 15 das etapas mais automatizadas do processo de DCBD, onde os dados que já foram pré-processados são agora processados por algum algoritmo que irá ou classificar padrões, ou identificar padrões, ou descobrir relacionamentos, etc, que existem na base de dados. Há diversos tipos de algoritmos que podem ser utilizadas para realizar esta tarefa, entre eles encontram-se as redes neurais artificiais. As redes neurais artificiais são modelos matemáticos que são constituídos de neurônios (projetados de forma análoga aos neurônios humanos), os quais são unidos através de conexões de peso. Uma unidade de processamento ou neurônio recebe sinais de pesos de outros neurônios, combina-os, transforma-os e produz um resultado numérico como saída. [BIO97] A principal característica das redes neurais artificiais é a grande capacidade de classificação. Isto é possível pois uma RNA pode ser treinada para aprender um determinado padrão através da modificação e correção de seus pesos (estímulos). Além do reconhecimento de padrões, as RNA são eficientes para a classificação de padrões. Uma característica muito importante das RNA é a sua capacidade de trabalhar com dados ruidosos (com erros) e, mesmo assim, conseguem executar a sua tarefa, inclusive sendo capazes de eliminar o ruído dos dados. [FRE94] O objetivo do desenvolvimento de aplicações utilizando a tecnologia de redes neurais artificiais é trabalhar em conjunto com os sistemas de desenvolvimento tradicionais. As redes neurais artificiais utilizadas na etapa de mineração de dados do processo de DCBD não estão e nem vão ser usadas para substituir os sistemas tradicionais existentes, neste sentido pode-se perceber que redes neurais artificiais utilizadas na etapa de mineração de dados do processo de DCBD podem ser adaptadas facilmente a diversos tipos de aplicações. Este trabalho tem por objetivo o estudo do processo de descoberta de conhecimento de banco de dados, mas especificamente estudar a etapa de mineração de dados e compreender a aplicação da tecnologia de RNA para reconhecimento e classificação de padrões. A seguir descreve-se a estrutura deste trabalho. O processo de DCBD é descrito no capítulo 2, onde se apresenta uma breve descrição das etapas do processo de DCBD; os possíveis problemas encontrados em um banco de dados; problemas do processo de DCBD; uma arquitetura hipotética do processo de DCBD e diversos conceitos relacionados ao processo de DCBD. 16 A etapa de mineração de dados que consiste na extração de padrões da base de dados é apresentada no capítulo 3. Neste capítulo são apresentados os modelos de conhecimento, as técnicas de mineração, os métodos de mineração e algumas aplicações. O capítulo 4 apresenta a definição e descrição de RNA. São apresentados diversos tópicos relacionados com as redes neurais artificiais, tais como, características do cérebro humano, manipulação de símbolos, reconhecimento de padrões, conceitos, elementos, paradigmas de aprendizagem, topologia, modelos e processo de aprendizagem de uma RNA. A aplicação de redes neurais artificiais na etapa de mineração de dados é apresentada no capítulo 5. Neste sentido, são descritas algumas formas de utilização de redes neurais artificiais dentro dos objetivos de mineração de dados, funções básicas de redes neurais artificiais adaptadas a mineração de dados, os tipos de treinamentos de uma RNA adequados ao processo de mineração, análise do aprendizado de uma RNA e extração de regras. O capítulo 6 apresenta a descrição de um protótipo de mineração de dados desenvolvido utilizando uma rede neural feedforward treinada através do algoritmo back propagation para realizar a classificação de padrões que serão aprendidos através de aprendizado supervisionado. No capítulo 7 são apresentadas as conclusões sobre o desenvolvimento deste trabalho. 17 2. DESCOBERTA DO CONHECIMENTO EM BANCO DE DADOS (DCBD) O termo "Descoberta do Conhecimento em Banco de Dados" é uma tradução literal do termo utilizado na língua inglesa "Knowledge Discovery in Databases" (KDD). O processo de DCBD pode ser definido como uma área emergente da ciência da computação que tem por objetivo automatizar o processo de extração de conhecimento útil em grande volumes de dados. Todo o conhecimento a ser extraído encontra-se escondido nos dados. O processo de DCBD é uma área de interesse para pesquisadores de diversas áreas, entre elas, inteligência artificial, estatística, banco de dados e aprendizado de máquina. Independente da área de interesse do pesquisador, o desenvolvimento do processo de DCBD combina técnicas, algoritmos e definições de todas estas áreas. A figura 2.1 demonstra a relação existente entre as diversas áreas envolvidas no processo de descoberta do conhecimento. Inteligência Artificial Banco de Dados Estatística Processo de Descoberta do Conhecimento em Base de Dados Figura 2.1 : Contexto do DCBD [FEL96] O processo de DCBD não tem por objetivo a geração de novos dados para satisfazer alguma necessidade específica de alguma aplicação em particular (como por exemplo, o controle de acesso por cartão magnético das pessoas que freqüentam um teatro). Na realidade, o processo de DCBD possibilita que o usuário pesquise por informações úteis em uma base de dados, as quais não poderiam ser fornecidas por sistemas específicos. O processo de descoberta de conhecimento em banco de dados possui duas categorias de objetivos: verificação e descoberta, os quais são descritos a seguir: 18 • Verificação: o objetivo do processo de DCBD é verificar as hipóteses que o usuário propõe ao processo de DCBD. • Descoberta: o objetivo do processo de DCBD é descobrir novos padrões nos dados sem a interferência do usuário. O processo de descoberta pode ser dividido em modelo preditivo ou modelo descritivo [TER96]: ♦ Descoberta através de Modelos Preditivos: o sistema acha padrões com o objetivo de predizer o comportamento futuro de algumas entidades. A partir dos conhecimentos já obtidos sobre os dados, a aplicação de descoberta do conhecimento tenta modelar o seu comportamento no futuro. ♦ Descoberta através de Modelos Descritivos: o sistema acha padrões com o objetivo de apresentá-los ao usuário de uma maneira que este tenha a capacidade de compreendê-los. Além de tentar prever o comportamento futuro, este modelo tem por objetivo fornecer resultados facilmente compreensíveis pelo usuário para que este possa, por exemplo, utilizar essas informações no processo de tomada de decisão. O processo de DCBD é composto por diversas etapas. Estas etapas envolvem diversas tomadas de decisões (realizadas pelo usuário) e repetições destas etapas, se necessário. A visão do processo de DCBD formulada por Brachman [BRA96] e Anand [ANA96] envolve as seguintes etapas: compreensão, seleção, pré-processamento dos dados, transformação, escolha da tarefa da mineração de dados, escolha do algoritmo de mineração de dados, mineração de dados, interpretação dos padrões minerados e verificação, as quais serão descritas a seguir. 1. Compreensão: desenvolver a compreensão do domínio da aplicação e conhecimento prévio relevante e, identificar os objetivos do processo do ponto de vista de quem participará do processo de DCBD. É muito importante para o processo de DCBD o conhecimento do domínio da aplicação para a extração de informações relevantes. Nesta etapa, deve-se conhecer as metas do usuário e quais são os objetivos a serem atingidos pelo processo de DCBD. A participação e conhecimento do usuário no processo de DCBD é de vital importância para o seu sucesso. 2. Seleção: consiste em criar um conjunto de dados para ser utilizado no processo de DCBD. Pode-se selecionar ou segmentar um conjunto de dados de acordo com 19 algum critério ou focalizar-se sobre um subconjunto de variáveis ou exemplos de dados, nos quais a descoberta será executada. Nesta etapa é importante definir quais os sistemas existentes, ou parte deles, que serão utilizados ao longo deste processo. O principal objetivo desta etapa deve ser a definição do volume de dados. Isto é necessário porque grandes volumes de dados requerem grandes recursos computacionais, além de seu gerenciamento ser difícil. 3. Pré-processamento dos dados: nesta etapa realiza-se uma limpeza no banco de dados. O principal objetivo desta etapa é fornecer dados com alta qualidade para serem manipulados nas próximas etapas do processo de descoberta do conhecimento. Os dados em um banco de dados podem ter diversos problemas relacionados com a qualidades dos dados, tais como: informações incompletas, dados esparsos, informações redundantes, ruídos, incertezas e dados dinâmicos (estes problemas serão apresentados mais adiante neste capítulo). Para se eliminar estes problemas, pode-se realizar algumas operações básicas, tais como, remoção de ruído, coleta de informações, definição de estratégias para manipular os atributos, remoção ou alteração dos dados inconsistentes, retirada de dados desnecessários e escolha das estratégias para manipular campos de dados perdidos, considerando-se as informações de seqüência de tempo com as trocas de conhecimento. 4. Transformação: consiste na redução de dados e projeção. Utiliza-se a redução dimensional ou métodos de transformação para reduzir o número efetivo de variáveis a serem consideradas ou para encontrar uma representação invariante dos dados. O enfoque desta etapa é deixar os dados no formato e limitações exigidos pelos algoritmos de extração de dados. Para atingir este objetivo, a base de dados é analisada no sentido de se verificar se contém apenas dados úteis, o que evitará a ocorrência de problemas posteriores quando as consultas forem realizadas. 5. Escolha da tarefa da mineração de dados: o objetivo deste passo é enquadrar os objetivos do processo de DCBD em um método particular de mineração de dados. No capítulo 3 serão apresentados técnicas e algoritmos de mineração de dados. 6. Escolha do algoritmo de mineração de dados: nesta etapa escolhe-se um algoritmo de mineração de dados, ou seja, seleciona(m)-se o(s) método(s) a ser(em) utilizado(s) para procurar padrões nos dados. Isto inclui decidir quais modelos e 20 parâmetros podem ser apropriados para as etapas de mineração de dados integrantes do processo de DCBD. O objetivo principal desta etapa é a escolha do algoritmo, o que determinará como deve ser a entrada dos dados para o algoritmo. Em outras palavras, aqui será definida a estrutura de dados a ser utilizada na aplicação para o processo de descoberta do conhecimento. 7. Mineração de dados: o algoritmo escolhido na etapa anterior será utilizado para descobrir padrões nos dados. Na pesquisa por padrões pode ser utilizada uma forma particular de representação de dados ou um conjunto de representações como, por exemplo, árvores de classificação, regressão ou agrupamento. O sucesso do processo de mineração de dados depende da execução correta dos passos anteriores e depende significativamente da participação ativa do usuário. 8. Interpretação dos padrões minerados: nesta etapa realiza-se a interpretação dos padrões extraídos. A avaliação dos padrões encontrados poderá provocar um retorno a alguma das etapas anteriores para uma nova iteração. Esta etapa pode envolver também a visualização de dados conforme os modelos extraídos. Os resultados encontrados estão em alguma representação computacional na forma de estruturas de dados. Estas estruturas de dados podem dificultar a interpretação do conhecimento obtido. Para facilitar a interpretação dos resultados pode ser importante o desenvolvimento de um aplicativo para visualizar os resultados. A visualização dos dados pode ser feita através de gráficos de exibição dos dados na tela ou da geração de relatórios impressos. 9. Verificação: o conhecimento obtido no processo de DCBD deve ser incorporado ao sistema, documentado e repassado às partes interessadas. O objetivo principal desta etapa é validar os resultados obtidos. Conforme apresentado em [HER95], muitas das pesquisas em DCBD têm se concentrado em aplicar métodos de descoberta de conhecimento a dados armazenados em banco de dados relacionais. Com isso, o usuário tem significativa importância no processo de DCBD para fornecer uma orientação sobre os dados do banco de dados a serem utilizados, ou seja, selecionar os dados a serem explorados, identificar linhas e colunas de uma tabela relevantes à pesquisa e definir objetivos. 21 Os conteúdos dos bancos de dados, geralmente, apresentam dificuldades de utilização como dados dinâmicos, dados ruidosos, dados incompletos, informações redundantes, bases de dados muito grandes, base de dados distintas, tipos de dados e incerteza. Estes problemas são descritos a seguir e devem ser resolvidos para o sucesso do processo de descoberta de conhecimento. • Dados dinâmicos são assim chamados por terem seus conteúdos alterados com muita freqüência. Para o processo de descoberta do conhecimento é necessário criar uma visão ou replicação dos dados que fazem parte dos sistemas on-line. • Dados ruidosos causam um grave problema ao processo de descoberta de conhecimento. Este problema é que pode-se descobrir um padrão na base de dados correto para os dados atuais, mas que na verdade, está incorreto. Isto acontece pela presença de dados errados na base de dados. Quando se trabalha com grandes volumes de dados deve-se procurar minimizar ao máximo a taxa de erros encontradas em pesquisas em uma base de dados. • Dados incompletos ou incorretos acontecem pela falta de valores em colunas de uma tabela de forma individual ou coletiva. Podem acontecer, também, através da entrada de valores incorretos na qual não houve algum tipo de verificação nos dados. Outro fator que contribui para o aparecimento de dados incompletos é o uso de um banco de dados relacional onde não foram utilizadas adequadamente as técnicas do modelo entidade-relacionamento ou as restrições de integridade não foram corretamente construídas. Com dados incorretos acontece a mesma situação descrita para dados ruidosos. • Informações redundantes podem ocorrer por causa da dependência funcional dos dados na qual um atributo é definido como uma função de outros atributos. Trabalhar com este tipo de informação no processo de descoberta do conhecimento pode gerar uma descoberta enganosa de conhecimento. • Quando se trabalha no processo de descoberta do conhecimento com bases de dados muito grandes, torna-se necessário exaustivas análises empíricas sobre os dados para criar amostras de dados ou criar um armazém de dados (Data Warehouse). É difícil e tem um custo muito grande gerenciar volumosas bases de dados. 22 • Quando se trabalha com bases de dados distintas é necessário que os algoritmos de extração estejam preparados para trabalhar com bancos de dados heterogêneos. Isto pode aumentar a complexidade e o custo de todo o processo de DCBD. • Os tipos de dados contidos em uma tabela podem ser bem diferentes e requererem tratamento diferenciado. Por exemplo, um atributo do tipo imagem e outro do tipo texto necessitam ser tratados de forma diferente. Com isso, o algoritmo deve estar preparado ou ser preparado para trabalhar com diferentes estruturas de dados. Este fator pode aumentar a complexidade e o custo do desenvolvimento do algoritmo a ser utilizado no processo de DCBD. • [FEL96] descreve a incerteza como "a necessidade de se lidar no processo de DCBD com modelos não determinísticos. Para que tais padrões sejam encontrados é importante que se trabalhe com formalismos de representação de conhecimento probabilísticos e muitas vezes tirar proveito de técnicas estatísticas para estimar a cobertura e validade do modelo". Como qualquer outra tecnologia em ascensão, o processo de descoberta do conhecimento em banco de dados possui alguns problemas, citados a seguir, que somente com a maturidade desta tecnologia serão superados: • Custo, Tempo e Esforço: todo o processo de DCBD pode custar ao redor de centenas de milhares de reais. Muitas horas para as pessoas trabalharem são necessárias, envolvendo complexos procedimentos e escolha de produtos. Tem-se a necessidade de selecionar dados ou limpar programas, e não existe um sistema poderoso que faça isso. É necessário o envolvimento do usuário final para que este tenha conhecimento sobre no que o processo de DCBD irá trabalhar. Escrever consultas SQL pode ser complexo e difícil, mesmo utilizando o um ambiente gráfico. Treinamento extensivo e prática são ainda necessários para muitos usuários. • Software para uso final: alguns sistemas para uso final disponíveis como ferramentas de análise de data warehouse estão disponíveis por alguns milhares de reais, mas estes são apenas alguns módulos, não uma solução completa que é necessária para as operações do processo de DCBD e de negócios. Estes sistemas possuem capacidades de consultas limitadas e não estão habilitados a realizar análise multidimensional, ou seja, é impossível executar uma tarefa que encontre 23 associações entre os itens de diversas tabelas. Muitos dos sistemas atuais de processo de DCBD não são verdadeiramente interativos e, a priori, não podem incorporar conhecimento sobre o problema exceto de uma forma simples. • Grandes Bancos de Dados: o tamanho dos bancos de dados das empresas é normalmente muito grande e este fato revela-se como um problema em termos de se encontrar algoritmos eficientes para gerar regras de associação num espaço tão grande de pesquisa. Além disso, a quantidade de atributos nas tabelas contribui para o aumento da complexidade dos algoritmos e dos dados a serem manipulados. Esses fatores aumentam as chances dos algoritmos de mineração de dados encontrarem nos padrões inválidos nos dados durante a execução das etapas do processo de DCBD. Além dos problemas existentes no processo de DCBD, é importante que alguns tópicos sejam levados em consideração para o melhor aproveitamento do processo de descoberta de conhecimento em banco de dados: • O desenvolvimento de sistemas de computador com alta performance deve integrar o processo de DCBD. Deve-se dar ênfase ao uso de arquiteturas paralelas e multiprocessadores para que os algoritmos de mineração de dados possam executar mais rapidamente a pesquisa em terabytes de dados. • Treinamento e educação dos usuários deve ser enfatizado, pois os algoritmos de mineração de dados trabalham com consultas não muito amigáveis. O treinamento fornecerá ao usuário condições para entender as consultas e conceitos sobre DCBD. • A eficiência do processo de descoberta do conhecimento em banco de dados depende muito da tecnologia disponível. Mas, depende muito da interação com o usuário para seu contínuo desenvolvimento e chegar ao final do processo com resultados positivos. Para tanto, o processo de DCBD deve ser interativo e responder rapidamente aos objetivos do usuário. As ferramentas computacionais utilizadas durante o processo de DCBD devem ser de fácil uso (uma interface gráfica pode fornecer uma visão dos relacionamentos dos dados, qualidade de predições e as bases para modelos diretos e intuitivos). Em [FAY96] pode-se encontrar alguns critérios de seleção para aplicação do processo de DCBD. O autor divide os critérios em dois grupos: 24 1. Critérios práticos: os critérios práticos dividem-se em impacto potencial na aplicação, falta de alternativa, suporte organizacional e problemas legais. Os quais são citados abaixo. • Impacto Potencial na Aplicação: a maior expectativa na utilização do processo de DCBD em uma empresa é em torno dos resultados do processo de descoberta do conhecimento. Os resultados obtidos podem ter um grande impacto em futuras decisões a serem tomadas pela empresa. O impacto poderia ser medido por critérios como maiores vendas, menores custos, maior qualidade ou economia de tempo [TER96]. A empresa deve maximizar ou otimizar os seus processos em função dos resultados obtidos pelo processo de DCBD. • Falta de Alternativa: supondo que uma empresa não tenha uma alternativa para resolver um problema e, a única solução encontrada é o desenvolvimento do processo de DCBD. A expectativa em torno dos resultados do processo de DCBD é muito grande normalmente. Neste caso, a expectativa será muito maior. Para que esta expectativa não se torne uma grande decepção, as etapas do processo de descoberta do conhecimento devem ser realizadas com muito mais cuidado e atenção de todos, em especial dos usuários. • Suporte Organizacional: o processo de DCBD deve ser realizado pelos profissionais de informática em conjunto com pelo menos um representante da empresa. Isto se torna necessário porque a empresa é a maior interessada em obter resultados importantes. O representante da empresa é necessário nas tomadas de decisões durante o processo de DCBD para auxiliar na validação dos resultados ou na decisão de se realizar novas minerações. Como o processo de DCBD pode custar muito caro para a empresa, é necessário um acompanhamento de alguém da empresa para verificar o andamento do processo de DCBD e evitar situações em que chegue-se à conclusão que foi gasto muito dinheiro sem se obter os resultados esperados. 25 • Problemas Legais: "bancos de dados que utilizam informações pessoais devem ser investigados somente com autorização das pessoas cujas informações particulares estão armazenadas. Isto porque existe uma questão legal referente à privacidade destas informações" [TER96]. Esta questão é levada mais a sério nos Estados Unidos da América e na Europa. Enquanto que esta questão é pouco comentada e divulgada ainda no Brasil. "Enquanto que a descoberta de padrões de grupos aparentemente não violarem as restrições de uso de dados pessoais, podem ser feitas combinações ingênuas de padrões de grupos de dados, especialmente em pequenos conjuntos de dados, que podem identificar informações pessoais específicas. Soluções que permitem descoberta de padrões de grupos incluem a retirada ou substituição de atributos de identificação, a realização de pesquisas em subconjuntos aleatórios de dados e a combinação de indivíduos em grupos e, a partir disso, permitir somente pesquisas em grupos" [FAY96]. 2. Critérios técnicos: Os critérios técnicos, descritos a seguir, dividem-se em disponibilidade de dados suficientes, atributos relevantes, baixo nível de ruído, intervalos de confiança e conhecimento prévio. • Disponibilidade de Dados Suficientes: o processo de descoberta de conhecimento somente produzirá resultados interessantes se tiver um conjunto considerável de dados confiáveis a serem pesquisados. • Atributos Relevantes: os sistemas devem possuir atributos com significativa importância que demonstrem ao processo de DCBD como pode-se esperar que seja a saída do conhecimento obtido no processo de DCBD. • Baixo Nível de Ruído: bancos de dados com muito ruído podem prejudicar o processo de DCBD, portanto é importante utilizar técnicas para eliminá-lo. • Intervalos de Confiança: os intervalos de confiança podem ser usados para corrigir desvios existentes nas etapas do processo de DCBD. 26 • Conhecimento Prévio: baseado no conhecimento sobre o sistema atual e sobre as estruturas de dados utilizadas no banco de dados pode-se determinar quais os sistemas que serão utilizados no processo de mineração; quais os atributos que são importantes; determinar relacionamentos prévios; além de já se possuir padrões conhecidos. Enfim, tudo isso pode acelerar e auxiliar o processo de DCBD. Matheus, Chan e Piatetsky-Shapiro em [MAT93] propuseram uma arquitetura hipotética sobre o funcionamento de um processo genérico de DCBD. A figura 2.2 ilustra esta arquitetura hipotética. Entrada do Usuário ➞ Controlador ➞ SGBD Conhecimento do Domínio Interface com o BD ➞ Foco ➞ Extração de Padrões ➞ Avaliação ➞ Descobertas ➞ Base de Conhecimento Figura 2.2 : Modelo de Sistema de DCBD [FEL96] Na figura 2.2, a entrada que o usuário fornece para o controlador são informações para a configuração do sistema. Nesta arquitetura, o SGBD pode ser o utilizado pela empresa em seus sistemas tradicionais, ou um SGBD pode ser montado a partir de uma aplicação de Data Warehouse. Na base de conhecimento podem ser informados padrões ou regras já conhecidos sobre os dados. Aqui, pode-se identificar seis módulos responsáveis para trabalho e manipulação das entradas fornecidas: controlador, interface com o BD, base de conhecimento, foco, extração de padrões e avaliação, os quais são explicados a seguir. 1. Controlador: este módulo comanda todo o processo de manipulação dos dados e é o responsável por invocar os demais módulos. Os demais módulos podem ser disparados em seqüência ou a partir de alguma estratégia definida pelo controlador para otimizar a pesquisa por novas descobertas ao longo de todo o processo. 2. Interface com o BD: realiza a comunicação com o SGBD. 27 3. Base de Conhecimento: local onde está armazenado o conhecimento do domínio. Este conhecimento será de grande ajuda no processo de descoberta de conhecimento se contiver regras interessantes sobre a base de dados ou algum padrão referente ao comportamento dos dados. 4. Foco: define as tabelas do SGBD que devem ser utilizadas no processo de descoberta de conhecimento. Além das tabelas, define-se os atributos e tuplas que farão parte do processo. Este modelo é capaz de identificar atributos relevantes ao processo. 5. Extração de Padrões: este modelo contém os algoritmos, técnicas e estratégias a serem utilizadas pelo processo de descoberta de conhecimento para extrair os padrões sobre a base de conhecimento. 6. Avaliação: avalia os resultados do processo de descoberta do conhecimento. A avaliação pode definir se os resultados foram satisfatórios ou se alguma etapa do processo deve ser repetida. 2.1 Conceitos relacionados à descoberta do conhecimento em BD 2.1.1 Modelos "A compreensão que os humanos tem do seu ambiente e a sua forma de raciocinar sobre o mundo real se dá através de seus órgãos sensoriais" [HOL94]. A construção de modelos é muito importante para o processo de descoberta de conhecimento. Estes modelos fornecerão ao processo de DCBD a base de dados a ser pesquisada e os padrões conhecidos sobre os dados. O modelo pode ser construído de forma indutiva. O conhecimento descoberto é valido para a base de dados pesquisada e pode não ser válida para outras bases de dados. 2.1.2 Classes Um estado da base de dados é descrito utilizando-se um conjunto limitado de propriedades das entidades representadas. Desta maneira, objetos distintos do mundo real podem ser representados internamente como se fossem o mesmo objeto, ou seja, apresentarem os mesmos valores para todas as propriedades. Por exemplo, existem pessoas cursando um 28 mesmo curso universitário. De forma semelhante ao exemplo, pode-se relacionar um conjunto específico de propriedades, capaz de representar uma classe de objetos. Tal conjunto de propriedades com os valores correspondentes válidos para uma mesma classe de entidades é chamado descrição de uma classe. Um exemplo seria procurar saber o que têm em comum as pessoas freqüentadoras de um estádio de futebol no sábado à noite e obter como descrição o percentual de homens e mulheres. [HOL94b] Ao longo das etapas do processo de DCBD, diversas descrições de classes são criadas, geralmente, através de processos indutivos. Estas descrições de classe normalmente representam um conjunto de valores que especificam elementos de uma mesma classe. Estes conjuntos de valores fazem parte de um banco de dados, com isso, as descrições de classe são representadas por conjuntos de pares de valores atributo-valor (<atributo, valor>). Ao longo do processo de descoberta do conhecimento em base de dados, a construção de classes é uma tarefa que ocorre com freqüência muito grande. 2.2 Tipos de Descoberta Os algoritmos de detecção de padrões formam o núcleo de um sistema de descoberta do conhecimento em base de dados [FEL96]. Os padrões representam os relacionamentos entre os atributos de valores de uma base de dados. Existem diversas abordagens sendo utilizadas para detectar padrões em base de dados. Em [FEL96] são citadas quatro categorias, dependendo da abordagem utilizada. Serão descritas, a seguir, análise de dependências, identificação de classes, descrição dos conceitos e detecção de desvios. 1. Análise de Dependências: existe uma dependência entre dois atributos quaisquer se o valor de um atributo pode ser utilizado para estimar o outro atributo e pode ser representado como A → B. Esta dependência em muitos casos não é exata, mas probabilística, e representa-se por A → B , onde o w é o peso associado à W dependência. O conhecimento descoberto pode ser útil para usuário como também pode ser útil para disparar novas pesquisas. As dependências encontradas em um banco de dados podem ser representadas através de um grafo de dependências. 2. Identificação de Classes: gerar conhecimento útil para o usuário final ou para ser utilizado para outros algoritmos de descoberta. Este é o processo inverso àquele onde o usuário fornece os atributos e um algoritmo procura identificar os conceitos. 29 O algoritmo é o responsável por gerar o conhecimento. Este processo pode ser comparado ao aprendizado não supervisionado. 3. Descrição de Conceitos: a função do algoritmo de descrição de conceitos é procurar as características comuns em um conjunto de classes fornecidas para o algoritmo. Este tipo de algoritmo proporciona ao usuário as informações sobre toda uma classe de indivíduos de uma base de dados, enquanto que os sistemas de bancos de dados possuem apenas o recurso de acessar individualmente os registros e as informações sobre cada indivíduo. As descrições geradas podem ser de dois tipos: característica ou discriminativa. A descrição característica apresenta as propriedades (pares de valores <atributo, valor>) que os membros de uma classe possuem em comum. A descrição discriminativa mostra as diferenças entre as classes. O algoritmo, antes de sua execução, necessita saber quais são as classes de valores que devem ser descritas. O usuário ou algum algoritmo de identificação de classes fornece os atributos. 4. Detecção de Desvio: os desvios podem ser: instâncias que não se enquadram nas classes, superposições entre classes, classes que se diferenciam muito de suas classes pai, mudanças no valor em um período de tempo, discrepâncias entre valores observados e esperados previstos pelo modelo [MAT93]. Um desvio é sempre um contraste entre uma observação e algum referencial [FEL96]. Como o objetivo deste trabalho não é fazer uma completa análise do processo de descoberta do conhecimento em banco de dados, a introdução acima é suficiente, informações mais detalhadas podem ser encontradas em [TER96], [FEL96] e [HER95]. O próximo capítulo tem por objetivo descrever as etapas do processo de DCBD referentes a mineração de dados: técnicas de mineração, algoritmos de mineração e a mineração de dados propriamente dita. 30 3. MINERAÇÃO DE DADOS A mineração de dados pode ser definida como um conjunto de técnicas utilizadas para explorar grandes bases de dados na busca de informações e relacionamentos potencialmente úteis que estão escondidos nestes dados. Basicamente, a mineração de dados é compreendida como uma forma de análise de dados que utiliza técnicas para encontrar padrões em um conjunto de dados. Em [HOL94], define-se mineração de dados como "uma procura por relacionamentos e padrões globais que existem em grandes bases de dados mas estão ocultos entre esta vasta quantidade de dados, tais como, um relacionamento entre dados de um paciente e seu diagnóstico médico. Estes relacionamentos representam valores de conhecimento sobre o banco de dados. Se o banco de dados é confiável então há um "espelho" do mundo real registrado no banco de dados". A mineração de dados utiliza em sua análise para descobrir padrões nos dados diversos algoritmos isolados ou combinados para procurar relacionamentos entre os dados. Estes algoritmos podem procurar numerosos relacionamentos multidimensionais concorrentemente, informando os relacionamentos dominantes e exceções em uma base de dados. Aplicações de mineração de dados podem ser descritas em termos de uma arquitetura de aplicação composta por modelos, técnicas e métodos, os quais são apresentados nas próximas seções. 3.1 Modelos de Mineração de Dados A IBM identificou dois tipos de modelos de mineração de dados: modelo de verificação e modelo de descoberta, os quais são descritos a seguir [DIL95]. Percebe-se que, de forma geral, os sistemas atuais de DCBD possuem uma combinação destes dois modelos, com uma ênfase maior em um deles. • Modelo de Verificação: este modelo trabalha com hipóteses formuladas pelos usuários. Para estas hipóteses são realizados testes de validação contra o banco de dados. A ênfase deste modelo é que o usuário obtém uma resposta afirmativa ou negativa às suas hipóteses. O problema apresentado por este modelo é que nenhuma informação nova é criada ao longo deste processo. Este processo de procura é 31 iterativo, onde a saída gerada é revisada e um novo conjunto de hipóteses é formulado para refinar a procura e o processo é repetido várias vezes. • Modelo de Descoberta: este modelo difere do anterior por ter uma ênfase em que o sistema procura descobrir automaticamente informações importantes ocultas nos dados. O dado é peneirado na procura de ocorrências freqüentes de determinados padrões e tendências, e generalizações são feitas sobre os dados sem a intervenção do usuário. 3.2 Técnicas de Mineração de Dados Existem diversas técnicas de mineração de dados, as quais podem ser usadas individualmente ou em conjunto, entre elas pode-se citar: agrupamento, classificação, regressão, modelagem de dependência, detecção de desvios, sumarização, associação, seqüência e agrupamento por séries temporais. As técnicas de mineração de dados são agrupadas em diversas taxonomias diferentes por diversos autores. Aqui não serão mostradas estas diferenças, para maiores informações sobre as taxonomias consulte [FAY96] e [AGR93]. 3.2.1 Agrupamento Esta técnica refere-se ao agrupamento de elementos através de algum critério que determina as distâncias entre os elementos e aqueles com distância menor ficam no cluster. Abordagens de agrupamento direcionam-se a problemas de segmentação. Estas abordagens consultam os dados de registros com um grande número de atributos num conjunto relativamente pequeno de grupos ou segmentos. Estes conjuntos de dados podem ser criados estatisticamente ou através do uso de métodos de RNA ou técnicas de indução. Este processo de associação é executado automaticamente por algoritmos de agrupamento que identificam as características distinguíveis de um conjunto de dados e então os particionam num espaço n-dimensional definido pelos atributos do conjunto de dados, através de limites de dados encontrados naturalmente. Não existe a necessidade de identificar os grupos ou atributos que serão utilizados para segmentar o conjunto de dados. Agrupamento é freqüentemente utilizado como um dos primeiros passos na análise dos dados feita pela mineração de dados [BIG96]. Identifica grupos de registros relacionados, os 32 quais podem representar classes potenciais, as classes podem ser usados como ponto de partida para explorar outros relacionamentos. No uso da técnica de agrupamento, não se possui um conjunto de dados pré-definidos, isto caracteriza o uso de um método de aprendizado não-supervisionado onde existe maior autonomia do algoritmo. 3.2.2 Classificação A técnica de classificação utiliza um conjunto de exemplos pré-classificados para desenvolver um modelo que pode classificar uma população de registros. Esta aplicação freqüentemente utiliza árvores de decisão ou algoritmos de classificação baseados em redes neurais artificiais. O uso de algoritmos de classificação inicia-se com um conjunto de treinamento de transações, por exemplo, pré-classificadas. O algoritmo de treinamento classificador utiliza estes exemplos para determinar o conjunto de parâmetros necessários para a discriminação apropriada. O algoritmo então codifica estes parâmetros num modelo chamado classificador. A função da técnica de classificação é examinar o conjunto de registros classificados e produzir descrições das características dos registros para cada classe. O problema da técnica de classificação em realizar corretamente esta função é a descoberta de regras que particionem os dados em todo o processo de mineração de dados [HER95]. Como resultado da técnica de classificação pode-se determinar regras que classificam um determinado conjunto de dados ou regras que discriminem os dados. Na técnica de classificação, possui-se um conjunto de dados pré-determinados para a classificação, isto caracteriza um método de aprendizado supervisionado, onde o algoritmo é controlado por parâmetros que não são passados ao sistema. 3.2.3 Regressão A técnica de regressão é definida como "Métodos matemáticos utilizados para ajustes de curvas, sendo muito útil para modelos preditivos. Isto porque, dado um conjunto de pontos estes métodos calculam fórmulas capazes de fornecer pontos intermediários, anteriores ou 33 posteriores. Neste caso podem ser determinadas, por exemplo, similaridades em séries temporais". [TER96] O processo de regressão envolve o aprendizado de uma função que associa um item de dado para um valor real de uma variável de predição. Um exemplo, é predizer a demanda de consumo para um novo produto como uma função de expediente. [FAY96] 3.2.4 Modelagem de Dependência A modelagem de dependência consiste em encontrar um modelo que descreva dependências significativas entre variáveis. Modelos de dependências existem em dois níveis: nível estrutural e nível quantitativo. O nível estrutural do modelo específica quais variáveis são localmente dependentes de outras. O nível quantitativo do modelo especifica o grau das dependências através do uso de alguma escala numérica. Um exemplo desse método são as correlações para especificar a resistência das dependências. [FAY96] Normalmente, as dependências são modelos com probabilidades associadas, como mostram as redes de crenças baseadas no raciocínio probabilístico. A visualização destas redes também facilita o entendimento das relações entre as dependências (atributos) [TER96]. 3.2.5 Detecção de Desvios A técnica de detecção de desvios tem por objetivo descobrir um conjunto de valores que não seguem padrões definidos de valores, ou seja, são exceções. É necessário a criação de padrões de forma antecipada para descobrir este conjunto de valores. Em [TER96] é citado que esta técnica pode ser mais aplicável para se analisar os resultados obtidos com a mineração dos dados do que para se obter estes valores aplicando-a como uma técnica de mineração de dados. 3.2.6 Sumarização O seu objetivo é criar descrições compactas para um subconjunto de dados. Um exemplo é citado em [TER96], criação de média e desvio padrão e eliminação de dimensões. 34 3.2.7 Associação Associação é a formalização de uma regra observada a partir de ocorrências de itens em conjuntos de transações, a partir disso se chega a um fator de confiança que determina o percentual de acerto desta regra em novas transações [HER95]. As taxas de confiança (confidence thresholds) podem ser inicializadas para eliminar as tendências mais comuns. Um exemplo é apenas manter regras com grau de confiança maior do que 90%. As regras de associação são regras compostas por causa (antecedente) e efeito (conseqüente). Em se tratando de bancos de dados relacionais, os componentes são os valores dos atributos, participantes de uma mesma transação. O formato destas regras é : X ⇒ Y. "O significado intuitivo deste tipo de regra é que transações de banco de dados que contêm X tendem a conter Y" [TER96]. Os algoritmos de associação utilizam a forma lógica (valores contendo verdadeiro ou falso) para manipular os itens, isto é feito para tornar mais fácil o processo de descoberta. O grande problema da associação é normalizar valores nominais, os quais são normalmente excluídos do processo de associação. Diversas aplicações podem ser beneficiadas pela utilização da abordagem de associação como, por exemplo, supermercados, planejamento de inventários e planejamento de vendas de produtos, entre outros. Na análise e planejamento de venda de produtos trabalha-se com um conjunto de itens dentro de uma simples transação. O objetivo é encontrar um grande número de tendências que podem ser usadas para compreender e explorar naturalmente padrões de compra. Existem duas probabilidades associadas às regras de associação: o grau de confiança e o grau de suporte. O grau de confiança determina a probabilidade de ocorrência do conseqüente em relação ao antecedente, ou seja, a força que une os itens que formam a regra [TER96]. O grau de suporte indica a probabilidade da regra ocorrer em relação a toda a base de dados. 3.2.8 Seqüência "As regras de seqüência são aquelas onde existe uma associação temporal nos fatos e, como nas regras de associação, existe um relacionamento de causa e efeito. A diferença é que nas regras de seqüência os itens que se relacionam estão em transações diferenciadas, ao 35 contrário das regras de associação onde os itens que se relacionam estão dentro da mesma transação. O formato destas regras é o seguinte: Xt ⇒ Yt+n, onde Xt é um conjunto de itens de uma transação t, Yt+n é um conjunto de itens de uma transação t+n e os itens são pares atributo-valor, onde t é uma variável de tempo e, portanto, a transação t+n ocorreu depois da transação t ". [TER96] Um exemplo, deste tipo de regra, é a compra do segundo volume de um livro, de forma que esta compra pode ter sido conseqüência direta da compra do primeiro volume. Isto é, por alguma razão uma pessoa comprou o primeiro volume de um livro e, esta compra a levou a comprar o segundo volume. A seqüência pode também ser entendida pela ordem na qual os atributos estão colocados em uma tabela. A análise destas tabelas, dependendo da ordem dos atributos, possibilita resultados finais diferentes durante o processo de mineração de dados [HER95]. 3.2.9 Agrupamentos por Séries Temporais As séries temporais determinam o comportamento de um conjunto de dados durante um certo período de tempo. Desta maneira, é possível analisar similaridades entre os dados existentes neste conjunto de dados no mesmo período de tempo. [TER96] cita como exemplo de séries temporais a análise de comportamento de ações de determinadas empresas. 3.3 Métodos de Mineração de Dados Existem diversos métodos que podem ser utilizados para realizar a mineração de dados e estes métodos podem ser implementados de diversas formas, dependendo das necessidades de aplicação ou dos objetivos da mineração. Em todos eles é importante que se defina qual será o formato utilizado para descrever os padrões descobertos, além de se definir critérios que permitam a avaliação destes padrões. Além disso, é importante determinar quais são os parâmetros necessários ao método e qual o nível de interatividade com o usuário. Os métodos de mineração de dados descritos a seguir são os seguintes, regressão não linear e métodos de classificação; árvores de decisão e regras; regras de indução; visualização dos dados; métodos 36 baseados em exemplos; métodos probabilísticos de gráficos de dependência e métodos de aprendizado relacional. 3.3.1 Regressão Não Linear e Métodos de Classificação Estes métodos consistem de uma família de técnicas para predição a qual faz ajuste de combinações lineares ou não-lineares de funções base (sigmóides, splines e polinomiais) para combinação das variáveis de entrada. Exemplos incluem redes neurais feedforward, métodos spline adaptativos, regressão de procura de projeção, etc. [FAY96] O modelo neural treina a rede sobre um conjunto de dados de exemplos e então usa a rede treinada para fazer predições. Entretanto, o treinamento de RNA para bases de dados muito grandes deve ser mais cuidadoso pois o tempo a ser gasto será também muito maior. 3.3.2 Árvores de Decisão e Regras Este algoritmo utiliza dados baseados em valores de variáveis. Esta metodologia utiliza uma hierarquia de sentenças "if-then" para classificar os dados. De forma geral, as sentenças "if-then" podem ser muito complexas se forem muito longas. Árvores de decisão e regras que usam divisão não variável têm uma forma de representação simples, fazendo com que a inferência do modelo seja relativamente fácil de ser compreendida pelo usuário. Entretanto, a restrição a uma representação particular de árvore ou regra pode restringir significativamente a forma funcional (e logo o poder de aproximação) do modelo. O aumento do espaço do modelo permite expressões mais gerais (tais como, hiperplanos multivariáveis com ângulos arbitrários), então o modelo pode ser mais poderoso para predição mas pode ser muito difícil compreendê-lo. Existe um grande número de algoritmos de árvores de decisão e regras de indução descritos na literatura sobre estatística aplicada e aprendizado de máquina [BRE84]. 3.3.3 Regras de Indução As regras de indução são conjuntos de condições sem hierarquia os quais são gerados com o objetivo de predizer valores para novos itens de dados. As regras usadas para predição são mais gerais e mais poderosas do que árvores de decisão. Um exemplo deste método é a 37 utilização de lógica fuzzy para modelagem qualitativa [SUG93], onde são usados conjuntos fuzzy de saída para a partir dos dados de entrada induzir as regras. 3.3.4 Visualização dos Dados A visualização dos dados pode ser considerada uma técnica (ou conjunto de técnicas) que permitem uma maior compreensão dos padrões descobertos. Aqui pode-se usar gráficos para apresentar as regras, curvas de níveis, mapas de volumes, mapas de Kohonen, etc [FRE94]. Atualmente, muito esforço tem sido gasto para melhorar esta etapa de processo de DCBD nos sistemas disponíveis. 3.3.5 Métodos Baseados em Exemplos A representação é simples: utiliza-se exemplos de banco de dados para aproximar um modelo, isto é, predições sobre novos exemplos são derivadas de propriedades de exemplos similares no modelo de predição que é conhecido. Exemplos são técnicas que incluem classificação pelo “vizinho mais próximo” (nearest-neighbour) e algoritmos de regressão e sistemas de raciocínio baseados em casos. [FAY96] Uma desvantagem potencial dos métodos baseados em exemplos é que necessita-se de uma métrica de distância bem definida para se avaliar a distância entre dois pontos de dados. Quando os dados podem ser medidos por uma mesma unidade, isto não é problema, mas se é desejável incluir uma variável com unidade distinta, é requerido um esforço maior para definir uma métrica sensível às variáveis. 3.3.6 Modelos Probabilísticos de Gráficos de dependência Modelos gráficos especificam as dependências probabilísticas as quais definem um modelo particular usando uma estrutura gráfica. Na sua forma simples, o modelo especifica quais variáveis são diretamente dependentes umas das outras. Tipicamente, estes métodos são usados com variáveis que possuem valores discretos e categorizados, mas às vezes precisa-se de algumas extensões para casos especiais, como densidade Gaussiana, para trabalhar com variáveis com valores reais. [FAY96] 38 3.3.7 Modelos de Aprendizado Relacional Modelos de aprendizado relacional são também conhecidos como programação lógica indutiva, os quais utilizam a linguagem padrão da lógica de primeira ordem. A representação do poder extra do modelo relacional vem ao encontro da significativa demanda computacional em termos de pesquisa. [FAY96] 3.4 Aplicações de Mineração de Dados Atualmente, cada vez mais áreas podem ser beneficiadas com os resultados que podem advir do processo de DCBD, a seguir cita-se algumas destas. As aplicações citadas a seguir são: marketing, vendas a varejo, finanças, saúde e medicina e ciências. 3.4.1 Marketing Qualquer tipo de negócio necessita vender seus produto ou serviços. As empresas buscam continuamente por custos de produção menores para obterem um melhor preço de venda para o consumidor. Portanto, qualquer tecnologia que forneça custos menores para produção e aumenta a venda dos produtos ou dos serviços é bem vista pelo mundo dos negócios. Contas, créditos de clientes e compras, juntas formaram algumas das primeiras transações a serem informatizados, gerando uma enorme quantidade de dados disponível para mineração. Estes fatores combinados fazem do marketing uma das aplicações mais "quentes" para a mineração de dados [HER95]. Database Marketing (uso de técnicas de mineração de dados contra banco de dados com informações de marketing) podem ser usados em muitos diferentes aspectos de relações entre clientes e negócios. [BIG96] 3.4.2 Vendas a Varejo Vendas a varejo envolve minerar as transações de venda para encontrar associações entre os produtos. Esta informação, então é usada para determinar afinidades de produtos e sugestão de estratégias de promoções que podem maximizar o lucro, por exemplo. [BIG96] 39 As transações em bancos de dados são mineradas para descobrir associações entre os produtos nunca suspeitadas, ou seja, descobrir associações de produtos que não são percebidas no dia-a-dia nas compras realizadas pelos clientes. 3.4.3 Finanças A mineração de dados é utilizada pelo mercado financeiro para detectar e prevenir fraudes, ou para traçar um perfil dos clientes. Estas informações são utilizadas para o processo de tomada de decisão no momento de fornecer produtos bancários aos clientes. [HER95] As RNA são utilizadas na indústria financeira para detectar padrões de potenciais transações fraudulentas em cartões de crédito. Também são utilizadas para predizer taxas de câmbio interessantes em mercados de moedas flutuantes. [BIG96] Tem-se conhecimento da existência e desenvolvimento de numerosos aplicativos financeiros utilizando as técnicas de mineração de dados. No entanto, a comunidade financeira mantém sigilo sobre o assunto. [HER95] 3.4.4 Saúde e Medicina A mineração de dados é usada para a administração de serviços de pacientes, diagnósticos e tratamento de doenças. A indústria da saúde utiliza a mineração de dados para detectar fraudes de pacientes que gozam de boa saúde. Nestes casos são utilizadas técnicas, tais como, agrupamento e modelagem de funções. [BIG96] Os sistemas de diagnósticos de vários tipos de câncer e ataques do coração também utilizam o conhecimento da área de DCBD. Dados de pacientes podem ser coletados sobre uma grande população e apresentados para uma RNA. Percebe-se que o sistema de mineração de dados pode avaliar mais pacientes em um dia do que um médico poderia fazer em toda a sua vida. 3.4.5 Ciências As técnicas de mineração de dados são utilizadas para ajudar na descoberta científica. Por exemplo, na mineração de um enorme banco de dados pode-se descobrir padrões em estruturas moleculares, informações genéticas, mudanças no clima mundial, etc. Além disso, 40 pode-se "ensinar" um determinado conceito de um determinado corpo estelar e utilizar o computador para avaliar imagens de satélite e descobrir novos corpos estelares. [HER95] 3.5 Data Warehouse (Armazém de Dados) O Data Warehouse é um armazém de informações integradas, disponíveis para análise e consultas [HER95]. Data Warehouse é utilizado para o armazenamento de dados para uma grande quantidade de dados corporativos. A qualidade e a integridade dos dados deve ser mantida por uma equipe centralizada. Data Warehouse manipula terabytes de informações em disco. O objetivo do Data Warehouse, não é necessariamente manter os dados em um único meio de armazenamento, mas que todos os dados são armazenados e consultados através de uma rede utilizando as técnicas de sistemas distribuídos. Para formar um armazém de dados, é utilizada toda a base de dados disponível em uma empresa. São selecionados os dados dessa base que farão parte do armazém, para tanto, as tabelas e seus atributos são analisados. Após está seleção, é checada a integridade dos dados existentes. Além disso, deve-se decidir se o armazém de dados será centralizado ou distribuído. O armazém de dados constitui uma nova base de dados que estará disponível para se extrair, filtrar, integrar e consultar informações. Os sistemas atuais da empresa não terão acesso ao armazém de dados. No armazém somente serão feitas inserções de novos dados após sua inclusão na base de dados original. Um armazém de dados pode ser utilizado no processo de mineração de dados como a base de dados a ser analisada. Isto pode acelerar o processo de mineração de dados na sua fase inicial de seleção e limpeza dos dados. 41 4. REDES NEURAIS ARTIFICIAIS As redes neurais artificiais são sistemas matemáticos que são constituídos de neurônios unidos através de conexões de peso. Uma unidade de processamento ou neurônio, que é essencialmente representado por uma equação, recebe sinais de pesos de outros neurônios, realiza uma soma ponderada, transforma-os e produz um resultado numérico como saída. Diversas RNA tem seus neurônios estruturados em camadas que possuem características semelhantes e executam suas funções em sincronia. [BIO97] Muitas RNA possuem um algoritmo de treinamento. Este algoritmo de treinamento pode ser entendido como uma equação matemática ou várias equações combinadas. O objetivo destas equações é produzir a partir da saída da rede, um valor numérico que servirá para ajustar o valor das conexões de pesos de cada unidade de processamento. O principal objetivo de se treinar uma rede é produzir um resultado de saída da rede neural artificial de acordo com o resultado que é esperado. Um outro objetivo é corrigir um resultado errado através do ajuste dos pesos. Este processo de ajuste é feito automaticamente pelo algoritmo de treinamento usado para treinar a rede. As RNA são especialmente utilizadas para problemas que devem ser tolerantes a alguma imprecisão e que têm muitos dados disponíveis para treinamento, mas para tanto, regras complexas e rápidas não podem ser desenvolvidas facilmente. [TRA95b] As próximas seções deste capítulo abordam diversos tópicos relacionados as redes neurais artificiais, tais como, características do cérebro humano, manipulação de símbolos, reconhecimento de padrões, conceitos, elementos, paradigmas de aprendizagem, topologia, modelos e processo de aprendizagem de uma rede neural artificial. 4.1 Características do Cérebro Humano O homem está sempre procurando uma maneira de imitar o funcionamento do cérebro humano através do uso da tecnologia. Existem diversas pesquisas, em andamento, no intuito de se desenvolver técnicas e ferramentas computacionais para simular o raciocínio humano. Conforme descrito em [DOR93], o cérebro humano processa e guarda uma infinidade de informações, sendo que algumas podem ser esquecidas com o passar do tempo, mas muitas estarão armazenadas durante todo o ciclo de vida do cérebro. Um armazenamento infinito de 42 dados em um espaço físico limitado, como é o nosso cérebro, é possível devido ao paralelismo massivo que ocorre entre seus neurônios. A partir do desejo do ser humano de tentar imitar o cérebro humano, surgiram as redes neurais artificiais como uma tentativa de criar um modelo que simulasse a estrutura e o funcionamento do cérebro humano. Conforme descrito em [OSO91], as redes neurais artificiais devem apresentar um comportamento baseado em modelos neurológicos ao invés de modelos baseados em "circuitos de silício". O comportamento do neurônio humano pode ser descrito a partir da observação de sistemas reais, ou seja, a partir de redes neurais de seres humanos. Os sinais de entrada, recebidos pelo neurônio através de seus dendrites, fazem com que este dependendo do nível de estimulação passe a gerar ou não um sinal de saída, o qual é enviado através do axônio (figura 4.1). Cada neurônio é uma unidade independente de processamento de informações que está conectada a diversos outros neurônios através de seus terminais axiomáticos. Estes terminais se conectam aos dendrites de outros neurônios, através de uma estrutura biológica denominada sinapse que possibilita a passagem dos sinais. A sinapse existente entre dois neurônios irá influenciar sobre a natureza do sinal recebido, em função da atuação de neurotransmissores, fazendo com que para um dado neurônio um sinal de entrada venha a funcionar como o sinal excitador e para outro neurônio este mesmo sinal poderá atuar como inibidor. [OSO91] O funcionamento do neurônio humano e o interesse dos seres humanos em imitá-lo foi descrito acima e, o objetivo agora, é apresentar o comportamento do neurônio como fonte inspiradora na criação de algoritmos e mostrar como se desenvolve aplicativos baseados em redes neurais. Uma RNA é composta de vários neurônios dispostos linearmente ou em camadas. Uma RNA possui várias entradas, as quais recebem sinais que são os estímulos de entradas (uma entrada pode ter estímulo positivo, ou seja, entrada ativa; ou um estímulo negativo, entrada inibidora). A partir de uma função de ativação, os pesos dos neurônios são calculados sobre os valores de entrada. Este resultado determinará se o neurônio será ativado tendo um comportamento excitatório ou se terá um comportamento inibitório permanecendo inativo. Este sinal de ativação será propagado para os demais neurônios componentes da rede neural artificial de acordo com a topologia e as interconexões da rede. Existem, além das diferenças estruturais, diferenças de velocidades entre neurônios naturais e artificiais. O cérebro humano possui um tempo de resposta da ordem de 43 milissegundos enquanto que no computador, o tempo de resposta é da ordem de nanosegundos. Figura 4.1 : Neurônio Humano 4.2 Computação Inteligente: Manipulação de Símbolos ou Reconhecimento de Padrões O computador digital tem se tornado uma metáfora comum para descobrir como o cérebro humano funciona. A lógica e processos seqüenciais da computação eletrônica são usados como o modelo de organização da mente. Os computadores tentam ser modelos exatos do cérebro biológico. Todas estas afirmações estão diretamente relacionadas com a definição de inteligência. [BIG96] Se as pessoas exibem conduta inteligente, pode ser devido ao fato de elas estarem usando regras formais para manipular símbolos. Esta aceitação de equivalência lógica entre processamento de símbolos em computadores e o cérebro humano tornou-se a base para muitos trabalhos na área de inteligência artificial. [BIG96] Todos os sentidos do ser humano fornecem, em abundância, ao cérebro humano, informações sobre as reações do ser humano sobre o mundo. Algumas pessoas chamam este processo sub-simbólico de detecção de características. 44 Detecção de características é o processo de reconhecimento de padrões que ocorre amplamente no nível do subconsciente do cérebro humano. As pessoas desenvolvem muitos modelos de contexto sensíveis às expectativas de como elas interagem com o mundo. O uso de reconhecimento de padrões ou a manipulação de símbolos depende muito do que se quer fazer, além disso, estes dois tópicos estão relacionados com o conceito de inteligência. Em [BIG96] são citados dois conceitos de inteligência. No primeiro, inteligência é puramente a função de alta ordem dos processos derivados de uma maneira top-down. Na segunda, a inteligência é um fenômeno emergente, originado de um processo de muitas interações simples da forma bottom-up. A decisão de reconhecer padrões ou a manipular símbolos, certamente, encontra-se no meio destes dois extremos. No início dos anos sessenta, a escola de processamento de símbolos reconheceu que computadores digitais eram melhores para a manipulação de números, mas que números poderiam ser usados para representar símbolos. Os pesquisadores de processamento de símbolos obtiveram alguns sucessos, tais como, programas de computadores que poderiam fazer cálculos e fornecer teoremas matemáticos. 4.3 Conceitos e Elementos de Redes Neurais Artificiais Um modelo de RNA é composto pela topologia de rede, pela definição formal do neurônio e pelas regras de aprendizado, os quais são explicados abaixo [OSO91] : 1. Topologia de Rede: é a definição de uma forma de interconexão entre os neurônios, destacando-se as organizações de um nível linear (figura 4.2), retro-alimentada (figura 4.3), totalmente conectada (figura 4.4), multinível (figura 4.5) ou livre (grafo). As topologias serão descritas como maior ênfase no decorrer deste capítulo. 2. Definição Formal do Neurônio: é a especificação comportamental de um neurônio isolado. O que diferencia basicamente os neurônios é a denominada função de transferência ou função de ativação. Esta função de ativação pode ser linear ou não, e determina o disparo (ativação da saída), ou não, de um neurônio. 3. Regras de Aprendizado: é a determinação das formas pelas quais os pesos de atuação da rede serão modificados. Alterar os pesos das entradas dos 45 neurônios implica alterar seu comportamento diante de um conjunto específico de estímulos de entrada. Esta alteração de um comportamento diante de uma situação específica consiste em um aprendizado. Os tipos de aprendizado serão comentados no decorrer deste capítulo. Figura 4.2 : Topologia Linear [BIG96] Figura 4.3 : Topologia Retro-Alimentada [BIG96] Figura 4.4 : Topologia Totalmente Conectada [BIG96] 46 Figura 4.5 : Topologia Multinível [BIG96] As regras de aprendizado estão divididas em dois tipos: as redes com regras de aprendizado competitivas e as redes baseadas na correção de erros. Os tipos de redes que trabalham com o primeiro caso são as redes de Hopfield e Kohonen. As redes de Kohonen serão apresentadas ainda neste capítulo e maiores informações sobre as redes de Hopfield podem ser encontradas em [OSO91] e [MAC97]. As redes do segundo tipo são baseadas nos princípios de adaptação e correção dos pesos que ativam cada neurônio, até o momento em que a rede neural artificial atenda ao objetivo proposto para o seu desenvolvimento. Cada neurônio de uma RNA é composto pelos seguintes elementos: um conjunto de valores de entrada, um conjunto de pesos, funções de ativação e uma saída, os quais serão descritos a seguir (figura 4.6): • Valores de Entrada Xi: as funções de ativação fornecem valores de entrada ou estes valores são passados de um neurônio para outro durante o treinamento de uma RNA, ou ainda, estes valores são fornecidos de alguma outra fonte de dados para a RNA. O conjunto de valores passados por um neurônio pode ser de diversos tipos diferentes, contudo, normalmente são utilizados os valores discretos do conjunto [0,1], [-1,1] ou números em ponto flutuante. • Conjunto de Pesos Wi: cada entrada de um neurônio terá uma influência relativa sobre a função de ativação deste neurônio. Essa influência é determinada pelo peso wi desta entrada. Os pesos de cada entrada são os elementos que possuem o conhecimento da rede, pois são eles que são adaptados durante o processo de treinamento. • Função de Ativação F: a função de ativação é utilizada para calcular o valor de ativação de cada neurônio em função dos seus pesos e dados de entrada. O neurônio calcula o valor de ativação em função da média ponderada aplicada sobre os valores das entradas. O resultado deste cálculo pode ser a entrada para outros neurônios ou o resultado final da RNA. • Saída y: é o resultado fornecido pela RNA como resposta aos cálculos realizados entre os valores de entrada, pesos e função de ativação. 47 Existem dois tipos de capacidade de classificação que podem ser utilizados com uma rede neural artificial. O primeiro é um classificador linear onde existe basicamente um tipo de padrão associado a cada classe e ocorre uma associação linear de padrões. O segundo é um classificador não linear que permite tipos diferentes associados a uma mesma classe. Figura 4.6 : Neurônio Artificial O exemplo mais antigo de computação neural é o neurônio criado por McCulloch-Pits [LUG93]. A entrada para um neurônio McCulloch-Pits é inibidora (0) ou excitada (+1). A função de ativação multiplica cada entrada pelo seu peso correspondente e soma os resultados; se a soma é maior ou igual a zero, o neurônio artificial retorna 1; caso contrário retorna zero. McCulloch e Pits mostraram como estes neurônios podem ser construídos para computar algumas funções lógicas, demonstrando que sistemas baseados nestes neurônios fornecem um modelo computacional completo. [RAM96] 4.4 Paradigmas de Aprendizagem Existem diversos paradigmas de aprendizagem que caracterizam os diferentes modelos de redes neurais artificiais. A seguir serão apresentados os tipos de aprendizado supervisionado, não supervisionado e de reforço. 4.4.1 Aprendizado Supervisionado O aprendizado supervisionado (figura 4.7) é o paradigma de treinamento mais utilizado para desenvolver aplicações de RNA para classificação e predição. [BIG96] 48 O aprendizado supervisionado é equivalente a aprender a programar por exemplos, neste sentido, são fornecidos para uma RNA dados que representam casos de um problema, e a rede neural artificial faz uma predição ou classificação. O aprendizado supervisionado é como tentar aprender uma nova tarefa solicitada por sua mãe. Depois de todas tentativas que você fez para resolver o problema, você tem uma professora muito atenciosa que lhe fornece a sua especificação e uma resposta imediata para o que você fez. [BIG96] Ajuste dos Pesos usando os erros Entradas Saída Atual Saída Desejada Figura 4.7 : Aprendizado Supervisionado [BIG96] O algoritmo de aprendizagem verifica a predição atual como a diferença entre a saída fornecida pela RNA e a saída desejada. O algoritmo usa esta informação para ajustar seus pesos para o próximo passo, onde de forma geral, se terá uma predição mais próxima da resposta correta. O aprendizado supervisionado é usado quando se tem um banco de dados de exemplos que contém descrições de problemas e suas respostas. Com base nestas informações, a rede neural artificial pode aprender as relações que existem entre as entradas e a saída. O aprendizado supervisionado é útil quando se deseja treinar uma RNA para executar classificações, funções de aproximação e previsão de séries temporais. A RNA é treinada para predizer saídas em algum ponto no futuro. 4.4.2 Aprendizado Não Supervisionado O aprendizado não supervisionado (figura 4.8) é normalmente usado para trabalhar com grandes quantidades de dados, onde se conhece os dados de entrada mas não se tem as 49 respostas para as saídas correspondentes. Não se conhece a resposta, mas se sabe as questões que se quer resolver. A rede, a partir dos padrões de entrada, procura agrupar os padrões que possuem características similares. Ajuste dos Pesos do vencedor em direção à entrada padrão Entradas Saída completa para ser o vencedor Figura 4.8 : Aprendizado Não Supervisionado [BIG96] Conforme citado em [BIG96], a questão é, "Como os dados estão relacionados. E, quais itens são similares ou diferentes e de qual forma." O que se deseja é que a rede neural artificial procure por padrões nos dados e agrupe-os. Este tipo de aprendizado também é conhecido como auto-organização ou auto-aprendizado porque possui uma grande precisão e a rede não recebe a direção correta sobre como deve ser a saída desejada. O problema associado a esta abordagem é que o número de padrões descoberto pode ser muito grande dificultando a sua análise. O aprendizado não supervisionado é freqüentemente utilizado para aplicações de redes neurais artificiais de agrupamento e segmentação para utilização na mineração de dados como forma de auxílio ao suporte de tomada de decisão. [BIG96] 4.4.3 Aprendizado de Reforço O aprendizado de reforço (figura 4.9) é menos utilizado que os tipos de aprendizado apresentados acima. É utilizado em aplicações de otimizações de tempo e controles adaptativos. No aprendizado de reforço, têm-se exemplos dos problemas, mas não se sabe qual é a resposta exata ou pelo menos imediata. 50 Ajuste dos Pesos usando reforço Entrada s Saída Atual Sinal de Reforço Não Especificad o Figura 4.9 : Aprendizado de Reforço [BIG96] O aprendizado de reforço pode ser comparado à vida real ou a ter-se um trabalho. Alguém está determinando uma tarefa a ser realizada. Esta tarefa contêm diversas etapas a serem seguidas que requerem a tomada de decisões. Em resposta a esta determinação, alguém está fornecendo uma avaliação da performance do trabalho que está sendo realizado. Outras pessoas avaliam se o trabalho está sendo realizado de maneira correta ou errada, mas isto acontece até o momento em que é compreendido quais as decisões foram corretas e quais foram erradas. [BIG96] Uma rede neural artificial que utiliza o método de aprendizado de reforço permite que muitas das dificuldades que existem em problemas de dependência de tempo possam ser resolvidas. O paradigma de aprendizado de reforço normalmente é utilizado quando o problema envolve o tempo de seqüência de processos ou quando a resposta exata não está disponível e somente sinais secundários são visíveis. 4.5 Processo de Aprendizagem de um Único Neurônio Uma rede neural artificial que possui apenas um neurônio é um interessante objeto de estudo por dois motivos. O primeiro motivo é que uma grande quantidade de RNA utiliza apenas um neurônio e cada neurônio em uma rede com múltiplos neurônios têm seu funcionamento similar ao de um único neurônio. O segundo motivo é que um único neurônio possui uma característica importante: o auto-aprendizado. 51 A seguir apresenta-se algumas características que ilustram o funcionamento de uma rede neural artificial com um único neurônio. Maiores informações podem ser encontradas em [MAC97]. 4.5.1.1 Definição de um neurônio único A definição de um único neurônio é dividida em arquitetura e regra de ativação. A arquitetura de um único neurônio possui um número I de entradas e uma saída denominada de y. A cada entrada é associado um peso wi (i = 1...I). Pode existir um parâmetro adicional w0 chamado bias o qual pode ser visto como sendo o peso associado com a entrada xo e o seu valor será permanentemente 1. Este neurônio utiliza a topologia de uma rede feedforward (as conexões são direcionadas das entradas para o neurônio de saída). As regras de ativação estão divididas em duas etapas. A primeira, para se responder a uma entrada x, é o cálculo da ativação do neurônio pela fórmula 4.1 : a= ∑ I wi * xi , (4.1) onde o somatório varia de i = 0...I se existe o bias e, em caso contrário, varia de i = 1...I. A segunda, a saída y é calculada como uma função f(a) de ativação. Existem muitas funções de ativação, tais como : 1. Funções determinísticas de ativação: • Linear y(a) = a (4.2) 1 (y ε (0,1)) (4.3) 1 + e −a • Sigmoide (função logística) y(a) = • Sigmoide (tanh) y(a) = tanh(a) (y ε (-1,1)) (4.4) • Função Limite 1 a>0 y(a) = − 1 a <= 0 2. Funções estatística de ativação : 1 1 com probabilidade • Heat bath 1 + e −a − 1 caso contrario (4.6) (4.5) 52 4.5.1.2 Treinar um único neurônio A partir de um conjunto de dados de entrada, submete-se este conjunto de dados a uma das funções citadas acima. Com isso, pode-se treinar a RNA e verificar o resultado obtido. Além de treinar a rede, pode-se utilizar uma função para calcular o erro gerado pelo neurônio calculado em cima do resultado de saída e o resultado esperado. 4.6 Topologias de Redes Neurais Artificiais Em geral, uma RNA possui um conjunto de neurônios que recebem valores de entrada do mundo exterior, chamadas de unidades de entrada. Muitas redes neurais artificiais possuem uma ou mais camadas de neurônios escondidas que recebem entradas somente de neurônios. Uma camada de neurônios recebe um vetor de dados ou a saída de uma camada anterior e processa-os em paralelo. O conjunto de unidades que representam o resultado final é chamada de unidade de saída. A ordem de conexão dos neurônios em uma rede neural artificial tem significativa importância no seu funcionamento. Existem diversas topologias de RNA que definem o fluxo de dados entre as unidades - entrada, escondida e saída - participantes de uma rede neural artificial. A seguir, serão apresentadas algumas topologias de RNA: feedforward, recorrentes limitadas e completamente recorrentes. 4.6.1 Redes Feedforward As redes feedforward (figura 4.10) são usadas naquelas situações em que se pode manipular todas as informações relacionadas com o problema de um única vez e, então fornecê-los para a rede neural artificiais. Em [BIG96], a topologia feedforward é descrita como: "Os dados entram na rede neural artificial através da unidade de entrada à esquerda. Os valores de entrada são assinalados para a unidade de entrada como os valores da unidade de ativação. Os valores de saída das unidades são modulados pelas conexões de pesos, cada uma é aumentada se o valor da conexão de peso é maior ou igual a 1, ou diminuída, se o valor da conexão de peso está entre 0 e 1. Se o valor da conexão de peso é negativo, o sinal é aumentado ou diminuído em direção contrária". 53 O tipo de função de ativação mais utilizado em uma RNA é a função sigmoide. Este tipo de função converte um valor de entrada em um valor de saída entre 0 e 1. O efeito deste limite dos pesos é o deslocamento da curva em um gráfico cartesiano para esquerda ou para a direita, tornando o valor de saída maior ou menor dependendo do sinal do valor do peso. É importante salientar que quanto menos pesos tem uma RNA, mais rápido a RNA será capaz de processar dados. E N T R A D A E S C O N D I D A S A Í D A Figura 4.10 : Redes Neurais Feedforward [BIG96] 4.6.2 Redes Recorrentes Limitadas Segundo [BIG96], as redes recorrentes limitadas são usadas em situações nas quais se têm informações atuais para fornecer à RNA e sabe-se que a seqüência de entradas é importante. Além disso, precisa-se que a RNA, de algum modo, armazene um registro das entradas anteriores e os fatore em dados atuais para produzir uma resposta. As informações sobre entradas passadas são uma resposta e são misturadas com as entradas atuais pelas conexões escondidas ou unidades de saída. Desta forma, a RNA contém uma memória das entradas passadas pelas funções de ativação. 4.6.3 Redes Completamente Recorrentes Nas redes completamente recorrentes (figura 4.11), um subconjunto de unidades é designado como processadores de entrada, e são assinalados para especificar os valores de entrada. Os dados fluem para todas as unidades adjacentes conectadas e circulam de volta e adiante até a ativação das unidades estabilizar. A ativação das unidades escondidas e de saída são recalculadas até a RNA estabilizar. 54 E N T R A D A ESCONDIDA SAÍDA Figura 4.11 : Redes Completamente Recorrentes [BIG96] As redes completamente recorrentes são complexas, constituem um sistema dinâmico, e exibem todo o poder e instabilidade associado como o limite de ciclos e a conduta caótica de cada sistema. Estas redes podem possuir um tempo de treinamento muito elevado. Estabelecendo-se algumas restrições nas conexões de peso, pode-se fazer com que a rede neural artificial entre em um estado estabilizado. As conexões entre as unidades devem ser simétricas. Esta rede é utilizada para problemas de otimização e com memórias associativas. 4.7 Modelos de Redes Neurais Artificiais A combinação de topologias, paradigmas de aprendizagem e algoritmos de treinamento definem um modelo de RNA. Para a mineração de dados, a rede back propagation e mapeamento de características de Kohonen são as mais utilizadas [GIB96]. Porém, o melhor modelo para uma aplicação ou função de mineração de dados depende dos dados e da função que se quer trabalhar. Os modelos de RNA dividem-se em modelos adaptativos e modelos competitivos. Alguns dos modelos de cada categoria são descritos abaixo. Serão apresentadas as características principais e relevantes a este estudo sobre os modelos de RNA, para maiores informações consulte [OSO91] e [BIG96]. 4.7.1 Modelos Adaptativos Os modelos de RNA adaptativos são os modelos baseados no Perceptron. De maneira geral, estes modelos possuem um aprendizado do tipo supervisionado com a aplicação de um 55 algoritmo de correção de erros. Os modelos apresentados a seguir são: Perceptron, Adaline, Madaline, Redes multinível, Função básica radial, Teoria da ressonância adaptativa e Redes neurais probabilísticas. 4.7.1.1 Perceptron Frank Rosenblatt [LUG93] desenvolveu um algoritmo de treinamento para uma rede neural artificial de uma camada no final da década de 1950, nomeando-o de Perceptron. O Perceptron foi idealizado para ser um modelo da mente [BIG96]. Em uma rede de uma camada, existe um conjunto de ligações com pesos entre as unidades de entrada e saída. Este algoritmo implementa uma função linear simples de disparo utilizando a forma de aprendizado supervisionado. A partir dos dados fornecidos: conjunto de entradas Xi, os pesos Wi, e um valor de disparo (valor de ativação do neurônio) D, o algoritmo calcula a função de ativação e retorna o valor 1 se o somatório dos valores de entrada Xi vezes o conjunto de pesos Wi for maior que zero; senão o algoritmo retornará -1. Seja d a constante cujo tamanho é determinado pelo padrão de aprendizagem, com isso, o Perceptron altera os seus pesos de acordo com as seguintes regras [RAM96 ] : • Se a ativação da unidade está correta, não faz nada. • Se a ativação é -1 e deveria ser 1, incrementa os pesos sobre as linhas ativas (linhas cujas entradas são 1) por d. • Se a ativação é 1 e deveria ser -1, decrementa dos pesos das linhas ativas por d. Este procedimento tem por efeito corrigir os pesos juntos para obter a saída desejada [RAM96]. A aprendizagem deste algoritmo ocorre através da convergência sobre um conjunto correto de pesos para classes linearmente separáveis, não levando em conta a parcela de erro na rede. Este modelo consiste de uma rede linear de neurônios, onde os valores de entrada alimentam simultaneamente todos os neurônios. O neurônio que, após a sua ativação, possuir o maior valor de saída ou atingir o valor limite para a ativação indicará a resposta correta. Neste modelo cada neurônio é treinado para identificar um padrão específico [OSO91]. 56 4.7.1.2 Adaline Este modelo é uma alteração do Perceptron. Utiliza a regra delta de aprendizado. Também é conhecido como algoritmo de aprendizado LMS (Least Mean Square). O Adaline foi desenvolvido por Widrow e Hoff [WID62]. A palavra Adaline é uma abreviação de ADAptive LINear Element (Elemento linear adaptativo). A arquitetura do Adaline é composta por uma rede de uma única camada de forma linear com cada neurônio possuindo uma retro-alimentação de sua própria saída. O Adaline utiliza uma regra de aprendizado que permite adaptações. O Adaline utiliza o aprendizado supervisionado por correção de erro. Este tipo de rede realiza uma classificação linear dos padrões. O Adaline é um neurônio que utiliza uma regra de aprendizado que permite uma adaptação, fazendo com que este se ajuste a novos padrões. O Adaline possui uma entrada denominada mentor input, a qual possui uma ponderação sempre igual a 1. Esta entrada apresenta a verdadeira resposta que deveria ser dada por um determinado neurônio diante de um determinado conjunto de estímulos. [FRE94] A regra delta é uma generalização do algoritmo de aprendizagem do Perceptron utilizada em diversas RNA desenvolvidas. A regra delta tem por objetivo medir mais precisamente a parcela de erro ocorrida em cada unidade da RNA. Para isso, os neurônios utilizam uma função de ativação com valores em ponto flutuante. Uma função simples de ativação pode ser calculada subtraindo o disparo positivo da soma ponderada das entradas e retornando o resultado obtido. A saída de uma unidade é computada pelo somatório dos valores de entrada vezes o valor do peso menos o valor do disparo. A regra delta é muito eficiente em minimizar o erro total do neurônio. A regra delta altera o vetor de pesos de atuação de forma que, para um conjunto de valores de entrada, a saída se aproxime da resposta desejada, indicada através da entrada mentor input. Isto é obtido através da minimização do erro médio quadrático (erro LMS) [OSO91]. A figura 4.12 descreve em detalhes o funcionamento da regra delta de aprendizado que é utilizada pelo Adaline. 57 ER = IO - S Saída Atual da Rede Saída Desejada (Mentor Input) Erro Estimado PNOVO = PANTIGO + Regra Delta: Onde : β * ER * E E β = Fator de Ajuste de Convergência (0 à 1) ER = Erro Estimado E P = Vetor de Valores de Entrada = Vetor de Pesos Figura 4.12 : Algoritmo de Aprendizado da Regra Delta [OSO91] 4.7.1.3 Madaline Este modelo foi proposto por Widrow [WID62] como uma extensão do modelo Adaline. A palavra Madaline significa múltiplos adalines, isto é, criar um modelo composto por vários adalines conectados entre si. O Madaline agrupa a resposta de dois ou mais Adalines, realizando um "E" ou "OU" lógico ou pela obtenção de maioria dos valores obtidos nas saídas dos diversos adalines que fazem parte do madaline. Isto permite, que uma saída de rede ative mais de um tipo de padrão de entrada. Desta forma, uma rede Madaline pode ser treinada para reconhecer diversos padrões. O Madaline é uma rede composta por dois níveis, mas quem faz a junção dos resultados de cada nível é o usuário. Com isso, o Madaline pode aprender padrões como os da função XOR. 58 4.7.1.4 Rede Multinível As redes multiníveis, também conhecidas como Multilayer Perceptron (MLP) permitem o aprendizado das RNA baseadas no modelo do Perceptron com qualquer número de níveis. O primeiro algoritmo deste categoria é o algoritmo back propagation. Uma rede neural artificial MLP usando uma topologia feedforward, pode ser treinada pelo algoritmo back propagation, onde o aprendizado é supervisionado. O Back Propagation é um algoritmo de propósito geral. Este algoritmo é muito poderoso mas é caro em termos de requisitos computacionais para treinamento. Uma rede back propagation utiliza uma única camada escondida de elementos de processamento que pode modelar qualquer função contínua sem qualquer grau de precisão. Existem diversas variações deste algoritmo. O back propagation é baseado em uma forma relativamente simples de otimização conhecida por gradiente descendente. As RNA back propagation podem ser usadas para classificação, modelagem e previsão de séries temporais. Para problemas de classificação, os atributos de entrada são mapeados para as categorias de classificação desejadas. Para construir modelos ou funções de aproximação, os atributos de entrada são mapeados para a função de saída. Alguns parâmetros são utilizados para controlar o processo de treinamento de uma rede back propagation, dentre os parâmetros existentes, cita-se: taxa de aprendizado e quantidade de movimento. A taxa de aprendizado é usada para especificar se a RNA fará ajustes após cada tentativa de aprendizado. A quantidade de movimento é utilizado para controlar possíveis oscilações nos pesos, as quais poderiam ser causadas por assinalamentos alternados de erros de sinais. O Back propagation distribui a responsabilidade do erro através de uma rede multicamada. Os neurônios são conectados em camadas, com unidades da camada k passando suas ativações somente para neurônios na camada k+1. Na solução de um problema, a ativação passa das unidades de entrada através de uma ou mais camadas internas de neurônios, chamadas unidades escondidas, e finalmente passam para a camada de saída do ambiente. [RAM96] O algoritmo back propagation recebe como parâmetros de entrada para a realização do treinamento da RNA um conjunto de valores de entrada e um conjunto de valores 59 representando a(s) saída(s) desejada(s) por utilizar o tipo supervisionado de aprendizado. O funcionamento básico do algoritmo do back propagation consiste em propagar o conjunto de valores de entrada através da rede até que alcance a unidade de saída. As saídas calculadas pela RNA são subtraídas da(s) saída(s) desejada(s) e um sinal de erro é propagado. Este sinal de erro é a base do algoritmo back propagation porque os erros são propagados através da RNA. Com a propagação dos erros, é calculado a contribuição de cada unidade de processamento escondida no erro e são ajustados os valores para produzir a saída correta. As conexões de peso são ajustadas e a RNA obteve apenas um "aprendizado" como experiência. O erro, para as unidades de saída, é calculado como a diferença entre a saída correta e a atual. Este processo de cálculo dos erros e ajustes das conexões de peso é realizado até que a RNA consiga calcular o valor de saída próximo ao valor da saída desejada. 4.7.1.5 Função Básica Radial (RBF) As redes de função básica radial são redes feedforward de treinamento usando um algoritmo de treinamento supervisionado. Eles são tipicamente configurados com uma camada escondida cuja a função de ativação é selecionada a partir de uma classe de funções chamadas de funções básicas. A unidade escondida de uma rede RBF utiliza uma função básica Gaussiana. Cada unidade escondida age como um processador local que calcula um placar entre o vetor de entrada e seus pesos de conexão. As unidades básicas são altamente especializadas em detectar padrões. Os pesos conectados das unidades básicas para as saídas são usados para ter uma combinação linear das unidades escondidas para produzir a classificação final ou a saída. De uma maneira simples, todas as unidades escondidas de uma rede RBF tem o mesmo tamanho ou grau de sensibilidade para entradas. 4.7.1.6 Teoria da Ressonância Adaptativa (ART) As redes de teoria de ressonância adaptativa são uma família de redes recorrentes que podem ser usadas para agrupamento. Uma rede ART é projetada para ser biologicamente plausível [BIG96]. Este modelo de RNA é treinada sem supervisão, formando clusters (agrupamentos) e pode ser completamente descrita utilizando equações diferenciais não lineares. 60 O modelo ART permite que a rede aumente à medida que novos padrões são aprendidos. O funcionamento de uma rede ART ocorre da seguinte forma: "O algoritmo principal seleciona a primeira entrada como um exemplar para o primeiro cluster. A próxima entrada é comparada com este primeiro cluster onde, caso a distância do novo exemplar seja menor que um certo limite, faz-se apenas uma adaptação de forma que o cluster represente ambos os padrões. Caso a distância entre o novo exemplar e o exemplar já armazenado seja superior ao limite estabelecido, é criado um novo cluster que servirá para representar este novo exemplar. Este processo é repetido para todas as entradas seguintes. O número de clusters crescerá com o tempo e dependerá tanto do limite como da métrica utilizada no cálculo da distância na comparação das entradas com os exemplos armazenados na rede". [OSO91] 4.7.1.7 Redes Neurais Probabilísticas (RNP) As redes neurais probabilísticas caracterizam-se por usar uma arquitetura feedforward e o algoritmo de treinamento supervisionado similar ao back propagation. [BIG96] Ao invés de ajustar os pesos das camadas de entrada usando a generalização da regra delta, cada entrada padrão de treinamento é usada como uma conexão de peso para uma nova camada escondida. Cada entrada padrão é incorporada à arquitetura RNP. Esta técnica é extremamente rápida, já que somente uma passagem através da rede é necessária para o conjunto de entradas de conexões de peso. 4.7.2 Modelos Competitivos Os modelos de RNA competitivos baseiam-se na competição entre os neurônios. Os modelos competitivos possuem algumas características citadas a seguir: conexões laterais entre os vizinhos, auto-organização e formação de agrupamentos. O modelo de Kohonen será comentado a seguir. Outros modelos competitivos de RNA podem ser encontrados em [OSO91] e [MAC97]. 61 4.7.2.1 Redes Kohonen Uma rede Kohonen é uma rede feedforward que usa um algoritmo de treinamento não supervisionado e faz isso através de um processo chamado auto-aprendizado, isto é, a RNA do modelo Kohonen possui a capacidade de auto-organização. Este modelo de RNA também é conhecido pela criação de mapas de atributos auto-organizáveis (Self-Organization Feature Maps). A RNA utilizada no modelo básico de Kohonen é uma rede de um único nível, onde os neurônios possuem conexões com entradas e conexões laterais com outros neurônios, até um certo grau de vizinhança pré-estabelecido. As entradas externas estão conectadas em paralelo a todos os neurônios simultaneamente. [OSO91] A rede neural Kohonen consiste de duas camadas de unidade de processamento, uma camada de entrada completamente conectada a uma camada de saída competitiva, não existindo unidades escondidas. Quando uma entrada padrão é apresentada ao mapa de características, cada unidade na camada de saída compete com cada uma das outras pelo direito de ser declarada vencedora. A unidade de saída vencedora é tipicamente a unidade a qual o conexão de peso está mais próxima da entrada padrão (em termos de distância euclidiana). A saída que está mais próxima da entrada padrão é declarada vencedora e então ganha o direito de ter sua conexão de peso ajustada. As conexões de peso são movidas em direção à entrada padrão pelo fator determinado como parâmetro para a taxa de aprendizado. Este modelo, cria uma topologia mapeada pelo ajuste não somente dos pesos dos vencedores, mas também ajusta os pesos das unidades de saída adjacentes próximas ou na vizinhança do vencedor. Através desse processo, a cada escolha de um novo vencedor, a quantidade de unidades de saída que tem seu peso alterado vai diminuindo progressivamente até encontrar o vencedor final. Encarando este modelo pela perspectiva das conexões de peso, o mapeamento de Kohonen executou um processo chamado de quantization vector. As conexões de peso representam um protótipo de entrada padrão para um subconjunto de entradas que são agrupadas. O processo de trabalhar com um conjunto de numerosas dimensões e reduzir a um conjunto de agrupamentos é chamado segmentação. 62 O modelo de rede neural de Kohonen possui uma característica muito interessante que é a formação de regiões da rede que tem seus neurônios ativados quando determinado padrão é apresentado. Cada padrão provocará a ativação de uma região determinada da rede onde a identificação de um dado padrão dar-se-á através da determinação de qual área de rede foi ativada. [OSO91] 63 5. REDES NEURAIS ARTIFICIAIS E MINERAÇÃO DE DADOS A idéia de usar a mineração de dados para extrair informações valiosas dos dados não é nova. Em todo o mundo, hoje, novo é o aumento das transações de negócio utilizando o computador. Também surge como tecnologia emergente o processamento distribuído na área de informática e novas formas de armazenamento de dados, na qual, terabytes de dados são manipulados de forma on-line. Estes dados estão disponíveis para processamento em aplicações desenvolvidas para arquiteturas cliente/servidor. O uso de redes neurais artificiais e o desenvolvimento de algoritmos para descoberta do conhecimento, também, são novos. Quando se utiliza redes neurais artificiais para procurar padrões nos dados na etapa de mineração de dados do processo de DCBD, estas novas tecnologias oferecem promissoras oportunidades para as empresas procurarem informações úteis em seus próprios dados. [BIG96] A principal característica das RNA é a grande capacidade de reconhecer padrões. Isto é possível pois uma rede neural artificial pode ser treinada para aprender um determinado padrão através da modificação e correção de seus pesos (estímulos). Além do reconhecimento de padrões, as RNA são eficientes para a classificação de padrões. O objetivo do desenvolvimento de aplicações utilizando a tecnologia de RNA é trabalhar em conjunto com os sistemas tradicionais de desenvolvimento existentes, como cadastros de qualquer natureza. As RNA sendo utilizadas na etapa de mineração de dados não estão e nem vão ser usadas para substituir os sistemas tradicionais existentes. A vantagem disso é a fácil adaptação a diversos tipos de aplicações. A seguir, serão citadas algumas aplicações conforme pode ser visto em [OSO91]: • Reconhecimento e síntese contínua da fala. • Reconhecimento visual de padrões e padrões em geral (mineração de padrões). • Reconhecimento e classificações de imagens, como por exemplo, textos, assinaturas, etc. • Processamento adaptativo de sinais e eliminação de ruídos. 64 • Aplicações que trabalham com dados incompletos e os resultados produzidos são aproximados (fuzzy). As RNA são utilizadas para trabalhar com dados aproximados, tanto para a entrada como para a saída. Isto acontece porque o maior volume de dados utilizados é o de número reais e funções de ativação que geram um resultado também no formato de números reais. A tabela 5.1 cita mais algumas aplicações de RNA para áreas específicas da indústria e as funções que são utilizadas. [BIG96] Aplicação Marketing de Banco de Dados Indústria Todas Função Agrupamento, Classificação Modelagem Agrupamento, Classificação Modelagem e Classificação e Modelagem Gerenciamento de Relações de Todas Clientes Detecção de Fraudes Financeira Saúde Reconhecimento de Caracteres Financeira e Ópticos Varejo Reconhecimento de Caracteres de Informática e Caligrafia Financeira Previsão de Vendas e Controle de Manufatureira, Inventários Vendas e Distribuição Gerenciamento de pastas de Financeira suprimentos Controle de Processos Manufatureira e Processos Taxa de Obrigação Financeira Exploração de Minérios Energia Diagnóstico Médico Saúde Predição de Demanda de Energia Manufatureira Elétrica Detecção de Vírus de Computador Informática Reconhecimento de Fala Informática Estimação de Preços de Mercado Financeira e e Classificação Agrupamento e Classificação Agrupamento e Previsão de Séries Temporais Classificação e Previsão de Séries Temporais Modelagem Classificação Agrupamento e Classificação Classificação e Modelagem Previsão de Séries Temporais Classificação Agrupamento e Classificação Modelagem Tabela 5.1 : Aplicações Comerciais de RNA [BIG96] Uma outra característica importante das RNA é que as mesmas são capazes de guardar informações, isto é, uma RNA pode armazenar padrões. Este armazenamento de padrões é obtido através do comportamento dos pesos de cada neurônio a partir de cada entrada recebida. Os pesos das conexões são os responsáveis pelo aprendizado de um determinado 65 padrão para uma determinada entrada de cada neurônio componente de uma RNA. Um único neurônio ou vários neurônios podem ser treinados para aprender um determinado padrão, ocorrendo assim a criação de uma memória localizada. 5.1 Funções Básicas de Redes Neurais Artificiais As RNA realizam muitas tarefas que o cérebro humano tem a capacidade de realizar. Algumas destas tarefas são trabalhar com uma grande quantidade de dados, reconhecimento preciso de padrões e responder a questões propostas pelos seres humanos. A seguir, serão apresentadas algumas das funções básicas nas quais algoritmos baseados em RNA podem ser utilizados para ajudar a atingir os objetivos de descoberta de padrões do usuário. As funções básicas a serem descritas são : classificação, agrupamento, memória associativa, regressão, previsão de séries temporais e predição. (As quais estão melhor descritas no contexto de DCBD no capítulo 3) 5.1.1 Classificação A função básica mais executada pelo cérebro humano é a classificação entre duas coisas. O ser humano é capaz de analisar objetos usando características para perceber as diferenças e similaridades. Pode-se classificar animais como amistosos ou perigosos, plantas saudáveis para serem comidas ou não, etc. Em todos os momentos da nossa vida, o ser humano estabelece classificações entre duas ou mais coisas. Uma RNA pode ser treinada para, a partir de um conjunto de exemplos positivos de uma mesma classe (ou conjunto de classes), os quais possuem um conjunto de características em comum, separar os elementos (valores) que determinam se algum registro de dados pertence a uma classe ou não. As RNA estão sendo utilizadas em aplicações comerciais para classificar clientes, detecção de fraude, reconhecimento de caligrafia de pessoas, exploração de minérios, diagnósticos médicos, detecção de vírus de computador e reconhecimento de fala, entre outros. [BIG96] Uma RNA tem algo em comum com compras feitas pelas pessoas. As RNA podem classificar os itens comprados pelas pessoas. Esta classificação pode ser utilizada para verificar 66 a relação entre itens de compra ou para fornecer para uma empresa o perfil dos seus clientes. E, muitas outras informações podem ser fornecidas pela RNA ao analisar o banco de dados de uma empresa. Estas informações podem ser extremamente úteis para definir novas estratégias de negócios de uma empresa. Uma empresa que possui, por exemplo, um perfil aproximado dos seus clientes, pode realizar promoções baseadas nestas informações, determinar a compra de novos produtos para vender ou até trocar de atividade comercial. Enfim, a utilização de RNA para fazer classificações pode ser uma ferramenta muito útil para uma empresa gerenciar o seu relacionamento com os seus clientes. A apresentação de exemplos para uma RNA classificar pode apresentar dados percentuais muito importantes sobre o negócio de uma empresa. Suponha que uma empresa queira detectar possíveis fraudes que esteja sofrendo. A classificação realizada por uma RNA pode apresentar exceções encontradas nos dados. Estas exceções podem ser indícios de algum tipo de fraude. Uma RNA pode ser treinada para reconhecer a caligrafia de uma pessoa e a voz humana. A partir de um conjunto de exemplos de texto e voz, uma RNA pode ser treinada. Como resultado deste treinamento, pode-se utilizar a RNA para confrontar um texto ou uma fala contra o que a RNA aprendeu. O objetivo disto é detectar, por exemplo, se dois textos são de uma mesma pessoa ou se duas assinaturas são da mesma pessoa. A partir disto, pode-se utilizar esta RNA para a verificação de senhas digitais ou reconhecimento de voz para permitir o acesso de pessoas a algum lugar específico. [BIG96] Uma RNA pode ser treinada com um conjunto de dados que descrevem o comportamento do corpo humano e possíveis doenças que o ser humano pode sofrer. Isto pode ser utilizado para que a RNA forneça um diagnóstico médico de uma pessoa através da apresentação dos sintomas de doença de uma pessoa para a RNA. 5.1.2 Agrupamento Fazer uma boa distinção entre coisas pode ser um problema tão sério como não ser capaz de decidir alguma coisa. Pelo fato do ser humano ter uma capacidade limitada de armazenamento no cérebro, é importante a capacidade de agrupar itens similares. As aplicações de negócios de agrupamento são principalmente utilizadas na área de marketing. Uma RNA pode ser treinada para agrupar informações sobre clientes. Este 67 agrupamento pode ser feito levando-se em consideração atributos similares, tais como, produtos comprados, e estas informações podem ser usadas para classificar grupos de clientes que compram produtos similares. Com base nestas informações, uma empresa pode tomar diversas decisões, desde a elaboração de promoções, compra de novos produtos, etc. Uma RNA pode ser treinada para agrupar diversas coisas, como por exemplo, itens de compras de clientes, categorias de clientes, faixa etária de clientes, entre outros. Uma informação muito útil para uma empresa pode ser obter informações sobre a categoria de clientes que ela possui. Uma categoria pode ser entendida como classes sociais, faixas etárias e períodos de compra dos clientes. Uma empresa pode obter informações como, por exemplo, que noventa por cento dos seus clientes fazem parte da classe média; ou que setenta e cinco por cento dos seus clientes são mulheres com idade entre vinte e cinco e trinta e oito anos; ou que oitenta por cento das venda feitas pela empresa ocorre entre o dia cinco e o dia quinze de cada mês e aos sábados à tarde. Todos estes exemplos de informações podem determinar novas estratégias de vendas de uma empresa e aumentar consideravelmente as suas vendas. Como ocorre com a classificação, uma RNA também pode utilizar a técnica de agrupamento para o reconhecimento da fala. Uma RNA pode ser treinada para agrupar diferentes conjuntos de dados de fala e criar categorias de fala. Categorias de fala podem ser pessoas roucas, gripadas, voz fina, entre outros. 5.1.3 Memória Associativa O cérebro humano é um dispositivo de armazenamento, ao longo de toda sua existência, a memória humana armazena informações com um sistema de índice que mais parece um banco de dados. Pessoas armazenam informações associando coisas ou idéias com outras memórias relacionadas. Uma teoria fundamental do cérebro humano, diz que quando dois neurônios estão ativos no cérebro ao mesmo tempo, então a conexão entre eles cresce fortemente. A memória associativa requer um mapeamento de dois itens quaisquer. Modelos de RNA, tais como, memórias adaptativas binárias e redes de Hopfield utilizam memórias associativas. 68 Uma RNA pode ser treinada para reconhecer associações entre quaisquer coisas. Por exemplo, uma RNA pode descobrir associações entre itens de compras feitas pelos consumidores de um supermercado. 5.1.4 Regressão ou Modelagem As pessoas criam modelos durante todo o tempo. Muitas pessoas constróem modelos relacionados com entradas e saídas baseadas em exemplos que são vistos todos os dias. Estes modelos podem ser bastante triviais, tais como, saber que quando há nuvens escuras no céu e o vento inicia, uma tempestade está provavelmente se formando. A habilidade de fazer predições a partir de exemplos complexos que envolvem muitas variáveis é uma grande qualidade. A partir de pequenos exemplos, as pessoas podem aprender a modelar relacionamentos. As pessoas usam essa habilidade para fazer interpolações entre exemplos exatos e a partir disto fazer generalizações de casos de novelas ou problemas que nunca tinham visto antes. Esta habilidade de fazer generalizações é a força da tecnologia de RNA. 5.1.5 Previsão de Séries Temporais Previsões de séries temporais envolvem olhar a informação corrente e predizer o que vai acontecer. Tipicamente, é visto o que tem acontecido por algum período de volta através do tempo e predizer por algum ponto no futuro. O elemento de tempo faz previsões de séries temporais mais difíceis e mais recompensáveis. 5.2 Treinamento de uma Rede Neural Artificial O treinamento de uma rede neural artificial ocorre após a preparação dos dados e da escolha do modelo e arquitetura de rede neural artificial a serem utilizadas para mineração dos dados. O treinamento de uma RNA não possui tempo determinado de execução. Algumas RNA requerem apenas uma passagem através dos dados, enquanto que outras podem requerer centenas ou milhares de execuções sobre a mesma base de dados. O treinamento de uma rede neural artificial pode ser controlado por um conjunto de parâmetros. Ou, estes mesmos parâmetros podem servir para o ajuste dos pesos da RNA. 69 O treinamento de uma RNA, na maioria dos casos, acontece com um subconjunto de exemplos e o teste de performance da RNA é realizado com um outro subconjunto de dados menor do que o utilizado para o treinamento. O treinamento e teste são utilizados para medir o que a RNA aprendeu e verificar se este aprendizado contêm informações importantes para o trabalho que está sendo desenvolvido. A tabela 5.2 apresenta alguns parâmetros utilizados no treinamento de uma RNA. Parâmetro Modelos Função Taxa de Aprendizado Todos Momentum Back Propagation Monitorar uma possível ocorrência de com MLP Controla o ajuste de pesos. oscilações grandes nos valores nas conexões de peso. Tolerância de Erro Back Propagation Especifica quão próximo o valor de saída com MLP deve estar do valor desejado antes do erro ser considerado como zero. Função de Ativação Todos Seleciona a função de ativação, a qual é utilizada pela unidade de processamento da rede neural artificial. Podem ser utilizadas as funções sigmoide, tangente hiperbólica, função gaussiana, etc. Vigilância ART Controla quão perspicaz vai ser o agrupamento dos dados. Vizinhança Kohonen Define o tamanho ou área de unidades circundantes ao vencedor a qual tem seus pesos alterados. Número de Épocas Kohonen MLP com O número de épocas determina o número de passos fixos para o treinamento da rede através dos treinamento dos dados. Tabela 5.2 : Parâmetros de Aprendizado para RNA ([BIG96]) 70 As RNA podem ser treinadas utilizando-se valores aleatórios para os valores das conexão de pesos. Os parâmetros de controle de treinamento (tabela 5.2) são inicializados e os padrões de treinamento dos dados são apresentados para a RNA, um de cada vez. Ao longo do progresso do treinamento, as conexões de pesos são ajustadas e é possível monitorar a performance da RNA. É importante compreender que pode tornar-se claro que uma RNA não pode ser capaz de aprender uma função à qual está tentando-se ensiná-la. Tentar e errar pode ser natural, mas pode consumir uma grande quantidade de tempo e dinheiro [BIG96]. Em [BIG96] são comentados itens importantes para o sucesso do treinamento de uma RNA. Este itens serão comentados a seguir e dividem-se em: • Monitorar o treinamento de uma RNA. • Controle do processo de treinamento através de parâmetros de aprendizagem. • Processo iterativo de desenvolvimento. • Evitar saturação da RNA. • Automação do Processo. 5.2.1 Monitorar o treinamento de uma RNA Quando se utiliza algoritmos de classificação, o estado atual do treinamento de uma RNA pode ser obtido através da monitoração do número correto e incorreto de classificações que a rede fez quando estava sendo testada. O sucesso do treinamento de um problema de classificação é a exatidão da classificação, definida sobre o percentual de classificações corretas. Com algoritmos de agrupamento, o processo de treinamento é usualmente determinado por um número de passos ou épocas que os dados são apresentados para a rede neural artificial e pelo tempo que a taxa de aprendizado e a vizinhança levam para decrescer. Em algoritmos de regressão, a etapa de treinamento é determinada pelo cálculo do erro medido pela raiz quadrada do erro (RMS - Root Mean Square). Se o erro da predição não cai ou oscila para cima e para baixo, existe uma chance de que a rede não está conseguindo 71 convergir para um valor de saída. Isto requer uma mudança nos valores de entrada ou troca do algoritmo de treinamento ou alteração dos parâmetros de treinamento. Para algoritmos de séries temporais, o treinamento deve ser executado até o passo de minimizar o erro da predição conforme descrito para algoritmos de séries temporais. 5.2.2 Controle do processo de treinamento através de parâmetros de aprendizagem Após a determinação da performance de execução requerida para a aplicação envolvendo RNA, o processo de treinamento pode ser iniciado. Dependendo do tipo de algoritmo de aprendizado e RNA que estão sendo utilizadas, existem alguns parâmetros (tabela 5.2) que devem ser inicializados para controlar o processo de treinamento. Para o tipo de aprendizado supervisionado existem os parâmetros taxa de aprendizado, momentum e tolerância de erro. Para o tipo de aprendizado não supervisionado existem os parâmetros vizinhança e vigilância. O parâmetro taxa de aprendizado controla a magnitude das mudanças feitas nas conexões de peso para movê-los na direção do valor correto para o padrão corrente de treinamento e a saída desejada. Com uma taxa de aprendizado grande, é possível ocorrer grandes mudanças nos pesos após cada padrão ser apresentado para a RNA, o que pode causar grandes oscilações em seus valores. Com uma taxa de aprendizado relativamente pequena, consegue-se sucesso no treinamento de uma RNA através do ajuste dos pesos feitos após a execução rápida de pequenos passos. O parâmetro momentum acompanha passo a passo o parâmetro taxa de aprendizado. Sua função é monitorar a possível ocorrência de oscilações grandes nos valores nas conexões de peso. Este parâmetro faz com que o erro de um padrão de treinamento anterior possa ser medido e adicionado ao erro atual. Através da medição do erro do padrão anterior é possível verificar se a conexão de peso mudou a direção da RNA em larga escala. O parâmetro tolerância de erro é utilizado para calcular a diferença entre a saída desejada e saída gerada pela RNA. Este parâmetro especifica quão próxima a saída da RNA deve estar da saída desejada. O parâmetro vizinhança em um algoritmo de Kohonen define a área ao redor da unidade vencedora, onde as unidades não vencedoras têm seus pesos alterados. 72 O parâmetro vigilância é utilizado em redes ART para controlar quão perspicaz vai ser o agrupamento dos dados. Se o valor do parâmetro vigilância for baixo e dois padrões são similares, ambos os padrões serão agrupados juntos. Entretanto, se o parâmetro vigilância for aumentado, a perspicácia da RNA será maior na avaliação da diferença entre dois padrões. Maiores informações sobre estes e outros parâmetros podem ser encontradas em [BIG96]. 5.2.3 Processo iterativo de desenvolvimento É muito provável que nas primeiras vezes que ao treinar uma rede neural artificial, esta não seja capaz de encontrar o padrão que está sendo procurado. Neste caso, algum problema pode estar acontecendo com o treinamento da RNA. A figura 5.1, mostra o processo iterativo para treinamento de uma RNA. Em alguma das etapas do processo de treinamento pode estar a causa para o treinamento da RNA não estar ocorrendo de maneira satisfatória. A seguir, serão comentados alguns dos problemas que podem ocorrer durante o processo de treinamento da RNA. O primeiro problema é quando o treinamento de uma RNA não converge para um valor. Após monitorar o treinamento da rede, é percebido que os valores dos ajustes das conexões de peso oscilam para cima e para baixo. Há duas maneiras para resolver este problema [BIG96]. A primeira maneira é adicionar valores aleatórios para as conexões de peso da RNA para tentar fazer com que a RNA convirja para um valor qualquer. A segunda opção é reinicializar as conexões de peso da rede para novos valores aleatórios e reiniciar o processo de treinamento. Estas duas sugestões podem não ser suficientes para resolver o problema. O segundo problema que pode ocorrer é com a seleção do modelo escolhido para a RNA. Um modelo pode ter sido escolhido inadequadamente para treinar uma RNA. Se for detectado que este é o problema, então a solução é trocar o modelo de RNA e reiniciar o processo de treinamento. Se a conclusão for que o modelo escolhido é o correto, então uma solução simples é adicionar mais unidades escondidas ou uma outra camada de unidades escondidas. Duas camadas são necessárias somente se for adicionado um grande número de unidades escondidas e a rede continuar a não convergir. A RNA necessita de um número suficiente de unidades escondidas para utilizar todo o poder computacional para o aprendizado. 73 Seleção dos Dados Representação dos Dados Seleção do Modelo de Rede Neural Especificação da Arquitetura da Rede Neural Setar os Parâmetros para Treinamento Aceitar ou Recusar os Critérios Escolhidos Recusado Aceito Figura 5.1 : Processo Iterativo para Treinamento de RNA [BIG96] Se o modelo está correto e a RNA não converge para a resposta correta, provavelmente o problema possa estar na representação dos dados, na distância entre eles. Os parâmetros de entrada para a RNA podem não estar sendo escalados ou codificado de maneira 74 que a RNA possa aprender sobre estes dados. O problema mais sério que pode acontecer e mais difícil de ser detectado, é se um parâmetro está sendo perdido durante o treinamento da RNA. A solução para este problema é revisar a representação dos dados e treinar novamente a RNA para ver o que irá acontecer. Se a RNA continuar a não convergir para a resposta correta e os problemas relacionados até este momento não existem, o problema pode estar no modelo de arquitetura especificado para a RNA. Se forem adicionadas novas unidades escondidas ou camadas escondidas, as conexões de peso entre todas as camadas da arquitetura da RNA devem ser revisadas e a RNA deve ser treinada novamente. E, pode-se chegar a conclusão que o treinamento da rede não convirja por causa do excesso de camadas escondidas. Neste caso, deve-se remover algumas unidades escondidas, ajustar as conexões de peso e treinar novamente a RNA. Se o treinamento da RNA continuar a não convergir, todo o processo de treinamento da RNA(figura 5.1) deve ser revisto com mais calma para procurar o problema. 5.2.4 Evitar a Saturação da RNA É muito importante saber quando um treinamento de uma RNA deve ser finalizado. A saturação de treinamento de uma RNA pode ser comparada ao aprendizado por parte de uma criança dos tipos de carros que existem. Para a criança é ensinada que os tipos de carros que existem são, por exemplo, parati, gol, omega, uno, etc. A criança, a partir deste momento consegue reconhecer estes tipos de carros. Contudo, quando uma criança vê um carro do tipo "fuca", a criança diz que "fuca" não é carro. Neste exemplo, foi ensinado com insistência para a criança alguns tipos de carros, mas no momento que a criança encontrou outros tipos de carros, ela não foi capaz de identificar este carro como um tipo de carro. É importante salientar que o treinamento de uma RNA é realizado para conseguir as melhores predições no processo de treinamento dos dados. O treinamento é feito para otimizar a performance da RNA no teste e validação dos dados. 75 5.2.5 Automação do Processo A primeira tentativa para automatizar o processo de treinamento da RNA é a seleção do número apropriado de camadas escondidas e unidades escondidas da RNA. Isto pode ser feito de várias maneiras. A primeira maneira é tentar computar a arquitetura necessária verificando os dados. A segunda maneira é construir uma rede arbitrária grande e então cortar os neurônios e conexões até chegar em um número pequeno de neurônios com os quais a RNA possa realizar seu trabalho e produzir um resultado. A terceira maneira é começar com uma rede pequena e aumentar os neurônios até que a RNA esteja executando a sua tarefa de maneira satisfatória. 5.3 Análise do Aprendizado de uma Rede Neural Artificial As etapas de criação, treinamento e teste de um modelo de RNA (figura 5.1) fazem parte de algumas das etapas do processo de mineração dos dados. A próxima etapa é a mais importante em todo este processo: analisar o que a RNA aprendeu. Quando se usa RNA como modelos para processos de transação, o tópico mais importante é se os pesos das conexões da RNA capturaram com precisão a classificação, agrupamento, regressão, entre outros, necessários para a aplicação. Nas aplicações de suporte à decisão é importante não o que a RNA foi capaz de aprender para discriminar entre boas e más classificações, mas o que a RNA é capaz de identificar de fatores chaves em fazer esta determinação. Em resumo, o importante é saber o que a RNA aprendeu. Existem diversas abordagens para verificar o que a RNA aprendeu. Uma das abordagens é tratar a RNA como uma "caixa preta". Neste caso, diversas entradas são apresentadas para a RNA, e as saídas são gravadas. Esta abordagem é chamada de análise sensitiva. Uma outra abordagem é apresentar um conjunto de dados de entrada para a RNA e gerar um conjunto de regras para descrever as funções lógicas executadas pela RNA baseados nas constatações do estado interno e conexões de peso da RNA. Uma terceira abordagem é representar de maneira visual a RNA, utilizando representações gráficas para mostrar os padrões de dados reconhecidos pela RNA. Estas abordagens serão comentadas com maior profundidade a seguir. 76 5.3.1 Análise Sensitiva Enquanto que existem muitos diferentes tipos de informações que podem ser unidas utilizando as RNA para minerar dados, talvez o ponto crucial para aprender é saber quais parâmetros são mais importantes para uma função específica. Determinar o impacto ou efeito de uma variável de entrada sobre a saída de um modelo é chamada de análise sensitiva. [BIG96] Uma RNA pode ser usada para fazer análise sensitiva de diversas maneiras. Uma abordagem é tratar a RNA como uma "caixa preta". Para determinar o impacto que uma particular variável de entrada tem sobre a saída, é preciso manter as outras entradas em algum valor fixo, tais como, seus significados ou valor médio e variar somente a entrada enquanto está sendo monitorada a mudança na saída. Se a variação da entrada for para o seu valor mínimo ou máximo e nada acontecer para a saída, então a variável de entrada não é muito importante para o funcionamento do modelo. Contudo, se a saída mudar consideravelmente, então a entrada é muito importante porque afeta a saída. A melhor forma de executar análise sensitiva da maneira apresentada no parágrafo anterior e repetir este processo para cada variável em um gerenciamento controlado pode ser chamado de importância relativa de cada parâmetro. Desta forma, tem-se uma posição (ranking) dos parâmetros de acordo com o seu impacto sobre o valor de saída. Uma abordagem mais automatizada para executar análise sensitiva com RNA back propagation é manter uma trilha de termos de erros computados durante a etapa do algoritmo back propagation. Computando todos os erros no caminho de volta à camada de entrada, terse-á uma mensuração do grau para com que cada entrada contribui para o erro da camada de saída. Verificando por um outro ponto de vista, a entrada com o maior erro tem maior impacto sobre a saída. Acumulando estes erros e normalizando-os, pode-se computar a contribuição de cada entrada para os erros da saída. Assim pode ser descoberta a sensibilidade da função que está sendo modelada para mudar em cada entrada. 5.3.2 Geração de Regras para Redes Neurais Artificiais Uma saída comum para a mineração de dados ou algoritmos de descoberta do conhecimento é a transformação da linha de dados em regras do tipo "if-then-else". Técnicas 77 do modelo de aprendizado indutivo, tais como, árvores de decisão podem facilmente ser usadas para gerar tais regras. Uma representação eficiente para o conhecimento, especialmente em problemas de classificação, é derivar um conjunto de regras de um linha de dados. Então, pode-se inspecionar este conjunto de regras e tentar determinar quais entradas são importantes. Neste caso, o objetivo do processo de mineração de dados com RNA é transformar um conjunto de exemplos de dados em um conjunto de regras que tenta explicar como as entradas causam o particionamento dos dados em diferentes classes. 5.3.3 Visualização Enquanto que as RNA são poderosas para o reconhecimento de padrões, não existe ainda nada mais poderoso que a habilidade humana de ver e reconhecer padrões em dados em duas ou três dimensões. A técnica de visualização é muito importante na análise da saída do processo de mineração de dados. As técnicas de visualização padrão trabalham com gráficos. Os gráficos incluem histogramas, gráficos com vistas bidimensionais dos dados ou tridimensionais dos dados, desenho de retas para verificar o comportamento de uma simples variável e gráficos que mostram o comportamento de variáveis discretas, entre outras técnicas. Durante a última década, um conjunto de gráficos específicos para RNA têm sido desenvolvido. Estes gráficos fornecem informações sobre a arquitetura da RNA, estado atual dos neurônios e valores das conexões de peso. Uma representação muito utilizada para visualizar o processo de RNA é através do Diagrama de Hinton [BIG96]. Um diagrama de Hinton é uma coleção de caixas (representadas na forma de quadrados ou retângulos) na qual o tamanho da caixa representa a magnitude relativa da conexão de peso e, a cor representa o seu sinal (positivo ou negativo). Estes diagramas são uma excelente forma para visualizar os pesos em uma RNA. 5.4 Extração de Regras A extração de regras é utilizada para compreender o que uma RNA aprendeu após finalizada a etapa de treinamento. Uma abordagem para compreender uma hipótese 78 representada pelo treinamento de uma RNA é traduzir esta hipótese para uma linguagem mais compreensível. Alguns conceitos são importantes de serem apresentados antes de explorar a extração de regras. A seguir são apresentados os conceitos de representação da linguagem, estratégia de extração e requisições de rede. • Representação da Linguagem: a linguagem é utilizada pelo método de extração para descrever o modelo aprendido por uma RNA. As linguagens que têm sido utilizadas por vários métodos incluem regras de inferência (if..then..else), regras "m-de-n", regras fuzzy e árvores de decisão. • Estratégia de Extração: a estratégia que é utilizada pelo método de extração para mapear o modelo de representação de uma RNA treinada para um modelo em uma nova linguagem de representação. As regras extraídas pelo método descrevem a conduta da rede como um todo, a conduta de unidade individual de processamento na rede, ou algo perto destes dois casos. O primeiro caso é chamado de método global e, o segundo caso, de método local. • Requisições da rede: os requisitos arquitetura e treinamento que o método de extração impõe para a RNA. Em outras palavras, o limite da rede para o qual o método é aplicável. A seguir, são apresentados dois métodos de extração de regras, o primeiro método é "Métodos de extração de regras baseados em procura de regras" e, o segundo, é "um método de extração de regras baseado no aprendizado". 5.4.1 Métodos de Extração de Regras Baseados em Procura de Regras Muitos algoritmos de extração de regras fazem parte de um conjunto de tarefas como um problema de procura que envolve explorar um espaço de regras candidatas e testar cada regra candidata individualmente contra a RNA para ver se são regras válidas. Vários destes algoritmos conduzem a procura através de regras "if..then..else". A figura 5.2 mostra uma regra de procura para um problema com três neurônios representando valores lógicos (verdadeiro e falso). Cada neurônio se relaciona com o antecedente através de uma possível regra, e os arcos indicam relacionamentos especializados entre os neurônios. O 79 neurônio localizado no topo do grafo representa a regra mais geral e o neurônio mais abaixo representa a regra mais específica. Ao contrário de que muitos processos de procura os quais continuam a execução até que o primeiro neurônio desejado é encontrado, a extração de regras baseada na procura continua até que todas de um máximo de regras sejam encontradas. Note que regras com mais de um literal em seu antecedente tem múltiplos ancestrais no grafo (figura 5.2). Obviamente, quando uma regra é explorada, é insuficiente para o procedimento de procura visitar um neurônio múltiplas vezes. Para evitar esta ineficiência, pode-se impor uma ordem nos literais transformando o gráfico de procura em uma árvore. O aumento do espaço para procurar a regra pode ser muito grande. Isto é um problema para o processo de procura de regras. Para um problema com n neurônios binários, existem 3n regras possíveis do tipo "if...then...else". Para evitar ou resolver este problema é necessário limitar o número de combinações possíveis no processo de extração de regras. Muitos algoritmos de extração de regras gerenciam as combinações limite do número de literais que podem estar em antecedentes de regras extraídas [SAI88] [GAL93]. ¬X1 X1 X1X2X3 X2 ¬X2 X3 X1X2¬X3 ¬X3 ¬X1¬X2¬X3 Figura 5.2 : Uma regra de Procura [CRA] Cada neurônio da figura 5.2 representa uma possível regra antecedente. Os arcos entre os neurônios indicam regras especializadas (na direção de cima para baixo). As linhas em negrito descrevem uma árvore de procura. Explorar um espaço de regras candidatas é somente uma parte da tarefa para o método extração de regras baseada na procura. A outra parte da tarefa é testar as regras candidatas contra a RNA. O método desenvolvido por Gallant [GAL93] opera por propagação de 80 intervalos de ativação através da rede. O primeiro passo para testar a regra usando este método é inicializar as ativações das unidades de entrada que correspondem aos literais em cada regra candidata. O próximo passo é propagar as ativações através da rede. A idéia deste segundo passo, contudo, é a aceitação de que as unidades de entrada as quais as ativações não são especificadas pela regra poderiam possivelmente levar em qualquer valor permitido, e então os intervalos de ativações são propagados para as unidades da próxima camada. Efetivamente, a rede calcula, para os exemplos incluídos na regra, os limites de possíveis ativações na próxima camada. Intervalos de ativação são então rapidamente propagados de uma unidade escondida para as unidades de saída. Neste momento, o limite de possíveis ativações para as unidades de saída pode ser determinado e o procedimento pode decidir se aceita a regra ou não. Embora este algoritmo garanta a aceitação somente de regras válidas, ele pode falhar para aceitar um máximo de regras gerais, e ao invés disso pode retornar regras específicas. A razão para esta deficiência é que na propagação dos intervalos de ativação das unidades escondidas avançadas, o procedimento assume que a ativação das unidades escondidas são independentes umas das outras. Em muitas RNA esta aceitação é difícil de ser manipulada. O método de extração de regras descreve a conduta das unidades de saída em termos das unidades de entrada. Uma outra abordagem para o problema da extração de regras é decompor a rede em uma coleção de redes, e então extrair um conjunto de regras descrevendo cada componente da rede. Existe uma variedade de métodos de extração de regras locais para redes que usam funções de ativação sigmoidal das unidades escondidas para as unidades de saída. Nestes métodos, a aceitação é feita de maneira que as unidades escondidas e de saída podem ser aproximadas através de funções limite, e então cada unidade pode ser descrita por uma variável binária indicando se está ativa (ativação igual a 1) ou se não está ativa (ativação igual a 0 ou -1). Fornecida esta aceitação, pode-se extrair um conjunto de regras para descrever cada unidade escondida e de saída individual em termos das unidades que tem conexões de peso para isso. As regras para cada unidade podem ser combinadas em um conjunto de regras simples que descrevem a rede como um todo. Se as ativações das unidades de entrada e escondida em uma rede são limitadas no intervalo [-1,1], então a abordagem local pode significar simplesmente a procura da regra no espaço. O ponto central que simplifica a procura de combinações neste caso é que os 81 relacionamentos entre quaisquer entradas para uma unidade e sua saída é 1. Isto é, pode-se olhar o sinal da conexão de peso da entrada para a unidade de interesse para determinar o quanto esta variável influência na ativação da unidade. Se o sinal é positivo, a unidade pode levar a ativação para 1, senão pode levar a ativação para -1. Então, se são extraídas regras para explicar quando a unidade tem uma ativação de 1, necessita-se considerar -xi literais somente para estas entradas xi que tem pesos negativos, e se precisa considerar xi não negativos literais somente para entradas que tem pesos positivos. Quando o espaço de procura é limitado para incluir xi ou -xi, mas não ambos, o número de regras no espaço é 2n para uma tarefa com n neurônios binários. Contudo, quando esta condição não é considerada, o tamanho do espaço da regra é 3n. 5.4.2 Um Método de Extração de Regras Baseado no Aprendizado Um outro algoritmo para extração de regras é o TREPAN [CRA93] [CRA96] [CRA]. No TREPAN, o problema da extrair uma hipótese compreensível de uma rede treinada é visto como uma tarefa de aprendizado indutivo. Nesta tarefa de aprendizado, a concepção destino é a função representada pela rede, e as hipóteses produzidas pelo algoritmo de treinamento são uma árvore de decisão que aproxima a rede. O processo de extrair regras no TREPAN envolve progressivamente refinar um modelo completo da rede. O modelo, neste caso, é uma árvore de decisão a qual é aumentada conforme a necessidade de gerenciamento. O TREPAN aprende diretamente de um conjunto de treinamento. Estes algoritmos constróem árvores de decisão recursivamente particionando o espaço de entrada. Cada neurônio interno na árvore representa um critério de divisão que particiona alguma parte do espaço de entrada, e cada folha representa uma classe preditiva. Como o TREPAN aumenta a árvore, ele mantém uma fila de níveis as quais são expandidas em subárvores quando são removidas da fila. Com cada neurônio na fila, o TREPAN armazena um subconjunto de exemplos de treinamento, um outro conjunto de instâncias às quais se refere como instâncias de consulta, e um conjunto de restrições. O subconjunto de exemplos de treinamento armazenados consiste simplesmente destes exemplos que alcançam o neurônio. As instâncias de consultas são usadas, assim como os exemplos de treinamento, para selecionar a divisão do teste se o neurônio é um neurônio interno, ou para 82 determinar a classe se o neurônio é uma folha. O conjunto de restrições descreve as condições que as instâncias devem satisfazer para alcançar o neurônio, esta informação é usada quando é desenhado um conjunto de instâncias de consultas para um neurônio recentemente criado. Uma descrição mais aprofundada do algoritmo pode ser encontrada em [CRA]. 83 6. DESCRIÇÃO DO PROTÓTIPO Com o intuito de testar alguns dos conhecimentos estudados até aqui, foi desenvolvido um protótipo de mineração de dados utilizando RNA. Neste, capítulo será descrita as etapas percorridas, algumas telas do programa serão apresentados, bem como uma conclusão sobre os resultados obtidos sobre o desenvolvimento deste protótipo. 6.1 Objetivos do Protótipo Este protótipo tem por objetivo verificar se o algoritmo back propagation das RNA pode ser utilizado na etapa de mineração de dados do processo de descoberta do conhecimento em base de dados para procurar padrões nos dados. Este protótipo não tem por objetivo apresentar resultados práticos. Isto é importante ser salientado, pois, após alguns testes, pode-se chegar a conclusão que o algoritmo back propagation não pode ser utilizado para procurar padrões na etapa da mineração de dados do processo de DCBD. Este algoritmo pode precisar ser utilizado em conjunto com algum outro algoritmo para atender as necessidades do usuário na etapa de mineração dos dados. Seria muito importante obter resultados práticos e, apresentá-los na forma de tabelas ou gráficos. Com os resultados obtidos, poderia se compará-los e verificar o que a RNA aprendeu e, realizar novos testes. Mas, de imediato, isto fica como sugestão para trabalhos futuros, caso se consiga bons resultados com este protótipo utilizando o algoritmo back propagation para procurar padrões nos dados na etapa de mineração dos dados. 6.2 Etapas realizadas do processo de DCBD Algumas das etapas do processo de DCBD (apresentadas no capítulo 2) foram realizadas antes do início do desenvolvimento do protótipo. As etapas de compreensão, seleção dos dados, pré-processamento dos dados, transformação, escolher o método de mineração de dados e escolher o algoritmo de mineração de dados são descritas abaixo. 84 6.2.1 Compreensão O objetivo desta aplicação é verificar se o algoritmo back propagation pode ser utilizado para procurar padrões nos dados na etapa de mineração de dados do processo de DCBD. Tem-se plena consciência que este protótipo pode, ao final, não fornecer resultados práticos. 6.2.2 Seleção dos Dados O sistema de matrículas da Universidade de Caxias do Sul é composto por uma grande quantidade de programas escritos em linguagem Cobol e, estes dados estão armazenados em um computador do tipo mainframe. O sistema de matriculas é composto por diversos arquivos de dados. Foram selecionados os arquivos de histórico dos alunos, disciplinas e cadastro de alunos. Estes arquivos são arquivos muito grandes e contêm informações de quase duas décadas. Por isso, selecionamos os dados dos alunos do curso de computação para serem utilizados neste protótipo. Os arquivos foram fornecidos pelo NPDU (Núcleo de Processamento de Dados da Universidade de Caxias do Sul). A estrutura de dados dos arquivos é a seguinte: 1. Arquivo Disciplinas: • Código da disciplina, tipo caracter de tamanho 6. • Descrição da disciplina, tipo caracter de tamanho 35. 2. Arquivo de Histórico de Alunos: • Cadastro, tipo numérico de tamanho 8. • Ano/período, tipo numérico de tamanho 3. • Código da disciplina, tipo caracter de tamanho 6. • Turma, tipo caracter de tamanho 1. • Nota, tipo caracter de tamanho 2. • Situação, tipo caracter de tamanho 1. • Créditos, tipo numérico de tamanho 4. 85 • Horas/aula, tipo numérico de tamanho 3. • Curso, tipo numérico de tamanho 3. • Freqüência, tipo numérico de tamanho 2. 3. Arquivo de Cadastro de Alunos: • cadastro, tipo numérico de tamanho 8. • nome, tipo caracter de tamanho 35. • curso, tipo caracter de tamanho 4. • média, tipo numérico de tamanho 9. • ano ingresso, tipo numérico de tamanho 2. Para utilização deste protótipo foi criada uma nova tabela no banco de dados. Para isto, foram avaliados os currículos do curso de Bacharelado em Ciência da Computação da Universidade de Caxias do Sul. Os currículos analisados foram o “B”, ”C”, ”E” e ”F”. Destes currículos foram selecionadas trinta e três matérias comuns a todos os currículos. A nova tabela contêm trinta e três atributos com o nome destas matérias contendo valor 3 se o aluno cursou a matéria e, -3 se o aluno não cursou está matéria. A tabela contém mais trinta e três atributos com os respectivos conceitos de cada matéria. Além destes atributos, esta tabela contém a média do aluno, cadastro do aluno, tempo que o aluno está cursando o curso de computação e nome do aluno. 6.2.3 Pré-Processamento dos Dados Nesta etapa foi feita a inserção dos dados fornecidos pelo NPDU no formato de arquivos texto para o SGBD Oracle. Após, foi gerada a tabela para a mineração de dados. Para a geração desta tabela, foram tomadas algumas decisões: • O atributo freqüência da tabela de histórico foi desprezado porque continha informações inconsistentes. • O atributo nota do arquivo histórico possuía 54 registros com nota igual a 5. Estes registros foram desprezados. 86 Para a inserção dos dados foram lidos todos os registros comuns de um mesmo cadastro dos arquivos de cadastro de alunos e histórico de alunos para gerar um novo registro nesta nova tabela. 6.2.4 Transformação Após a geração da tabela para a mineração de dados, o conteúdo do atributo nota foi dividido por dez, pois o arquivo texto enviado pelo NPDU continha o campo nota como tipo caracter de duas posições. No momento da conversão, os dados foram importados para o banco de dados como um inteiro de duas posições. Por isso, foi necessário dividir a nota por dez com o objetivo de ter-se o conceito usado na universidade. Quando os dados foram lidos do banco de dados para serem colocados para a estrutura de dados criada para a mineração de dados, o conceito das disciplinas foi mapeado para valores no intervalo [-3,3], onde -3 representa o conceito zero e 3 o conceito 4. O atributo média foi separado em duas entradas, isto é, a média contém em sua parte inteira o número de créditos cursados pelos alunos e, em sua parte fracionária, contém a média dos conceitos das disciplinas cursadas pelos alunos. 6.2.5 Escolher a Tarefa da Mineração de Dados Para este protótipo foi escolhido o método de classificação para minerar os dados. Para classificar os dados, o protótipo solicita que o usuário, através de um formulário, informe exemplos positivos e negativos para a RNA. Os exemplos positivos associam a saída desejada o valor 3 e, os exemplos negativos, associam a saída desejada o valor -3. Os exemplos positivos e negativos podem ser compreendidos como as informações contidas em qualquer tupla da tabela gerada para este protótipo. 6.2.6 Escolher o Algoritmo de Mineração de Dados O algoritmo escolhido foi o algoritmo back propagation das redes neurais artificiais. O algoritmo back propagation utiliza a topologia feedforward e aprendizado supervisionado. Este algoritmo foi escolhido por ser o algoritmo mais utilizado no processo de mineração de dados, por ser o algoritmo mais referenciados pelos autores da área de mineração de dados e 87 por ser o algoritmo de redes neurais artificiais mais fácil de ser implementado [BIG96] [FAY96]. As informações fornecidas como entrada para a RNA são escolhidas pelo usuário através de um formulário. Estas informações são convertidas para o intervalo [-3,3] e, após, enviadas para a RNA. O algoritmo back propagation possui apenas uma camada escondida. O número de neurônios da camada escondida não será fixo. A RNA será testada com diversos números de neurônios na camada escondida. Estes testes serão feitos para verificar o comportamento da RNA e, ajustes no número de neurônios serão necessários para verificar se a RNA foi capaz de aprender algum padrão ou atingir um valor desejado de erro. A saída desejada conterá um valor igual a -3, se a entrada da RNA for um exemplo negativo. E, a saída desejada receberá um valor 3, se a entrada for um exemplo positivo. É necessário informar o valor da saída desejada, pois este algoritmo utiliza o tipo de aprendizado supervisionado. Após o treinamento, a RNA receberá uma tupla para teste que não foi selecionada como exemplo negativo e positivo e fornecerá um valor de saída. Se o resultado fornecido como saída for positivo, significa que a tupla fornecida para teste foi classificada como um exemplo positivo, senão foi classificada como um exemplo negativo. Para controle de aprendizado deste algoritmo serão utilizados a taxa de erro e número de iterações. Ambos podem ser utilizados juntos ou isoladamente, dependendo dos testes a serem realizados. 6.3 Desenvolvimento do Protótipo Para o desenvolvimento do protótipo foi utilizado o ambiente de programação DELPHI 2.0 da Borland e como SGBD foi utilizado o SGBD ORACLE 7.3. Este programa fornece para o usuário uma interface para que o usuário possa escolher a tabela, atributos desta tabela e dados desta tabela a serem utilizados para a mineração de dados. Após esta etapa inicial de escolha dos dados, o usuário pode treinar e testar a RNA para ver os resultados produzidos pelo algoritmo back propagation. E, se o usuário não quiser treinar a RNA toda vez que ele quiser usar este protótipo, o usuário possui as opções de salvar 88 e recuperar os pesos da conexões entre os neurônios das camadas de saída e escondida da RNA. A seguir, serão apresentadas algumas das telas deste protótipo e uma breve descrição das funções do protótipo. 6.3.1 Menu Principal A figura 6.1 apresenta o menu principal do protótipo. Este menu possui três níveis superiores: Arquivo, Rede Neural e Selecionar; os quais são descritos a seguir. Figura 6.1 : Menu Principal O item de menu Arquivo contém as seguintes opções : • Gravar Pesos: nesta opção o usuário pode gravar os pesos gerados pelo treinamento da RNA da camada de saída e da camada escondida. O objetivo de salvar os pesos é que o usuário possa recuperá-los, carregá-los para a RNA e fazer novos testes sem ter que treinar a RNA, uma vez que o treinamento da RNA pode necessitar de muitas horas para ser concluído. • Carregar Pesos: carrega os pesos dos arquivos para as camadas de saída e escondida da RNA. • Sair: finaliza o programa. 89 O item de menu Rede Neural contém as seguintes opções : • Inicializar: nesta opção, os dados selecionados pelo usuário são carregados para a estrutura de dados utilizada pela rede neural, as matrizes de pesos são inicializadas com valores aleatórios (somente é realizado se não forem recuperados os pesos a partir de arquivos) e, outros dados necessários para o treinamento são inicializados. Figura 6.2 : Formulário de Treinamento • Treinar: o usuário é solicitado a informar três parâmetros (figura 6.2) : número de iterações, taxa de aprendizagem e taxa de erro. Todos estes valores são utilizados no treinamento da RNA. Após o usuário pressionar o botão OK, inicia-se o treinamento da RNA. Quando o treinamento da RNA estiver concluído é mostrado para o usuário o número de iterações realizadas e a taxa de erro obtida. • Testar: após o treinamento da RNA, o usuário pode testar o que a RNA aprendeu. É mostrado para o usuário um formulário (figura 6.5) contendo todos os dados da tabela selecionada. O usuário deve dar dois cliques em cima do registro selecionado e o programa fornecerá a resposta. 90 Figura 6.3 : Formulário de Atributos de uma tabela. O item de menu Selecionar contêm as seguintes opções : • Atributos: é mostrado um formulário (figura 6.3) com todos os atributos da tabela selecionada pelo usuário. O programa inclui automaticamente o atributo “MD_BOM”. Nesta opção, o usuário seleciona os atributos que ele quer que sejam utilizados no processo de mineração de dados. O atributo “MD_BOM” será utilizado no item de menu "Dados" do menu "Selecionar". • Tabela: é mostrado um formulário (figura 6.4) para o usuário com todas as tabelas disponíveis no banco de dados. O usuário deve selecionar a tabela que ele quer utilizar para a mineração de dados. • Dados: nesta opção, é mostrado um formulário (figura 6.5) com todos os dados da tabela seleciona pelo usuário. O usuário deve alterar o atributo “MD_BOM”. Este atributo deve conter “S” se a tupla for um exemplo positivo, “N” se a tupla for um exemplo negativo ou “ “ se a tupla for utilizado para treinamento. 91 Figura 6.4 : Formulário contendo o nome das tabelas. Figura 6.5 : Formulário com os dados da tabela selecionada pelo usuário 92 6.4 Resultados Não foi possível obter resultados práticos com o treinamento da RNA utilizando o algoritmo back propagation para procurar padrões nos dados na etapa de mineração de dados do processo de DCBD. Diversos problemas encontrados são apresentados a seguir: • A falta de experiência na utilização de RNA e, em especial, do algoritmo back propagation. E, falta de experiência também em trabalhar com este algoritmo para minerar os dados. • A grande quantidade de tempo necessária para o treinamento da RNA foi outro problema. Cada treinamento requereu mais de seis horas e, muitas vezes, foi interrompido bruscamente por falta de energia elétrica ou por causa de problemas com o servidor da rede da Universidade de Caxias do Sul, onde estavam sendo realizados os testes com este protótipo. • A falta de conhecimento em adequar os dados disponíveis para a entrada do algoritmo back propagation. Este problema pode ser a causa para que o motivo de não se ter conseguido treinar a RNA e atingir um valor de erro desejado. • Outro motivo considerável foi não se ter conseguido definir um número adequado de neurônios a serem utilizados na camada escondida para realizar o treinamento da RNA. Durante os testes do protótipo, foram feitas alterações no número de neurônios na camada escondida. Os dados de entrada foram mapeados para o intervalos [0,1], [-1,1] e [-3,3]. O número de padrões de entrada foi mudado. A RNA foi testada inicialmente com um número fixo de iterações e, após, a RNA foi treinada para atingir um erro desejado. Enfim, diversas combinações e alterações foram feitas no intuito de tentar fazer com que a RNA conseguisse realizar o treinamento com esta base de dados. Mesmo não se obtendo resultados práticos, estes resultados servem como base para novos testes e trabalhos futuros. O desenvolvimento deste protótipo proporcionou a aquisição de novos conhecimentos. Por isso, o desenvolvimento deste protótipo foi considerado válido e servirá de base para novos protótipos utilizando RNA para procurar padrões na etapa de mineração de dados do processo de DCBD. 93 7. CONCLUSÃO Neste trabalho foram apresentados diversos conceitos sobre a utilização RNA na etapa de mineração de dados do processo de DCBD. A mineração de dados é uma área emergente da ciência da computação que crescerá muito nos próximos anos. Este crescimento já está acontecendo, pois, a competição entre as empresas aumenta cada vez mais e, tem-se a necessidade de obter informações diferenciadas de maneira on-line como suporte para a tomada de decisão das empresas. As técnicas de mineração de dados podem ser utilizadas para o desenvolvimento de diversos tipos de aplicações (no capítulo 3 foram citadas algumas). Mas, como o mercado de mineração de dados tende a crescer muito, diversas outras aplicações surgirão com o passar dos anos e muitas deles exigirão o desenvolvimento de novos algoritmos para atender a suas necessidades específicas de descoberta de conhecimento. O processo de DCBD e a mineração de dados são tecnologias recentes, por isso, não são tecnologias consolidadas, percebe-se que atualmente estão sendo realizadas muitas pesquisadas nesta área. O desenvolvimento de aplicações ajudará estas tecnologias a se desenvolverem e crescerem cada vez mais. Com o passar dos anos, o processo de DCBD e a mineração de dados poderão ser consideradas tecnologias consolidadas. As redes neurais artificiais são muito utilizadas na área de inteligência artificial [FRE94]. A utilização de RNA para a utilização na mineração de dados é nova. Por isso, será necessário algum tempo para consolidar o seu uso. De qualquer maneira, as RNA podem ser utilizadas de diferentes formas para minerar dados. As RNA podem ser utilizadas para realizar classificações, agrupamentos, modelagem, entre outros. Durante o desenvolvimento do protótipo de mineração de dados utilizando o algoritmo back propagation das RNA para procurar padrões nos dados, alguns problemas foram detectados. A grande maioria destes problemas foi gerado pela falta de experiência em trabalhar com as RNA. Os problemas foram por causa do grande tempo de treinamento necessário e o desconhecimento em saber o número de neurônios que precisam ser utilizados na camada escondida. Mesmo com estes problemas, ou melhor, dificuldades de um aprendizado, o desenvolvimento deste protótipo foi muito útil para verificar na prática o 94 funcionamento do algoritmo back propagation e ter uma noção de como funcionam algumas etapas do processo de DCBD. Alguns trabalhos futuros podem ser sugeridos. Uma sugestão é pesquisar sobre como mostrar os resultados obtidos sobre o que uma RNA aprendeu. A visualização dos resultados é um aspecto muito importante e facilita o entendimento do usuário. Além disso é importante estudar-se outras formas de treinamento de RNA, para facilitar a etapa de treinamento da RNA. 95 8. BIBLIOGRAFIA [ANA 96] ANAND, S.; BELL, D.; HUGHES, J. EDM : a general framework for data mining based on evidence theory. Data & Knowledge Engineering, 18 : 189-223. 1996. [ARA96] ARUNASALAM, M. Data Mining. Lally School of Management & Technology, Rensselaer Polytechnic Institute. Disponível via protocolo http no endereço http://www.rpi.edu/~arunmk/dm1.html. [BIG96] BIGUS, J. Data Mining with neural networks: solving business problem - from application to decision support. McGraw-Hill, USA, 1996. [BIO97] BIOCOMP SYSTEMS, INC. What are neural networks? Redmond, USA, June, 1997. Disponível via protocolo http no endereço : http://www.biocompsystems.com/pages/NNDefine.htm [BRA96] BRACHMAN, R. KLOESGEN, W. PIATETSKY-SHAPIRO, G. SIMOUDIS, E. Industrial Applications of Data Mining and Knowledge Discovery. Communications of ACM, Nov, 1996. [BRE84] BREIMAN, L. FRIEDMAN, J. OLSHEN, R. & STONE, C. Classification and Regression Trees. Wadsworth and Brooks, Monterey, CA, 1984. [CRA] CRAVEN, M. SHAVLIK Using Neural Networks for Data Mining. School of Computer Science Carnegie Mellon University, Pittsburgh, PA. [CRA93] CRAVEN, M. Extraction Comprehensible Models from Trained Neural Networks. In Proceedings of the Tenth International Conference on Machine Learning, Amherst, MA, 1993. [CRA96] CRAVEN, M. SHAVLIK Extracting tree-structured representations of trained networks. In Touretzky, D., Mozer, M. & Hasselmo, M., editors, Advances in Neural Information Processing Systems. MITPress, Cambridge, MA, 1996. [DIL95] Dilly R. Data Mining. Parallel Computer Centre, Queens University Belfast, December, 1995. Disponível via protocolo http no endereço : http://www-pcc.qub.ac.uk/tec/courses/datamining/stu_notes/dm_book_2.html 96 [DOR93] DORNELES, R. V. Um Estudo sobre o Processamento Adaptativo de Sinais utilizando Redes Neurais. CPGCC/UFRGS, Porto Alegre, 1993. (Dissertação de Mestrado) [FAY96] FAYYAD, U. M. PIATETSKY-SHAPIRO, G. SMYTH, P. From Data Mining to Knowledge Discovery: An Overview, Advances in Knowledge Discovery and Data Mining, Fayyad, U. M. Piatetsky-Shapiro, G. Smyth, P. editors, American Association for Artificial Intelligence AAAI Press, California, USA, 1996. [FAY97] FAYYAD, U. MANNILA, H. PIATETSKY-SHAPIRO, G. Data Mining and Knowledge Discovery, An International Journal. April, 1997. Disponível via protocolo http no endereço http://www.research.microsoft.com/research/datamine/ [FEL96] FELDENS, M. Descoberta do Conhecimento Aplicada à Detecção de Anomalias em Bases de Dados. Trabalho Individual I do Curso de Pós-Graduação em Ciências da Computação na UFRGS, Porto Alegre, Dezembro, 1996. [FRA92] FRAWLEY, W. J., PIATESTSKY-SHAPIRO, G. MATHEUS, C. J. Knowledge discovery in databases: an overview. AI Magazine, Fall. [FRE94] Freeman, J. Simulating Neural Networks with Mathematical, Addison-Wesley, 1994. [GAL93] GALLANT, S. Neural Network Learning and Expert Systems. MIT Press, Cambridge, MA. [HER95] HERMANN, S. L. Estudo sobre Mineração de Banco de Dados. Trabalho de Pós-Graduação em Ciência da Computação na UFRGS, Porto Alegre, 1995. [HOL 94] HOLSHEIMER, M. & SIEBES, A. Data Mining : the search for knowledge in databases. Internal Report CS-R9406. University of Amsterdam, 1994. 78 p. [HOL94b] HOLSHEIMER, M. & KERSTEN, M. Architectural support for data mining. Amsterdan, Netherlands. [MAC97] MACKAY, D. J. C. Information Theory, Pattern Recognition and Neural Networks. March, 1997, chapters 12-16. (internet address: ftp://wol.ra.phy.com.ac.uk/pub/mackay/itprnn/ls.ps.gz) [MAT93] MATHEUS, C. CHAN, P. PIATETSKY-SHAPIRO, G. Systems for Knowledge discovery in databases. IEEE Transactions on Knowledge and Data Engineering. December, 1993. 97 [MOX96] MOXOM, B. Defining Data Mining DBMS-On-Line, DBMS Data Warehouse Supplement, august 1996. [OSO91] OSORIO, F. Um estudo sobre o reconhecimento visual de caracteres através de redes neurais. Dissertação de Mestrado, CPGCC-UFRGS, Porto Alegre, RS, 1991. [RAM96] RAMPON, M. Mapeamento Fonético para Língua Portuguesa utilizando Redes Neurais Artificiais. Trabalho de Conclusão do Curso de Bacharelado em Ciências da Computação na UCS, Caxias do Sul, Dezembro, 1996. [SAI88] SAITO, K. NAKANO, R. Medical diagnostic expert system based on PDP model. In Proceedings of IEEE International Conference on Neural Network, San Diego, CA. IEEE Press, 1988. [SUG93] SUGENO, M. YASUKAWA, T. A Fuzzy-Logic-Bases approach to qualitative modelling. IEEE Transactions on Fuzzy Systems, Volume 1, Number 1, February, 1993. [TER96] TERRA, E. Aplicação de Sistemas de Descoberta do Conhecimento em Banco de Dados. Trabalho Individual II do Curso de Mestrado em Informática da PUC-RS. Porto Alegre, Dezembro, 1996. [TRA95a] TRAJECTA, INC. Predictive Modeling with Neural Networks. Texas, USA, December, 1995. Disponível via protocolo http no endereço : http://www.trajecta.com/neural/white.htm [TRA95b] TRAJECTA, INC. Frequently Asked Questions about Neural Networks. Texas, USA, December, 1995. Disponível via protocolo http no endereço : http://www.trajecta.com/neural/edufaq.htm