• Michel

RapidMiner em Previsão de Ausências em Consultas Médicas

Atualizado: 11 de Dez de 2018

Uma pessoa faz uma consulta médica, recebe todas as instruções e não comparece. É possível prever as ausências?

Pacientes que agendam consultas clínicas e não conseguem mantê-las têm grande impacto negativo no fluxo de trabalho e nas receitas de uma clínica.

De acordo com um estudo de 2016, a taxa média anual de “no-show” para atendimentos médicos primários e especializados nos Estados Unidos é de pouco menos de 20% - um número surpreendente que pode significar perda significativa de receita para os sistemas de saúde, grandes e pequenos.

A implementação de estratégias inovadoras usando Machine Learning para ajudar a diminuir o número de ausências que o sistema de saúde ou consultório médico lida a cada ano é uma bem sucedida maneira de aumentar a eficiência e a receita.

Este artigo usa dados de 110.527 consultas médicas públicas em Vitória, Espírito Santo, Brasil (adquiridas na base de dados kaggle.com), em que foram contabilizadas as ausências (vide figura abaixo). Tentamos descobrir nesta base de dados os principais fatores que predizem o não comparecimento do paciente.

Ao final, apresentamos uma possível economia em reais que seria obtida usando a aplicação.

Base de dados deste artigo: https://www.kaggle.com/joniarroba/noshowappointments/homells

Meus objetivos neste artigo são:

•Demonstrar os benefícios do uso de Machine Learning para uma Clínica ou Hospital;

•Demonstrar que não é indispensável o uso de programação para obter um bom resultado;

•Demonstrar a facilidade de uso do software RapidMiner.

Este artigo não é um tutorial de Machine Learning nem do programa RapidMiner.

Como pré-requisitos você deve saber o que é uma Análise Exploratória de Dados e ter os conceitos centrais de algoritmos de Machine Learning.

Variáveis utilizadas

Atributos

ID_Paciente - Identificação de um paciente

ID_Consulta - Identificação de cada consulta

Gênero = Masculino ou Feminino

DataConsulta = O dia da consulta.

DataAgendamento = O dia do agendamento

Idade

Bairro - Local da consulta

Recebe Bolsa Família - Verdadeiro ou Falso

Hipertensão - Verdadeiro ou Falso

Diabetes - Verdadeiro ou Falso

Alcoolismo - Verdadeiro ou Falso

Portador de Deficiência - Verdadeiro ou Falso

Recebeu SMS – Uma ou mais mensagens enviadas para o paciente.

Variável dependente- "label"

Ausência = Verdadeiro ou Falso.

Tradicionalmente aplicamos as seguintes etapas em um projeto de ML

Coleta, Exploração e Análise de Dados

A base de dados é aberta no RapidMiner.

Temos 110.527 observações (ID_Consulta) no set de treinamento com 13 variáveis independentes (atributos) e 1 variável dependente – Ausência – (label)

O programa gera automaticamente várias estatísticas para as variáveis.


Vemos abaixo que a proporção de ausências ocorre em cerca de 25% dos dados.


Então dividimos o set total de dados de forma estratificada, nos sets de treinamento (80% das observações) e no set de teste (20% das observações), mantendo a proporção de 25% de ausências.

Processo de limpeza dos dados e criação de novas variáveis (Feature Engineering)

Criamos um Subprocesso e inicialmente transformamos a variável label para a forma binomial, ajustamos as configurações das datas, excluímos valores claramente incorretos (por ex. idades negativas).

Também criamos uma nova variável – tempo de espera – (diferença em dias entre as datas de agendamento e consulta) e uma variável que representa o número de consultas total de um dado paciente.

Criamos variáveis para – dia da semana e mês da consulta.

O subprocesso é inserido no processo completo como a seguir.



Treinamento

Para definir o melhor modelo rapidamente usaremos o AutoModel

Agora que temos os dados pré-processados passamos à modelagem. Vamos usar um operação recentemente incorpada ao RapidMiner chamada Auto Model.

O RapidMiner Auto Model acelera o trabalho que os cientistas de dados tem ao criar modelos de aprendizado de máquina.

Ao contrário das abordagens de aprendizado de máquina automatizadas existentes, o Auto Model não é uma “caixa preta” que impede que os cientistas de dados compreendam como o modelo funciona. O Auto Model gera um processo do RapidMiner nos bastidores, para que os cientistas de dados possam ajustar e testar os modelos antes de colocá-los em produção.

