Classificação usando Rede Neural

Written by:

Com o dataset Lower Back Pain.

Continuando a revisão do pequeno curso de Machine Learning da Puc-Rio, como citado aqui.

Nesta aula foi apresentada uma implementação simples de uma MLP, usando a biblioteca Keras na solução de um problema de classificação supervisionada binária, com o conjunto de dados Lower Back Pain:

O dataset é categórico com 2 classes:

  • Normal: coluna saudável
  • Abnormal: presença de alguma alteração estrutural lombar

E os 12 atributos são observações de exames de imagens da coluna vertebral. Em geral são medidas da coluna e do tórax que estão relacionadas com a presença de problemas “em qualquer parte da complexa rede interconectada de músculos, nervos, ossos, discos ou tendões da coluna lombar“.

Neste notebook do Kaggle, com link no final do post, eu fiz um pouco de análise das features, e tratamento de overfitting. Além disso foi a introdução do mais cobiçado conhecimento na área de machine learning, que é “como criar sua primeira MLP (ou RNA, um rede neural artificial simples)”.

Essa parte do conhecimento sobre redes neurais é ao mesmo tempo a que mais atrai o interesse de estudantes de ML, e a que mais os assusta. Todos querem criar uma MLP e começar a trabalhar com problemas de Deep Learning, e ao mesmo tempo, todos sabem da complexidade dos conceitos que estão por trás desse assunto.

Por isso é importante, num primeiro momento, entender como criar a rede usando uma biblioteca como Keras, que já entrega grande parte do código pronto, e esconde conceitos como backpropagation, cálculo de gradiente, manipulação de tensores, etc. O foco inicial é na montagem da arquitetura da rede: tipos de camadas, funções de ativação, tamanho da rede e interpretação de resultados.

No notebook vemos uma rede neural simples MLP (Multilayer Perceptron) composta por camadas totalmente conectadas (Dense), capaz de aprender padrões nos dados biomecânicos dos pacientes e realizar a classificação binária do target, identificando se o paciente apresenta ou não alterações na coluna lombar.

Nossa rede neural com Keras / Tensorflow

Usamos a arquitetura Sequential: é uma forma de construir redes neurais em que as camadas são empilhadas uma após a outra, de forma linear e direta.

E temos quatro camadas no total: a primeira camada é a entrada, as duas intermediárias são as camadas ocultas interconectadas e a última é a camada de saída.

De qualquer forma, precisamos entender alguns conceitos mínimos, que são os parâmetros da rede:

implementação da rede

Na imagem temos a primeira camada oculta com Dense ou totalmente conectada, com 16 neurônios e uma função de ativação chamada Relu.

Por enquanto, podemos definir activation como o parâmetro que recebe a função de ativação da rede. Neste parâmetro definimos uma função que vai pegar a saída do neurônio e modular seu valor, de forma que introduza a não linearidade no aprendizado da rede.

Já a função de ativação na camada de saída usa a função Sigmoid. Ela vai modelar a saída com a probabilidade binária de ser 0 ou 1.

Na internet temos muitos vídeos no youtube que ajudam a fixar esses conceitos. A ideia é ir aprofundando os estudos aos poucos, entendendo os conceitos mais gerais e ir aprofundando os conceitos. Uma visão Top-Down do conceito de RNA.

Resumindo: como em outros exemplos, temos o nosso dataset de classificação binária, e queremos usar um algoritmo para classificar dados não vistos. Desta vez, invés de usarmos um algoritmo de Arvore de Decisão ou Vizinhos Mais Próximos, usamos uma Rede Neural Artificial. Como nos demais algoritmos temos que ter conhecimento dos parâmetros que vamos passar para a Rede. Aqui não estamos falando da matemática por trás da implementação mas apenas do conhecimento para fazer o algoritmo funcionar corretamente. Então, dividimos nossos dados em treino e teste, treinamos o classificador e verificamos a acurácia com dados de teste (e validação), de forma simples, sem entrar em detalhes mais complexos.

Por hoje era isso. Até o próximo post!

Links do post:

O meu notebook Kaggle – https://www.kaggle.com/code/cesarayres/lower-back-pain-symptoms-classification

Um ótimo vídeo sobre o assunto – https://www.youtube.com/watch?v=mWD8wWwZpi8

Leave a comment