XII Workshop de Computação Aplicada - WORCAP 2012 Um Framework Baseado em Componentes para Aplicações de Descoberta de Conhecimento em Banco de Dados Wanderson Gomes de Almeida1, Walter Abrahão dos Santos2, Fernando Manuel Ramos2 1 Programa de Mestrado em Computação Aplicada – CAP Instituto Nacional de Pesquisas Espaciais – INPE 2 Laboratório Associado de Computação e Matemática Aplicada – LAC Instituto Nacional de Pesquisas Espaciais – INPE [email protected], {walter.abrahao,fernando}@lac.inpe.br Resumo. A pesquisa de eventos climáticos tem grande importância nas políticas de tomada de decisões e tem um impacto social e econômico. O desenvolvimento de ferramentas eficazes para suporte deste processo é altamente desejável, sobretudo se elas provêm visualização de fenômenos. Este trabalho apresenta uma ferramenta que apoia as etapas de descoberta de conhecimento em banco de dados em séries espaço-temporal, ou seja préprocessamento, mineração de dados (DM) e pós-processamento. A ferramenta, aqui denominada de ERB-ArrayTools, foi desenvolvida em Java utilizando soluções de código aberto como componentes e prototipada para consultas SQL de estatísticas espaço-temporal de conjuntos de dados disponíveis na web a partir do Centro Nacional de Pesquisa Atmosférica da agência de Administração Nacional do Oceano e da Atmosfera (NOAA), contribuindo para aumento de produtividade na análise e visualização de dados. Palavras-chave: Desenvolvimento Baseado em Componentes, Software Aberto, KDD, Mineração de Dados, NetCDF, Visualização Científica, Séries EspaçoTemporal. Abstract. Research in the area of weather events is quite important for decision making policies and has both social and economic impacts. The development of effective tools for supporting this process is highly recommended as they increase productivity and reliability mainly if they provide phenomena visualization. This paper presents a tool addressing the phases of knowledge discovery in databases for temporal-spatial series that is pre-processing, data mining (DM) and post-processing. The tool, here named ERB-ArrayTools, has been developed in Java employing component-based open source solutions and prototyped for dealing with time-spatial statistical SQL queries from datasets available over the web from the National Center for Atmospheric Research of the National Oceanic and Atmospheric Administration (NOAA) catering to higher productivity on data analysis and visualizations. Key-words: Component-Based Development, Open Software, KDD, Data Mining, NetCDF, Scientific Visualization, Space-Time Series. 1. Introdução Mudanças climáticas envolvem um dinamismo mais complexo do que a simples elevação da média térmica, por exemplo. Por este motivo, tipicamente estes fenômenos possuem um comportamento de reação em cadeia que deve ser avaliado em profundidade XII Workshop de Computação Aplicada - WORCAP 2012 através da interpretação dos dados quantitativos e qualitativos e que podem ter impacto em perdas e prejuízos sócio-ambiental. Esta interpretação requer técnicas que buscam transformar os dados armazenados de diversas séries históricas em conhecimento para posterior análise. Um ferramental que facilite estudos de mudanças climáticas é essencial pela diversidade de formatos de dados envolvidos que usualmente necessitam de uma fase de pré-processamento geralmente tediosa. O desenvolvimento softwares neste contexto deve gerar resultados que satisfaçam as necessidades de usuários deste domínio. Por este motivo, é sempre desejável a construção de softwares que resultem num conjunto de artefatos flexíveis, incluindo modelos e que muitas vezes podem ser utilizados em outras aplicações semelhantes. Este argumento é baseado no que a Engenharia de Software preconiza como reutilização de software e em particular desenvolvimento baseado em componentes. Este trabalho explora a abordagem de componentes como uma alternativa para a obtenção de soluções reutilizáveis para o processo de desenvolvimento de software, visando maior produtividade e menor custo. A aplicação aqui abordada lida com o processo de Descoberta de Conhecimento em Banco de Dados, do inglês Knowledge Discovery in Databases (KDD) [Botia et al., 2002]. O processo de KDD é a descoberta da informação útil e implícita em grandes bases de dados e em geral emprega técnicas de DM. Para se obter estas informações, foi desenvolvido um aplicativo em Java, chamado ERB-ArrayTools, como protótipo utilizando a abordagem DBC capaz de realizar o pré-processamento, a mineração e o pós-processamento possibilitando KDD para os estudos da meteorologia e do clima. Este artigo é organizado da seguinte forma. A seção 2 introduz o processo KDD. A seção 3 apresenta alguns conceitos de engenharia baseada componentes. A seção 4 trata da arquitetura proposta e descreve um estudo de caso relatando o resultado encontrado. Na Seção 5 são apresentados os trabalhos futuros seguido das conclusões finalizando este trabalho na seção 6. 2. KDD – O Processo de Descoberta de Conhecimento O processo de KDD é composto de três grandes fases, mostradas na Figura 1: (1) Pré-processamento que contempla a seleção, o processamento e a transformação; (2) DM para o descobrimento de padrões nos dados e, (3) Pós-processamento que contempla os padrões, a visualização e interpretação do conhecimento descoberto. Figura 1. KDD e suas 3 fases essenciais [Paiva, 1996]. Na fase de pré-processamento são utilizadas as funções responsáveis pela captação, organização e tratamento dos dados. Esta fase tem como objetivo a preparação dos dados para os algoritmos da fase seguinte, a mineração de dados [Paiva, 1996]. A DM é a principal fase do processo de KDD. Nesta fase se aplica técnicas e algoritmos em busca de conhecimentos úteis sobre os dados do problema. Dentre as XII Workshop de Computação Aplicada - WORCAP 2012 principais técnicas existentes citam-se: Redes Neurais, Algoritmos Genéticos, Modelos Estatísticos e probabilísticos [Goldschmidt, 2005]. A escolha da técnica de DM depende do tipo de tarefa a ser realizada no KDD, como por exemplo, a Descoberta de Associação, a Classificação, a Regressão, a Clusterização, a Sumarização, a Detecção de Desvios, a Descoberta de Sequências e a Previsão de Séries Temporais. Finalmente, a fase de pós-processamento é responsável pelo tratamento do conhecimento obtido na DM visando a utilidade do conhecimento descoberto [Fayyad et al., 1996]. As principais funções desta fase são a elaboração, organização e a simplificação do conhecimento obtido, a construção de gráficos, diagramas, relatórios demonstrativos e entre outros cruciais para uma possível tarefa de tomada de decisão. 3. A Engenharia de Software Baseado em Componentes A principal motivação para emprego de Desenvolvimento Baseado em Componentes (DBC) são as mudanças que ocorrem com a tecnologia da computação, como na computação distribuída e no desenvolvimento para WEB. Define-se em [Sametinger, 1997] que, de forma abrangente, “componentes de software reutilizáveis são artefatos auto-contidos, claramente identificáveis, que descrevem ou realizam uma função específica e têm interfaces claras, documentação apropriada e um grau de reutilização definido”. Para o emprego de DBC, atualmente existem várias Interfaces de Programação de Aplicativos, do inglês, Application Programming Interfaces (APIs) e Ambiente de Desenvolvimento Integrado, do inglês, Integrated Development Environment (IDEs) que fornecem interfaces padrão permitindo que terceiros possam criar os seus plug-ins de forma a interagir com a aplicação principal, como por exemplo, o Eclipse, o NetBeans, o jEdit, entre outros. Algumas vantagens do uso de componentes são a confiança nos componentes, pois estes foram utilizados e testados em outros sistemas; os erros serão detectados mais rapidamente, minimizando os riscos do projeto; consegue-se estipular o custo com os componentes, facilitando a gerência do projeto. O uso de componentes na arquitetura utilizada favorece o encapsulamento destes e a sua modificação. Entretanto, um grave problema pode ocorrer ao utilizar um componente que não tenha o código-fonte disponível, pois se o sistema requisitar mudanças, os custos de projetar e implementar o componente pode inviabilizar sua utilização [Oliveira & Paula]. A construção de aplicativos computacionais dentro da área de KDD requer que analista e programador de projetos busquem facilitar o acesso às ferramentas de KDD e Inteligência Artificial. Isto porque a utilização de técnicas de KDD sem um ambiente iterativo e simples torna o processo inviável a um usuário que não tenha grandes conhecimentos técnicos. Dificuldades estas agravadas ainda mais devido à necessidade de treinamentos dentre os vários sistemas distintos com seus diversos algoritmos necessários no processo de KDD. Por isso a solução aqui adotada é a componentização. Dentro deste contexto, a utilização de uma arquitetura baseada a componentes na construção de sistema apresenta grandes vantagens, visto que é necessário apenas lidar com aspectos de interface entre componentes responsáveis pelas várias técnicas de KDD no formato de plug-ins. Desta forma, usuários exigirão apenas um treinamento focado o que aumenta sua usabilidade, produtividade e confiabilidade no processo de KDD. XII Workshop de Computação Aplicada - WORCAP 2012 4. Proposição e Resultados Iniciais da Arquitetura Componentizada O sistema ERB-ArrayTools proposto foi implementado utilizando a abordagem DBC com a integração de quatro grandes componentes: (1) componente para Análises Estatísticas Matriciais (AEM) em MatLab, (2) ChronosGIS, (3) NetCDF-Java e (4) IDV. Para isso, foi necessária a adaptação destes componentes e suas interfaces visando sua integração. Este sistema é um framework agregador que interage com o usuário e integra os demais componentes. Na Figura 2 é apresentada a arquitetura proposta mapeada no processo KDD e seus principais componentes integrados. Figura 2. ERB-ArrayTools e seus componentes mapeados para KDD. O componente ChronosGIS é responsável pelo pré-processamento realizando a carga dos dados espaço-temporal de um arquivo NetCDF, do inglês Network Common Data Form, obtido via FTP [NOAA, 2012] da NOAA para um banco de dados PostGIS facilitando o acesso e manipulação destes dados. Este componente é uma evolução do software de mesmo nome desenvolvido pelos alunos Almeida e Borges, Santos e publicado em um artigo para o WORCAP do ano de 2011 [ALMEIDA et al., 2011 ]. A Figura 3 mostra as tabelas criadas no banco de dados PostGIS utilizando dados espaçotemporal de temperatura via componente ChronosGIS. Figura 3. Tabelas espaço-temporal de temperatura em ChronosGIS Com a exportação dos dados do arquivo NetCDF para o banco de dados PostGIS é possível a realização de estatísticas básicas levando-se em consideração a localização geográfica das informações analisadas, o que não era possível com as informações empacotadas no formato netCDF. Como exemplo de utilização, a consulta SQL abaixo faz aquisição das estatísticas de temperatura e gera sua saída de resultados na Tabela 1. SELECT AVG(air) temperatura_media, MIN(air) temperatura_min, MAX(air) temperatura_max, STDDEV(air) desvio_padrao, VARIANCE(air) variancia FROM noaa_point, noaa_data WHERE (noaa_point.id = noaa_data.point_id) AND point_degree BETWEEN '32.5W5.0N' AND '75.0W30.0S' AND time_date BETWEEN '2000/01/01' AND '2006/12/01' XII Workshop de Computação Aplicada - WORCAP 2012 Tabela 1. Estatística espaço-temporal pelo componente ChronosGIS. Temperaturas Média Mínima Máxima Desvio Padrão Variância 22.373 -8.721 31.868 5.185 26.889 Com a facilidade de manipulação de dados, o ChronoGIS permite salvá-los em um arquivo texto e exportá-los em um novo arquivo NetCDF pré-processado. Para isso, é necessário que o usuário realize uma filtragem espaço-temporal da informação que lhe interessará no KDD. O ERB-ArrayTools provê ao usuário a escolha de janelas de datas e coordenadas para filtragem da massa inicial dos dados a ser usada na fase seguinte de DM. Adicionalmente, o ERB-ArrayTools possibilita uma interface onde o usuário abri um arquivo texto com os dados pré-processados obtidos do CPTEC/INPE, por exemplo. Usando jargão de genética, a Tabela 2, mostra um conjunto de dados de expressão filtrados pelo usuário enquanto a Tabela 3 define descritores de experimento envolvendo dados climáticos oriundos de cidades da Amazônia. Tabela 2. Conjunto de dados de expressão filtrados espaço-temporalmente. Coordenadas Unique ID Janeiro00 Fevereiro00 Marco00 32.5W5.0N 1 0.533288061 0.488976361 0.044804371 35.0W5.0N 2 -0.273295616 0.314799153 -1 37.5W5.0N 3 0.559329225 0.525230441 -0.390690715 Tabela 3. Descritor de dados climáticos oriundos de cidades da Amazônia. Patient Array Humaita Manicore Obidos Índice integrado Janeiro00 2 1 1 1 Fevereiro00 1 1 1 1 Marco00 1 1 1 1 Para a fase de mineração destes dados, foi desenvolvido o componente AEM com o uso a biblioteca Matlabcontrol versão 4.0 [Matlabcontrol, 2012] para a realização de cálculos estatísticos matriciais. Esta implementação trata da evolução do código legado de um projeto descontinuado chamado Array Statistical Analysis System (ASAS) [Carvalho et al., 2011]. O componente AEM aplica a técnica de Microarray de DNA nos dados pré-processados e plota os resultados estatísticos obtidos. Na tabela 4 é apresentado uma amostra dos resultados encontrados da “Classe A x B” para o descritor “Humaita” mostrado na tabela anterior. Tabela 4. Estatísticas de classes usadas na mineração de dados climáticos. Classes_A_x_B P-Values T-Scores PFDR Q-Values PFDRBH 32.5W5.0N 0.486796 0.636839 0.151201 0.149935 0.712212 35.0W5.0N 0.569566 0.510339 0.161872 0.161872 0.768913 37.5W5.0N 0.344869 -0.88859 0.131561 0.130503 0.619906 O componente seguinte, NetCDF-Java, é fornecido pela [UNIDATA, 2012] e seus resultados são armazenados em um novo NetCDF para visualização pelo recurso de GridView e ImageView disponíveis neste componente [NetCDF-Java, 2012]. Este novo arquivo NetCDF também poderá ser visualizado pelo componente de visualização em 3D chamando Integrated Data Viewer (IDV) disponível no site [IDV, 2012]. A Figura 4 apresenta as plotagens dos resultados estatísticos gerados pelo componente AEM e as visualizações dos arquivos NetCDF com os resultados obtidos. XII Workshop de Computação Aplicada - WORCAP 2012 Figura 4. Componentização de ferramentas de visualização após mineração de dados. Para o funcionamento do componente IDV foi necessária a instalação do Java Development Kit versão 6 e da API Java 3D disponibilizados pela Oracle nos sites [JavaJDK, 2012] e [Java3D, 2012]. A Figura 5 apresenta um esquema de como estes componentes interagem. Figura 5. Esquema de integração dos componentes do sistema. Diversas outras APIs de arquivos NetCDF também podem ser encontradas no site NOAA disponíveis em [EPIC, 2012], como por exemplo podemos citar: (1) DapperM Uma interface de Matlab para Dapper - Serviço de dados de um OPeNDAP in-situ; (2) ncBrowse - Navegador e visualizador de NetCDF e OpeNDAP; (3) MultiView Visualizador de meta arquivos Plot Plus; (4) OceanShare - Ferramenta colaborativa para fornecer acesso local e de rede de dados oceanográficos; (5) Java OceanAtlas (JOA) Aplicativo para visualização e manipulação de dados de perfis oceanográficos e (6) NdEdit - Ferramenta interativa para selecionar graficamente e sub-configurar grandes coleções de dados in-situ. 5. Trabalhos Futuros Por este sistema ser baseado em componentes, podem-se agregar diversas outras funcionalidades, algumas são citadas a seguir: (1) Melhorias na interface principal de acordo com as necessidades do usuário, (2) Maior exploração do componente ChronosGIS para armazenamento e acesso à base de dados, (3) Transcrição código Matlab, proprietário, para Octave, sistema totalmente livre e independente de plataforma, (4) Adição de novas formas de visualização e melhorar as já existentes e (5) Realização de cálculos estatísticos com ou sem a utilização de scripts como é feito no GrADS. XII Workshop de Computação Aplicada - WORCAP 2012 6. Conclusões A adoção de Desenvolvimento Baseado em Componentes neste trabalho foi oportuna devido ao ineditismo do framework ERB-ArrayTools que agrega diversas ferramentas isoladas e comprometidas às fases do processo de KDD. Isto envolveu extensa pesquisa e experimentação de componentes, adaptação de existentes e mesmo escrita de novos componentes respeitando todos os detalhes de interface entre os mesmos e o agregador. O framework atual possui quatros componentes: (1) AEM, para análises estatísticas matriciais em MatLab, (2) ChronosGIS, (3) NetCDF-Java e (4) IDV. Entretanto ele provê extensibilidade, visto que se podem agregar novas técnicas de KDD na forma de novos componentes respeitando apenas os detalhes de interface. Adicionalmente, permite o aumento na testabilidade, reusabilidade e, consequentemente, rapidez na escrita de cada componente. Neste trabalho, primou-se pela área de visualização de dados científicos como coadjuvante ao processo de KDD, pois com uma grande massa de dados, é muito fácil perder o senso comum dos mesmos. Nisto a visualização adiciona uma dimensão extra ao processo de KDD, auxilia na interpretação dos dados extraídos e permite experimentação de cenários acelerando a tarefa de análise de mudanças climáticas por exemplo. Referências Almeida, W. G. D.; Borges, M. E. G.; Santos, P. L. B. D.; Anochi, J. A.; Santos, W. A. D. Automação do Pré-processamento de Séries Temporais de Dados da NOAA para Mineração de Dados. In: Workshop dos Cursos de Computação Aplicada do INPE, 11. (WORCAP), 2011. Anais... São José dos Campos: INPE, 2011. Carvalho, O. L. Júnior, C. R. Ruivo, H. M. Array Statistical Analysis System (A.S.A.S). Código-fonte legado de projeto conjunto da Universidade Federal de Itajubá (UNIFEI) e Instituto Nacional de Pesquisas Espaciais (INPE), 2011. EPIC. Pacific Marine Environmental Laboratory. Disponível em: <http://www.epic.noaa.gov/epic/software/ep_java.htm> Acessado em 30 de agosto de 2012. FAYYAD, U.M. et al. Advances in Knowledge Discovery and Data Mining. California: AAAI Press, 1996. FAYYAD, U.; PIATETSKY-SHAPIRO, G.; SMYTH, P. From data mining to knowledge discovery: an overview. In: FAYYAD, U.; PIATETSKY-SHAPIRO, G.; SMYTH, P; UTHHURUSANY, R., Eds., Advances in knowledge discovery. Cambridge: MIT Press, 1996, p. 1-36. GOLDSCHMIDT , R.; PASSOS, E.. Data Mining: um Guia Prático. 1ª ed: Campus, 2005 IDV. Integrated Data Viewer. Disponível em: <http://www.unidata.ucar.edu/software/idv/#home >. Acessado em 30 de ag. de 2012. JavaJDK. Java SE 6 Update 35. Disponível em: <http://www.oracle.com/technetwork/java/javase/downloads/index.html>. Acessado em 30 de agosto de 2012. Java3D. Java 3D 1.1.3 API Install Notes. Disponível em: <http://www.oracle.com/technetwork/java/javase/java3d-install-139068.html>. Acessado em 30 de agosto de 2012. Matlabcontrol. A Java API to interact with MATLAB. Disponível em XII Workshop de Computação Aplicada - WORCAP 2012 <http://code.google.com/p/matlabcontrol/> Acessado em 30 de agosto de 2012. NetCDF-Java. NetCDF-Java library version 4.2.32 . Disponível em: <http://www.unidata.ucar.edu/software/netcdf-java/>. Acessado em 30 de ag. de 2012. NOAA. About NOAA. National Oceanic and Atmospheric Administration. United States Department of Commerce. Disponivel em: <http://www.noaa.gov/aboutnoaa.html >. Acesso em: 30 de agosto de 2012. Oliveira, F. C. Paula, L. L. Engenharia de Software baseada em componentes: uma abordagem prática em ambientes Web. Monografia. Curso de Ciência da Computação. Departamento de Ciência da Computação. Universidade de Brasília. Brasília, 2009. Paiva, C. Técnicas de Construção de Aplicações Dirigida a Componentes “Um Estudo de Casos em um Sistema de KDD”. Monografia. Curso de Ciência da Computação. Faculdade de Jaguariúna. Jaguariúna, 2006. UNIDATA. Unidata Overview. Disponível em: <http://www.unidata.ucar.edu>. Acessado em 30 de agosto de 2012.