MLP é um tipo de arquitetura de rede neural que consiste em múltiplas camadas de neurônios, permitindo a modelagem de relações complexas entre as variáveis de entrada e a saída desejada. O treinamento foi realizado utilizando variadas técnicas possibilitadas através de uma ferramenta criada em Python, bem como algumas implementações únicas. Os modelos foram treinados com um conjunto de dados contendo informações médicas relevantes coletados de uma população de mulheres indígenas da etnia norteamericana Pima.
Este relatório inclui detalhes sobre a configuração do modelo, os dados utilizados, e as estatísticas descritivas das métricas de desempenho. O objetivo é fornecer uma visão abrangente do processo de desenvolvimento e avaliação do modelo MLP para diagnóstico de diabetes.
A base de dados utilizada foi pima.csv, contendo 768 instâncias de mulheres indígenas da etnia norteamericana Pima testadas por diabetes.
A base de dados contém 8 atributos e 1 classe binária.
A base também contém diversas entradas nulas, representadas pelo valor numérico 0, que NÃO foram inputadas no treinamento do modelo, propositalmente. Isto garantiu a robustez do modelo, uma vez que a inputação arbitrária de dados poderia comprometer seu uso em um cenário real. Ademais, a inputação de dados não gerou uma melhora perceptível acima de 5% nas métricas de F1 Score e Perda. Portanto o tratamento de nulos foi: manter as entradas como estão.
As entradas da primeira coluna, referentes ao número de gestações tidas pela paciente
O processo de "flip" (inversão binária) da classe de saída foi testada, e não gerou quaisquer resultados significativos. Portanto, a base foi mantida como original, tendo as saídas {0: Não tem diabetes, 1: Tem diabetes}.
As ênfases de desenvolvimento da rede MLP foram:
O modelo MLP foi treinado seguindo o código demonstrado na sessão de Código.
Foram utilizadas as bibliotecas: NumPy, Pandas, SciKitLearn e MatPlotLib
O código passou por múltiplas revisões e ajustes impossíveis de serem documentadas neste relatório. Entretanto, o histórico de commits pode ser conferido no repositório do GitHub.
Na fase inicial de desenvolvimento, o modelo MLP foi treinado com o conjunto de dados pima.csv, focando em minimizar Falsos Negativos. Por razões médicas, esta métrica é a mais sensível, uma vez que classificar um paciente potencialmente diabético como não o sendo pode resultar em erros médicos graves.
Como podemos observar, a minimização agressiva de Falsos Negativos infere em uma redução da precisão do modelo como um todo. Isto prejudica a "correctividade" do modelo: o quão correto seu output é. Por causa disso, o modelo apresentado na Figura 2 foi descartado.
Entretanto, a ferramenta permite que o usuário combine múltiplas instâncias da base de dados, como pode ser observado na Figura 3. Assim, a abordagem tomada na fase 2 foi de combinar repetidas entradas baseado na qualidade destas quanto à presença de nulos: quanto mais completa a entrada, maior a possibilidade desta estar repetida dentre as outras instâncias. A tolerância máxima permitida para repetição foi de 2 nulos por entrada.
Ainda assim, a base completa foi utilizada, gerando um modelo que "conhece" todas as possibilidades apresentadas na coleta de dados real. Mesmo com um Train/Test Split, a possibilidade de algumas folds treinadas passarem por um "overfitting" de entradas específicas era muito grande, e a capacidade de generalização foi posta em cheque, sendo pouco aferível.
Em uma terceira e última fase, o modelo foi treinado com uma base de dados reduzida em 50% do número de entradas (aleatoriamente, arbitrariamente). Esta base de dados foi salva como pima-50.csv.
Utilizando as métricas de arquitetura dispostas nas Figuras 4 e 5, podemos notar os seguintes pontos no modelo obtido através desta abordagem:
Com isso, podemos concluir que o modelo obtido na fase 3 tem um grande potencial de generalização, minimizando falsos negativos dentro de qualquer conjunto de base de dados e contendo boas métricas de F1 Score e Perda.
Documentação das bibliotecas utilizadas:
LLMs utilizadas: