Skip to content

Shyuu7/AnaliseSentimentosHospitalReviews

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

Análise de Sentimentos em Reviews de Hospitais

Juntando meu background em medicina e minha paixão por Machine Learning, resolvi desenvolver um modelo que faz a análise de sentimentos envolvidos nos depoimentos de pacientes que ficaram internados em hospitais. O dataset utilizado foi retirado do Kaggle, e é chamado Hospital Reviews Dataset (https://www.kaggle.com/datasets/junaid6731/hospital-reviews-dataset), onde os dados coletados são de Google Reviews de hospitais em Bengaluru, India.

Dataset

O dataset está disponível em formato .csv e é composto apenas por 3 colunas e 996 entradas:

Feedback Sentiment Label Ratings
Object - O texto do review em si Int64 - 0 (negativo) ou 1 (positivo) Int64 - Valores de 1 a 5

Bibliotecas utilizadas

Informação também presente no arquivo requirements.txt, mas o projeto requer as seguintes bibliotecas e versões:

  • nlpaug
  • nltk
  • tabulate
  • kagglehub~=0.3.13
  • numpy~=2.3.2
  • pandas~=2.3.2
  • seaborn~=0.13.2
  • matplotlib~=3.10.6
  • spacy~=3.8.7
  • scikit-learn~=1.7.1

Modelo treinado

Como se trata de um problema de classificação binária, optei por treinar um modelo de Regressão Logística, utilizando validação cruzada para otimizar o treinamento. Foram duas tentativas, com o primeiro modelo sendo treinado no dataset desbalanceado e o segundo após o balanceamento das classes.

Pipeline

O pipeline do projeto é composto pelas seguintes etapas:

  • Análise exploratória dos dados (EDA)
  • Separação em treino e teste (para evitar data leak)
  • Balanceamento das classes do conjunto de treino com dados sintéticos (usando nlpaug e NLTK)
  • Pré-processamento do texto (lemmatização e remoção de stopwords usando spaCy)
  • Vetorização do texto pré-processado usando TF-IDF
  • Redução de dimensionalidade com PCA
  • Treinamento do modelo de Regressão Logística com validação cruzada
  • Avaliação das métricas: Acurácia, Precisão, Recall, F1-Score, Curva ROC
  • Plotagem dos resultados com Matplotlib e Seaborn

Resultados

O modelo treinado no dataset desbalanceado obteve os seguintes resultados no conjunto de teste:

  • Acurácia: 78%
  • Precisão: 88%
  • Recall: 63%
  • F1-Score: 64%
  • AUC-ROC: 91%

Embora as métricas podem ser consideradas boas, neste primeiro cenário o modelo apresentou um viés para a classe majoritária (positiva), visto que o dataset estava desbalanceado. Alcançou uma precisão de 100% na classe negativa, mas foi porque quase não classificou nenhum review como negativo, resultando em um recall muito baixo (26%).

Após o balanceamento das classes, o modelo apresentou uma melhora significativa:

  • Acurácia: 85%
  • Precisão: 82%
  • Recall: 81%
  • F1-Score: 81%
  • AUC-ROC: 91%

Esta melhoria se deu principalmente no Recall (e consequentemente no F1-Score), indicando que o modelo ficou mais apto a identificar reviews negativos. Consequentemente, conseguimos reduzir o número de falsos positivos, às custas de um discreto aumento nos falsos negativos. Porém, neste caso, podemos considerar que o modelo está mais balanceado e justo na classificação das duas classes, perdendo o viés positivo que possuía anteriormente.

Mais detalhes sobre o projeto, incluindo o código completo, podem ser encontrados no notebook deste repositório."

About

Um projeto de Machine Learning de análise de sentimentos que busca classificar reviews de pacientes internados em hospitais como positivos ou negativos.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors