SISTEMAS DE INFORMAÇÃO HERBERT SOUZA PEREIRA SÉRGIO RODRIGUES COSTA SARAT - SISTEMA DE ANÁLISE DO RISCO DE ACIDENTES NO TRÂNSITO ATRAVÉS DA MINERAÇÃO DE DADOS SALVADOR 2008 HERBERT SOUZA PEREIRA SÉRGIO RODRIGUES COSTA SARAT - SISTEMA DE ANÁLISE DO RISCO DE ACIDENTES NO TRÂNSITO ATRAVÉS DA MINERAÇÃO DE DADOS Monografia apresentada à disciplina Trabalho de Conclusão de Curso II, do curso de Sistemas de Informação do Centro Universitário Jorge Amado, como requisito parcial para a obtenção do título de Bacharel em Sistemas de Informação. Orientador: Prof. Msc. Grinaldo Lopes de Oliveira FOLHA DE APROVAÇÃO Banca Examinadora ________________________________________________ Prof. MSc. Grinaldo Lopes de Oliveira ________________________________________________ Prof. MSc. Márcio René Brandão Soussa ________________________________________________ Prof. Esp. Márcio Freire da Cruz SALVADOR 2008 AGRADECIMENTOS De Sérgio Costa: Neste momento, gostaria de dedicar este trabalho a memória de meu Pai, Denival Ferreira Costa, que com todas as dificuldades em sua vida não poupou seus humildes esforços para fazer de mim uma pessoa melhor. À sua maneira, conseguiu passar para a minha personalidade, o conceito de suas maiores virtudes, além da vontade de vencer e da responsabilidade com os compromissos assumidos. Pai, te levo no coração, todos os dias de minha vida. Obrigado. A minha Mãe, Eunice de Jesus R. Costa, que me presenteou com a vida, e sempre foi meu porto seguro, um exemplo claro de superação sobre a adversidade de sua vida. A meu irmão André Costa a quem admiro profundamente pelo apoio quanto às minhas decisões, e por ter me inspirado com sua capacidade de adaptar, desenvolver e se tornar melhor. Dedico principalmente a minha esposa, Selma Costa e meu filho Leonardo Costa, aos quais durante esta jornada me apoiaram nos momentos difíceis, e trouxeram alegria quando tudo parecia impossível. Selma, sem sua presença, segurança e seu carinho, com certeza não chegaria até este momento tão importante. Leonardo, você é minha inspiração, com seu brilho e sua vontade de aprender, mesmo agora com apenas 6 anos, você é minha luz. Espero que este trabalho seja para você, um motivo de orgulho em relação a seu Pai. Agradeço aos colegas da BCP ENGENHARIA LTDA, pelo apoio moral, e pela convivência do ambiente de trabalho, crucial para compreensão de muito do que aprendi na Faculdade. Luciene, Marli, Claudinéia, Marcos Aurélio, Reginaldo, Silvio Rocha, e todos os outros. Agradeço aos diretores, Arcodaci, Góis e Molinero, por me passar a experiência e o olhar crítico sobre a importância da organização e do planejamento, para o desenvolvimento de projetos de qualquer natureza. Sua contribuição foi muito importante para a composição da minha formação acadêmica. Não poderia deixar de agradecer a Herbert, meu parceiro neste trabalho e em todos os outros que fizemos durante estes quatro anos. Meu caro amigo, me orgulho em dizer que enfrentamos todos os obstáculos com dedicação, compromisso e acima de tudo com responsabilidade, desde o primeiro grupo de estudo que montamos no primeiro semestre de 2005 até o final do curso. Nossa parceria foi crucial nestes quatro anos. Obrigado. Aos professores, Márcio Freire, Márcio Soussa, Grinaldo Oliveira, Luiz Carvalho, Permínio, Andréa Cirino, Cristiane, Christina Nascimento, Jaime, Verônica Santos, Clever Jatobá, Ricardo Cropalato e a todos os outros. Gildélia (Nossa Gil), muito obrigado pela boa vontade, sempre presente e prestativa. Vocês agora fazem parte de um capítulo importante da minha vida, portanto agradeço. Aos colegas, Edvaldo, Elmer, Diego, Felipe, Gabriel e Rafael companheiros de sala desde o primeiro semestre, e ainda Milena, Carine, Daiane, Manuele e todos os outros que em algum momento compartilharam comigo o convívio da sala de aula. Agradeço ao senhor Ivo Nascimento, Assessor Técnico da Superintendência de Engenharia de Tráfego de Salvador por fornecer os dados que foram utilizados no processo de análise para realização do estudo. A Deus agradeço por tudo. Pela vida, pela saúde, e pelo futuro. De Herbert Souza: Agradeço a Deus, pois sem ele nada sou! Costumo dizer que posso perder tudo na vida, menos a fé em Deus. A minha esposa Sueli, que sempre me incentivou a voltar estudar, após 10 anos afastado da sala de aula. O seu apoio foi de suma importância para concretização deste objetivo. Aos meus pais do coração o Prof. Dr. José Luiz Rech e Prof. Dra. Carmem Lúcia de Souza Rech que foram peças fundamentais para minha formação como pessoa e consequentemente em minha graduação. Ao meu amigo, colega, parceiro e irmão Sérgio Costa, que desde o início do curso montamos uma excelente parceria, tanto para realização dos excelentes trabalhos semestrais, bem como para o desenvolvimento desta monografia. A Jonas Júnior, amigo de trabalho e parceiro do violão, que sempre segurou a “barra” no trabalho em dias de prova. Aos professores: Andréa Cirino, Verônica Barreto, Luiz Carvalho, Márcio Soussa, Grinaldo Lopes e Márcio Freire, obrigado pelas orientações. Não esquecendo do apoio ao curso de Sistemas de Informação, nossa querida Gildélia (Gil), sua dedicação e atendimento sempre fez a diferença e teve contribuição considerável para nossa formação, no que diz respeito aos aspectos burocráticos. RESUMO O objetivo deste trabalho é demonstrar uma abordagem diferenciada dos métodos tradicionais para identificação do risco de acidentes em vias de tráfego. Com o aumento do número de veículos circulando a cada dia, torna-se cada vez mais complicado o tráfego nas cidades. Uma das principais resultantes desta situação é o aumento proporcional da quantidade de acidentes todos os dias. Este trabalho visa demonstrar uma ferramenta baseada em sistemas de informação que utiliza técnicas de Mineração de Dados para cruzar informações referentes ao trânsito, e assim identificar cenários que indiquem a probabilidade de aumento ou redução, da ocorrência de acidentes. A ferramenta é capaz de fornecer ao usuário a opção de escolher que informações farão parte da análise, e ainda, sob que condições as mesmas serão utilizadas. O histórico de acidentes, o histórico de chuvas, índices predefinidos, ou qualquer dado considerado relevante pode ser utilizado na análise. Esta flexibilidade permite ao especialista em trânsito, criar abordagens diferenciadas para cada trecho analisado, montar cenários, e concluir estudos que podem auxiliar nas tomadas de decisão sobre as medidas de controle do tráfego. Palavras-Chave: Data Mining, Mineração de Dados, Técnicas de Classificação, Acidentes de Trânsito. LISTA DE FIGURAS Figura 1 - Relação entre KDD e Data Mining ...................................................................... 24 Figura 2 - Etapas do processo de KDD definidas por FAYYAD .......................................... 25 Figura 3 - Relação do Data Mining com outras áreas ........................................................... 28 Figura 4 - Exemplo de Árvore de Classificação.................................................................... 32 Figura 5 - Matriz de concordância para o índice Kappa........................................................ 36 Figura 6 - WEKA - Ferramenta de Mineração de Dados ...................................................... 37 Figura 7 – Esquema geral de funcionamento do SARAT...................................................... 44 Figura 8 – Tela principal do SARAT ................................................................................... 47 Figura 9 - Tela do Assistente de Análise .............................................................................. 48 Figura 10 - Tela de Créditos do SARAT .............................................................................. 48 Figura 11 - Seleção de dados para a análise.......................................................................... 49 Figura 12 - Pre-visualização de dados selecionados ............................................................. 49 Figura 13 - Tela conclusão do assistente .............................................................................. 50 Figura 14 - Atributos envolvidos na análise ......................................................................... 50 Figura 15 - Diagrama de Caso de Uso – SARAT ................................................................. 51 Figura 16 - Diagrama de Seqüência do processo de análise .................................................. 52 Figura 17 - Arquitetura de 2 camadas da aplicação............................................................... 54 Figura 18 - Tabelas do sistema............................................................................................. 54 Figura 19 - Visão dos atributos selecionados para análise .................................................... 55 Figura 20 - Diagrama de classe da aplicação ........................................................................ 56 Figura 21 - Simulação: Tela inicial da aplicação SARAT..................................................... 61 Figura 22 - Simulação: Conexão ao banco de dados............................................................. 62 Figura 23 - Simulação: Seleção da tabela e dos campos para análise .................................... 62 Figura 24 - Simulação: Opções finais para o processo de análise.......................................... 63 Figura 25 - Simulação: Visualização do contexto dos atributos para análise ......................... 63 Figura 26 - Simulação: Resultado da aplicação do algoritmo em formato texto .................... 64 Figura 27 - Simulação: Resultado da análise em forma de gráfico tipo árvore ...................... 65 LISTA DE QUADROS Quadro 1 - Métodos de Mineração de Dados........................................................................ 31 Quadro 2 - Avaliação do índice Kappa................................................................................. 36 Quadro 3 - Descrição dos dados fornecidos pela SET .......................................................... 58 Quadro 4 - Amostra de dados analisados pelo SARAT......................................................... 60 SUMÁRIO INTRODUÇÃO .................................................................................................................................................13 PROBLEMA DE PESQUISA................................................................................................................................14 HIPÓTESE........................................................................................................................................................14 FUNDAMENTAÇÃO E JUSTIFICATIVA...............................................................................................................14 OBJETIVO GERAL.............................................................................................................................................15 OBJETIVOS ESPECÍFICOS .................................................................................................................................15 MOTIVAÇÃO ...................................................................................................................................................15 ORGANIZAÇÃO ...............................................................................................................................................16 CAPÍTULO 1 - O TRÂNSITO E SEUS CONCEITOS..........................................................................................17 1.1. DEFINIÇÕES LEGAIS SOBRE O TRÂNSITO ...................................................................................................17 1.2. TÉCNICAS DE AVALIAÇÃO DE RISCO NAS VIAS URBANAS ................................................................................19 1.3. MÉTODOS NUMÉRICOS .......................................................................................................................20 1.4. NÍVEIS DE CRITICIDADE PARA AS AVENIDAS................................................................................................21 1.5. CONSIDERAÇÕES FINAIS.......................................................................................................................22 CAPÍTULO 2 - DESCOBERTA DE CONHECIMENTO EM BANCO DE DADOS...................................................23 2.1. KDD (KNOWLEDGE DISCOVERY DATABASES) ............................................................................................23 2.2. O PROCESSO DE KDD .........................................................................................................................24 2.3. ETAPAS DO KDD ...............................................................................................................................25 2.3.1. SELEÇÃO ..........................................................................................................................................25 2.3.2. PRÉ-PROCESSAMENTO ........................................................................................................................26 2.3.3. TRANSFORMAÇÃO ..............................................................................................................................26 2.3.4. DATA MINING ..................................................................................................................................26 2.3.5. INTERPRETAÇÃO ................................................................................................................................27 2.4. DATA MINING (MINERAÇÃO DE DADOS) .................................................................................................27 2.5. MÉTODOS DE MINERAÇÃO DE DADOS.....................................................................................................29 2.5.1. SEGMENTAÇÃO .................................................................................................................................29 2.5.2. SUMARIZAÇÃO ..................................................................................................................................30 2.5.3. REGRAS DE ASSOCIAÇÃO......................................................................................................................30 2.5.4. CLASSIFICAÇÃO..................................................................................................................................31 2.6. ALGORITMOS DE CLASSIFICAÇÃO ............................................................................................................32 2.6.1. ENTROPIA DO CONJUNTO DE DADOS E GANHO DE INFORMAÇÃO DO ATRIBUTO ...................................................34 2.6.2. CONFIABILIDADE DA ANÁLISE – ÍNDICE KAPPA ...........................................................................................35 2.6.3. FERRAMENTAS DE MINERAÇÃO DE DADOS ...............................................................................................37 2.7. CONSIDERAÇÕES FINAIS.......................................................................................................................39 CAPÍTULO 3 - TRABALHOS CORRELATOS ...................................................................................................40 3.1. SIMULAÇÃO DO CONTROLE DE TRÁFEGO DE AUTOMÓVEIS EM UMA MALHA RODOVIÁRIA URBANA (FREIRE, 2004). ...40 3.2. PROJETO DE GEOREFERENCIAMENTO DE ACIDENTES DE TRÂNSITO COM VÍTIMAS EM BELO HORIZONTE (MEINBERG, 2003). 41 3.3. CONSIDERAÇÕES FINAIS .......................................................................................................................42 CAPÍTULO 4 - SARAT – SISTEMA DE ANÁLISE DE RISCO DE ACIDENTES DE TRÂNSITO................................43 4.1. OPERAÇÃO DO SARAT .......................................................................................................................43 4.2. A FUNDAMENTAÇÃO DO SARAT ...........................................................................................................44 4.3. REQUISITOS ......................................................................................................................................45 4.3.1. REQUISITOS FUNCIONAIS .....................................................................................................................45 4.3.2. REQUISITOS NÃO FUNCIONAIS ..............................................................................................................46 4.4. FUNCIONAMENTO DA FERRAMENTA .......................................................................................................46 4.5. CASOS DE USO ..................................................................................................................................51 4.6. DIAGRAMA DE SEQÜÊNCIA ...................................................................................................................51 4.7. ARQUITETURA TÉCNICA .......................................................................................................................52 4.8. MODELO DE DADOS ...........................................................................................................................54 4.9. DIAGRAMA DE CLASSES .......................................................................................................................56 4.10. CONSIDERAÇÕES FINAIS .......................................................................................................................57 CAPÍTULO 5 - APLICAÇÃO PRÁTICA DA FERRAMENTA SARAT....................................................................58 5.1. DADOS PARA ANÁLISE .........................................................................................................................58 5.2. AMBIENTE OPERACIONAL E TESTE DA APLICAÇÃO ........................................................................................61 5.3. RESULTADOS OBTIDOS COM O TESTE DA APLICAÇÃO ....................................................................................65 5.4. CONSIDERAÇÕES FINAIS .......................................................................................................................66 CONCLUSÃO ...................................................................................................................................................67 DIFICULDADES ENCONTRADAS .......................................................................................................................68 CONTRIBUIÇÕES .............................................................................................................................................68 PERSPECTIVAS ................................................................................................................................................69 REFERÊNCIAS BIBLIOGRÁFICAS .......................................................................................................................70 ANEXO 1 – CÓDIGO PARCIAL DAS CLASSES PRINCIPAIS ..................................................................................73 CLASSE DO ASSISTENTE...................................................................................................................................73 CLASSE DO OBJETO J48...................................................................................................................................77 13 INTRODUÇÃO A quantidade de veículos nas cidades brasileiras tem aumentado significativamente nos últimos anos, a exemplo de Salvador que entre os anos de 2000 e 2006 houve um aumento de cerca de 35% de acordo com dados da SET-Superintendência de Engenharia de Tráfego (2006). Como conseqüência, o tráfego vem se tornando um problema cada vez mais complexo. A população reconhece este aumento na frota de veículos na forma mais direta possível, pois é particularmente afetada por todas as resultantes da problemática do tráfego, como o consumo de combustível, a poluição do ar, sonora e visual e, principalmente, o aumento no número dos acidentes. O sistema de tráfego de uma cidade é composto por um número muito grande de veículos, pessoas, ações e reações que interferem direta ou indiretamente umas nas outras. Esta quantidade de variáveis pode ser tratada como dados individuais e que em algum momento após o processamento adequado podem se tornar informações úteis ao bem estar comum. Os sistemas de informação nesta área, apesar de serem utilizados há muito tempo, funcionavam com precariedade, pela lentidão no processo de coleta e análise pois era feito normalmente de forma manual. Este aspecto limitava a eficiência no processamento das informações, que é o fator mais importante dos sistemas de informação. Atualmente, os avanços tecnológicos possibilitam tratar grandes volumes de dados de forma precisa e eficiente, tornando os sistemas de informação mais confiáveis e completos (ORLANDINI, 2006). Sob este aspecto e com vistas à problemática do trânsito, não se pode deixar de pensar que a relação entre o tráfego de veículos e a quantidade de acidentes precisa de uma análise mais profunda em termos de pesquisa, sobre a possibilidade de determinar soluções para minimizar os problemas do tráfego no cotidiano das pessoas. Neste contexto, este trabalho enfoca o desenvolvimento de uma ferramenta de software com o propósito de permitir ao especialista em trânsito, analisar o tráfego de veículos, montar cenários sobre os fatores e mecanismos que levam ao acidente e assim auxiliar de forma siguinificativa na redução e prevenção dos mesmos. Como conseqüência, propagam-se diversas resultantes, como a redução de custos em hospitais, a diminuição do número de mortes posteriores aos acidentes, o planejamento de ações preventivas e ainda, o melhor posicionamento das equipes de controle do tráfego nas avenidas. 14 Problema de pesquisa A necessidade de informações sobre características específicas e mais detalhadas sobre o tráfego de veículos na cidade de Salvador demonstrou que o trabalho de divulgação destas informações é bastante limitado, principalmente sob o aspecto de detalhes sobre as condições sob as quais os acidentes aconteceram. Outra característica observada é que as estatísticas possuem um intervalo de tempo de atualização superior a seis meses, o que dificulta análises mais apuradas por parte das pessoas que fazem uso destas informações para algum tipo de pesquisa. Não foi possível identificar um mecanismo de análise do tráfego, capaz de aferir os padrões ou cenários em que os acidentes acontecem, com base nas condições em que as vias se apresentam, nas condições do tempo e na quantidade de veículos nas vias, em relação a momentos específicos do dia através do cruzamento destas informações. Neste contexto, surge o problema de pesquisa: É possível estabelecer cenários de risco, através do uso de um sistema de informação, baseando-se na identificação das condições e de tráfego em pontos da cidade, de forma interativa, para possibilitar a tomada de medidas preventivas e de controle? Hipótese Através da utilização da mineração de dados, mais especificamente da técnica de Árvore de Classificação, é possível modelar um sistema, baseado em dados históricos, mesmo que simulados, capaz de identificar, classificar e estabelecer cenários de risco de pontos específicos da cidade. Fundamentação e Justificativa Os avanços tecnológicos como as redes sem fio, a computação móvel e a miniaturização dos componentes eletrônicos, já permitem desenvolver ferramentas cada vez mais precisas para coleta, transmissão e processamento rápido de informações, capazes de alimentar bancos de dados de grande porte, utilizados como fonte de dados para análise do tráfego de veículos. Assim, a viabilidade de um sistema desta natureza, capaz de identificar que pontos da cidade e sob que condições podem favorecer a ocorrência de acidentes, permitiria às autoridades competentes, acionar medidas corretivas para minimizar os riscos identificados. O sistema se apresenta como uma alternativa aos métodos existentes de identificação de riscos já utilizados pelas autoridades. 15 Objetivo Geral Desenvolver uma aplicação capaz de, a partir de dados coletados sobre a quantidade de veículos, condições do tempo e localização específica na cidade, criar modelos de análise que indiquem o cenário de risco em que determinada via se encontra, para permitir que especialistas em trânsito estabeleçam estratégias para minimizar os riscos de acidente. Fundamentado no processo conhecido como Data Ming, uma das etapas do KDD (Knowledge Discovery in Database), e aplicado às informações do tráfego de veículos, pode viabilizar os meios para o reconhecimento de padrões de comportamento e proporcionar seu melhor entendimento. Objetivos Específicos - Coletar os dados ou sintetizá-los a partir de informações sumarizadas; - Utilizar a mineração de dados, mais especificamente a técnica de Árvores de Classificação, para criar modelos, capazes de levantar resultados classificados quanto ao risco de acidente em pontos específicos, a partir de dados fornecidos; Motivação Apesar de existir um grande número de estatísticas disponibilizadas pelos órgãos de trânsito sobre o tráfego em Salvador, como o número de acidentes e a quantidade de veículos que trafegam nas avenidas, há um baixo aproveitamento destas informações, pois os dados são coletados em regime de amostragem e divulgados com freqüência anual, ou seja, possuem natureza quase que estática. Não foi possível identificar uma ferramenta de análise contextual da problemática do tráfego de forma dinâmica e que faça uma relação direta com o número de acidentes. Assim, perceber que a aplicação dos Sistemas de Informação, amplamente discutida durante o curso, pode viabilizar de forma real e concreta, um melhor entendimento da situação do tráfego de veículos, e muito provavelmente, indicar soluções para a problemática levantada é extremamente relevante. Além disto, realizar um projeto sobre informações, que estão presentes em nosso cotidiano de uma forma muito subjetiva, e que para se tornarem realmente úteis precisam de tratamento adequado, caracteriza este trabalho como uma contribuição, ainda que modesta, à sociedade pública e acadêmica mantendo focalizada a melhoria da qualidade de vida das pessoas. 16 Organização Este documento está estruturado de forma a facilitar a compreensão sobre o tema abordado, partindo de conceitos básicos de cada um dos sub-temas para em seguida através da união dos conceitos possibilitar o entendimento geral. Em um primeiro momento, o documento trata de uma forma geral o trânsito e a mineração de dados, em seguida trata de questões específicas da aplicação. Para detalhar melhor estas fases, este documento encontra-se organizado conforme se segue: ü Capítulo 1: Contém uma introdução sobre o Código Nacional de Trânsito em relação aos conceitos de classificação das avenidas, ao controle das velocidades permitidas para cada uma delas. Discute ainda as técnicas utilizadas para identificação de pontos críticos quanto ao risco de acidentes. ü Capítulo 2: Aborda a sistemática sobre a coleta de dados e a transformação dos mesmos em informação, através da utilização dos conceitos de Data Mining. ü Capítulo 3: Faz uma breve descrição sobre trabalhos com alguma relação com o tema abordado nesta monografia. ü Capitulo 4: Apresenta o desenvolvimento da ferramenta SARAT, a metodologia de utilização e a documentação do sistema. ü Capítulo 5: Demonstra a utilização do SARAT com um estudo de caso e apresenta os resultados obtidos. Ao final deste documento, estão apresentadas as conclusões, as dificuldades, as experiências e os resultados alcançados com a realização deste projeto. 17 CAPÍTULO 1 - O TRÂNSITO E SEUS CONCEITOS Este capítulo discute os aspectos relacionados com o trânsito de veículos e suas características sob as definições do Conselho Nacional de Trânsito – CONTRAN, o Departamento Nacional de Trânsito – DENATRAN, e as leis regulamentadas pelo Código Nacional de Trânsito, para permitir uma melhor compreensão sobre o tema, do ponto de vista técnico. Aborda ainda, as metodologias utilizadas para determinar as características do fluxo de veículos e da qualificação do risco de acidentes nas vias urbanas. 1.1. Definições Legais Sobre o Trânsito O Código Nacional de Trânsito Brasileiro sancionado pelo Presidente da República (BRASIL, 1997), consideram o trânsito como a utilização de vias por pessoas, veículos ou animais, agrupados ou não, para fins de circulação. Estabelece o trânsito como sendo um direito de todos, e como um dever dos órgãos e entidades componentes do Sistema Nacional de Trânsito adotar medidas a assegurar este direito. O código nacional de trânsito, entre outras coisas, determina as velocidades dos veículos nas vias de acordo a localização, suas características e o objetivo específico para o qual foram projetadas. De acordo com o artigo 60 do código de trânsito brasileiro, as vias abertas para circulação de veículos classificam-se em urbanas e rurais, dividindo as mesmas em vias urbanas ou rurais sendo: I – Vias Urbanas: a) via de trânsito rápido b) via artéria; c) via coletora d) via local; II – Vias Rurais: a) rodovias; b) estradas; O código nacional de trânsito estabelece ainda as velocidades máximas permitidas para os tipos de vias e deverão ser indicadas através de sinalização. O artigo 61 define: - Para as vias onde não houver a indicação de velocidade máxima, deverão ser consideradas: I – Vias Urbanas: a) oitenta quilômetros por hora, nas vias de trânsito rápido; b) sessenta quilômetros por hora, nas vias arteriais; 18 c) quarenta quilômetros por hora, nas vias coletoras; d) trinta quilômetros por hora, nas vias locais; II – Vias Rurais: a) nas rodovias: 1) cento e dez quilômetros por hora, para automóveis e camionetas; 2) noventa quilômetros por hora, para ônibus e microônibus; 3) oitenta quilômetros por hora, para demais veículos; b) nas estradas, sessenta quilômetros por hora. Para as vias onde não houver a indicação de velocidade máxima deverão ser consideradas: c) quarenta quilômetros por hora, nas vias coletoras; d) trinta quilômetros por hora, nas vias locais; - A velocidade mínima não poderá ser menor que a metade da velocidade máxima estabelecida para cada via. - Os órgãos ou entidades de trânsito rodoviário com circunscrição sobre determinada via, poderão regulamentar por meio de sinalização, velocidades superiores ou inferiores a aquelas pré-estabelecidas de acordo com a necessidade definida pelo mesmo. Para o desenvolvimento deste trabalho, é preciso entender alguns dos termos ainda citados pelo Código Nacional de Trânsito como: • Via – superfície por onde transitam veículos, pessoas e animais. Compreendem a pista, calçada, acostamento, ilhas ou canteiro central. • Via de Trânsito Rápido – caracterizada por acessos especiais com transito livre, sem interseções em nível, sem acessibilidade direta aos lotes situados ao longo da via, e sem travessia de pedestres em nível. • Via Arterial – caracterizada por interseções em nível, normalmente controladas por semáforo com acessibilidade aos lotes ao longo da via e às vias secundárias e locais possibilitando o trânsito entre os locais da cidade. • Via Coletora – destinada a coletar e distribuir o trânsito que tenha necessidade de entrar e sair das vias de trânsito rápido ou arteriais. • Via Local – caracterizada por interseções em nível sem a presença de semáforos destinada apenas a áreas restritas. • Via Rural – estradas e rodovias. 19 • Via Urbana – ruas, avenidas, vielas ou caminhos e similares, abertos a circulação pública e caracterizam-se pela presença de imóveis edificados ao longo de sua extensão. 1.2. Técnicas de avaliação de risco nas vias urbanas A avaliação dos riscos de acidente nas avenidas das cidades é um desafio para os órgãos responsáveis, devido principalmente a complexidade em reunir todas as variáveis envolvidas nos acidentes e analisá-las. Apesar disto, existem algumas técnicas já desenvolvidas para tentar entender a arquitetura dos acidentes. O CEFTRU – Centro de Formação de Recursos Humanos e Transportes desenvolveu um estudo bastante abrangente sobre o ponto de vista dos acidentes de trânsito, como um manual para o tratamento de locais críticos. As técnicas de identificação utilizadas pelo CEFTRU visam determinar o grau de criticidade quanto ao risco de acidente em pontos de uma cidade, os chamados “Pontos Negros”. De acordo com o CEFTRU (2002), as análises podem ser feitas com base em métodos que se classificam em: a) numérico; b) estatístico; e c) de técnicas de conflitos. O método numérico, considerado o mais simples, utiliza o princípio de cálculo da taxa de risco a partir do registro da quantidade média de acidentes em determinado ponto, que é comparado com valores pré-determinados por uma equipe técnica. O método estatístico utiliza-se de modelos matemáticos de probabilidade, para identificar o grau de risco quanto a valores estimados. O método de conflitos considera que existe uma relação direta entre o número de conflitos no trânsito com o número de acidentes, ou seja, reduzir o número de conflitos leva a uma diminuição na taxa de acidentes. O CEFTRU considera os métodos numéricos como mais relevantes e os utiliza pelo fato de serem práticos e mais adequados à realidade brasileira, mas ressalta que os métodos estatísticos são os mais precisos, e por este motivo requerem um grau mais alto de sofisticação em termos de pesquisa, assim são mais adequados a países com maior disponibilidade de recursos humanos e financeiros. 20 1.3. Métodos Numéricos Os métodos numéricos podem ser divididos em quatro categorias: a) Número de acidentes; b) Severidade de acidentes; c) Taxa de acidentes; e d) Taxa de severidade. Cada uma dos métodos supracitados baseia-se na obtenção de um índice a ser aplicado a um determinado trecho ou cruzamento, para ser utilizado no cálculo do grau de risco de acidente que o mesmo possui. O método do número de acidentes considera o número de ocorrências em um trecho entre interseções ou interseção, em determinado período de tempo para considerar um local crítico. São considerados locais críticos aqueles onde o número de ocorrências é maior que a média dos locais analisados. Possui como vantagem o baixo custo de execução. O método da severidade de acidentes utiliza uma ponderação definida pelo DENATRAN chamada Unidade Padrão de Severidade – UPS (DENATRAN, 1987). A UPS define pesos para cada tipo de ocorrência quanto aos custos resultantes e atribuídos, e assim determina o grau de sua severidade. Os valores para UPS são: a) (ADM) Acidente somente com danos materiais, peso 1; b) (ACF) Acidente com feridos peso 4; c) (ACF) Acidente com feridos, envolvendo pedestres, peso 6; e d) (AVF) Acidente com vítima fatal, peso 14. A técnica da taxa de acidentes relaciona a quantidade de acidentes com o volume de tráfego. Esta técnica evidencia, que locais onde há fluxo elevado de veículos, o risco de acidentes é maior. A técnica da taxa de severidade de acidentes é uma combinação da técnica da taxa de acidentes com a técnica da severidade de acidentes, ou seja, relaciona o volume de tráfego e a quantidade de acidentes em UPS. Segundo BRANDÃO (2006), existe uma complexidade muito grande em se fazer análise dos riscos no tráfego relacionando a velocidade da via e a freqüência dos acidentes na mesma, pelo fato de ser difícil tabular os dados de forma satisfatória. Além disso, a coleta de informações sobre as velocidades praticadas pelos motoristas, principalmente pelos 21 envolvidos nos acidentes é precária. Com a evolução dos métodos, os estudos mais recentes passaram a mostrar de forma muito mais consistente a relação entre as velocidades e o número de acidentes. 1.4. Níveis de criticidade para as avenidas Utilizando os métodos descritos pelo DENATRAN, é possível determinar o nível de criticidade para determinada avenida, mas é importante ressaltar que as técnicas apresentadas não são normativas, e de forma geral, fornecem referência para o tratamento dos chamados locais críticos (CEFTRU, 2002). A técnica da taxa de severidade de acidentes é largamente utilizada pelos órgãos de controle de tráfego no Brasil, principalmente por ser a que faz uma ponderação, relacionando a quantidade de acidentes com a gravidade e os efeitos gerados pelos mesmos. Sua aplicação serve para fundamentar a instalação de dispositivos como sinaleiras, faixas de pedestres, e detectores de velocidade irregular, ou seja, determinar a taxa de criticidade de uma via para que sejam tratadas com o objetivo de reduzir o número de acidentes. Com o mesmo objetivo, a técnica da taxa de acidentes, não leva em consideração o grau de severidade do acidente, apenas o registro da sua ocorrência, o que torna sua aplicação mais direta e simplificada em termos de volume de dados a serem coletados e tratados, e conseqüentemente terá resultados mais eficientes em termos de desempenho. Para calcular a taxa de acidentes em um trecho viário utiliza-se a seguinte fórmula (CEFTRU, 2006): T= Ax10 6 PxVxE Onde: T = taxa acidentes por milhões de veículos x km; A = número de acidentes no trecho; P = período do estudo, em dias (geralmente 365 dias); V = volume médio diário que passa no trecho; E = extensão do trecho (em km). De forma geral, toda e qualquer via de trânsito apresenta algum tipo ou grau de risco, seja ele evidente ou não. Por motivos diversos como as condições do tempo, o dia da semana influenciado pela variação do fluxo de veículos, e até mesmo as condições físicas da via em dado momento são determinantes no grau de risco que a mesma pode se apresentar ao longo do tempo. 22 1.5. Considerações Finais Este capítulo abordou os principais conceitos quanto ao trânsito, para permitir certo entendimento sobre o mesmo, assim como as principais técnicas de identificação de risco em vias de tráfego de veículos. O próximo capítulo se dedica a explanar os conceitos necessários ao entendimento sobre Data Mining com uma avaliação sobre algumas técnicas disponíveis e a aplicação da mais adequada ao funcionamento do sistema proposto. 23 CAPÍTULO 2 - DESCOBERTA DE CONHECIMENTO EM BANCO DE DADOS Este capítulo discute as tecnologias que possibilitam armazenar e analisar grandes volumes de dados para obtenção de informações úteis a um determinado propósito, ou seja, a descoberta de conhecimentos “não identificados” a partir de dados brutos. 2.1. KDD (Knowledge Discovery Databases) Antigamente a tecnologia relacionada ao hardware e ao software disponível para a execução das aplicações, limitava o armazenamento a pequenos volumes de dados. Desta forma, a análise e gerenciamento destes dados era facilmente executada através de consultas simples ao banco de dados. O gerenciamento de dados é considerado uma das primeiras aplicações dos computadores. O avanço da tecnologia da informação, bem como sua popularização e a redução do custo de armazenamento, possibilitou um crescimento considerável no que diz respeito ao volume de dados armazenados, tornando sua análise complexa. Por este motivo, faz-se necessário o desenvolvimento de ferramentas inteligentes com capacidade de auxiliar na análise e extração de conhecimento e padrões de grandes volumes de dados (BATISTA, 2003). Surgiu então o KDD, Knowledge Discovery in Databases ou DCBD Descoberta de Conhecimento em Bancos de Dados. O KDD foi definido como o processo não trivial de identificação de padrões válidos, novos, potencialmente úteis e compreensíveis, embutidos nos dados. O termo KDD foi proposto pela primeira vez em 1989, e é composto por etapas onde a partir de dados brutos, conhecimento é produzido, tendo como etapa principal a mineração de dados (Data Mining), fase na qual os dados são transformados em informações (FAYYAD, 1996). “Vários autores, principalmente de ambientes comerciais, utilizam o termo Data Mining em um sentido mais amplo, representando todo o processo de KDD, ao invés de apenas uma etapa deste processo” (CURROTO, 2003). O processo de Data Mining muitas vezes é confundido com o próprio KDD, desta forma, é importante alertar que é necessária a compreensão de todas as etapas do processo de descoberta de conhecimento, para que quando aplicadas corretamente, os melhores resultados possíveis sejam obtidos. A figura 1 demonstra a relação entre KDD e Data Mining, no qual o KDD é o processo global de extração de conhecimento e o Data Mining é uma parte de todo esse processo: 24 Figura 1 - Relação entre KDD e Data Mining Fonte: CURROTO, 2003 Existe uma diferença primordial entre dados e informações; Dados se transformam em informações, quando lhe são atribuídos algum significado, ou seja, o dado é a matéria-prima (bruta) de onde se pode extrair informação. Portanto, o processamento dos dados é o tratamento dos mesmos, para a obtenção de informações com contexto significativo e bastante definido. O uso inteligente da informação é o próprio conhecimento, sustentado pela qualidade da informação (ALVARES, 2004). 2.2. O Processo de KDD O processo de KDD se utiliza de métodos, algoritmos e técnicas de diversas áreas, sendo este multidisciplinar, envolvendo áreas relativas a Banco de Dados, Inteligência Artificial e Estatística. Tem por finalidade a busca e interpretação de padrões de dados, através da aplicação de algoritmos, com a participação efetiva de um especialista no domínio da aplicação para a obtenção de novos conhecimentos sobre determinado tema. A natureza iterativa e interativa do processo KDD, é responsável pelo refinamento gradativo dos dados, que os vai tornando mais eficientes sob o ponto de vista do processo de análise que será aplicado aos mesmos durante a fase de mineração. Outro aspecto importante sobre o processo de descoberta de conhecimento fundamentado no KDD, é que o mesmo não necessariamente se encerra imediatamente ao final de suas etapas como um todo, pode ser necessário o retorno a etapas anteriores, surgindo assim novas hipóteses de descoberta. O processo de KDD implica na progressão ou evolução do dado à informação, a partir do processamento do mesmo. A partir da geração da informação, o conhecimento alcançado pode ser classificado como indutivo ou dedutivo. O conhecimento indutivo é obtido através da descoberta de novas regras e padrões em um conjunto de dados fornecidos. O dedutivo baseia-se na descoberta de conhecimento a partir da aplicação de regras lógicas já definidas, a um conjunto de dados. (ELMASRI; NAVATHE, 2005). 25 2.3. Etapas do KDD Por se tratar de um processo, implica em dizer que o KDD é composto de vários passos que devem ser seguidos, a fim de se atingir um determinado objetivo, neste caso: o conhecimento. De acordo com FAYYAD (FAYYAD, 1996), o processo é composto por 05 etapas: • Seleção – escolha do conjunto de dados a serem tratados; • Pré-processamento – limpeza para a eliminação de redundâncias; • Transformação – padronização dos dados para aprimorar o processo de mineração; • Mineração de Dados – busca de padrões com o algoritmo escolhido; • Interpretação – análise dos dados minerados que resultarão no conhecimento. É necessário realizar uma análise do problema a ser resolvido, denominado de Conhecimento do Domínio da Aplicação, antes de dar início ao processo do KDD, pois o bom entendimento do problema ajuda na definição correta dos objetivos do processo. A figura 2 ilustra as etapas do processo de KDD: Figura 2 - Etapas do processo de KDD definidas por FAYYAD Fonte: FAYYAD, 1996 2.3.1. Seleção A escolha correta dos dados implicará no sucesso do processo e também em uma das etapas mais adiante, na qual é aplicado o algoritmo para descoberta de conhecimentos. A seleção de dados é feita após definição dos objetivos, realizando uma seleção de um subconjunto de dados a partir da base de dados fornecida. Esta etapa também é conhecida como consolidação dos dados, ou seja, é feita uma coleta e consolidação dos dados, dando inicio ao processo de extração de conhecimento. 26 2.3.2. Pré-processamento Também conhecido como limpeza dos dados, tem como objetivo a adequação dos dados para implementação dos algoritmos. Nesta fase os dados são tratados de maneira que melhore a qualidade dos mesmos, a fim de evitar possíveis deformidades na extração do conhecimento. É uma etapa demorada e pode levar cerca de 80% do processo de KDD. Em um banco de dados, pode haver diversos problemas a serem tratados, como: • Dados redundantes – algumas vezes a seleção pode trazer um conjunto de dados redundantes que não irão impactar na análise e podem ser descartados; • Informações incompletas – pode haver a presença de dados incompletos que devem ser eliminados para melhorar o processo de mineração; • Problemas de tipagem – ou seja problemas com os tipos de dados, texto, números etc.; • Incertezas – dados não confiáveis; • Ruídos – qualquer tipo de corrupção dos dados armazenados. É importante abordar nesta etapa a adequação dos dados que por ventura estejam fora do contexto, a integração de dados heterogêneos, o resumo e a seleção das variáveis a serem utilizadas. 2.3.3. Transformação De acordo com o algoritmo a ser implementado, os dados devem obedecer ao formato estabelecido pelo mesmo, sendo assim, para que os dados possam ser transformados é necessário que já esteja definido o algoritmo que será utilizado na próxima etapa. Após a transformação, os dados são armazenados corretamente de forma a facilitar o uso das técnicas de Data Mining. 2.3.4. Data Mining É a fase onde ocorre a busca por padrões nos dados selecionados, através do algoritmo e do método que foi definido, com base no objetivo que se deseja alcançar com o processo KDD. Para isto, é necessário ainda, decidir os modelos e parâmetros apropriados para o algoritmo de mineração em particular a ser utilizado. Esta é a etapa onde os dados se transformam em informação, e é considerada a mais importante do processo KDD. Exemplos de tarefas de mineração: 27 • Clusterização ou Agrupamento; • Classificação; • Regras associativas; • Padrões seqüenciais. Ao final desta etapa, gera-se um relatório de descoberta que será utilizado na próxima fase. 2.3.5. Interpretação Nesta última etapa do processo de KDD é feita uma análise do conhecimento descoberto na etapa anterior. A interpretação dos resultados objetiva aprimorar a compreensão sobre o tema objeto da análise. Os resultados podem ser visualizados em forma de gráfico, permitindo a avaliação quanto a relevância ou não do conhecimento obtido. Quando não favorável, o processo como um todo ou partes do mesmo, podem ser repetidos por várias vezes. A descoberta de novos conhecimentos, permite que sejam tomadas decisões frente aos padrões observados ou apenas a documentação dos mesmos para consultas futuras por parte de grupos de interesse (FAYYAD, 1996). 2.4. Data Mining (Mineração de Dados) A mineração de dados pode ser definida como uma área multidisciplinar e que se relaciona diretamente com as seguintes disciplinas: Estatística, Banco de dados, Redes neurais, Inteligência artificial, Aprendizado de máquina, Reconhecimento de padrões, Sistemas baseados em conhecimento e etc. (HAN; KAMBER, 2001) A mineração de dados origina-se fundamentalmente da interseção de três áreas (DWBRASIL, 2004): • Estatística Clássica; • Inteligência Artificial; • Aprendizagem de Máquina; A figura 3 demonstra a relação que culmina na mineração de dados como o resultado da combinação de várias disciplinas. 28 Figura 3 - Relação do Data Mining com outras áreas Fonte: DWBrasil, 2004 A estatística clássica é a mais antiga de todas, envolvendo conceitos como distribuição normal, desvio simples, análise discriminantes, análise de regressão, variância, análise de conjuntos e intervalos de confiança, todos utilizados a fim de se estudar os dados e o relacionamento entre eles. A Inteligência Artificial tem como objetivo a tentativa de imitação da maneira como o homem raciocina as informações na resolução dos problemas estatísticos, sendo uma área construída com base nos fundamentos de procedimentos heurísticos. Aprendizagem de Máquina (Machine Learning) pode ser considerada como a “união” entre a estatística e a inteligência artificial, com o objetivo de fazer com que os programas de computador “aprendam” com os dados que eles estudam, de maneira que decisões diferentes sejam tomadas, com base nas características dos dados estudados. Para os conceitos fundamentais utiliza-se a estatística, adicionando heurísticas avançadas da inteligência artificial e algoritmos para alcançar seus objetivos. A mineração de dados é fundamentalmente a adaptação das técnicas de aprendizagem de máquina para aplicações de negócios (DWBRASIL, 2004). 29 A utilização das técnicas das áreas abordadas (Estatística Clássica, Inteligência Artificial e Aprendizagem de Máquina) contribui no estudo dos dados de forma a encontrar padrões nos mesmos, sendo importante destacar em especial o uso de técnicas de estatística em mineração de dados, que influenciam de maneira significativa nas tomadas de decisão por diversas organizações, não sendo diferente para aquelas voltadas ao trânsito, onde a descoberta das características dos riscos de acidentes nas avenidas das cidades, que é o propósito deste trabalho, pode contribuir de maneira positiva na tomada de providências pelos órgãos responsáveis com base na análise de dados estatísticos de forma dinâmica. Das várias técnicas em análise de dados, as estatísticas são mais ligadas às técnicas de mineração de dados (CABENA; STADLER; VERHEES; ZANASI, 1988). A etapa de mineração de dados é considerada a mais importante no processo KDD, pois tem como objetivo a descoberta de padrões em dados, para permitir a utilização do conhecimento obtido na solução de problemas (AMARAL, 2001). 2.5. Métodos de Mineração de Dados São vários os métodos da mineração de dados disponíveis nas literaturas, contudo a descoberta de conhecimentos significativos está associada ao estabelecimento de metas bem definidas, que são obtidas através dos próprios métodos. Segue abaixo os principais métodos de mineração de dados e na seqüência uma breve explanação sobre cada uma delas (FAYYAD, 1986): • Segmentação (cluster); • Sumarização; • Regras de Associação; • Classificação: 2.5.1. Segmentação Também denominado como análise de ‘cluster’ ou agrupamento, tem por objetivo agrupar conjuntos de dados similares ou a identificação de exceções. Segundo Berry e Linoff (1997) um conjunto de objetos agrupados pela similaridade ou proximidade é definido como um cluster e a segmentação podem ser definidos como a tarefa de segmentar uma população heterogênea em um número de clusters (subgrupos) mais homogêneo possível, de acordo alguma medida. 30 A segmentação difere da classificação, por não existir classes pré-definidas. Enquanto na classificação a população é subdividida, associando cada registro a uma classe pré-definida, com base no modelo desenvolvido e exemplos pré-classificados, na segmentação o processo é realizado de maneira mais geral e comumente realizado como a primeira etapa de outros métodos de mineração de dados (BERRY; LINOFF, 1997). 2.5.2. Sumarização Algoritmos de sumarização envolvem métodos para encontrar uma descrição compacta para um subconjunto de dados. Um simples exemplo pode ser o desvio padrão para todos os itens de dados (FAYYAD, 1996). A sumarização é utilizada, principalmente, no pré-processamento dos dados, quando valores inválidos são determinados por meio do cálculo de medidas estatísticas – como mínimo, máximo, média, moda, mediana e desvio padrão amostral, no caso de variáveis quantitativas, e no caso de variáveis categóricas, por meio da distribuição de freqüência dos valores. Técnicas de sumarização mais sofisticadas são chamadas de visualização, que são de extrema importância e imprescindíveis para o obtenção do entendimento, muitas vezes intuitivo, do conjunto de dados. Exemplos de técnicas de visualização de dados incluem diagramas baseados em proporções, diagramas de dispersão e histogramas, entre outros (SFERRA; CORRÊA, 2003). 2.5.3. Regras de Associação A proposta inicial das tarefas da associação ou afinidades, teve início em 1993 (AGRAWAL; SRIKANT, 1994), tendo como objetivo a combinação de itens importantes, de maneira que, a presença de um item em uma determinada transação, implica na freqüência de outro na mesma transação. Devido a sua grande aplicabilidade, as regras de associação encontram-se entre um dos mais importantes tipos de conhecimento que podem ser minerados em bases de dados. Estas regras representam padrões de relacionamento entre itens de uma base de dados. Uma de suas típicas aplicações é a análise de transações de compras (market basket analysis), um processo que examina padrões de compras de consumidores para determinar produtos que costumam ser adquiridos em conjunto. Um exemplo de regra de associação, obtida a partir da análise de uma base de dados real, que registra os produtos adquiridos por famílias cariocas em suas compras mensais, é dado por: {mini-pizza semi-pronta} Þ {suco de fruta em pó}. Esta regra de associação indica que as famílias que compram o produto {mini-pizza semi-pronta} têm maior chance de também adquirir o produto {suco de fruta em pó} (GONÇALVES, 2007). 31 O uso de regras de associação em conjunto com a tecnologia, possibilitou às organizações coletar, armazenar e analisar grandes quantidades de dados, como é o caso da utilização dos códigos de barra para identificação e a análise sobre os dados de vendas (AGRAWAL; SRIKANT, 1994). O quadro 1 demonstra de forma resumida os métodos de mineração de dados considerados como aplicáveis a este trabalho: Quadro 1 - Métodos de Mineração de Dados Fonte: DIAS ,2001 2.5.4. Classificação Os métodos de classificação utilizam-se de um conjunto de dados pré-escolhidos, que são treinados para definir um novo modelo de avaliação, com o qual a partir do mesmo será efetivamente utilizado para classificar, de forma otimizada, novos conjuntos de dados não classificados, através de sua categorização em classes (WITTEN e FRANK, 2005). Os métodos de classificação podem ser relacionados similarmente com a análise discriminante, que é uma técnica estatística adequada para classificação, onde de acordo com Mattar (1988), permite que dois ou mais grupos possam ser comparados, com o objetivo de determinar se diferem uns dos outros e, também, a natureza da diferença, de forma que, com base em um conjunto de variáveis independentes, seja possível classificar indivíduos ou objetos em duas ou mais categorias mutuamente exclusivas. 32 2.6. Algoritmos de classificação Um algoritmo é o núcleo de qualquer ferramenta de mineração de dados, pois é o responsável por processar os dados, decidir o grau de relevância dos mesmos e então, apresentar os resultados. Um algoritmo de classificação baseado em árvores de decisão é estruturado de forma a representar os resultados em um formato que se assemelha a uma árvore virada de cabeça para baixo. (HAN; KAMBER, 2006). A figura 4 representa o resultado simulado de uma árvore de classificação para o tipo de pessoa que admite assistir a novelas exibidas na televisão. Figura 4 - Exemplo de Árvore de Classificação Fonte: Própria autoria Conforme demonstrado na figura 4, no topo da árvore tem-se um nó chamado de principal ou raiz, que possui o atributo cuja uma das fases do algoritmo considerou como o que apresenta o maior grau de relevância quanto à informação que o mesmo possui no conjunto de dados. Cada interligação entre um nó e outros abaixo, pode ser chamada de ramo e representa um resultado obtido da análise do nó diretamente superior. Cada ramo interliga o nó superior (pai), aos intermediários, que representam um atributo sendo testado no contexto da análise. Os nós da extremidade podem ser chamados de nós-folha e indicam o resultado para o atributo classificador, ou o seja, o alvo da análise (HAN; KAMBER, 2006). Dentre os algoritmos capazes de classificar os dados em um formato de árvore, os chamados “Algoritmos de Arvore de Decisão”, destacam-se o ID3, C45 e o J48. O ID3 e o C45 foram desenvolvidos pelo pesquisador J. Ross Quinlan entre os anos 70 e 80. 33 O J48, escolhido para utilização neste trabalho, corresponde à implementação em Java do C45 originalmente desenvolvido em C. De acordo com Han e Kamber (2006), o ID3 e o C45, se utilizam de recursividade para analisar um conjunto de dados de treinamento seguindo um padrão conhecido como “dividirpara-conquistar” (subdividindo as respostas para cada um dos testes feitos nos atributos), de cima para baixo, por toda a árvore até o nó mais extremo. Em seguida, os resultados obtidos são comparados com os dados presentes no atributo selecionado como classificador, para determinar o grau de precisão da árvore gerada. O modelo derivado da análise pode ser aplicado a um novo conjunto de dados não-classificados e assim ser utilizado para predição de condições ou cenarização. Para Mitchell (1997), o ID3 pode ser considerado o algoritmo básico para a classificação de dados. A partir de um conjunto de dados de treinamento S, um atributo alvo C que será o objeto da análise, e os demais atributos Kn na função ID3(S, C, Kn) seguem-se os seguintes passos: ID3(S, C, Kn) (a) Criar nó raiz R (b) Se Todos(S == (+)) retorna árvore de apenas um nó R = (+); Se Todos(S == (-)) retorna árvore de apenas um nó R = (-); Se ÉVazio(Kn), retorna árvore de apenas um nó R com o valor mais freqüente de C; (c) Se as condições no passo (b) não acontecerem: (d) Inicia: R recebe o atributo A Para cada valor Vn de A: Adicionar novo ramo abaixo de R com o resultado do teste A== Vn; Colocar SVn como subconjunto de S os que possuam valor Vn para A. Se SVn está vazio Então: Adicionar ao novo ramo um nó folha, com o valor mais recorrente de C em S. Senão, Abaixo do novo ramo adicionar a sub-árvore: (e) ID3(SVn, C, (Kn – {A})) (f) Finaliza (g) retorna a raiz R 34 Com relação ao algoritmo ID3 demonstrado, vale destacar os seguintes pontos: § Os valores (+) e (-), devem ser considerados como Verdadeiro e Falso respectivamente, ou seja, são respostas à condição analisada no atributo A. § No passo (a) o nó raiz R é determinado através da escolha do atributo que possui o maior índice de relevância, através do cálculo da entropia do conjunto de dados e do ganho de informação do atributo. § No passo (b) nota-se que uma árvore de classificação pode conter apenas um nó: Se todos os valores de C para S forem positivos (+), ou todos os nós forem negativos (-), a árvore retorna um único nó raiz R = (+) ou (-) respectivamente. Se os atributos Kn estiverem vazios retorna uma árvore com apenas um nó R com o valor (+) ou (-) mais recorrente no conjunto de dados para C. § No passo (e) pode-se observar a chamada recursiva a função ID3. O ID3 executa análises do tipo Verdadeiro/Falso e este foi um dos motivos que levaram ao desenvolvimento do C45 que é capaz de tratar outros tipos de proposições, mas basicamente possui a mesma estrutura de funcionamento (MITCHELL, 1997). 2.6.1. Entropia do conjunto de dados e ganho de informação do atributo De acordo com Mitchell (1997), o cálculo de entropia é importante por medir a pureza de uma coleção de dados. Dado um conjunto de dados C contendo valores positivos e negativos para um contexto analisado, a entropia E de C é calculada através das fórmulas: Para o ID3, por analisar os dados sob um contexto binário (Verdadeiro/Falso): E(C) = - P(+) log2 P(-) - P(-) log2 P(-) Onde : P(+) = porção de valores positivos em C P(-) = porção de valores negativos em C Para o C45, capaz de analisar diversos tipos de proposições: c E(C) = ∑ i =1 - Pi log2 Pi 35 Onde : Pi é a proporção de C pertencentes a classe i. Dada a entropia de um conjunto de dados, o algoritmo de classificação precisa determinar qual dos atributos possui a maior relevância no contexto da análise, e para isto, se utiliza do cálculo do ganho de informação expressa pela fórmula: G(C, A) = E(C) - ∑ v∈Valores ( A ) Cv C E (Cv ) Onde: G = Ganho de informação do atributo A para o conjunto de dados C; E = Entropia do conjunto de dados C; V = Um valor dentre todos os possíveis para A. Cv = Subconjunto de valores assumidos para A em C Valores(A) = Todos os possíveis valores que podem ser assumidos por A; Determinada a entropia do conjunto de dados e qual dos atributos possui o maior ganho de informação, o mesmo é selecionado como nó principal e assim inicia-se o processo de construção da árvore de classificação repetindo-se o processo sucessivamente para os nós intermediários (MITCHELL, 1997). 2.6.2. Confiabilidade da análise – Índice Kappa De acordo com Legrand e Nicoloyannis (2005), o coeficiente Kappa, é utilizado para quantificar a concordância ou consenso entre proposições previstas e resultados obtidos em uma análise. O cálculo do índice Kappa é dado pela fórmula: k= pCo − pCe 1 − pCe Onde: pCo = Proporção de concordâncias observadas pCe = Proporção de concordâncias esperadas Sendo (T) o total de instâncias coletadas para análise, a dedução dos valores de (pCo) e (pCe) podem ser obtidos a partir da matriz de concordância do índice Kappa conforme a figura 5. 36 Sendo: pCo = a+d T (a + c )(a + b) (b + d )(c + d ) + T T pCe = T Figura 5 - Matriz de concordância para o índice Kappa Fonte: LEGRAND; NICOLOYANNIS, 2005 A avaliação do índice Kappa para determinada análise, pode classificar seu desempenho como fraco, regular ou excelente, conforme demonstrado no quadro 2. Quadro 2 - Avaliação do índice Kappa Fonte: LEGRAND; NICOLOYANNIS, 2005 De acordo com Witten e Frank (2005), o índice Kappa faz a análise de concordância entre valores previstos e alcançados levando em consideração inclusive os casos onde a concordância ocorre por acaso. O índice Kappa foi o método de avaliação escolhido para ser utilizado neste trabalho como validador do modelo de análise, principalmente pelo fato do mesmo já estar presente na API do WEKA, que será discutido a seguir neste capitulo. 37 2.6.3. Ferramentas de Mineração de Dados Conforme já abordado neste trabalho, no processo de KDD uma das etapas é a mineração de dados, onde ocorre a busca por padrões, através de métodos e algoritmos. Para isto faz-se necessário o uso de uma ferramenta, capaz de realizar estas buscas, de forma rápida e eficiente. O WEKA - Waikato Environment for Knowledge Analysis, é uma poderosa e conceituada ferramenta de mineração de dados que foi desenvolvida no meio acadêmico, em 1999, na Nova Zelândia, pela Universidade de Waikato. É um software composto por um conjunto de algoritmos, que objetiva a análise de problemas reais através da mineração de dados (WITTEN, 2000). Desenvolvido em linguagem Java, possui código aberto (domínio público) e oferece suporte à sistemas operacionais como Linux, Macintosh e Windows. No endereço http://www.cs.waikato.ac.nz/ml/weka/ é possível realizar o download da ferramenta, bem como sua vasta documentação. A figura 6 demonstra a tela inicial da ferramenta WEKA. Figura 6 - WEKA - Ferramenta de Mineração de Dados Fonte: WITTEN; FRANK, 2005 38 A ferramenta foi escolhida para sua utilização por apresentar as melhores características para adaptação e utilização de sua interface de programação de forma independente no sistema a ser desenvolvido. A ferramenta WEKA, tem como principais vantagens (OLIVEIRA, 2005): § Portabilidade: o WEKA está implementado em linguagem Java, permitindo o uso dos benefícios de uma linguagem orientada a objetos (encapsulamento, polimorfismo, modularidade, reutilização de código e etc); § Interface: além de ser amigável, a instalação é simples e de fácil utilização. Se apresenta através de uma interface gráfica, diferentemente da maioria das ferramentas de mineração de dados; § Gratuidade: é um software livre, sua licença é baseada na GPL (General Public License); § Documentação e disponibilidade: vastamente encontrada na internet, sem restrições de uso; O WEKA é formado por um conjunto de diversos pacotes ou bibliotecas de função que podem ser utilizadas na implementação de outros sistemas. Dentre eles vale destacar: § Attribute Selection (Seleção de atributos): é usado como o próprio nome diz para selecionar atributos de uma base de dados para a extração de padrões; § Classifiers (Classificação através de árvores de decisão): é formado por implementações de algoritmos de aprendizagem, tais como: IBK (K-nearest neighbor), o ID3, o J48.J48 e J48.PART; § Clustering (Agrupamento em Clusters): contém uma implementação de dois métodos de aprendizagem não supervisionada: Cobweb e o algoritmo EM; § Association Rules (Generalização de regras de associação usando taxonomias): contém duas classes, ItemSet e Apriori, que juntos implementam esse algoritmo; § Filters (Filtros de seleção): permite aos usuários selecionar um subconjunto de atributos ou de instâncias de dados baseada em algum critério; § Estimators (Estimadores): contém subclasses que são utilizadas pelo algoritmo Native Bayes para computar os diferentes tipos de distribuição de probabilidade. 39 2.7. Considerações Finais “Não há um método de mineração de dados universal e a escolha de um algoritmo particular é de certa forma uma arte.” (FAYYAD, 1996). Uma análise à citação de Fayyad nos leva a concluir que cada método sugerido pela mineração de dados pode se adaptar melhor a uma determinada situação em relação à outra, ou seja, para cada cenário existe um método ou uma técnica mais adequada. Desta forma, a intuição e experiência do analista são fatores decisivos para a compreensão dos resultados, e do sucesso da aplicação da mineração de dados na resolução dos problemas. 40 CAPÍTULO 3 - TRABALHOS CORRELATOS Este capítulo discorre sobre dois trabalhos relacionados ao tema abordado nesta monografia, principalmente sobre o aspecto do trânsito quanto ao comportamento do fluxo de veículos e do registro de acidentes. Faz parte ainda do objetivo, relacionar as características mais importantes destes trabalhos direta ou indiretamente com o SARAT. 3.1. Simulação do controle de tráfego de automóveis em uma malha rodoviária urbana (FREIRE, 2004). Orientado pelo professor José Roque Voltolini da Silva, Jocemar José Freire, submeteu sua monografia à Universidade Regional de Blumenal, como requisito parcial para a obtenção do título de bacharel do curso de Ciência da Computação no ano de 2004. O estudo apresentado aborda a temática do controle do trânsito de veículos em uma malha rodoviária através do desenvolvimento do protótipo de uma ferramenta de simulação do tráfego em área urbana. A proposta para o desenvolvimento do sistema utilizou-se da API gráfica OPENGL para a visualização da simulação, da utilização de cálculos matemáticos basicamente fundamentados em geometria analítica e trigonometria e ainda com o estudo das características do trânsito propriamente dito. Motivado pela observação da problemática do trânsito, principalmente quanto ao aumento do volume de veículos trafegando nas vias, o autor percebe a necessidade de se avaliar a eficácia da criação de rotas alternativas para o trânsito através de um simulador de comportamento do tráfego. Segundo Freire (2004), foi confirmado pelo estudo de caso apresentado em sua pesquisa, que a simulação se mostra eficiente ao identificar situações muito similares com as encontradas no dia-a-dia de grandes cidades, onde o congestionamento torna-se extremamente complexo a ponto de interromper completamente o fluxo de veículos em vários sentidos, prejudicando o funcionamento do tráfego como um todo. O sistema proposto baseia-se na quantidade de veículos trafegando em rotas pré-programadas, para simular o comportamento do trânsito, identificando gargalos e conseqüentemente engarrafamentos. 41 Apesar de não tratar especificamente de acidentes, entende-se que os mesmos podem ser inseridos no cenário da simulação como obstruções, para identificar os impactos resultantes no fluxo do tráfego. Fazendo uma comparação do SARAT com o Sistema de Simulação de Tráfego, pode-se observar que um dos objetivos que se deseja alcançar com os dois sistemas é permitir um melhor entendimento do comportamento do tráfego de veículos, para proporcionar aos gestores, ferramentas que auxiliem a minimizar os impactos causados por obstruções no já bastante complexo fluxo de veículos de muitas cidades, através da coleta e processamento de dados do trânsito. 3.2. Projeto de Georeferenciamento de Acidentes de Trânsito com Vítimas em Belo Horizonte (MEINBERG, 2003). Orientado pela professora Karla Albuquerque Borges, Felipe Furtado Meinberg, submeteu sua dissertação à Universidade Federal de Minas Gerais, como requisito parcial para a obtenção do título de especialista em Geoprocessamento no ano de 2002. O trabalho apresenta uma metodologia de modelagem e desenvolvimento de um sistema que possibilita a visualização de pontos onde ocorreram acidentes de trânsito com vítimas, através do georeferenciamento dos mesmos. Para isto, baseia-se em dados reais de acidentes ocorridos no centro de Belo Horizonte, tendo sido testado e validado pela Empresa de Trânsito de Belo Horizonte. O sistema foi desenvolvido com a linguagem de programação JMDL (Java Microstation Development Language) sobre a plataforma comercial Microstation Geographics. Para a camada de dados foi utilizado o Microsoft Access. O sistema basicamente faz o cruzamento de dados dos acidentes identificados pelo local da ocorrência com coordenadas geográficas e as apresenta em um mapa com indicações sobre a gravidade do mesmo. Segundo Meinberg (2002), a utilização do sistema atendeu as expectativas e objetivos propostos, visto que permitiu a especialistas de trânsito e transporte, avaliar de forma bastante intuitiva os dados coletados sobre os acidentes acontecidos na área onde o estudo foi aplicado. A relação do sistema proposto por Felipe com o SARAT é mais próxima, visto que trata especificamente da coleta e visualização de dados de acidentes de trânsito. Mesmo que se limitando aos acidentes com vítima, possui pontos de convergência interessantes com o 42 SARAT já em sua fase de análise, leva em consideração detalhes específicos sobre as condições em que o acidente ocorreu, como a severidade do acidente, o período (dia, mês, ano), e inclusive as condições do tempo. 3.3. Considerações finais Apesar de não terem sido encontrados trabalhos com relação integral a esta monografia, ou seja, com a aplicação de mineração de dados ao trânsito para identificar riscos de acidentes, é possível observar algumas similaridades nos fundamentos, ou seja, a coleta de dados sobre o trânsito e que o entendimento sobre o mesmo é bastante comum. O aspecto mais importante de relação do SARAT com as ferramentas apresentadas é que de alguma forma elas objetivam viabilizar meios de facilitar o entendimento de determinadas situações do trânsito, auxiliando na tomada de decisões para minimizar os impactos das ocorrências comuns quanto ao fluxo de tráfego e da quantidade de acidentes. Sob este aspecto, a correlação dos trabalhos fica evidenciada e estabelecida. 43 CAPÍTULO 4 - SARAT – SISTEMA DE ANÁLISE DE RISCO DE ACIDENTES DE TRÂNSITO O SARAT tem por objetivo, prover a um usuário especializado em trânsito, uma maneira simplificada de processar um conjunto de informações relacionadas ao tráfego de veículos em determinada via, e fornecer como resultado, um modelo de análise. Este modelo, devidamente interpretado, pode auxiliar no entendimento dos fatores que incidem na ocorrência de acidentes. Para alcançar este objetivo, a ferramenta utiliza o algoritmo J48 pertencente ao ambiente da Mineração de Dados como parte do processo KDD, conforme discutido no capítulo 2, para fazer o cruzamento do histórico de informações relacionadas aos acidentes ocorridos na via, com as velocidades médias, o fluxo de veículos, a incidência de chuvas, os dias da semana, e ainda, o período do dia em que ocorreram, para apresentar os resultados da análise como uma Árvore de Classificação. O objetivo é que o resultado da análise possa contribuir para o planejamento estratégico, e tomadas de decisão, e do ponto de vista dos sistemas de informação, reconhecer e identificar os padrões de comportamento do trânsito de forma sistemática. 4.1. Operação do SARAT O objetivo no conceito de desenvolvimento da aplicação foi a de torná-la o mais simples e funcional possível, e por este motivo, optou-se pela utilização de um assistente que é muito similar a outros sistemas de uso geral existentes no mercado. Conforme demonstrado na figura 7, ao executar o assistente o usuário seguirá os seguintes passos: § 1: Selecionar o banco de dados onde estão armazenadas as informações; § 2: Escolher e selecionar quais informações deverão ser consideradas na análise; § 3: Escolher opções referentes ao algoritmo a ser utilizado na mineração; § 4: Executar a mineração propriamente dita. 44 Figura 7 – Esquema geral de funcionamento do SARAT Fonte: Autoria própria Ao final da análise, os resultados serão apresentados na janela principal em dois diferentes formatos; Relatório-texto e um gráfico em forma de árvore. A interpretação do resultado da mineração, bem como a identificação das ações de controle que podem ser tomadas a partir das análises, fica por conta do especialista em trânsito, usuário da ferramenta. 4.2. A fundamentação do SARAT Partindo do princípio que analisar um conjunto de números e proposições é uma tarefa cansativa e sujeita a falhas de interpretação, a utilização de ferramentas computacionais para este tipo de atividade torna-se atualmente o método mais recomendado. Neste contexto as técnicas de mineração de dados podem ser utilizadas para interpretar e fornecer resultados de uma forma bastante precisa. O SARAT está fundamentado basicamente na classificação de dados através da técnica de mineração de dados conhecida como Árvores de Classificação, mais especificamente do algoritmo J48, uma implementação do C45 e evolução do ID3, conforme discutido no capítulo 2. A técnica de árvores de decisão foi escolhida por apresentar a forma de análise mais simplificada sob o ponto de vista da interpretação, já que imediatamente após o processamento dos dados, pode-se visualizar graficamente as evidências resultantes da análise. Para desenvolver o SARAT, foi utilizada a API da ferramenta open-source WEKA, que reúne um conjunto de algoritmos desenvolvidos especificamente para a tarefa de mineração de dados. A escolha foi feita baseando-se em dois fatores, o primordial foi o fato do WEKA ter 45 seu código aberto, o que possibilitou o acesso a sua interface de programação bastante documentada, inclusive o próprio J48, já implementado e pronto para sua utilização. O segundo aspecto por ter sido desenvolvida em JAVA, viabilizando a possibilidade de utilização em sistemas operacionais distintos. 4.3. Requisitos Nesta secção serão relacionados os requisitos funcionais, que determinam especificamente o que o sistema deve realizar, e os não-funcionais, aqueles referentes a características de restrição, qualidade, tempo ou quaisquer outras não relacionadas à funcionalidades prestadas pelo sistema. 4.3.1. Requisitos Funcionais § Ler dados: O sistema SARAT deverá permitir ao usuário escolher qualquer SGBD como fonte de dados para análise, desde que o driver para o mesmo, esteja disponível. § Escolher origem dos dados: O sistema SARAT deverá permitir ao usuário escolher que tabela será a origem dos dados a serem analisados. § Escolher atributos da análise: O sistema SARAT deverá permitir ao usuário escolher que atributos (campos da tabela) serão utilizados na análise. O último a ser selecionado deverá ser utilizado como atributo classificador. § Visualizar as opções definidas para os atributos: O sistema SARAT deverá permitir que após os atributos para análise sejam selecionados, os valores de opção para cada atributo sejam previamente visualizados pelo usuário. § Visualizar os resultados: O sistema SARAT deverá apresentar os resultados da análise em forma de texto e em formato gráfico, demonstrando a árvore de classificação do modelo gerado. § Avaliar o índice de concordância do modelo: O sistema deverá apresentar para os modelos gerados o índice Kappa, para que o mesmo possa ser utilizado como parâmetro qualificador do resultado da análise. 46 4.3.2. Requisitos Não Funcionais § Operação com SGBD: Apenas um banco de dados pode ser utilizado por vez, ou seja, todos os dados a serem analisados devem pertencer ao mesmo banco de dados. § Aceso ao SGBD: É de responsabilidade do usuário manter os drivers necessários para que o sistema possa se conectar a outros SGBD´s. § Tratamento dos Dados: O SARAT não fará edições nos dados utilizados na análise. § Coleta de Dados: O SARAT não fará a coleta e manutenção dos dados a serem utilizados pelo mesmo. Eles já deverão estar disponibilizados previamente no banco de dados a ser utilizado. Não é responsabilidade do SARAT o tratamento destes dados que deverão ser realizados pelo usuário. § Origem dos dados: Todos os dados a serem analisados pelo SARAT devem pertencer a uma única tabela. § Portabilidade: O sistema deverá ser desenvolvido em Java para que seja portável entre plataformas de sistemas operacionais. 4.4. Funcionamento da Ferramenta Ao inicializar o sistema SARAT é apresentada a tela conforme demonstrado na figura 8. Esta interface foi desenvolvida com a intenção de ser o mais simples, direta e funcional possível para que sua utilização seja praticamente imediata por novos usuários. Podem-se observar no menu as opões “Arquivo”, “Análise” e “Informações”. Na área de resultados é possível visualizar as abas “Saída” e “Árvore”. 47 Figura 8 – Tela principal do SARAT Fonte: Autoria própria No item do menu “Arquivo”, tem-se a opção de abandonar o sistema. Ação que pode ser efetuada clicando-se no botão fechar no canto superior direito da tela. O item do menu “Análise”, mostra o sub-menu “Assistente” que dispara o assistente de análise, conforme demonstrado na figura 9. O menu “Informações”, mostra o sub-menu “Sobre” que quando acionado mostra a tela de créditos do sistema conforme a figura 10. As abas “Árvore” e “Saída” são preenchidas respectivamente com os resultados em forma de gráfico com a árvore de decisão, e em formato texto, quando o assistente termina o processo de análise. 48 Figura 9 - Tela do Assistente de Análise Fonte: Autoria própria Figura 10 - Tela de Créditos do SARAT Fonte: Autoria própria Conforme demonstrado na figura 9, o usuário deve selecionar as opções desejadas, conectar ao banco de dados e passar para a próxima etapa. A figura 11 a seguir, denota um dos passos primordiais no sucesso da análise; a escolha dos campos que farão parte da mesma. Neste momento o último campo selecionado será automaticamente definido como o atributo classificador (no caso, o atributo “Acidente”). Nesta tela do assistente são demonstrados ainda, opções de pré-visualização dos dados, antes da mineração propriamente dita. Estes dados podem ser vistos na figura 12. 49 Figura 11 - Seleção de dados para a análise Fonte: Autoria própria Figura 12 - Pre-visualização de dados selecionados Fonte: Autoria própria 50 Figura 13 - Tela conclusão do assistente Fonte: Autoria própria Figura 14 - Atributos envolvidos na análise Fonte: Autoria própria A figura 13 demonstra as últimas opções a serem escolhidas para que a aplicação do algoritmo de mineração de dados escolhido, no caso o J48 do pacote WEKA, seja aplicado. O botão “Alterar atributos” permite visualizar como os atributos serão considerados na análise, conforme demonstrado na figura 14. O processo se inicia após o usuário clicar no botão “Minerar Dados” e os resultados conforme já mencionado, serão apresentados nas abas “Saída” e “Árvore” da tela principal da aplicação, e as mesmas serão demonstradas no capítulo 5. 51 4.5. Casos de Uso A figura 15 demonstra o caso de uso da ferramenta SARAT, onde seus principais recursos e funcionalidades são apresentados. Figura 15 - Diagrama de Caso de Uso – SARAT Fonte: Autoria própria Como funcionalidades destacam-se: § Conectar Base Dados: Permitir ao usuário se conectar ao SGBD onde os dados para análise estiverem disponíveis. § Selecionar Dados: Permitir ao usuário selecionar quais os dados deverão ser considerados pelo processo de análise. Incluem-se nesta categoria a tabela e ainda os campos da mesma. § Minerar Dados: Processo que efetivamente processa os dados e opções selecionadas no assistente, aplica o algoritmo de mineração e apresenta os resultados. Dos recursos utilizados o mais importante é o pacote contendo a API do WEKA, onde o algoritmo J48 está incluído, bem como as bibliotecas para a visualização gráfica da árvore com o resultado da análise. 4.6. Diagrama de Seqüência A figura 16 demonstra o diagrama de seqüência onde é possível visualizar a interação entre as classes do sistema com o usuário, para produzir os resultados da análise com uma visão temporal das ações. 52 Figura 16 - Diagrama de Seqüência do processo de análise Fonte: Autoria própria 4.7. Arquitetura Técnica Para o desenvolvimento da ferramenta SARAT foi utilizada a linguagem de programação JAVA, considerada neste caso pelas seguintes características: § A ferramenta WEKA, bem como todas as bibliotecas e componentes da API (Interface de programação) disponibilizadas para livre utilização não comercial, foram desenvolvidas em Java. Assim, já que para fazer a interação entre outras linguagens de programação com o JAVA seria mais complicado e não acrescentaria grandes benefícios ao objetivo deste trabalho, optou-se por manter o JAVA como a linguagem de programação a ser utilizada. 53 § Com a diversidade de sistemas operacionais atualmente em uso, pode-se considerar uma boa prática desenvolver em uma linguagem que apresenta portabilidade e isto foi levado em consideração. O NETBEANS foi a IDE utilizada para o desenvolvimento, por facilitar a criação de aplicações desktop, gerando o código mínimo para posterior complementação, com a inclusão de outras funcionalidades. Ainda, por se demonstrar bastante eficiente quanto a extensibilidade de funções através de plugins, que permitiram por exemplo, elaborar diversos dos diagramas utilizados neste trabalho. Para o SGBD, que mantém as tabelas utilizadas no processo de análise, foi escolhido o Microsoft SQL Server Express 2005. A escolha se baseou principalmente no fato do mesmo ser disponibilizado gratuitamente pela Microsoft, mas ainda assim, apresentar alta eficiência funcional, segurança e facilidade de manipulação. Foi considerada ainda como uma oportunidade de fazer a integração entre sistemas heterogêneos, uma vez que poderia ter sido utilizado o MYSQL, evidentemente mais próximo do Java em termos de portabilidade. A escolha foi influenciada ainda pelo requisito que define a possibilidade de se utilizar qualquer SGBD disponível, o que motivou a busca pela consolidação de novos conceitos, e com certeza contribuiu para agregar valor a este trabalho. Em termos da arquitetura propriamente dita, pode-se classificar a mesma como uma aplicação desktop de duas camadas. Uma camada fica responsável pela interação com o usuário, processar os dados e apresentar os resultados. A outra camada serve para prover à camada de interface as funcionalidades do acesso aos dados como as consultas e opções de acesso. Mais uma vez a escolha da linguagem JAVA é justificada como opção de utilização, já que as bibliotecas utilizadas no tratamento dos dados pela camada responsável, são facilmente encontradas na internet. A escolha por desenvolver uma aplicação para desktop é justificada principalmente pelo fato de que a ferramenta SARAT seria normalmente utilizada por apenas um usuário. Mesmo assim como foi desenvolvida em Java, sua portabilidade para o ambiente WEB pode ser implementada, mantendo suas características funcionais quase que inalteradas. Pode-se ainda citar o fato de que o objetivo principal do desenvolvimento da ferramenta para este trabalho foi viabilizar um meio de maior interatividade e não-tradicional, sob o ponto de vista das técnicas de análise convencionais sobre os acidentes de trânsito, feitas pelos órgãos 54 competentes. Sob este aspecto, a característica da aplicação ser desktop ou web realmente não faz grande diferença. A figura 17 evidencia arquitetura de 2 camadas da aplicação SARAT. Figura 17 - Arquitetura de 2 camadas da aplicação Fonte: Autoria própria 4.8. Modelo de Dados O modelo de dados da aplicação é bastante simples, já que o sistema basicamente se utiliza de 3 tabelas que não mantém uma relação de dependência forte, conforme figura 18. Figura 18 - Tabelas do sistema Fonte: Autoria própria 55 Para um melhor entendimento da filosofia adotada quanto aos dados das tabelas, segue uma breve explicação sobre o conteúdo das mesmas. A tabela “Transito” deve possuir todos os registros fornecidos que serão utilizados na análise. Esta tabela é preenchida pelo usuário utilizando qualquer outro mecanismo, a ferramenta SARAT não possui esta funcionalidade. Deve-se levar em consideração que a tabela demonstrada na figura 16 é apenas uma demonstração do tipo de informações que podem estar presentes na mesma, utilizadas pelo estudo de caso da aplicação. A tabela “TransitoOpcoes” mantém os dados referentes a que opções cada campo da tabela “Transito” pode apresentar para o efeito da análise. A tabela “TransitoCampos” é utilizada para auxiliar na montagem da instrução SQL de select para filtrar quais campos realmente serão utilizados em conjunto com a tablela “TransitoOpcoes”. Quando o usuário seleciona os campos que serão ser analisados, a tabela “TransitoCampos” é limpa e em seguida preenchida com os campos selecionados para posterior utilização. O resultado da consulta apenas dos atributos selecionados para análise é demonstrada na figura 19 e demonstra quais são os tipos de dados que podem estar presentes na tabela “Transito”. Figura 19 - Visão dos atributos selecionados para análise Fonte: Autoria própria 56 4.9. Diagrama de Classes O diagrama de classes da ferramenta SARAT, conforme demonstrada na figura 20 estabelece a arquitetura do código da mesma, representando suas principais funcionalidades. Foram omitidos atributos e métodos pertencentes à construção da interface do usuário já que não fazem parte do objeto principal de estudo deste trabalho. A classe “Assistente” é o centro da aplicação. Ela é responsável por criar, visualizar, manipular e em seguida retornar para a classe “SARATView” que é responsável pela interface principal do sistema, incluindo a apresentação dos resultados ao usuário. Figura 20 - Diagrama de classe da aplicação Fonte: Autoria própria 57 Para conseguir executar suas funcionalidades a classe “Assistente” utiliza as classes “DtBase”, “VerDados” e “ExportaArff” que é responsável por criar o arquivo com os dados selecionados para análise que serão processados pela classe “ArvoreJ48”. A classe “ArvoreJ48” efetivamente cria o objeto onde será aplicado o algoritmo de classificação utilizando os pacotes da API do WEKA. A classe “VerDados” é responsável por fornecer a visualização de dados selecionados e opções, pode ser considerada uma classe utilitária. No anexo 1 podem ser visualizadas, destacando as partes mais importantes, o código fonte das classes “ArvoreJ48” e “Assistente”. 4.10. Considerações finais Este capítulo procurou demonstrar de forma detalhada o processo de desenvolvimento da ferramenta SARAT. O próximo capítulo se destina a demonstrar a utilização da mesma através de um estudo de caso. 58 CAPÍTULO 5 - APLICAÇÃO PRÁTICA DA FERRAMENTA SARAT Neste capítulo será elaborada uma simulação da utilização do sistema, bem como a apresentação e análise dos resultados apresentados. Mesmo não se tratando de especialistas no que diz respeito ao trânsito, a composição de variáveis e a forma com que os dados serão apresentados, facilitará o entendimento, este inclusive um dos maiores objetivos do desenvolvimento do sistema. 5.1. Dados para análise Para desenvolver um sistema de análise que transmita confiabilidade é preciso que sejam usados dados com algum grau de relevância. Assim, foi feita uma solicitação a SET – Superintendência de Engenharia de Tráfego que forneceu o levantamento de todos os acidentes ocorridos na Avenida Tancredo Neves entre os anos de 2005 e julho de 2008. Apesar disto, para efeito da simulação, foram considerados apenas os dados do ano de 2006 na área do Iguatemi. A estrutura dos dados fornecidos pela SET, pode ser observada no quadro 3. CAMPO Cod_Ocorrencia Data Hora Tipo_Ocorrencia Rodovia Idade Sexo Categoria Resultado Encaminhado Tipo_Veiculo Faixa_Etaria Faixa_Horaria HOR Dia_da_Semana DESCRIÇÃO Código numérico seqüencial da ocorrência Data da ocorrência no formato xx/xx/xx Hora da ocorrência no formato xx:xx:xx Descrição do tipo da ocorrência: Ex.: Abaloamento, Atropelamento, Capotamento, Choque, Colisão, Engavetamento e Queda Tipo da rodovia: Municipal ou Estadual Idade do envolvido Sexo do envolvido Descrição do tipo do envolvido: Condutor, passageiro ou pedrestre Descrição do estado do envolvido: Ferido, sem lesão ou morto. Local para onde o envolvido foi enviado: Ex. HSR (Hospital São Rafael), HGE (Hospital Geral do Estado) Tipo do veículo envolvido: Passeio, ônibus, caminhão, moto Faixa etária do envolvido no acidente Turno em que o acidente ocorreu: Ex. Manhã, tarde, noite ou madrugada Dia da semana Descrição da avenida onde foi registrada a ocorrência. Ex.: Avenida Logradouro Tancredo Neves Trecho onde a ocorrência foi registrada: Ex.: Iguatemi, Pituba, Localidade Tancredo Neves Quadro 3 - Descrição dos dados fornecidos pela SET Fonte: Autoria própria 59 Mesmo de posse de uma grande quantidade de dados, percebeu-se que para o tipo de análise os mesmos ainda estavam incompletos, já que eram referentes apenas aos dias em que os acidentes efetivamente aconteceram. Ou seja, qualquer análise mostraria simplesmente que os acidentes acontecem. Outro aspecto importante é que o registro das ocorrências relacionavase apenas ao acidente e seus envolvidos sem levar em consideração o ambiente do trânsito no momento da ocorrência. Para tornar o conjunto de informações mais relevantes para a simulação, considerou-se necessário a inclusão de novas variáveis, como a velocidade média dos veículos, um valor referente ao fluxo de veículos trafegando no momento do acidente, e a informação da presença ou não de chuva. Para estabelecer os valores que representassem o fluxo e as velocidades dos veículos foram seguidos alguns passos: § Foi escolhida apenas uma localidade da via para análise, no caso o trecho do Iguatemi § Foi realizada uma contagem da quantidade de veículos trafegando numa via próxima durante 5 minutos em cada hora por 3 dias alternados entre as 9:00 e 18:00 através de observação visual. A contagem foi realizada do alto do Edifício Ômega, décimo primeiro andar, nos dias 01/10/08, 03/10/08 e 05/10/08. Além da quantidade de veículos, foram feitas estimativas também visuais das velocidades médias durante as observações. § De posse de valores referentes a 5 minutos, foi estabelecido uma média dos 3 dias e realizada uma estimativa das quantidades para cada hora do dia. O mesmo foi feito para a estimativa de velocidades. § Os períodos entre 18:00 e 8:00 da manhã foram estimados com base na redução/aumento progressivo de valores já estabelecidos. Os dados coletados foram utilizados como limitadores para gerar randomicamente valores de fluxo e de velocidades dos veículos para cada hora do dia. Como os dados fornecidos pela SET continham apenas os dias com os registros de ocorrência, foi montado um calendário contendo todos os dias do ano de 2006 e nele foram acrescentadas as ocorrências registradas pela SET e ainda a informação da incidência de chuva. 60 Para conseguir os dados de registros das chuvas em salvador, foram utilizadas informações do Weather Underground, um portal onde é disponibilizado o histórico das chuvas em diversos lugares do mundo inclusive Salvador. O resultado da combinação dos dados fornecidos pela SET, com as simulações de velocidade e de fluxo, assim como o histórico das chuvas formam o conjunto de dados onde foram aplicadas as etapas do processo KDD sugerido por FAYYAD (1996), conforme se segue: § Seleção de dados: Foram eliminados todos os campos considerados irrelevantes para análise, bem como a limitação dos mesmos a uma seleção de 60 dias do ano de 2006. § Pré-processamento: O registro das ocorrências fornecidas pela SET passaram por um processo de limpeza a exemplo das redundâncias por acidente. Cada registro da tabela fornecida referenciava um envolvido (motorista, pedestre, ciclista, passageiro etc..) o que resultava em vários registros do mesmo acidente com diferentes pessoas envolvidas. § Transformação: Foram feitas as normalizações nos dados. Correção de termos, padronização de texto para, por exemplo, referenciar os dias da semana abreviada. O quadro 4, apresenta uma amostra dos dados já prontos para serem utilizados no teste da aplicação SARAT. DIA CHUVA TURNO FLUXOMEDIO VELOCMEDIA ACIDENTE dom Nao Madrugada 298 48 NAO dom Nao Manha 3197 47 NAO dom Nao Noite 2093 48 NAO dom Nao Tarde 4331 46 NAO seg Nao Madrugada 292 46 NAO seg Nao Manha 3292 53 NAO seg Nao Noite 2224 51 NAO seg Nao Tarde 4537 50 NAO ter Nao Madrugada 302 44 NAO ter Nao Manha 3121 46 NAO ter Nao Noite 1971 47 NAO ter Nao Tarde 4368 47 SIM qua Nao Madrugada 297 48 NAO qua Nao Manha 3131 44 SIM qua Nao Noite 2142 47 NAO qua Nao Tarde 4336 50 SIM qua Nao Tarde 4336 50 SIM qua Nao Tarde 4336 50 SIM qui Nao Madrugada 291 48 NAO Quadro 4 - Amostra de dados analisados pelo SARAT Fonte: Autoria própria 61 Em seguida passou-se para as duas últimas fases; a aplicação do algoritmo J48 e avaliação dos resultados desta fase já com a utilização da ferramenta SARAT. 5.2. Ambiente operacional e teste da aplicação Para realizar o teste da aplicação foi utilizado um Notebook Sony Vaio, dotado de processador Intel Core 2 Duo, 2Gb de memória, HD de 80Gb. Iniciada a aplicação temos apresentada a primeira tela do sistema conforme figura 21. Figura 21 - Simulação: Tela inicial da aplicação SARAT Fonte: Autoria própria Em seguida selecionada a opção “Análise” no menu principal, iniciou-se o assistente conforme a figura 22, onde os dados referentes ao banco de dados foram preenchidos. 62 Figura 22 - Simulação: Conexão ao banco de dados Fonte: Autoria própria Após pressionar o botão “Conectar” a conexão com o banco de dados foi estabelecida e os dados das tabelas foram carregados corretamente. Ao clicar no botão “Próximo” ou selecionar a aba “Dados” foram disponibilizadas as possibilidades de se escolher que tabela, bem como quais os campos seriam analisados. No caso, todos menos o campo “ID” foram solicitados, conforme a figura 23. Figura 23 - Simulação: Seleção da tabela e dos campos para análise Fonte: Autoria própria 63 Ao clicar no botão “Próximo” ou selecionar a aba “Opções”, conforme a figura 23, surgem as opções de pré-visualizar o contexto de análise de cada um dos campos, selecionar o algoritmo ou mesmo executar o processo de análise, clicando-se no botão “Minerar Dados”, conforme demonstrado na figura 24. A figura 25 demonstra as opções do contexto de cada um dos campos da tabela analisada. Figura 24 - Simulação: Opções finais para o processo de análise Fonte: Autoria própria Figura 25 - Simulação: Visualização do contexto dos atributos para análise Fonte: Autoria própria Após clicar no botão “Minerar Dados”, a análise é executada. Ao fechar o assistente são apresentadas as telas de resultado de texto e gráfico nas abas “Saída” e “Arvore” respectivamente conforme as figuras 26 e 27. 64 Figura 26 - Simulação: Resultado da aplicação do algoritmo em formato texto Fonte: Autoria própria 65 Figura 27 - Simulação: Resultado da análise em forma de gráfico tipo árvore Fonte: Autoria própria Com a apresentação das telas de resultados, está concluída a utilização da ferramenta SARAT, a partir de então parte-se para a análise dos resultados obtidos. 5.3. Resultados obtidos com o teste da aplicação Os resultados da aplicação podem ser melhor compreendidos, através do gráfico da árvore demonstrada na figura 27. A partir do resultado, podem ser interpretadas as seguintes conclusões para a via em questão: § Quando a média do fluxo de veículos se encontra abaixo de 2096, não há incidência de ocorrências. § Quando a média do fluxo de veículos for maior do que 2096, passa-se a levar em consideração o dia da semana em questão: • Segundas e domingos, não há ocorrência de acidentes; 66 • Quartas, sextas e sábados há ocorrência de acidentes. • Terças, só há o registro de ocorrências quando o fluxo é maior do que 3177 veículos, em caso contrário não há ocorrências. • Quintas, se chove, há o registro de ocorrências, caso contrário não há registro de ocorrências. Quanto aos resultados em relação à aplicação, percebe-se que a interpretação é bastante intuitiva e facilitada graças a representação gráfica dos resultados. Ainda assim, a demonstração de resultados em forma de texto não deixa de ser importante, pois além de permitir a mesma interpretação fornecida pelo modo gráfico, acrescenta alguns detalhes importantes que merecem ser mencionados como: § Índice Kappa; Demonstrando o percentual de confiabilidade da análise conforme discutido no capítulo 2, no caso teste foi de aproximadamente 93%; § Total de Instâncias: 57 registros considerados na análise; § Instâncias corretamente classificadas: 52 registros após classificados e comparados com o atributo alvo corresponderam à classificação feita pela ferramenta; § 5.4. Instâncias incorretamente classificadas: 2 registros; Considerações finais Este capítulo demonstrou o processo de levantamento de dados, preparação dos mesmos e utilização da ferramenta para análise e em seguida apresentou os resultados encontrados. 67 CONCLUSÃO O principal objetivo deste trabalho foi desenvolver uma ferramenta flexível para viabilizar uma metodologia de análise, capaz de realizar operações pré-determinadas com precisão, rapidez e montar o cenário de análise para um especialista em trânsito. Ou seja, demonstrar a utilização de uma nova abordagem para o processo de análise do tráfego de veículos. Com este foco, procurou-se ainda demonstrar as técnicas e a relevância de métodos existentes para identificação de locais de risco de acidentes, como os métodos numéricos recomendados pelo CEFTRU. O sistema utilizou como principal componente de informação o que poderia ser considerado a mesma fonte de dados utilizada pela técnica da “Taxa de Acidentes”, os dados históricos dos acidentes. O trabalho também ressaltou o fato de que o aumento na capacidade do armazenamento de dados, pelo volume de informações que são gerados todos os dias nas diversas áreas de aplicação, o Data Mining se apresenta como a ferramenta ideal para a análise de cenários como o proposto. Sua utilização é justificada ainda pelo extenso leque de opções quanto ao tipo de análise que podem ser feitas e até mesmo, e senão principalmente, pela capacidade de descobrir novos padrões de comportamento e conseqüentemente de novas informações. Para se tornar realmente flexível, o sistema foi estruturado para possibilitar a utilização de diversas variáveis que podem ser inseridas como componentes da análise quando as mesmas estiverem disponíveis, como por exemplo, o nível de risco que uma avenida pode apresentar calculada pelas técnicas tradicionais. Desta forma, conclui-se que a aplicação de Sistemas de Informação, apoiado em técnicas robustas de Mineração de Dados e nos avanços da tecnologia dos computadores, são ferramentas de grande desempenho, que juntas, podem realmente contribuir para viabilizar a análise e o melhor entendimento do comportamento do tráfego de veículos e dos acidentes que ocorrem em grandes cidades como Salvador. 68 Dificuldades Encontradas A principal dificuldade para realização do desenvolvimento deste trabalho foi conseguir os dados em relação ao trânsito para iniciar o processo de pré-análise. Mesmo após ter os dados em mãos, foi constatado que os mesmos encontravam-se incompletos para se atingir as metas que haviam sido planejadas no início do projeto. Ainda quanto aos dados, quando se decidiu acrescentar outros fatores aos dados originais como a incidência das chuvas, constatou-se que em Salvador e até no Brasil não são disponibilizados registros sobre a ocorrência de chuvas no território nacional. Estas informações foram encontradas após um longo período de busca em portais da internet hospedados fora do Brasil. Isto indica que ainda existe uma carência muito grande de fontes de informação atualizadas sobre o que acontece em nosso próprio país. Outra dificuldade que merece ser apontada é a falta de informações detalhadas sobre os principais algoritmos de classificação. Os poucos que existem limitam-se a explicações superficiais, baseadas em exemplos pouco expressivos e resultados de difícil interpretação. Contribuições Acreditamos que a principal contribuição deste trabalho para o meio acadêmico, é a demonstração da viabilidade de utilização de conceitos de mineração de dados para análise de um problema que é tradicionalmente tratado através de estatísticas e fórmulas com alto nível de complexidade. Vale salientar que tentou-se abordar o problema com uma linguagem o mais próxima do entendimento geral, utilizando-se de detalhes técnicos apenas onde era inevitável. A intenção desta abordagem é permitir que o leitor mesmo não sendo da área de tecnologia, sinta-se a vontade e consiga absorver os conceitos aqui discutidos sem intimidações por explicações de alto nível técnico, ou seja, consigam entender a essência do trabalho. 69 Perspectivas Uma das perspectivas é que este trabalho sirva como referência para trabalhos futuros onde possam ser implementadas por exemplo: • A inclusão de relatórios para os resultados da análise. • A possibilidade se utilizar outros algoritmos além do J48. • A implementação de uma versão para WEB da ferramenta. • Os dados utilizados pela aplicação já devem estar prontos para consulta. Poderia ser incluído um módulo de extensão para fornecer a capacidade de modificar os dados da base. • A inclusão de filtros de seleção para, por exemplo, selecionar qual via deverá ser analisada. 70 REFERÊNCIAS BIBLIOGRÁFICAS AGRAWAL, R.; SRIKANT, R. Fast algorithms for mining association rules. Proceedings of the 20th VLDB Conference. Chile: Santiago, 1994. ALVARES, Reinaldo Viana. Mineração de dados: Introdução e aplicações. 2004. SQL MAGAZINE, Edição 10, 2004. AMARRAL, Fernando C. Data Mining Técnicas e Aplicações para o Marketing. Ed Berkeley Brasil, 2001. BATISTA, G.E.A.P.A, Pré-processamento de dados em aprendizado de máquina Supervisionado. 2003. Tese (Doutorado) - Instituto de Ciências Matemáticas e de Computação. Universidade de São Paulo, São Carlos. BERRY, M. J. A.; LINOFF, G. Data Mining techniques – for marketing, sales, and customer support. United States: Wiley Computer Publishing, 1997. BRANDÃO, Lúcia Maria. Medidores eletrônicos de velocidade, uma visão da engenharia para implantação: Manual Teórico-prático. Perkons 2006, Paraná, 2006. BRASIL. Código Nacional de Trânsito Brasileiro. Lei n° 9.503, de 23 de setembro de 1997. Artigo 1, parágrafos 1 e 2. Brasília, DF, 1997. CABENA, P.; HANDJINIAN, P.; STADLER, R.; VERHEES, J.; ZANASI, A. Discovering data mining: from concept to implementation. Upper Saddle River: Prentice-Hall PTR, 1998. CEFTRU. Procedimentos para o tratamento de locais críticos de acidentes de trânsito. MT – Programa Pare, 2002. Brasília 2002. CONTRAN – CONSELHO NACIONAL DE TRÂNSITO. Resolução Nº146/2003. Dispõe sobre requisitos técnicos mínimos para a fiscalização da velocidade de veículos automotores, reboques e semi-reboques. Brasília, DF, 2003. CURROTO, C.L. Integração de recursos de datamining com gerenciadores de bancos de dados relacionais. 2003. Tese (Doutor). COPPE/UFRJ. Universidade Federal do Rio de Janeiro, Rio de Janeiro. 71 DENATRAN – Departamento Nacional de Trânsito. Manual de identificação, análise e tratamento de pontos negros. 2° edição, Brasília, DF, 1987. DIAS, M. M. Um modelo de formalização do processo de desenvolvimento de sistemas de descoberta de conhecimento em banco de dados. 2001. Tese de Doutorado do Programa de Pós-Graduação em Engenharia de Produção UFSC. Florianópolis, Santa Catarina. DWBRASIL. Data Mining. 2004. Disponível em: <http://www.dwbrasil.com.br/html/dmining.html> Acesso em: 04 Mai. 2008. ELMARSRI, Ramez; NAVATHE, Shamkant B. Sistemas de bancos de dados. 4° Edição. Pearson Addison Welsley, 2005. FAYYAD, U.M.,G; PIATETSKY-SHAPIRO; SMYTH P. Fron Data Mining to Knowledge Discovery in Databases. AI MAGAZINE, California, outono 1996. FREIRE, Jocemar José. Simulação do controle de tráfego de automóveis em uma malha urbana. 2004. Trabalho de conclusão de curso (Bacharelado em Ciência da Computação). Universidade Regional de Blumenau. Blumenau, 2004. GONÇALVES, Eduardo Correia. Data Mining Regras de Associação. SQL Magazine, 2007. Disponível em: <http://www.devmedia.com.br/articles/viewcomp.asp?comp=6533> Acesso em: 04 Mai. de 2008. GROTH, R. Data mining: a hands-on approach for business professionals. Prentice Hall, New Jersey, 1998. HAN, J.; KAMBER, M. Data mining-concepts and techniques. Morgan Kaufmann. San Fransico, CA, 2001. LEGRAND, Gaelle; NICOLOYANNIS, Nicolas. Data preprocessing and kappa coefficient. In: 10th INTERNACIONAL CONFERENCE OF ROUGH SETS, FUZZY SETS, DATA MINING, AND GRANULAR COMPUTING. Procedings, part I. Springer. Canada, 2005. MATTAR, F.N. Pesquisa de Marketing. São Paulo: Atlas, 1998. 72 MEINBERG, Felipe Furtado. Projeto de Georeferenciamento de Acidentes de Trânsito com Vítimas em Belo Horizonte. 2002. Monografia do curso de especialização em Geoprocessamento. Universidade Federal de Minas Gerais. Minas Gerais, 2002. MITCHELL, Tom M. Machine Learning. McGraw-Hill. New York, 1997. ORLANDINI, Leandro: A importância dos sistemas de informação. O Bonde, abril 2005. Disponível em: <http://www.bonde.com.br/colunistas/colunistasd.php?id_artigo=1646>. Acesso em: 3 Abr. 2008. OLIVEIRA, Alessandra Marchiori de; Smiderle, Andréia. Mineração de dados: um estudo de caso de concessão de crédito explorando o software Weka. Revista de Informatica Mater Dei, Pato Branco, Paraná: v.2,n.2, p.17-22,2005. QUINLAN. J. Ross. C4.5 – Programs for machine learning. Morgan Kaufmann. San Fransico, CA, 1993. SET-SUPERINTENDÊNCIA DE ENGENHARIA DE TRÁFEGO: Anuário estatístico de acidentes de trânsito em Salvador. Salvador, 2006. Disponível em: <http://www.set.salvador.ba.gov.br/estatistica_dados.asp>. Acesso em Mar. 2008. SFERRA, Heloisa Helena; CORRÊA, Ângela M. C. Jorge. Conceitos e Aplicações de Data Mining. Revista Ciência & Tecnologia. Piracicaba, 2003. Disponível em: <http://www.unimep.br/phpg/editora/revistaspdf/rct22art02.pdf>. Acesso em: Jan. de 2008. WITTEN, FRANK. ; Ian H. Witten, Eibe Frank. Data Mining: Pratical machine learning tools and techiniques. Morgan Kaufmann, San Francisco, CA, 2005. WEATHER UNDERGROUND. Internet Weather Service. Disponível em: < http://www.wunderground.com/history/airport/SBSV/2008/1/1/CustomHistory.html?dayend= 1&monthend=9&yearend=2008&req_city=NA&req_state=NA&req_statename=NA>. Acesso em: Ago. de 2008. 73 ANEXO 1 – Código parcial das classes principais Classe do assistente /* * SARATApp.java * Sistema de Análise do Trânsito - Risco de Acidente * Técnica: Mineração de Dados * Módulo: Assistente de Mineração de Dados * Orientador: Mestre Grinaldo Lopes * Trabalho de Conclusão de Curso - Ano: 2008.2 * Sistemas de Informação - Centro Universitário Jorge Amado - UNIJORGE * @author Sérgio Costa & Herbert Souza */ package sarat; /** * Módulos das bibliotecas padrão do java utilizados pela aplicação */ import DBUtil.*; import javax.swing.*; import java.sql.*; import java.awt.BorderLayout; /** * Módulos das bibliotecas do WEKA utilizados pela aplicação */ import weka.gui.treevisualizer.PlaceNode2; import weka.gui.treevisualizer.TreeVisualizer; /** * Classe Assistente - Módulo de Mineração dos Dados */ public class Assistente extends javax.swing.JFrame { private DefaultListModel listModelLeft; private DefaultListModel listModelRight; private JInternalFrame jFarvore; private JTextArea jFareatexto; private ArvoreJ48 TreeData; private DBUtil.DtBase db; private String selectString; private String selectOpcoes; /** * Construtor da Classe Assistente */ public Assistente(JInternalFrame jFrameArvore, JTextArea jSaidaTexto) { listModelLeft = new DefaultListModel(); listModelRight = new DefaultListModel(); 74 initComponents(); //Objetos de visuzalicação dos resultados da mineração jFarvore = jFrameArvore; jFareatexto = jSaidaTexto; //Cria o objeto de dados db = new DBUtil.DtBase(); selectString = ""; selectOpcoes = "SELECT T.CAMPO, T.OPCOES FROM TransitoOpcoes T" + " JOIN TransitoCampos C ON (T.CAMPO=C.CAMPO)"; } /** Método disparado pelo construtor, responsavel por inicializar todos os * componentes da janela da aplicação. * Esta porção de código foi gerada pela ferramenta grafica do Netbeans 6.1 * e só deve ser modificada através da mesma. * Vizualização parcial */ @SuppressWarnings("unchecked") private void initComponents() { . . . } /** * Método para permitir a inclusão de ítens na consulta dos dados a serem * minerados através da conexão ao SGBD. * Preenche o combobox com o nome das tabelas */ private void RecuperarTabelasDB() { if (db.BancoConectado()) { try { //Quantas Tabelas tem no banco? int ct = db.getTablesBanco(); respTables = db.GetTabelas(); for (int i = 0; i < respTables.length; i++) { jComboTabelas.addItem(respTables[i]); } } catch (Exception Ex) { Ex.printStackTrace(); } } else { // System.out.println("Erro: Banco não Conectado"); JOptionPane.showMessageDialog(null, "Não conectado!", "Erro: Banco de Dados.", JOptionPane.ERROR_MESSAGE); } } 75 /** * Recupera a lista de campos de uma tabela selecionada * e adiciona os mesmos à lista de campos disponíveis para minerar */ private void SelecionarCamposTabela(String tabela) { if (db.BancoConectado()) { String[] respCols; try { respCols = db.RecuperaCamposTabela(tabela); for (int i = 0; i < respCols.length; i++) { listModelLeft.addElement(respCols[i]); } } catch (Exception Ex) { Ex.printStackTrace(); } } else { JOptionPane.showMessageDialog(null, "Não conectado!", "Erro: Banco de Dados.", JOptionPane.ERROR_MESSAGE); } } /** * Faz o pre-processamento dos dados, coletando-os a partir do banco e gerando o arquivo * ".arff" que será utilizado pelo algorítimo * */ private boolean processarOpcoes() { boolean resp = false; try { if(insereCamposOpcoes()){ DBUtil.ExportArff expData = new DBUtil.ExportArff(selectString, selectOpcoes); expData.Exportar(db, DtviewOpcoes, Dtview); resp = true; } } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Erro:", JOptionPane.ERROR_MESSAGE); } return resp; } /** * Cria o objeto que minera os dados utilizando o Algorítimo J48 do WEKA * */ private void MinerarDados(){ if (this.processarOpcoes()) { try { TreeData = new ArvoreJ48(); 76 jFareatexto.setText(null); String GraficoTexto = TreeData.getGraficoTexto(); String Avaliacao = TreeData.getAvaliacao(); double indiceKappa = TreeData.getIndiceKappa(); jFareatexto.setEditable(false); jFareatexto.append(GraficoTexto); jFareatexto.append("\nÍndice Kappa para Double.toString(indiceKappa) + " \n"); jFareatexto.append(Avaliacao); o modelo: TreeVisualizer tv; jFarvore.getContentPane().setLayout(new BorderLayout()); tv = new TreeVisualizer(null, TreeData.getGrafico(), new PlaceNode2()); jFarvore.getContentPane().removeAll(); jFarvore.getContentPane().add(tv, BorderLayout.CENTER); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Erro:", JOptionPane.ERROR_MESSAGE); } } else { JOptionPane.showMessageDialog(null, "Falha na preparação dos dados!", "Erro:", JOptionPane.ERROR_MESSAGE); this.dispose(); } } " + 77 Classe do objeto J48 /* * SARATApp.java * Sistema de Análise do Trânsito - Risco de Acidente * Técnica: Mineração de Dados * Módulo: Objeto que utiliza a biblioteca do WEKA para minerar os dados * Orientador: Mestre Grinaldo Lopes * Trabalho de Conclusão de Curso - Ano: 2008.2 * Sistemas de Informação - Centro Universitário Jorge Amado - UNIJORGE * @author Sérgio Costa & Herbert Souza */ package sarat; /** * Módulos das bibliotecas padrão do java utilizados pela aplicação */ import java.io.FileReader; /** * Módulos das bibliotecas do WEKA utilizados pelo objeto */ import weka.classifiers.trees.J48; import weka.core.Instances; import weka.classifiers.Evaluation; /** * Classe que executa o algoritimo de Classificação J48 do WEKA */ public class ArvoreJ48 { private String arquivo; private weka.classifiers.trees.J48 j48; private weka.classifiers.Evaluation evaluation; private String GraficoTexto; private String Avaliacao; private double indiceKappa; private String Grafico; public ArvoreJ48() { //Abre o arquivo temporário exportado pelo assistente arquivo = "c:\\temp\\Transito.arff"; try { Instances inst = new Instances(new FileReader(arquivo)); inst.setClassIndex(inst.numAttributes() - 1); j48 = new J48(); j48.buildClassifier(inst); evaluation = new Evaluation(inst); evaluation.evaluateModel(j48, inst); 78 //Indice kappa encontrado para o modelo indiceKappa = evaluation.kappa(); //Avaliacao geral do modelo Avaliacao = evaluation.toSummaryString(false); //Gráfico da árvore fornecida GraficoTexto = j48.toString(); Grafico = j48.graph(); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Erro:", JOptionPane.ERROR_MESSAGE); } } /** * Get´s e Sets para acesso ao objeto com os resultados. */ public J48 getObjJ48() { return j48; } public String getGrafico() { return Grafico;} public double getIndiceKappa() { return indiceKappa; } public String getAvaliacao() { return evaluation.toSummaryString(false); } public String getGraficoTexto() { return GraficoTexto; } public String getArquivo() { return arquivo; } public void setArquivo(String arquivo) { this.arquivo = arquivo; } }