Preparação dos Dados Preparação dos Dados Compreensão dos dados Limpeza Metadado Valores Perdidos Formato de data unificado Nominal para numérico Discretização Seleção de atributos e “falsos preditores” Distribuição desbalanceada de classes Processo de Descoberta de Conhecimento Estima-se que a Preparação dos Dados consume 7080% do tempo e esforço Entendimento dos Dados: Relevância Que dados estão disponíveis para a tarefa? Os dados são relevantes? Há dados relevantes adicionais? Qual a quantidade de dados históricos disponível? Quem é o especialista dos dados? Entendimento dos Dados: Quantidade Número de instâncias (registros) Heurística: 5000 ou mais é desejável Se menos, os resultados são menos confiáveis; use métodos especiais (cross-validation, boostrap, ...) Caso o conjunto seja muito grande, use métodos de seleção de instâncias Número de atributos (campos) Caso o número de atributos seja muito “alto”, use seleção ou redução de atributos “Alto” vai depender, entre outras coisas, do número de instâncias disponível 5000 instâncias em que cada instância possui 600 atributos X 200 instâncias em que cada instância possui 600 atributos Número de instâncias por classe Para conjuntos desbalanceados (número de instâncias por classe diferentes), use uma amostragem extratificada Limpeza do Dados: Passos Aquisição de dados e metadados Valores perdidos Formato de data unificado Conversão de dados nominal para numérico Discretização de dados numéricos Validação dos dados e estatística Limpeza dos Dados: Aquisição Os dados podem estar em SGBD ODBC, JDBC Dados em flat file (tabela de dados) Formato largura fixa Formato delimitado: TAB, ponto-e-vírgula, ... O formato ARFF do WEKA usa vírgula como delimitador Atenção: converte também “delimitadores” dentro de valores de atributos do tipo string Verifique o número de atributos antes e depois do processamento Limpeza dos Dados: Exemplo Dados originais (formato largura fixa) 000000000130.06.19971979-10-3080145722 #000310 111000301.01.000100000000004 0000000000000.000000000000000.000000000000000.000000000000000.000000000000000.00000000 0000000.000000000000000. 000000000000000.000000000000000.0000000...… 000000000000000.000000000000000.000000000000000.000000000000000.000000000000000.000000 000000000.000000000000000.000000000000000.000000000000000.000000000000000.000000000000 000.000000000000000.000000000000000.000000000000000.000000000000000.000000000000000.000 000000000000.000000000000000.000000000000000.000000000000000.000000000000000.000000000 000000.00 0000000000300.00 0000000000300.00 Dados limpos 0000000001,199706,1979.833,8014,5722 , ,#000310 …. ,111,03,000101,0,04,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0300,0300.00 Limpeza dos Dados: Metadados Tipos de atributos Nominal, ordinal, numérico (escalar e razão) Para atributos nominais, definir tabelas que traduzam a codificação para as descrições completas Papel do atributo Entrada: instâncias para a modelagem (e.g., criação de uma árvore de decisão) Objetivo: saída Identificação da Instância: mantenha-o, mas não o use para a modelagem Ignore: não o use para a modelagem Peso: peso da instância .... Descritores de atributos Limpeza dos Dados: Reformatação Conversão dos dados para um formato padrão (e.g., ARFF ou CSV) Valores perdidos Formato unificado para data Discretização de dados numéricos Correção de erros e observações atípicas (outliers) Conversão de atributos ordinais para numérico (caso a implementação do método a ser utilizado não trabalhe diretamente com esse tipo de atributo) Por quê? Para ser capaz de utilizar comparações do tipo “>” e “<“ para esses atributos Limpeza dos Dados: Valores Perdidos (1/4) Dados perdidos Valor de atributo não disponível de uma instância sobre a qual outros valores de atributos estão disponíveis Processo de dados perdidos Qualquer evento sistemático externo ao respondente (como erros na entrada de dados ou problemas na coleta de dados) ou ação por parte do respondente (como recusa a responder) que conduz a valores perdidos Alguns processos de dados perdidos são fáceis de identificar e resolver Por exemplo, o valor de um atributo “anos-de-casado” seria inexistente (não aplicável) no caso de instâncias que representem adultos que nunca foram casados Outros processos de dados perdidos não são tão fáceis de identificar e acomodar Por exemplo, em certos contextos, o valor de um atributo “renda” pode não estar disponível porque a pessoa não quis informá-lo Limpeza dos Dados: Valores Perdidos (2/4) Identificação do processo de dados perdidos Os dados perdidos estão distribuídos ao acaso pelas instâncias ou são padrões distintos identificáveis? Qual é a freqüência dos dados perdidos? O impacto dos dados perdidos é prejudicial: Tendências “ocultas” potenciais sobre o resultado Impacto prático no tamanho do conjunto de dados (amostra) disponível Se atitudes corretivas sobre dados perdidos não são aplicadas, qualquer instância com atributos com valores perdidos será excluída da base de dados Limpeza dos Dados: Valores Perdidos (3/4) Dados perdidos ao acaso Considere, para fins de ilustração, dois atributos X (e.g., “sexo”) e Y (e.g., “renda”) de um conjunto de instâncias m (e.g., clientes de um banco). X não apresenta dados perdidos para as m instâncias, mas Y tem alguns. Se um processo de dados perdidos é identificado entre X e Y, em que há diferenças significastes nos valores de X que entre os casos para Y com dados válidos e perdidos, então os dados perdidos não aleatórios. Qualquer análise deve acomodar explicitamente o processo de dados perdidos entre X e Y, sob pena de serem introduzidas tendências nos resultados Exemplo: Atributos “sexo” e “renda” Primeiro, formaríamos dois grupos de instâncias, aquelas com dados perdidos para renda familiar e e aquelas que possuem este valor Compararíamos então os percentuais de “sexo” para cada grupo Se um sexo (e.g., masculino) fosse encontrado em maior proporção no grupo de dados perdidos, suspeitaríamos de um processo de dados perdidos não-aleatório Teste t-student para valores numéricos Deve-se analisar vários atributos para ver se um padrão consistente aparece Um segundo tratamento, uso correlações dicotomizadas para avaliar dados perdidos para qualquer par de atributos Limpeza dos Dados: Valores Perdidos (4/4) Dados completamente perdidos ao acaso Nesses casos, os valores observados de Y (e.g., “renda”) são verdadeiramente uma amostra aleatória de todos os valores de Y, sem qualquer processo inerente que conduza a tendências para os dados observados No exemplo anterior, isso seria mostrado pelo fato de que dados perdidos para renda familiar seriam perdidos ao acaso em iguais proporções tanto para o sexo masculino quanto para o feminino Se essa é a forma do processo de dados perdidos, quaisquer atitudes corretivas podem ser aplicadas sem levar em consideração o impacto de qualquer outra variável ou do processo de dados perdidos Dados Completamente Perdidos ao Acaso (1/2) Tratamento Abordagem de caso completo Incluir na base de dados apenas aquelas instâncias com dados completos Mais apropriada a casos nos quais a quantidade de dados perdidos é pequena, o conjunto de dados (amostra) é suficientemente grande para permitir a exclusão das instâncias com dados perdidos Desconsidere instância(s) e/ou atributo(s) Determina-se a extensão dos dados perdidos em cada instância e atributo. Baseado nisto, são excluídos as instâncias e/ou atributos com níveis excessivos De fato, pode-se descobrir que os dados perdidos estão concentrados em um pequeno subconjunto de instâncias e/ou atributos, sendo que sua exclusão reduz substancialmente a extensão dos dados perdidos Não existem orientações seguras sobre o nível necessário para a exclusão, mas qualquer decisão deve ser baseada em considerações empíricas e teóricas Se são descobertos valores perdidos no atributo que representa a “classe” (saída desejada), também chamada de variável dependente, a referida instância é excluída do conjunto de dados Se um atributo é eliminado, é recomendável que existam atributos alternativos que sejam altamente correlacionados com este, tal que possa representa sua influência Dados Completamente Perdidos ao Acaso (2/2) Tratamento Método de atribuição Atribuição é o processo de estimação de valores perdidos com base em valores válidos de outros atributos ou instâncias na base de dados Substituição pela média (ou moda): troca os valores perdidos de um dado atributo pelo valor médio do atributo para todo o conjunto (ou para o valor médio do atributo apenas para as instâncias na mesma classe) Atribuição por carta marcada: similar ao anterior, apenas o valor é definido é definido por fontes externas Atribuição por regressão: análise de regressão é usada para prever os valores perdidos de um atributo com base em sua relação com outros atributos no conjunto de dados Atribuição múltipla: dois os mais métodos de atribuição são usados para derivar uma estimativa composta para o valor perdido Válido apenas para atributos com valores métricos Por exemplo, como substituir o valor perdido para um atributo nominal como “sexo”? Limpeza dos Dados: Formato de Data Unificado Todas as datas devem ser transformadas para o mesmo formato interno Alguns sistemas aceitam datas em vários formatos “Sep 24, 2004”, 9/24/03, 24.09.2003, entre outros Datas são transformadas internamente para um valor padrão Representação de datas como AAAAMM ou AAAAMMDD pode ser OK, mas tem problemas: AAAAMMDD não preserva intervalos: 20040201 - 20040131 /= 20040131 - 20040201 Opções de Formato de Data Unificado A fim de se preservar intervalo, podemos usar Sistema de data do Unix: número de segundos desde 1970 Número de dias desde 01/Jan/1960 (SAS) Problemas Valores não são óbvios Não ajuda a intuição e descoberta de conhecimento Mais difícil de verificar, mas fácil de cometer um erro Formato de Data KSP dias_iniciando_Jan_1 - 0.5 Data KSP = AAAA + --------------------------------365 + 1_se_ano_bissexto Preserva intervalo (quase) O ano, como também suas subdivisões (semestres, trimestres, etc.) são óbvios 01/01/2005 é: 2005 + (1 - 0.5)/365 = 2005.0014 31/03/2005 é: 2005 + (90 - 0.5)/365 = 2005.2452 30/06/2005 é: 2005 + (181 - 0.5)/356 = 2005.4945 Pode ser estendida para incluir hora Conversão: Nominal para Numérico Algumas técnicas de AM manipulam internamente apenas com valores nominais Outras (redes neurais, regressão, k-NN) só trabalham com entradas numéricas Os valores de atributos nominais precisam ser transformados em valores numéricos Existem estratégias diferentes para atributos com valor binário, ordinal e nominal multi-valorado Conversão: Binário para Numérico Atributos binários Exemplo: Sexo = (M)asculino ,(F)eminino Converta para o Atributo_0_1 com os valores 0,1 Sexo = M Sexo_0_1 = 0 Sexo = F Sexo_0_1 = 1 Conversão: Ordinal para Numérico Atributos ordinais (e.g., grau_de_satisfação com um produto) podem ser convertidos para números preservando a ordem natural Muito Satisfeito Satisfeito Pouco Satisfeito Insatisfeito 0.8 0.6 0.4 0.2 Por que é importante preservar a ordem natural? Para permitir comparações que façam sentido: grau_de_satisfação > 0.4 Conversão: Nominal - Poucos Valores Atributos nominais multi-valorados um número pequeno de possíveis valores (e.g., < 20) Religião = Católica, Protestante, Budista, ..., Outras Para cada valor v de Religião, crie um um atributo binário R_v, que será 1 se Religião = v, 0 caso contrário: I D . . . R e l i g i ã o P e s s o a 1 B u d i s t a P e s s o a 2 C a t ó l i c o I D R _ C a t ó l i c a R _ P r o t e s t a n t e R _ B u d i s t a . . . P e s s o a 1 00 1 P e s s o a 2 10 0 Conversão: Nominal - Muitos Valores Exemplos Código Postal (CEP) de uma cidade Profissão (7000 valores, apenas algumas são mais freqüentes) Ignore atributos cujos valores são únicos para cada instância: RG, CPF, matrícula SIAPE, ... Para outros atributos, agrupe valores “naturalmente” 150 bairros (CEP) de Recife 3 ou 5 regiões Profissões - selecione a mais freqüentes, agrupe o resto Crie atributos binários para os valores selecionados Limpeza dos Dados: Discretização Alguns algoritmos de AM manipulam apenas com atributos com valores nominais Algumas implementações do Naive, CHAID, ... Para usá-los com bases de dados gerais, os atributos numéricos têm que ser, primeiro, “discretizados” em um pequeno número de intervalos distintos Além disso, embora a maioria dos algoritmos de indução de árvore de decisão ou regras possam lidar com atributos com valores numéricos, algumas implementações tornam-se muito lentas quando este tipo de atributo está presente No processo de indução, os valores desses atributos são repetidamente ordenados Discretização: Intervalos com Largura Fixa Temperatura: 64 65 68 69 70 71 72 72 75 75 80 81 83 85 Contador 2 2 4 2 0 2 2 [64,67) [67,70) [70,73) [73,76) [76,79) [79,82) [82,85] Low <= valor < High = Caixa Largura Fixa Discretização: Intervalos com Largura Fixa Não leva em consideração as classes no conjunto de dados discretização não-supervisionada Pode destruir distinções que poderiam ser útil para o algoritmo de aprendizado Tamanho do intervalo muito pequeno ou grande que termina por colocar, para o atributo, muitas instâncias de classes diferentes juntas Discretização: Entropia Mesmo critério usado para a divisão de um atributo numérico em árvores de decisão Ganho de Informação (Intervalo) = Entropia-Atual - EntropiaDepois-Divisao-do-Intervalo A cada passo, escolha o Intervalo para o qual o Ganho de Informação é máximo Leva em consideração as classes no conjunto de dados discretização supervisionada Exemplo - Temperatura 64 65 68 69 70 71 72 75 80 81 83 85 Y N Y Y Y N N Y N Y Y N 66.5 70.5 73.5 77.5 80.5 84 Limpeza dos Dados: Observações Atípicas (Outliers) Uma instância com uma combinação única de valores de atributos identificáveis como sendo notadamente diferente das outras instâncias As instâncias atípicas não podem ser categoricamente caracterizadas como benéficas ou problemáticas Devem ser vistas no contexto da análise e avaliadas pelos tipos de informação que possam fornecer Benéficas: podem ser indicativas de características da população que não seriam descobertas no curso normal da análise Problemáticas: não são representativas da população, são contrárias aos objetivos da análise e podem confundir os algoritmos de aprendizado Por que ocorrem observações atípicas? Erro na entrada de dados ou codificação Essas observações devem ser eliminadas da amostra - ou os valores atípicos devem ser considerados como dados perdidos Resultado de um evento extraordinário, o que explica a peculiaridade da observação Deve-se decidir se essa observação deve fazer parte da amostra (conjunto de dados) Resultado de em evento extraordinário, mas que não há explicação Em geral, são descartadas da amostra Observações que estão no intervalo usual de valores para cada atributo, mas são únicas em suas combinações de valores entre atributos Em geral, são mantidas na amostra Identificação de observações atípicas Detecção univariada Padronizar os valores dos atributos: média de 0 e desvio-padrão de 1 Considerar como observações atípicas aquelas instâncias que possuam valores de atributos com escore padrão 2.5 (4.0 para amostras como mais de 80 instâncias) ou mais Detecção bivariada Pares de atributos podem ser analisados conjuntamente por meio de um diagrama de dispersão (gráficos bidimensionais) Instâncias que notoriamente estão fora do intervalo das outras observações podem ser percebidos como pontos isolados no diagrama de dispersão Detecção multivariada A posição multidimensional de cada instância é medida em relação a um ponto comum A medida D2 de Mahalanobis pode ser usada para esse propósito Ela é uma medida da distância, em um espaço multidimensional, de cada instância em relação ao centro médio das instâncias Testes estatísticos de signifîcância Limpeza dos Dados: Falsos Preditores São atributos correlacionados ao comportamento objetivo, que descrevem eventos que ocorrem ao mesmo tempo ou após o comportamento objetivo Se bancos de dados não possuem as datas do eventos, um falso preditor aparecerá como um bom preditor Data do cancelamento de um serviço é um falso preditor para prever desentendimentos A média final de um estudante para prever se o mesmo foi aprovado no curso Falsos Preditores: encontrando “suspeitos” Para cada atributo Construa uma árvore de decisão com apenas este atributo Ou, no caso de regressão, compute a correlação com o atributo que representa a saída desejada Ordene todos os atributos de acordo com a acurácia da respectiva árvore (ou correlação) Remova todos os atributos cuja acurácia é próxima a 100% (este limiar é dependente do domínio) Verifique os “suspeitos” usando conhecimento do domínio ou com um especialista Limpeza dos Dados: Transformações de Dados (1/4) Um atributo pode ter uma característica indesejável, como não normalidade Por exemplo, muitos implementações do Naive assumem que a ocorrência dos valores de atributos numéricos obedecem a uma distribuição normal Atributos medidos em escalas com grau de magnitude muito diferente apresentam características indesejáveis: Quando medidas de distâncias são usadas (k-NN, métodos de agrupamento) Para o ajuste dos pesos de uma rede neural Limpeza dos Dados: Transformações de Dados (2/4) Transformações para atingir normalidade (para um atributo X) Distribuições “achatadas” 1/X Distribuições negativas SQRT(X) Distribuições positivas Log X Limpeza dos Dados: Transformações de Dados (3/4) Transformações para conseguir linearidade (par de atributos X e Y) Y Y2 Y Log Y; -1/Y; SQRT(Y) Log X; -1/X; SQRT(X) X2 X Y Log Y; -1/Y; SQRT(Y) X Y Y2 Log X; -1/X; SQRT(X) X2 X X Limpeza dos Dados: Transformações de Dados (4/4) Transformação por causa de unidades diferentes ou dispersões muito heterogêneas Escalonamento para [0,1] dos valores de um atributo X Valor-Escalonado = (x - min_X)/(max_X - min_X) Padronização dos valores de um atributo X (média de zero e desvio padrão de 1) Escore-Padrão = (x - média_X)/desvio_padrão_X Bibliografia Witten, I. H. and Frank, E. (1999). Data Mining: practical machine learning tools and techniques with Java implementations. Chapter 7 - Moving on: Engineering the input and output?, pp. 229264. Morgan Kaufmann. Hair-Jr., J. F. (2005). Análise Multivariada de Dados. Capítulo 2 - Examine seus dados, pp. 4988. Bookman.