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 e que inclusive me chamou atenção. Espero que você goste! Boa leitura.
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 saudade dos americanos. No final do artigo você pode encontrar o link da pesquisa e acessar os dados.
Abaixo temos um pouco dos dados disponíveis na base utilizada. São 18 variáveis, algumas extremamente relevantes como IMC 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: Tabagismo
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 (fumou 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.
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.
Links
Link do código: https://colab.research.google.com/drive/1skALuRHIRi2574r7CETEd_4mlVSj-BRd?usp=sharing
Link da base de dados: https://www.kaggle.com/datasets/kamilpytlak/personal-key-indicators-of-heart-disease