Prof. Msc. Paulo Muniz de Ávila
O que é Data Mining? Mineração de dados (descoberta de conhecimento em bases de dados): Extração de informação interessante (não-trivial, implícita, previamente desconhecida e potencialmente útil) dos dados armazenados em grandes massas de dados Nomes alternativos: Descoberta (mineração) de conhecimento em banco de dados (KDD), extração de conhecimento, análise de dados/padrões, business intelligence, etc. O que não é data mining? Processamento de consultas dedutivo. Sistemas especialistas ou pequenos programas estatísticos ou de aprendizado de máquina
Aplicações em Potencial Análise de dados e suporte a decisões Análise de mercado Marketing sob demanda, relação entre clientes, análise e segmentação de mercado, análise cruzada de dados, etc. Análise de risco Previsão, controle de qualidade, análise competitiva, análise de seguros Detecção de fraude Outras Aplicações Mineração de texto (news group, email, documentos XML e HTML) Web mining
Análise de Mercado (1) Quais são as fontes de dados para análise? Transações de cartões de crédito, cartões de fidelidade, cupons de desconto, serviços de televendas, estudos de comportamento (questionários públicos, web, etc.) Marketing sob demanda Descobrir grupos de modelos de clientes que compartilham as mesmas características: interesses, hábitos de compras, etc. Determinar padrões de compras no tempo Análise cruzada de dados Associações/co-relações entre vendas de produtos Previsão baseada nas associações determinadas
Análise de Mercado (2) Customer profiling Data mining pode mostrar que tipos de clientes compram que tipos de produtos (clustering ou classificação) Identificação das necessidades dos clientes Melhores produtos para diferentes clientes Modelos de predição para descobrir que fatores vão atrair novos clientes Informações sumárias Relatórios multidimensionais e estatísticos
Detecção de Fraude (1) Aplicações Largamente usada em serviços de saúde, cartões de créditos, telecomunicações (fraude de ligações telefônicas), etc. Técnicas Dados históricos para construir modelos de comportamento fraudulentos e usar mineração de dados para identificar instâncias similares Exemplos Seguro de automóveis: detecta um grupo de pessoas que são potenciais coletores de sinistros Lavagem de dinheiro: detecta transações suspeitas de dinheiro Seguro de saúde: detecta pacientes profissionais e grupo de outores usados para receber seguro destes pacientes
Detecção de Fraude (2) Detecção inapropriada de tratamento médico Comissão de Seguro de Saúde da Austrália identificou que em muitos casos os tratamentos não eram necessários (economia de $1milhão/ano). Detecção de fraudes telefônicas Modelo de ligações telefônicas: destino da ligação, duração, hora do dia, dia da semana. Análise de padrões que desviam do padrão esperado.
Data Mining: Uma Etapa do Processo KDD 1 - SELEÇÃO 2 - PRÉ-PROCESSAMENTO (Limpeza + Enriquecimento) 3 - TRANSFORMAÇÃO 5 4 - MINERAÇÃO 4 5 - INTERPRETAÇÃO 3 Regras e Padrões 2 Dados Pré-processados 1 Dados Dados Selecionados Dados Transformados Conhecimento
Etapas do Processo KDD Conhecer o domínio da aplicação: Conhecimento relevante e metas da aplicação Criar a base de dados alvo: seleção de dados Limpeza dos dados e pré-processamento: (até 60% do esforço!) Transformação dos dados: Contemplar propriedades importantes e dimensões. Escolha das funções do data mining sumarização, classificação, associação, clustering. Escolha dos algortimos de mineração Data mining: busca dos padrões de interesse Avaliação dos padrões descobertos e apresentação do conhecimento visualização, transformação, remoção de padrões redundantes, etc. Uso do conhecimento descoberto
Algoritmos de Mineração O algoritmo de mineração é o mecanismo que cria um modelo a partir das informações disponíveis na base de dados. Para criar um modelo, um algoritmo primeiro analisa um conjunto de dados e procura padrões e tendências específicos. O algoritmo usa os resultados dessa análise para definir os parâmetros do modelo de mineração. Esses parâmetros são aplicados pelo conjunto de dados inteiro para extrair padrões acionáveis e estatísticas detalhadas.
Weka O pacote de software Weka (Waikato Environment for Knowledge Analysis) começou a ser escrito em 1993, usando Java, na Universidade de Wakato, Nova Zelândia sendo adquirido posteriormente por uma empresa no final de 2006. O Weka encontra-se licenciado ao abrigo da General Public License sendo portanto possível estudar e alterar o respectivo código fonte. O Weka tem como objetivo agregar algoritmos provenientes de diferentes abordagens/paradigmas na subárea da inteligência artificial dedicada ao estudo da aprendizagem por parte de máquinas.
Weka Essa subárea pretende desenvolver algoritmos e técnicas que permitam a um computador "aprender" (no sentido de obter novo conhecimento) quer indutiva quer dedutivamente. O Weka procede à análise computacional e estatística dos dados fornecidos recorrendo a técnicas de dataminning tentando, indutivamente, a partir dos padrões encontrados gerar hipóteses para soluções e no extremos inclusive teorias sobre os dados em questão.
Tarefas de Mineração De acordo com os objetivos pretendidos, podem ser realizadas várias tarefas de mineração de dados. Uma tarefa é um conceito que define o modo como as informações serão mineradas. Pode ser visto como uma funcionalidade. O conjunto de tarefas realizadas sobre os dados disponíveis define a análise realizada em um dado intervalo de tempo. Uma tarefa pode utilizar-se de diferentes abordagens para alcançar os objetivos. Essas abordagens são conhecidas como técnicas.
Técnicas de Mineração As principais técnicas são: Classificação Agrupamento Regras de Associação
Classificação A classificação é um conceito bastante conhecido do homem. Essa tarefa consiste em categorizar os dados em classes previamente definidas de acordo com a similaridade de alguma característica dos dados. Por exemplo, em um supermercado podemos classificar os produtos em algumas classes prédefinidas: frios, laticínios, produtos de higiene, jardinagem, etc.
Weka Técnicas de Classificação Algoritmo J48 O algoritmo J48 fornece uma classificação de uma base de dados que lhe é fornecida. Ele gera um classificador na forma de uma árvore de decisão. Uma árvore de decisão descreve uma estrutura de árvore onde folhas representam classificações e ramos representam conjunções de características que levam às classificações Vamos a um exemplo no Weka
Weka Exemplo Após executar o software Weka Clique em Explorer.
Weka - Ambiente
Weka Exemplo Selecione Open File... Abrir o arquivo tempo.arff
Weka Arquivo ARFF @relation weather @attribute tempo {ensolarado, nublado, chuvoso} @attribute temperatura real @attribute humidade real @attribute ventando {TRUE, FALSE} @attribute jogar? {yes, no} @data ensolarado,85,85,false,no ensolarado,80,90,true,no nublado,83,86,false,yes chuvoso,70,96,false,yes chuvoso,68,80,false,yes chuvoso,65,70,true,no nublado,64,65,true,yes...
Weka Arquivo ARFF @relation weather @attribute tempo {ensolarado, nublado, chuvoso} @attribute temperatura real @attribute humidade real @attribute ventando {TRUE, FALSE} @attribute jogar? {yes, no} @data ensolarado,85,85,false,no ensolarado,80,90,true,no nublado,83,86,false,yes chuvoso,70,96,false,yes chuvoso,68,80,false,yes chuvoso,65,70,true,no nublado,64,65,true,yes 5/21/2010 University of Waikato 21
Explorando a GUI do Weka
Classificando com J48 Selecione o classificador J48 conforme Figura ao lado. Após selecionar clique em Close.
Classificando com J48
Classificando com o J48 Instâncias classificadas Corretamente/incorretamente
Classificando com o J48
Classificando com o J48
Classificando com o J48
Vamos testar nosso modelo Tempo Temperatura humidade Ventando Nublado 76 90 FALSE Ensolarado 80 86 TRUE Chuvoso 70 100 FALSE Como as instâncias são classificadas?
Testando o modelo Crie um arquivo chamado tempo_real.arff (wordpad) @relation weather_real_data @attribute tempo {ensolarado, nublado, chuvoso} @attribute temperatura real @attribute humidade real @attribute ventando {TRUE, FALSE} @attribute jogar? {yes, no} @data nublado,76,90,false,yes ensolarado,80,86,true,yes chuvoso,70,100,false,yes
Classificando com o J48 1 2 3
Classificando com o J48 O que ocorreu aqui? 1 instância classificada como incorreta.
Classificando com o J48
Classificando com o J48
Erros no modelo Às vezes nosso modelo contem algumas inconsistências. Vamos criar uma inconsistência no modelo e verificar se o classificador é capaz de detectala.
Inserindo a inconsistência Na base de dados tempo.arff insira a linha abaixo: nublado,70,80,true,no Execute novamente o treinamento necessário abri-lo novamente. do algoritmo. É
1 2
Erro detectado no modelo O que aconteceu?
Erro detectado no modelo
Mais um exemplo Vamos agora utilizar um outro algoritmo muito conhecido, o naive bayses. Este algoritmo recebe este nome porque é baseado na teoria da probabilidade de Bayes. O algoritmo tem por objetivo calcular a probabilidade de que um novo dado pertença a alguma classe previamente determinada [Pichiliani 2007]. Este tipo de predição é chamado de classificação estatística, pois é completamente baseada em probabilidades.
Naive Bayses
Naive Bayses Analise a saída do algoritmo? Alguma classe classificada de forma incorreta? Visualize a classificação de erros 1 2
Agrupamento A tarefa de agrupamento é bastante parecida com a de classificação. A diferença fundamental é que na classificação, as classes já estão definidas previamente, enquanto que no agrupamento, as classes são definidas durante a tarefa de acordo com o estabelecimento do conjunto de atributos que devem nortear essa categorização
Agrupamento Observe o agrupamento definido na base de dados. Temos 2 grupos: Jogar/SIM = 9 Jogar/NÃO = 5
Agrupamento Para o nosso propósito é importante que os dados não estejam categorizados em Jogar/SIM ou Jogar/Não. Em outras palavras, queremos que o algoritmo de agrupamento seja capaz de inferir esses grupos de forma automática. Sendo assim, precisamos remover o atributo jogar? da nossa base de dados. O Weka irá nos ajudar nessa tarefa.
1 2
4 1 2 3
Agrupamento
Agrupamento
Agrupamento Output
Agrupamento O algoritmo foi eficiente par a essa base de dados? Lembre-se dos dados originais. Observe o agrupamento definido na base de dados. Temos 2 grupos: Jogar/SIM = 9 Jogar/NÃO = 5
Associação Essa tarefa visa identificar grupos de fatos que ocorrem em conjunto ou de forma condicionada. A área de utilização mais comum desse tipo de tarefa é a área de vendas. Busca identificar-se relacionamentos e associações entre produtos para o estabelecimento de pacotes, ou rearranjo de prateleiras. Por exemplo. Se 50% dos consumidores que compram o produto A comprarem também o produto B, colocar esses produtos em prateleiras próximas ou estimular o consumo em conjunto desses itens certamente trará resultados benéficos para as vendas.
Algoritmo Apriori Apriori é um algoritmo clássico para aprendizado de regras de associação. Apriori é utilizado com bases de dados que contém transações (como por exemplo, conjuntos de itens comprados por consumidores). Como é comum em mineração de associações, dado um conjuntos de itens, o algoritmo tenta encontrar subconjuntos em comum que estejam acima de uma confiança mínima definida pelo utilizador.
Weka Apriori Trabalha apenas com atributos nominais e binários OK
Weka Apriori Trabalha apenas com atributos nominais e binários Problema!!!!
Weka Apriori É possível converter atributos? SIM e o software Weka provê esses recursos.
Weka Apriori - Filtros 1 2
Weka Apriori - Filtros 4 1 2 3
Melhorando as regras
Exercícios Suponha que você deseje treinar um sistema para que seja capaz de detectar se uma determinada pessoa é homem ou mulher. Quais atributos você acredita ser necessário? Monte um arquivo ARFF com 10 instâncias e verifique a eficiência do modelo criado?