Previsão de doenças cardiovasculares com Inteligência Artificial

Aqui vai mais um artigo que me rendeu algumas boas horas de estudos (tanto teórico quanto técnico), porém resolvi ir até o fim porque achei o tema bem interessante, que inclusive me chamou atenção. Espero que você goste! Boa leitura :)


Por que investigar doenças cardiovasculares?


No Brasil, as doenças cardiovasculares representam as principais causas de mortes. De acordo com o Ministério da Saúde, cerca de 300 mil indivíduos por ano sofrem Infarto Agudo do Miocárdio (IAM), ocorrendo óbito em 30% desses casos. Estima-se que até 2040 haverá aumento de até 250% desses eventos no país.


E apesar das doenças do coração manifestarem-se, em sua grande maioria, na vida adulta, é na infância que o processo de aterosclerose tem seu início. A prática de atividades físicas regularmente e a redução do estresse, associadas ao controle do colesterol elevado e a uma alimentação saudável, tendem a reduzir em 80% esses óbitos.


Alguns fatores de risco para doenças cardíacas não podem ser controlados, como sua idade ou histórico familiar. Mas você pode tomar medidas para reduzir seu risco.

Os dados que foram utilizados são do CDC (Centers for Disease Control and Prevention) que realiza pesquisas anuais do estado de saúde dos americanos.


Análise dos dados


Abaixo temos um pouco dos dados disponíveis na base utilizada. São 18 variáveis, algumas extremamente relevantes como IMC (índice de massa corporal) da pessoa, se ela fuma com frequência, diabetes, idade, se pratica atividade física etc.


Dicionário dos dados: (Variáveis utilizadas no modelo)


  • heart disease: Tem doença Cardíaca?

  • BMI: IMC (Indice de massa corpórea)

  • Smoking: Tabagism

  • AlcoholDrinking: Bebe bebida alcoólica?

  • Stroke: Derrame

  • PhysicalHealth: Saúde Física

  • MentalHealth: Saúde Mental

  • DiffWalking: Dificuldade para andar

  • Sex: Genero

  • AgeCategory: Categoria de Idade

  • Race: Raça

  • PhysicalActivity: Pratica Atividade Física

  • SleepTime: Tempo de sono

  • Asthma: Asma

  • SkinCancer: Câncer de pele

  • KidneyDisease: Doença renal

  • GenHealth: Saúde Geral


A base utilizada possui aproximadamente 320mil linhas, sendo cada uma delas uma pessoa diferente.

O próximo passo é verificar se alguma das nossas variáveis possui dados nulos. (False = Nenhum valor null)


Agora podemos começar a nossa análise exploratória. Visualizando pessoas que fumam x pessoas com doenças cardíacas.

Podemos observar que pessoas que fumam (fumaram pelo menos 100 cigarros em toda sua vida [5 pacotes = 100 cigarros]) tem uma relação com doenças cardíacas.


Outra variável interessante de analisar é “DiffWalking”. Pessoas com dificuldade para andar ou subir escadas. São pessoas que se cansam com facilidade ao praticar essas atividades.

Com base nessa última relação (DiffWalking x HeartDisease), vamos olhar para as pessoas que praticam atividades físicas.


Analisando o gráfico acima, as pessoas que não praticam atividade física com frequência têm também uma relação com casos positivos de doenças cardíacas.


E será que se uma pessoa com o IMC elevado tem chance de desenvolver alguma doença cardíaca?


Podemos dizer que sim. Pessoas com doença cardíacas tem um IMC mais alto.


Limpeza e Processamento de dados


Para que o nosso modelo aceite receber os dados, teremos que transformar as variáveis categóricas em numéricas. Deixando o dataset da seguinte forma:


Além disso, teremos que padronizar as variáveis que já eram numéricas.


Uma forma interessante de visualizar as variáveis que mais se correlacionam com a variáveis que queremos prever (HeartDiseasse) é plotando uma matriz de confusão.


Veja que as variáveis stroke, DiffWalking, AgeCategory, Diabetic e PhysicalHealth são as que tem uma correlação forte com HeartDisease.


Separação dos dados (Trieno e Teste)


Após alguns tratamentos, iremos separar a base em duas, treino e teste. Uma delas iremos treinar o modelo e a outra iremos aplicar já com o modelo treinado.

Podemos ver que vamos precisar balancear os dados antes de prosseguir.


Agora sim, dados balanceados, mesma quantidade para 0 e 1 (Pessoas sem doenças cardíacas e com doenças cardíacas).


Random Forest


O modelo que vamos utilizar será o Random Forest.



Com o resultado em mãos é possível observar algumas métricas de performance do modelo.

Confira as métricas. A Precision é alta, o que significa que o modelo teve o cuidado de evitar rotular pessoas com doença cardíaca (1) que não tem doença cardíaca (0).


Recall é o número de membros de uma classe que o classificador identificou corretamente dividido pelo número total de membros nessa classe.


E aí, aprendeu?! Para acompanhar mais artigos do Gabriel é só acessar o link. E se quiser saber sobre outros assuntos e nóticias da tecnologia é só continuar navegando pelo Gestão. Até a próxima!💜🔎