top of page
Buscar

Deep Learning: Prevendo a qualidade do vinho branco

Foto do escritor: William AusenkaWilliam Ausenka

Atualizado: 11 de out. de 2021

Uma análise feita com Redes Neurais Artificiais e Multiple Linear Regression


Fonte: Celina Albertz / Unsplash.com


English Version: https://github.com/williamausenka/ML_estudos_de_caso/blob/main/Quality%20White_Wine%20-%20DeepLearning-Artificial%20Neural%20Networks/White%20Wine%20Analysis.pdf


A análise a seguir se refere ao Red Wine Quality dataset, um dataset público que contém dados físico-quimicos de vinhos tintos e a sua qualidade. Os dados foram coletados do norte de Portugal e possui poucos menos de 5000 observações. O download do dataset pode ser feito no site https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/ (winequality-white.csv). Foi implementado uma rede neural artificial e um modelo de multiple linear regression feito em python para a análise do dataset.

O objetivo do estudo é implementar uma rede neural artificial e um modelo de multiple linear regression e avaliar suas diferenças, por exemplo, a accuracy dos modelos.

Como já foi feito um estudo sobre a previsão da qualidade do vinho tinto no meu outro post, não vou entrar em detalhes sobre cada feature e seu impacto no modelo. Vou deixar o link do post no final desse texto. para vocês lerem, caso queiram. Porém, vou dar uma breve introdução ao dataset e seu possível problema.


Tabela 1 - Dataset

Fonte: O Autor


Na tabela 1, vemos que as features são as mesmas vistas no post sobre a previsão da qualidade do vinho tinto, portanto podemos esperar um comportamento muito similiar entre os 2 datasets.


Figura 1 - Heatmap - vinho branco

Fonte: O autor


Figura 2 - Histograma de quality – vinho branco

Fonte: O Autor


Vemos que na figura 1, as mesmas features que apresentam alta correlação positiva e negativa com o target (quality) são as mesmas que no post do vinho tinto. Assim como o heatmap, temos o mesmo problema de um dataset desbalanceado, como visto na figura 2, portanto, podemos esperar uma perda de accuracy no resultado. Mais informações no post sobre o vinho tinto.

Nesse post, foi feito um estudo com redes neurais artificiais para prever a qualidade do vinho branco e compara-la com o poder de previsão de um algoritmo de multiple linear regression.

O primeiro passo para construir uma artificial neural network é fazer o pré-processamento dos dados. Nele, foi feito uma normalização dos dados de entrada (inputs) para uma melhor performance dos algoritmos e foi transformado os dados de saída (outputs) para um ndarray para podermos utilizar os dados no tensorflow. Depois, o dataset foi divido em 3 partes, uma para o treinamento, uma para validação e a restante para os testes finais de accuracy. Eu escolhi dividir em 80 % para treino, 10 % para validação e o restante para testes. Escolho dessa forma para tentar evitar overfitting dos modelos. Por fim, salvamos esses 3 datasets em arquivos .npz para serem utilizados pelo tensorflow.

Para criar a rede neural artificial, utilizaremos a biblioteca do tensorflow, a mais empregada hoje em dia. Primeiro carregamos os dados nas variáveis e depois definimos o numero de inputs, nesse caso, são 11, porque são 11 features e o número de outputs, nesse caso, são 10, pois temos valores de notas até 9. Para um primeiro teste, fazemos o numero de hidden layers ser igual a 100. Esse primeiro modelo (I) terá 2 camadas função de ativação do tipo reLU e a camada de saída do tipo softmax, pois temos um problema de classificação com mais de 2 tipos de saída. Para tentar evitar overfitting, temos um batchsize igual a 100 e o número de epochs igual a 50. Também defini uma função de parada, caso o algoritmo detecte que o modelo está perdendo accuracy por conta de overfitting. Além dessas configurações, foram mudados os hyperparameters para obter o melhor modelo possível. Foi feito outro modelo (II) com 50 hidden layers, 3 camadas com funções de ativação reLU e 3 camadas de dropout. O terceiro modelo (III) foi feito com 50 hidden layers, 3 camadas com funções de ativação reLU e 2 camadas de dropout. Por fim, foi feito um modelo de multiple linear regression (IV) para fins de comparação com os demais modelos.


Tabela 2 – Resultados dos modelos

Fonte: O Autor


Na tabela 2, vemos os resultados dos modelos I, II e III similares, mostrando que mesmo adicionando e removendo camadas com funções de ativação e dropout, a rede neural não foi capaz de melhorar o resultado final. O resultado do modelo IV não foi bom se comparado aos outros modelos. Maiores detalhes sobre os motivos desse resultado do modelo IV você encontra no meu post sobre o vinho tinto.

A rede neural artificial se mostra muito mais capaz de obter resultados melhores se comparado ao modelo de machine learning. Eram esperados resultados “ruins” para os modelos, pois o dataset é extremamente desbalanceado, mas, o mais interessante, é ver como a complexidade das redes neurais artificiais conseguem extrair um resultado muito superior ao modelo de machine learning, demostrando sua superioridade no quesito de accuracy.


Link para o meu outro post:

https://www.boradedatascience.com/post/an%C3%A1lise-do-wine-quality-red-wine-dataset


Todo o código você encontra no meu Github:

https://github.com/williamausenka/ML_estudos_de_caso/tree/main/Quality%20White_Wine%20-%20DeepLearning-Artificial%20Neural%20Networks

Espero que vocês tenham gostado.

Não deixe de comentar o que você achou da análise!

Obrigado e até o próximo post!








30 visualizações0 comentário

Posts recentes

Ver tudo

Comments


bottom of page