Para mais informações sobre como começar a usar o RapidMiner Auto Model, visite https://rapidminer.com/resource/automated-machine-learning/

No AutoModel selecionamos o set que separamos para o treinamento - ausen_tr




Agora selecionamos a variável ausência para fazer uma análise supervisionada dos dados.


Removemos as variáveis irrelevantes.

O AutoModel faz uma correlação de cada variável com a variável label e nos informa quais são as mais importantes. Vemos que muitos dos atributos não contribuem para o resultado e podemos eliminá-los.

Por exemplo, várias colunas são inúteis ou são problemáticas e devem ser removidas. Elas são identificada por um círculo vermelho.

A importância de cada atributo é correspondente ao seu peso. Vemos que o atributo mais importante é “_TempoEspera-dias” ), o que faz sentido.

Agora vamos ao treinamento propriamente dito.

No caso usaremos 2 modelos disponíveis no Auto Model – Deep Learning e Gradient Boosted Trees.

Vamos também achar as correlações entre os atributos e a importância de cada um ( já mostrada acima)

Performance dos modelos

Quando uma base de dados é desbalanceada como neste caso, em que as ausências são em muito menor número do que as não ausências, não podemos usar simplesmente a métrica de accuracy, então usamos a métrica “F Measure” para avaliar nosso modelo.

Agora podemos ver a performance de cada modelo no set de treinamento, bem como o tempo de processamento.

A melhor performance foi do modelo Deep Learning com F Measure de 44,8% . Vemos também que o GradientBoosted Trees chegou a previsões muito parecidas,

o que mostra uma certa estabilidade dos resultados independente do modelo utilizado. Em geral isto pode significar que uma combinação dos melhores modelos pode

melhorar ainda mais o resultado.


Matrix de Confusão


As curvas ROC dos 2 modelos são bastante semelhantes

Agora observe que embora a accuracy de Gradient Boosted Treess ser maior que a Deep Learning , o que importa nesta aplicação é que os modelos prevem corretamente 31,35% (Deep Learning) e 33,89% (Gradient Boosted Trees) das observações de quando haverá uma ausência. Isto quer dizer que é possível identicar antecipadamente cerca de 30% dos Pacientes que não irão comparecer e tomar providências, por exemplo, dar um telefonema ou enviar uma nova mensagem.

O AutoModel também permite simular os valores de entrada do modelo e ver seu impacto na saída.





Uma parte de uma da árvores de decisão no modelo Gradient Boosted Trees



Testando o Modelo

Note que os resultados acima foram obtidos usando o set de treinamento. Porém a avaliação de um modelo deve ser sempre feita em novas observações.

O set de teste que separamos no início (20% das observações) e que o modelo não viu, será agora usado para avaliar a performance do modelo em observações desconhecias.



Note que não somente uma previsão de sim ou não, mas também a probabilidade de uma observação ser uma ausência. Poderíamos, se quisermos ser conservadores usar um corte em nosso modelo em que somente as previsões com mais de 70% de probabilidade de serem ausências sejam consideradas.

Conclusões

Obtemos um resultado similar no set de teste, o que significa que não houve overfitting.

O modelo de Deep Learning prevê corretamente 31,71% das observações de ausência.

Considerando agora uma ausência como a perda de uma Consulta no Valor de R$ 150,00, poderíamos a grosso modo dizer que:

Faturamento previsto pelo Total de Agendamentos:

110527 x 150,00 = R$ 16.579.050,00


Faturamento perdido devido às ausências:

22319 x 150,00 = 3.347.850,00


Economia resultante da previsão de ausências - cerca de 30% das Ausência:

22319 x 0,30 x 150,00 = 1.004.355,00


Pelos resultados, é então razoável dizer que com a aplicação de modelo de Análise Preditiva como este, podemos detetar antecipadamente 1 em cada 3 casos de ausências.

É importante salientar que poderíamos melhorar a eficiência do modelo através de vari os meios, por exemplo:

•Obter mais variáveis na ocasião do agendamento como o tipo de consulta, de especialista ou acompanhamento, o horário da consulta, o CEP do Paciente, etc..

•Aprimorar o modelo através de modelagem ensemble e otimizações.

3 Dimensões

Inteligência Artificial nas Empresas

Al. das Papoulas, 147 - Santana de Parnaíba - Alphaville, SP 06539-180 - (11) 4153 6004  - (11) 9 9795 9765

michel@3dimensoes.com.br