Capítulo 9 • Métodos de Aprendizagem Supervisionados: PREDIÇÃO Introdução O objetivo dos modelos preditivos supervisionados é encontrar um modelo que corretamente associe as variáveis de entrada com a variável objetivo (target). A combinação de muitas variáveis preditoras (entradas, input), grandes bases de dados, e bons softwares facilita a construção destes modelos com potencial para revelar estruturas escondidas. Assim, os modelos preditivos supervisionados têm grande importância em data mining. Os modelos de regressão que iremos estudar neste curso usam variáveis contínuas ou binários como resposta (target). Em regressão nós procuramos ajustar uma função de regressão. As redes neurais usam os dois tipos de variáveis citadas, como também variáveis nominais e não apresentam uma função matemática explicitamente. Dados de Treinamento MODELO Característica: tem informações Identificar padrões válidos para a base inteira Após definir o modelo ajustado com os dados de treinamento, o mesmo deve ser validado com dados independentes do arquivo de treinamento, para cuidar de ter uma maneira de avaliar a qualidade do modelo em generalizar o que aprendeu. Como em todas as outras técnicas de data mining os métodos de aprendizagem supervisionados preditivos não estão imunes a uma má escolha do arquivo de treinamento, a regra é a seguinte: “Garbage in, garbage out” Neste capítulo estudaremos as seguintes técnicas: I. Redes Neurais II. Regressão Linear Múltipla III. Regressão Logística Objetivo: O objetivo principal dos modelos preditivos é modelar o relacionamento entre várias variáveis preditoras (inputs, independentes, explicativas) e uma variável resposta (target, saída, dependente). Aplicações dos métodos supervisionados Preditivos: Lembrando que mais de um método pode ser usado para resolver o mesmo objetivo ou problema. Regressão linear múltipla: quanto um consumidor irá gastar na sua próxima compra? Qual será o saldo do cartão de crédito de um correntista? quantidade de pedidos online uso de telefone celular Regressão logística: quando a resposta é binária (sim/não), a regressão logística binária pode estimar a probabilidade que um segurado (possui apólice de seguro) solicite formalmente suas garantias. Um usuário de um determinado software irá solicitar uma atualização? Um particular dono de casa irá solicitar o refinanciamento da sua casa própria no próximo trimestre? Um consumidor irá responder a uma oferta de mala direta? Redes neurais: pode ser aplicada para resolver todos os objetivos acima descritos. Redes Neurais Artificiais Redes neurais são uma classe de ferramentas muito poderosas, com propósitos gerais prontamente aplicáveis para: Predição Classificação Agrupamento Previsão (Séries temporais) Exemplos de aplicação: 1. Avaliar valores (predições) financeiros 2. Diagnósticos médicos 3. Identificar grupos de consumidores promissores 4. Identificar fraudes em transações com cartão de crédito 5. Predizer a taxa de falhas em máquinas 6. Vendas (prever valor) futuras Redes Neurais Entradas(Inputs) (Área da garagem) (Idade da casa) Camada escondida (hidden layer) x1 x2 Saídas(Outputs) y1 .. . (Valor da casa) y2 (depreciação da casa) Uma rede neural calcula y1 e y2 (saídas) a partir de x1 e x2 (entradas). O cálculo é um processo complexo que nós não precisamos entender para poder usar y1 e y2. Pense uma rede neural como uma “caixa preta” que processa variáveis de entrada para criar uma saída. Redes Neurais Diferentes topologias da rede permite: • • • • Predição: Classificação: Agrupamentos: Previsão (Séries temporais) Quando a saída de uma rede é uma variável quantitativa contínua, como o valor de uma casa, então ela esta resolvendo um problema de predição. Quando a saída são valores discretos, então ela está fazendo uma classificação. Ela pode também fazer uma análise de agrupamentos (redes de Kohonen). A rede neural para séries temporais treina como uma rede direta (feed-forward), com retropropagação (back propagation) procurando prever o próximo valor na série em cada passo. Redes Neurais Artificiais para Predição Treinamento Durante a primeira fase de uso de uma rede neural para predição, nós precisamos treinar a rede usando um grande número de exemplos de treinamento, onde as entradas e saídas são bem conhecidas. Por exemplo: para calcular o valor de vendas de uma casa ou apartamento, precisamos conhecer as vendas antecedentes, bem como uma série de variáveis que afetam os preços de venda. Um exemplo de registro de treinamento. Exemplo de um registro de treinamento Características Valor Preço de venda $ 171,000 Meses passados 4 Onde vive: casa, apto ou outra 1 Ano construção 1923 Número consertos nos encanamentos 9 Tipo de aquecimento B Garagem para x carros 0 Área anexa à garagem (square feet) 120 Área de living 1,614 Área de varanda aberta 0 Área de varanda fechada 210 Sala de recreação (área) 0 Área da casa 175 Detalhe técnico A rede neural trabalha melhor quando todos os valores de entrada e saída estão entre 0(zero) e 1(um). Portanto, todas as variáveis contínuas e categorizadas precisam ser transformadas para ter valores entre 0 e 1. Variáveis contínuas: Valor original - valor mínimo Valor transforma do Valor máximo - valor mínimo Variáveis categorizadas: *Cria A 0 Dois níveis B 1 A 0 ,0 * B 0 ,5 Três categorias C 1,0 uma ordenação. Uma outra abordagem é criar variáveis binárias (dummy’s) para cada valor. Característica Exemplo de um registro de treinamento Faixa Valor original Preço de venda Meses passados Onde vive: casa, apto ou outra Ano construção Número consertos nos encanamentos Tipo de aquecimento Garagem para x carros Área anexa à garagem (square feet) Área de living Área de varanda aberta Área de varanda fechada Sala de recreação (área) Área da casa $103,000-$250,000 0-23 1-3 1850-1986 5-17 $ 171,000 4 1 1923 9 Valor transformado 0,4625 0,1739 0 0,5367 0,3333 A ou B 0-2 0-228 B 0 120 1 0 0,5263 714-4,185 0-738 0-452 0-672 0-810 1,614 0 210 0 175 0,2593 0 0,4646 0 0,2165 A saída da rede também vai ser um número entre zero e um e, portanto, precisa ser retransformado para valores os originais. Por exemplo, para o valor de venda predito 0,75, temos: X 103000 0 ,75 X $213,250 ( 250000 103000) Redes neurais para data mining supervisionado Usos mais comuns da rede neural: construir modelos para classificação e predição. Os passos neste processo são: 1. Identificar as variáveis (características) de entrada (inputs) e saídas(outputs). 2. Transformar as variáveis de entrada e saídas de tal forma que a sua amplitude fique na faixa de 0 a 1. 3. Escolher a rede com uma topologia adequada. 4. Treinar a rede com um conjunto representativo de exemplos de treinamento. 5. Validar a rede com um conjunto de validação totalmente independente dos exemplos de treinamento. Se necessário, repita o treinamento, ajustando o conjunto de treinamento, a topologia da rede, e parâmetros. Testar a rede usando um conjunto de teste para ver quão boa é sua performance. 6. Aplicar o modelo gerado pela rede para fazer predições com entradas desconhecidas. Divisão do arquivo de dados Arquivo de treinamento Arquivo de validação Arquivo de teste As redes neurais são treinadas usando apenas o arquivo de treinamento. Porém, existe a necessidade de se saber o momento de parar com a fase de treinamento, pois existe o perigo de um supertreinamento da rede e, neste caso, a rede perde o seu poder preditivo. Para contornar o perigo de memorização por parte da rede, confronta-se o modelo gerado com a base de validação. O arquivo de teste é usado para fazer uma verificação independente da performance da rede, isto é, serão usados registros nunca vistos pela rede. A taxa de erro observada no arquivo de treinamento é uma boa estimativa da taxa de erro para registros novos. O que é uma rede neural? Exemplos: Input 1 Input 2 Output Input 3 Input 4 Uma rede neural bastante simples com 4 entradas (inputs) e produz uma saída (output, uma resposta). O resultado do treinamento desta rede é exatamente equivalente à técnica estatística chamada de regressão logística. Input 1 Input 2 Output Input 3 Input 4 Camada escondida (hidden layer) Esta rede tem uma camada intermediária chamada de camada escondida (hidden layer). A camada escondida faz a rede mais poderosa no sentido de capacitá-la a reconhecer mais padrões. Input 1 Input 2 Output Input 3 Input 4 Aumentando o tamanho da camada escondida faz a rede apresentar mais poder, porém traz à rede o perigo de um ajuste muito grande (overfitting). Geralmente é necessário uma única camada escondida. Input 1 Input 2 Input 3 Output 1 Output 2 Output 3 Input 4 Uma rede neural pode produzir vários valores de saída. As 4 redes ilustradas até este ponto são redes neurais diretas (feed-forward). As redes neurais diretas são as mais simples e o tipo mais usual. Há três questões básicas que devem serem feitas sobre elas: i. O que são unidades e como elas funcionam? Isto é, o que é a função de ativação? Direta, Cíclica(recorrente, competitiva) ii. Como são as unidades conectadas entre elas? Isto é, qual é a topologia da rede? iii. Como a rede aprende a reconhecer os padrões? Isto é, o que é retropropagação (back propagation) e mais geral como a rede neural é treinada? As respostas a essas questões fornecem um conhecimento para entender uma rede neural básica, conhecimento que fornece orientação para obter melhores resultados desta poderosa técnica de data mining. O que é uma unidade de uma rede neural? As redes neurais artificiais são compostas de unidades básicas desenhadas para modelar o comportamento dos neurônios biológicos. Veja figura no próximo slide. O resultado é exatamente um valor de saída, usualmente entre 0 e 1 ou entre -1 e 1. output A função transferência calcula o valor de saída a partir do resultado da função de combinação A função de combinação e a função de transferência juntas constituem a função de ativação A função de combinação une todas as entradas num só valor, usualmente como uma soma ponderada. Viés w1 w2 Entradas w3 Cada entrada tem seu próprio peso, além disso tem um peso adicional chamado de viés. Figura. A unidade de uma rede neural artificial é modelada segundo o neurônio biológico. A saída da unidade é uma combinação não linear das entradas. A função de ativação tem duas partes: 1. Função de combinação 2. Função de transferência A primeira parte é a função de combinação que une todas as entradas num único valor. Como mostra a figura do slide anterior cada entrada numa unidade tem seu próprio peso. A função de combinação mais comum é a soma ponderada, onde cada entrada é multiplicada pelo seu peso. Após faz-se o somatório desses produtos. Esta função é boa para a maioria das situações. A segunda parte recebe este nome devido ao fato que ela transfere o valor da função de combinação para a saída da unidade. A próxima figura compara três funções de transferências típicas: as funções logística, linear e tangente hiperbólica. Três f unções de transf erências comuns 1,0 Linear Tangente hiperbólica Logística Valores da função 0,5 0,0 -0,5 -1,0 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 X 1 2 3 4 5 6 7 8 9 10 A forma da função é importante. A função linear tem valor prático limitado. Uma rede neural direta formada apenas de unidades com função de transferência linear é equivalente a uma regressão linear simples. As curvas logística e tangente hiperbólica são funções não lineares e resultam num comportamento não linear. A maior diferença entre elas está na faixa de suas saídas, entre 0 e 1 para a logística, e entre –1 e 1 para a tangente hiperbólica. A função de transferência mais comum é a logística. A fórmula da função logística é: 1 Logística( x) 1 e x Onde x é o resultado da função de combinação, tipicamente é a soma ponderada das entradas nas unidades. Redes neurais diretas (“Feed-forward Neural Networks”) A figura no próximo slide ilustra como uma rede neural direta calcula os valores de saída a partir dos valores de entrada. A topologia ou arquitetura desta rede é bem típica das redes usadas para predição e classificação. As unidades são organizadas em três camadas. A camada da esquerda é conectada às entradas, cujos valores foram transformados para estar dentro da faixa de 0 e 1. Estas unidades são a camada de entrada da rede. Cada unidade na camada de entrada é conectada exatamente a uma variável de entrada. A próxima camada é chamada de camada escondida. Esta rede contém unidades padrões. As unidades na camada escondida calculam sua saída multiplicando o valor de cada entrada pelo seu correspondente peso, fazendo a soma dos resultados, e aplicando a função logística. Uma rede neural pode ter qualquer número de camadas escondidas, porém, geralmente, uma camada é suficiente. 0,0000 0,5328 Constante(viés) -0,231 -0,2164 0,3333 0,479 1,000 Num_apartments Year_Built Plumbing_Fixture Heating_type Basement_garage Attached_garage Living_area Deck_area Porch_area Recrron_area Basement_area 1 1923 9 B 0 120 1614 0 210 0 175 0 0,5367 0,3333 1 0,0000 0,5263 0,2593 0,0000 0,4646 0,0000 0,2165 0,000 0,5263 0,2593 0,583 0,0000 0,332 0,4646 0,0000 0,2165 Camada entrada 0,4213 0,573 0,49815 $176,2 0,335 0,0002 Pesos entrada Saída da unidade Camada saída Camada escondida Se aumentar o número de unidades da camada escondida, maior é a capacidade da rede de reconhecer padrões. Porém isto pode acarretar um problema: desejamos que a rede aprenda a generalizar os resultados sobre o arquivo de treinamento, e não que ela memorize (decorre) o arquivo de treinamento. Portanto, a rede não deve ter uma camada escondida muito grande. A última unidade à direita (com um só neurônio) é a camada de saída (“output layer”) pois ela está ligada à saída da rede neural. Na maioria das vezes, a rede neural é usada para calcular um valor, assim, só há uma unidade na camada de saída e o valor por ela fornecida está dentro da faixa de 0 a 1. Nós devemos transformar este valor para interpretá-lo. Na figura o valor 0,49815 para $176,228, o qual está bem próximo do seu valor real $171,000. Camada de saída com mais de uma unidade. Exemplo: Uma loja de departamentos deseja predizer a probabilidade dos consumidores comprarem produtos de vários departamentos (roupas femininas, móveis e entretenimento). As lojas desejam estes resultados para planejar promoções e fazer uma lista para enviar os catálogos. Na próxima figura temos a rede com mais de uma saída usada, para predizer o departamento onde os consumidores irão fazer sua próxima compra. Última compra Idade Gênero Saldo Propensão para roupas femininas Propensão para móveis Propensão para entretenimento cartão Após fornecer as entradas de um fornecedor na rede, ela calcula os três valores de saída. Dados estes valores, como pode a loja de departamentos determinar a promoção correta, ou promoções, para oferecer ao consumidor? Alguns métodos são: pegar o departamento correspondente à unidade com valor máximo; pegar todos os departamentos correspondentes às unidades que excedem algum determinado valor ; pegar todos os departamentos correspondentes às unidades que são alguma porcentagem da unidade com valor máximo. Na prática tentamos várias dessas possibilidades no arquivo de teste para saber qual funciona melhor na presente aplicação. Como a rede neural aprende usando retropropagação? Treinar a rede é o processo de encontrar os melhores pesos para as entradas de cada uma das unidades. O objetivo é usar o arquivo de treinamento para produzir pesos, onde a saída (output) da rede seja bem próximo do desejado para muitos exemplos do arquivo de treinamento. A técnica mais comum para fazer isso é a retropropagação. Três passos: 1. A rede pega um exemplo do arquivo de treinamento e, usando os pesos atuais da rede, calcula a saída ou saídas para o exemplo. 2. Retropropagação então calcula o erro, fazendo a diferença entre o resultado calculado e o resultado real. 3. O erro é usado pela rede e os pesos são ajustados para minimizá-lo. O algoritmo de retropropagação calcula um erro geral da rede neural comparando os valores produzidos sobre cada exemplo de treinamento para o valor real. Ela então ajusta os pesos da camada de saída para reduzir, mas não eliminar, o erro. Entretanto, o algoritmo ainda não terminou. Ela então atribui a “culpa” para os nós anteriores da rede e ajusta os pesos conectando aqueles nós, adicionalmente reduzindo o erro geral. A escolha do arquivo de treinamento O arquivo de treinamento consiste de registros cujos valores de predição ou classificação já são conhecidos. A escolha de um bom arquivo de treinamento é crucial. Abrangência dos valores para todas as características A consideração mais importante é que o arquivo de treinamento precisa cobrir a faixa completa dos valores para todas as características que a rede pode encontrar, incluindo a saída. Por exemplo, incluir casas com valores baixos e altos, casas grandes e pequenas, casas com e sem garagem. Em geral, é uma boa idéia ter vários exemplos no arquivo de treinamento para cada valor de uma característica categorizada e para uma faixa de valores para características discretas ordenadas e contínuas. As entradas na rede neural devem estar na faixa 0 e 1. Entretanto é recomendável deixar uma folga ao redor desses limites, considerando os valores mínimo e máximo como sendo 0,1 e 0,9. O número de características (variáveis) Quanto maior o número de variáveis de entrada, maior deverá ser a rede neural, aumentando o risco de supertreinamento da rede e necessidade de maior número de registros de treinamento. O tempo necessário para treinar uma rede está diretamente relacionado com o número de variáveis de entrada usadas na mesma; quanto mais características (variáveis) são usadas, maior é o tempo para a rede convergir. Um grande problema é que quanto mais aumenta o número de variáveis de entrada, a chance da rede convergir para uma solução de qualidade inferior aumenta. Descartar características que não tenham poder preditivo ajuda a aumentar o poder preditivo da rede neural. Tente outras variáveis e verifique quais delas melhora a rede. Em muitos casos é necessário calcular novas variáveis que representam aspectos particular do problema. Por exemplo, R$/m2. Pode-se usar outras técnicas para determinar quais características são importantes para o propósito de predição. Pode-se usar, por exemplo: correlações ou árvores de decisão. O número de exemplos de treinamento Geralmente, quanto mais características há na rede neural, mais exemplos de treinamento são necessários para abranger os padrões nos dados. Geralmente um mínimo de poucas centenas de exemplos são necessários para cada característica. Quando o tamanho do arquivo de treinamento não é grande o suficiente, a rede tende a decorar os dados. O número de saídas Por exemplo, se a rede neural vai ser usada para detectar eventos (saídas) raros e caros, tais como: taxa de falhas de motores a diesel, uso fraudulento do cartão de crédito; então você precisa ter certeza que o arquivo de treinamento tem um número suficiente de exemplos desses eventos raros. Uma amostra aleatória dos dados disponíveis não é suficiente, pois os exemplos não raros (comuns) vão “afundar” os exemplos raros. Para contornar este problema, o arquivo de teste precisa ter muitos exemplos raros, portanto deve-se fazer uma amostragem estratificada. Por exemplo, tomar 10.000 “bons” exemplos e 10.000 “maus” exemplos. Preparando os dados Preparar os dados de entrada é freqüentemente a parte mais complicada do uso de uma rede neural. Uma parte do problema é a transformação das variáveis de tal forma que os seus valores fiquem dentro da faixa de 0 a 1. Variáveis contínuas (Intervalares) Exemplos: valores em reais (preços de venda, vendas semanais, rendimentos) médias (volume médio de vendas) taxas medidas físicas (áreas, temperaturas) Quando as características tem um amplitude bem definida, com valores mínimos e máximos, como por exemplo, preços de venda da casa, então podemos facilmente transformar os valores fazendo: valor original - valor mínimo valor transform ado valor máximo - valor mínimo O que fazer se os valores máximos e mínimos não forem conhecidos? Alguém poderia construir uma casa nova com 5,000 s.f. (s.f.=square feet) de área de living, enquanto que a rede foi treinada para valores na faixa de 714 a 4185 s.f., portanto, não podemos usar os resultados da rede. Algumas abordagens do problema podem ser: • Planejar para uma faixa maior. Ao invés de usar para os valores mínimo e máximo 714 e 4185, respectivamente, usar 500 a 5000. • Rejeitar valores fora da faixa de estudo. Apenas use a rede para faixas prédefinidas de valores de entrada. • Para valores menores do que o mínimo, designar o valor mínimo e para valores maiores do que o máximo, designar o valor máximo(Problema se tiver correlação: área e preço). • Estipular para o mínimo o valor 0,1 e para o máximo o valor 0,9 ao invés de 0 e 1 respectivamente. Com isso use a seguinte fórmula: valor transforma do (0,9 0,1)( valor original valor mínimo ) 0,1 valor máximo - valor mínimo Esta transformação não muda a distribuição dos dados. Outro problema: distribuições assimétricas Por exemplo, se a distribuição da variável rendimento é assimétrica, a rede é incapaz de usar efetivamente esta importante variável. A rede neural vai ter dificuldade para usar este importante campo. A maneira mais comum de resolver este problema é discretizar a variável. Por exemplo (Percentis): $10,000-$17,999 muito baixo ( 20% menores) $18,000-$31,999 baixo (> 20% a 40%) $32,000-$63,999 médio (> 40% a 60%) $64,000-$99,999 alto (> 60% a 80%) $100,000 ou mais muito alto(> 80% a 100%) Outra maneira de resolver o problema é fazer uma transformação, por exemplo, a transformação logarítmica (log base 10). Fazendo o log das vendas vai convertê-las na faixa de 4 a 6. A tabela compara os resultados. Tabela. Diferentes maneiras de transformar a variável rendimento Renda Renda Log(renda) Log(renda) transformada transformado $ 10,000 0,0101 4,0000 0,0000 $ 18,000 0,0182 4,2553 0,1276 $ 32,000 0,0323 4,5051 0,2526 $ 63,000 0,0636 4,7993 0,3997 $ 100,000 0,1010 5,0000 0,5000 $ 250,000 0,2525 5,3979 0,6990 $ 800,000 0,8081 5,9031 0,9515 $ 1,000,000 1,0101 6,0000 1,0000 Variáveis ordinais, discretas Exemplos de variáveis ordinais: • Contagens (número de crianças, número de itens comprados, meses passados desde a última compra) • Categorias ordenadas (baixo, médio, alto) Por exemplo, o número de crianças pode ir de 0 até 4; qualquer valor maior do que 4 podemos considerar como sendo igual a 4. A transformação é simples. Primeiro contamos quantos valores diferentes existem. Neste caso existem 5 valores diferentes: 0, 1, 2, 3, 4. Desejamos atribuir valores igualmente espaçados na faixa de 0 a 1. Temos, portanto: • 00,00 •10,25 •2 0,50 •3 0,75 •4 1,00 Isto preserva a ordem, ou seja, não há perda de informação. Variáveis categorizadas (nominal) Exemplos: • gênero, estado civíl • códigos de produtos • CEP Embora CEP seja número, ele é uma variável nominal, pois a ordenação tem pouco significado. Existem duas maneiras de tratar com variáveis categorizadas: I. A primeira delas é tratar os códigos como variáveis discretas, valores ordenados, e atribuir valores usando o método discutido na seção anterior. Infelizmente a rede neural não entende que os códigos não são ordenados. Assim, se nós estamos tentando transformar os códigos para estado civíl: solteiro, divorciado, casado, viúvo e desconhecido, então essas categorias são transformadas em: 0,00, 0,25, 0,50, 0,75 e 1,00, respectivamente. Veja que solteiro está bem distanciado de desconhecido e bem próximo de divorciado. As vezes isto pode confundir a rede. Ela não entende que os códigos não são ordenados> II. A segunda maneira é através da criação de variáveis dummy(zero e um), uma variável dummy para cada categoria. Por exemplo, considere que temos 3 categorias para gênero: masculino, feminino e desconhecido. Para cada categoria podemos considerar uma variável dummy conforme a tabela: Uso de variáveis binárias Gênero Variável binária Masculino Feminino Desconhecido Masculino 1 0 0 Feminino 0 1 0 Desconhecido 0 0 1 Outros tipos de variáveis Por exemplo, datas ou tempo podem ser representados como o número de dias ou segundos a partir de um determinado ponto, permitindo, assim, que os dados sejam transformados e utilizados na rede. Interpretando os resultados Foi realizado a transformação dos dados para entrarem na rede neural, portanto, precisamos calcular os seus valores inversos para interpretá-los. Por exemplo, a rede pode ter sido usada para calcular o valor de uma casa. No arquivo de treinamento, para o valor $103,000 (valor mínimo) é atribuído o valor 0,1, e para o valor $250,000 (valor máximo) é atribuído o valor 0,9. Posteriormente, se o modelo é aplicado para uma outra casa e a saída da rede for 0,5, então devemos saber que (transformação inversa): valor mínimo transformado máximo mínimo valor 103.000 0,5 250.000 103.000 valor 176.500 Variáveis binárias ou categorizadas Na predição com variáveis binárias ou categorizadas a rede apresenta valores contínuos, no intervalo de zero(0) a um (1) a saída precisa ser calibrada para determinar qual faixa corresponde para qual valor. Abordagem simplista: arbitrariamente estabelecer que qualquer valor menor que 0,5 corresponde a um valor, e que qualquer valor acima de 0,5 corresponde ao outro valor. O valor 0,5 pode ir para qualquer dos dois valores. Outra abordagem: dividir o intervalo em três partes, qualquer valor menor do que 0,33 é designado a uma categoria, qualquer valor maior do que 0,67 vai para a outra, e o resto declarado desconhecido. Existe uma abordagem melhor? Sim. Para descrever como interpretar os resultados de uma rede neural utiliza-se o arquivo de teste. A figura no próximo slide mostra alguns resultados típicos de uma rede neural. 1,0 B B B B A A B 0,5 A A A 0,0 Figura. Rodando uma rede neural com 10 exemplos de teste, do arquivo de teste, pode ajudar a determinar como interpretar os resultados. Neste caso a rede neural está classificando os dados em duas classes. A maioria dos registros da categoria A está na parte inferior da figura, enquanto a maioria dos registros da categoria B está na parte superior da figura. Porém existem algumas exceções. Podemos ver que qualquer registro com valor inferior a 0,62 deveria pertencer a categoria A, e que qualquer registro com valor maior do que 0,64 deveria pertencer a categoria B, então vamos decidir que o ponto de corte deveria ser o valor 0,63. Uma outra abordagem que poderia ser dada para variáveis binárias é usar uma rede neural que produza duas saídas (2 outputs), uma para a categoria A e outra para a categoria B. Assim, se a saída fosse, por exemplo, 0,8 e 0,2, então diríamos que o registro tem 80% de chance de ser da categoria A e 20% de chance de ser da categoria B. O problema são resultados do tipo 0,1 para A e 0,3 para B. Vamos designá-lo à classe B com 30% de confiança? Ou, vamos dizer que ele tem 3 vezes mais chance de ser da categoria B e, portanto, tem 75% de chance de ser desta categoria? Novamente, o arquivo de teste pode ajudar a determinar qual faixa de valores pode fornecer os melhores resultados. Rodando a rede com o arquivo de teste, pode-se entender a precisão dos seus resultados. A abordagem é a mesma para três ou mais categorias em consideração. Aqui também aparece o problema da rede fornecer valores intermediários. Aqui também deve-se usar o arquivo de teste para saber-se dos valores de saída que a rede neural está produzindo. Interpretando estes resultados, o analista pode definir faixas corretas para fazer, por exemplo, segmentação de mercado. O processo é o mesmo ilustrado na figura do slide número 40. Observação: considere que a rede está sendo usada para predição de 3 categorias, ou seja, deseja-se fazer uma campanha com três segmentações. Uma sugestão é planejar a rede para ter três saídas. Heurísticas para o uso de redes neurais diretas com retropropagação. Provavelmente, a principal decisão é sobre o número de unidades na camada escondida. Quanto mais unidades, mais padrões a rede pode reconhecer. O uso de um grande número de unidades tem alguma desvantagem. A rede pode decorar o arquivo de treinamento, assim, perdendo o poder de generalização. Felizmente é possível saber se uma rede está supertreinada. Se a rede tiver um desempenho muito bom no arquivo de treinamento, porém, não apresenta resultados tão bons no arquivo de validação, isto é sinal que a rede memorizou o arquivo de treinamento. Qual deveria ser o tamanho da camada escondida? Depende dos dados, do padrão a ser determinado e do tipo de rede. Uma boa indicação é começar com uma camada escondida que não seja maior do que o tamanho da camada de entrada. Na maioria dos problemas pode-se começar com uma, duas ou três unidades na camada escondida. Pode-se diminuir ou aumentar a camada escondida caso a rede esteja supertreinada ou com pouca precisão, respectivamente. Quando se está usando uma rede para problemas de classificação, deve-se iniciar com uma unidade escondida para cada classe. Outra decisão é quanto ao número de exemplos de treinamento. Deve ser o suficiente para cobrir a faixa de entradas disponíveis para cada característica. Considere (exemplos de treinamento para cada peso): S como sendo o número de variáveis de entrada (número de unidades na camada de entrada); H como sendo o número de unidades escondidas; Uma saída. Existe H * S 1 H 1 pesos na rede (cada nó da camada escondida tem 1 peso para cada conexão com a camada de entrada, 1 peso adicional para o viés, e então uma conexão com a camada de saída e o seus viéses. Exemplo: considere S=15 e H=10. 10* 15 1 10 1 171 Assim, a rede tem 171 pesos. Deveria ter pelo menos 30 exemplos para cada peso, porém o ideal seria 100. Assim, o arquivo de treinamento deveria ter 17.100 exemplos. A taxa de aprendizagem e os parâmetros de momento são importantes para a convergência da rede, ou seja, para se chegar a uma solução mais rapidamente. Uma sugestão é utilizar uma taxa de aprendizagem na faixa de 0,05 até 0,25. Usar parâmetro de momento como 0,80 ou 0,90. Taxa de aprendizagem: controla a rapidez com que os pesos se alteram. A melhor abordagem é começar com taxa alta e ir vagarosamente diminuindo. Momento: controla a direção, isto é, cada peso lembra se ele ficou maior ou menor, e o momento mantêm os pesos irem na mesma direção. Momento alto a rede responde vagarosamente para novos exemplos de treinamento. Momento baixoos pesos oscilam mais livremente. Uma técnica para ajustar os pesos é o delta generalizado. Poder das redes neurais artificiais As redes neurais são aplicadas numa gama bastante grande de problemas Elas produzem bons resultados mesmo em domínios complicados Podem ser utilizadas tanto para variáveis categorizadas como contínuas Estão disponíveis em diversos pacotes computacionais As redes neurais são aplicadas numa gama bastante grande de problemas Quando a saída de uma rede é uma variável contínua, como o valor de uma casa, então ela esta resolvendo um problema de predição. Quando a saída são valores discretos, então ela está fazendo uma classificação. Ela pode também fazer uma análise de agrupamentos. Elas produzem bons resultados mesmo em domínios complicados Análise de séries temporais Podem ser utilizadas tanto para variáveis categorizadas como contínuas Embora os dados precisem ser transformados, as redes neurais podem ser usadas para variáveis categorizadas ou contínuas, tanto como variáveis de entrada (input) ou saída (output). Estão disponíveis em diversos pacotes computacionais Devido a sua versatilidade e bons resultados, muitos vendedores de software disponibilizam a ferramenta de redes neurais. Muitas bases de dados estão localizadas em mainframes ou sistemas de base de dados relacionais. Existe ferramenta de redes neurais para esta situação. Aplicação das redes neurais artificiais As redes neurais não trabalham bem quando existem centenas ou milhares de variáveis de entrada. Isto dificulta muito a rede a encontrar padrões e a fase de treinamento pode ficar muito longa, não convergindo para a melhor solução. Aqui, redes neurais podem trabalhar melhor quando em combinação com árvores de decisão. As árvores de decisão são boas para a escolha das variáveis mais importantes e, estas podem então ser usadas para treinar a rede neural. Pode-se usar a técnica estatística de componentes principais. Exemplo A base de dados que será estudada é relativa à valores de imóveis de um determinado município. O objetivo é predizer o valor de um imóvel em função de variáveis de entrada, tais como: área total do imóvel, localização, padrão do imóvel, etc. Uma parte dos dados é: