Introdução Os bancos de dados usados atualmente, em sua maioria, se caracterizam por ser um ambiente no qual o usuário irá realizar um número muito maior de ações de consulta do que de edição ou exclusão dos dados inseridos nele. Por isso é imprescindível que exista um ambiente imutável para que esse banco exista, caso contrário, tais interações seriam prejudicadas em muitos níveis. Porém, com a evolução dos sistemas de informação surge uma nova necessidade, a de tratar dados não mais estáticos, mas sim dados que estão em movimento, sendo enviados e recebidos em uma rede, um fluxo de dados. Inúmeras aplicações tratam dados nesse tipo de estado, como por exemplo, Firewalls. Para trabalhar com esse tipo de infra-estrutura é necessário consultas muito mais rápidas e mutáveis do que as utilizadas nos sistema que usam o formato estático de dados. Para viabilizar essa necessidade de grande agilidade foi criado o que chamamos de Modelo de Fluxo de Dados. Tal modelo consiste em uma série de artefatos para construir um modelo amigável dos dados e seus estados. Com esses artefatos é possível construir o sistema que utilize os dados no melhor momento possível e no estado que terá melhor responsividade. Fluxo de Dados: Um fluxo de dados é uma sequência contínua ordenada em tempo real, são muito usados em telecomunicações, energia, astronomia e meteorologia, etc. Tem por características possui um enorme volume dados que trafegam em alta velocidade. São contínuos e gerados em ambientes dinâmicos de alta velocidade que mudam com o tempo. Os elementos em fluxos de dados podem ser de variados tipos como registros ou documentos XML. Estes dados podem ser classificados conforme o diferente aspecto que possuem. Assim, é possível diferenciar os dados transacionais e os dados baseados em item, dados de tamanho fixo e variável, dados de alta dimensão e simples. Estes critérios apresentam categorias que podem relacionar-se entre si. Segue abaixo um comparativo entre possíveis aspectos de um DataStream: Transacional x Baseado por Item: Uma transação se trata de uma coleção de itens relacionados que são agrupados de forma implícita em um fluxo de dados. Podemos usar como exemplo um conjunto de compras em uma loja de varejo. Já um modelo baseado por item se trata de uma informação transmitida por um único objeto no fluxo de dados, sendo o oposto de uma coleção de valores de uma transação. Pode-se exemplificar com o uso uma fotocélula para medir a velocidade do saque de tenistas. Alta dimensão x Simples: Forma como se apresenta um objeto, se for um valor escalar trata-se de uma dado simples, se for uma coleção trata-se de um valor de alta dimensão. Tamanho Fixo x Tamanho Variável: Dados de uma fotocélula ou de sensores são considerados de tamanho fixo. Dados de um conjunto de compras, são dados de tamanho variável. Taxa de Fluxo: Medição feita por unidade, por tempo, objetos por hora, objetos por minuto, produção por minuto, produção por pulso de máquina. Fundamentação Teórica Os desafios da mineração de dados muitas vezes são solucionados utilizando técnicas de análise estatísticas e outras técnicas bem conhecidas no ramo da computação. Estas soluções podem ser caracterizadas em dois tipos; dados e tarefas. As soluções baseadas em dados tem o objetivo de examinar apenas um subconjunto do conjunto de dados completo, ou transformar os dados em uma representação menor.Já as soluções baseadas em tarefas utilizam fundamentos da teoria da computação com objetivo de produzir soluções eficientes em tempo e espaço, muitas vezes acabam por criar novas abordagens a fim de criar desafios computacionais. Técnicas Baseadas em Dados Amostragem (Sampling): Processo de escolha probabilística para um item ser processado ou não. Os limites da taxa de erro são dados como uma função da taxa de amostragem. Um dos problemas da utilização desta técnica é o desconhecimento do tamanho do conjunto de dados. Seria importante a investigação de anomalias no conjunto avaliado, porém devido a alta taxa de flutuação dos dados, a análise se torna inviável. Balanceamento de carga: Processo de remoção de sequências de fluxos, sendo utilizada com sucesso em consulta a fluxo de dados. Difícil utilização devido a perda de pedaços importantes do fluxo de dados. Sketching: Técnica de amostragem aleatória que sumariza o fluxo de dados. É bastante utilizada na comparação de fluxos de dados. A desvantagem é a baixa precisão. Estruturas de dados Sinópticas:Baseado em estruturas que representam os dados, sumarizam o fluxo de entrada e produzem um resultado aproximado. Análise de histogramas, quantis e momentos de frequência. Agregação: Sumarizam o fluxo de entrada através de medidas estatísticas. Pode ser utilizada no contexto da mineração de dados. Técnicas baseadas em tarefas Algoritmos de aproximação: Pode trazer uma solução aproximada com limites de erro superior e inferior, são considerados difíceis problemas computacionais dado suas características de continuidade e velocidade, o ambiente de geração normalmente é caracterizado por ter recursos limitados. Tem atraído pesquisadores por ser uma solução direta para problemas de mineração de dados. SlidingWindow: Tem enfoque em fluxos de dados mais recentes. Trabalha com uma janela deslizante de dados. Sumariza versões anteriores. Algoritmo de saída granular: Introduz o primeiro recurso de aproximação para análise de dados. Pode tratar dados altamente flutuantes. Faz análise de dados em um dispositivo com recurso limitado que geram e recebem informações. Técnicas de Mineração A extração de dados é um procedimento que precisa ser executado com cuidado para manter a integridade e coerência das informações. A execução deve ser feita com cuidados especiais para evitar e diminuir ao máximo o risco de perda ou danificação do conhecimento. Para isso foram criadas diversas formas de coleta de dados, cada qual com nuances próprias e pendendo para casos específicos desejados pelo usuário. Dentre os principais problemas nas técnicas que se deseja incorporar, encontram-se: - Adaptabilidade ao fluxo de dados A eficiência da técnica não deve ser comprometida de acordo com a quantidade de dados processada durante sua execução, o desempenho deve oscilar minimamente e garantir sempre um resultado dentro do padrão de aceitação esperado. O algoritmo deve estar pronto para se adaptar perante uma variação significante no fluxo de dados. - Escalabilidade Similar à adaptabilidade, o algoritmo deve ser capaz de escalar o número seqüencial de processos. - Resultados em tempo útil A execução dos processos deve ser ágil e gerar resultados com um grau de satisfação dentro do aceitável. Não é permitida uma flutuação demasiada dependendo da quantidade de dados com que se vai trabalhar. Escolher dentre uma variada gama de técnicas de mineração pode às vezes ser um transtorno caso o usuário não tenha claro que objetivos deseja alcançar com o processo. As técnicas são variadas, mas apesar das diferenças, a maioria delas baseia-se em uma raiz lógica comum. A seguir alguns exemplos das técnicas mais utilizadas e as situações e cenários nas quais elas são mais apropriadas. Mineração baseada em Classificação: Árvore de Decisão: Faz uso de algoritmos baseados em grafos, gerando um modelo visual facilmente interpretável. Facilita a previsão de resultados através de nós de decisão. KNN: Avalia o fluxo de entrada e faz uma classificação através da similaridade com outros conjuntos já existentes. É feita uma medida de verossimilhança e o resultado final determina a classe do objeto avaliado. Utilizado também para regressões. Naive Bayes: Um classificador que realiza suposições independentes de determinadas características. A ausência ou presença de cada uma é avaliada singularmente, sem presumir que isso afete o comportamento ou estado das demais. Mineração baseada em Clustering: Busca Local: É utilizada em problemas com um limite definido para variáveis de avaliação. A análise dá por fim uma lista de possíveis soluções para o problema. K Médio: Realiza a clusterização de n partições para dentro de k clusters através do cálculo das médias de k. Ensemble: Algoritmo de aprendizagem com supervisão. Utiliza-se de múltiplos modelos para obter um melhor desempenho de predição do que o dos modelos usados singularmente. Cada técnica apresenta pontos fortes e fracos que se destacam dependendo do problema ser resolvido. Fica a cargo do usuário escolher aquela que melhor se adéqua à sua situação para obter um resultado ótimo. Ferramentas SPSS Modeler Uma das ferramentas líder de mercado, desenvolvida pela SPSS, ele suporta o processo CRISP-DM, além de possuir outras facilidades. SAS Enterprise Miner Ferramenta desenvolvida pela empresa SAS. É uma das ferramentas mais conhecidas para mineração. Possui módulos para trabalhar em todas as etapas do processo de mineração. Conclusão Cada vez mais a Mineração de Dados torna-se uma ferramenta de apoio fundamental dentro das organizações, auxiliando na gestão da informação. A maneira tradicional de gerir essas informações tornou-se impraticável devido à enorme massa de dados coletada todos os dias. Levantar padrões de relacionamento entre esses dados manualmente não é mais uma opção, trazendo cada vez mais importância para as técnicas de mineração de dados. Atualmente, os bens mais preciosos do projeto de desenvolvimento de um software são os dados. E o fato desses dados serem cada vez mais mutáveis (transformando-se em um fluxo, e não algo estático) faz com que a mineração dos dados torne-se uma tarefa bastante singular, sendo necessária a criação de técnicas de mineração de dados para extrair, de forma satisfatória, as informações contidas nesses fluxos de dados. Apesar dos resultados interessantes obtidos pelas atuais técnicas de Mineração de Dados, há muito ainda a ser feito. Há alguns problemas relacionados ao uso da mineração de fluxo de dados, como por exemplo, segurança, ou então, o aumento da complexidade do fluxo de dados, que criam uma situação complexa e desafiadora. Tal situação cria uma necessidade de freqüente aprimoramento das técnicas, permitindo que as tomadas de decisão sejam cada vez mais acertadas.