Como desenvolver uma rede neural para prever distúrbios na ionosfera

Como desenvolver uma rede neural para prever distúrbios na ionosfera

Pode ser desafiador desenvolver um modelo preditivo de rede neural para um novo conjunto de dados.

Uma abordagem é primeiro inspecionar o conjunto de dados e desenvolver ideias para quais modelos podem funcionar, em seguida, explorar a dinâmica de aprendizagem de modelos simples no conjunto de dados e, finalmente, desenvolver e ajustar um modelo para o conjunto de dados com um robusto equipamento de teste.

Este processo pode ser usado para desenvolver modelos de rede neural eficazes para problemas de modelagem preditiva de classificação e regressão.

Neste tutorial, você descobrirá como desenvolver um modelo de rede neural Multilayer Perceptron para o conjunto de dados de classificação binária da ionosfera.

Depois de concluir este tutorial, você saberá:

  • Como carregar e resumir o conjunto de dados da ionosfera e usar os resultados para sugerir preparações de dados e configurações de modelo a serem usadas.
  • Como explorar a dinâmica de aprendizagem de modelos MLP simples no conjunto de dados.
  • Como desenvolver estimativas robustas de desempenho do modelo, ajustar o desempenho do modelo e fazer previsões sobre novos dados.

Vamos começar.

Como desenvolver uma rede neural para prever distúrbios na ionosfera

Como desenvolver uma rede neural para prever distúrbios na ionosfera
Foto de Sergey Pesterev, alguns direitos reservados.

Visão geral do tutorial

Este tutorial é dividido em quatro partes; eles estão:

  1. Conjunto de dados de classificação binária da Ionosphere
  2. Dinâmica de aprendizagem de rede neural
  3. Avaliação e ajuste de modelos de MLP
  4. Modelo final e fazer previsões

Conjunto de dados de classificação binária da Ionosphere

A primeira etapa é definir e explorar o conjunto de dados.

Estaremos trabalhando com o “Ionosfera”Conjunto de dados de classificação binária padrão.

Este conjunto de dados envolve prever se uma estrutura está na atmosfera ou não com retornos de radar.

Você pode aprender mais sobre o conjunto de dados aqui:

Você pode ver as primeiras linhas do conjunto de dados abaixo.

Podemos ver que os valores são todos numéricos e talvez na faixa [-1, 1]. Isso sugere que provavelmente algum tipo de escala não seria necessário.

Também podemos ver que o rótulo é uma string (“g" e "b“), Sugerindo que os valores precisarão ser codificados para 0 e 1 antes de ajustar um modelo.

Podemos carregar o conjunto de dados como um DataFrame do pandas diretamente da URL; por exemplo:

A execução do exemplo carrega o conjunto de dados diretamente do URL e relata a forma do conjunto de dados.

Neste caso, podemos ver que o conjunto de dados possui 35 variáveis ​​(34 entradas e uma saída) e que o conjunto de dados possui 351 linhas de dados.

Não são muitas linhas de dados para uma rede neural e sugere que uma pequena rede, talvez com regularização, seria apropriada.

Também sugere que o uso de validação cruzada k-fold seria uma boa ideia, dado que dará uma estimativa mais confiável do desempenho do modelo do que uma divisão de treinamento / teste e porque um único modelo caberá em segundos em vez de horas ou dias com o maiores conjuntos de dados.

A seguir, podemos aprender mais sobre o conjunto de dados observando as estatísticas de resumo e um gráfico dos dados.

A execução do exemplo carrega primeiro os dados antes e depois imprime as estatísticas de resumo para cada variável.

Podemos ver que os valores médios de cada variável estão na casa das dezenas, com valores variando de -1 a 1. Isso confirma que provavelmente não é necessário dimensionar os dados.

Um gráfico de histograma é então criado para cada variável.

Podemos ver que muitas variáveis ​​têm uma distribuição gaussiana ou semelhante a gaussiana.

Podemos ter alguns benefícios em usar uma transformação de potência em cada variável para tornar a distribuição de probabilidade menos distorcida, o que provavelmente melhorará o desempenho do modelo.

Histogramas do conjunto de dados de classificação da ionosfera

Histogramas do conjunto de dados de classificação da ionosfera

Agora que estamos familiarizados com o conjunto de dados, vamos explorar como podemos desenvolver um modelo de rede neural.

Dinâmica de aprendizagem de rede neural

Desenvolveremos um modelo Multilayer Perceptron (MLP) para o conjunto de dados usando TensorFlow.

Não podemos saber qual arquitetura de modelo de hiperparâmetros de aprendizado seria boa ou melhor para esse conjunto de dados, portanto, devemos experimentar e descobrir o que funciona bem.

Dado que o conjunto de dados é pequeno, um tamanho de lote pequeno é provavelmente uma boa ideia, por exemplo, 16 ou 32 linhas. Usar a versão Adam da descida gradiente estocástica é uma boa ideia ao começar, pois ela se adapta automaticamente à taxa de aprendizado e funciona bem na maioria dos conjuntos de dados.

Antes de avaliarmos os modelos a sério, é uma boa ideia revisar a dinâmica de aprendizado e ajustar a arquitetura do modelo e a configuração de aprendizado até que tenhamos uma dinâmica de aprendizado estável e, em seguida, observe como obter o máximo do modelo.

Podemos fazer isso usando uma divisão simples de treinamento / teste dos dados e gráficos de revisão das curvas de aprendizado. Isso nos ajudará a ver se estamos aprendendo demais ou subaprendendo; então podemos adaptar a configuração de acordo.

Primeiro, devemos garantir que todas as variáveis ​​de entrada sejam valores de ponto flutuante e codificar o rótulo de destino como valores inteiros 0 e 1.

Em seguida, podemos dividir o conjunto de dados em variáveis ​​de entrada e saída e, em seguida, em conjuntos de treinamento e teste 67/33.

Podemos definir um modelo MLP mínimo. Nesse caso, usaremos uma camada oculta com 10 nós e uma camada de saída (escolhida arbitrariamente). Usaremos a função de ativação ReLU na camada oculta e o “he_normal”Inicialização de peso, pois juntos, eles são uma boa prática.

O...

Você também pode estar interessado em