$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Declaração de ética, conjunto de dados, software e preparação de dados
Os resultados deste estudo foram baseados no conjunto de dados de doenças cardíacas do Repositório de Aprendizado de Máquina da UCI. Como este é um recurso de acesso público e desidentificado, seu uso não exigiu aprovação de comitês éticos. Os autores também verificam a originalidade deste manuscrito, confirmando que ele não foi publicado anteriormente ou submetido a outros periódicos.
O conjunto de dados de Doença Cardíaca de Cleveland foi dividido em conjuntos de treinamento e testes com 80/20. O conjunto de dados normalmente contém 303 instâncias; portanto, aproximadamente 242 amostras foram usadas para treinamento, e 61 amostras foram mantidas como um conjunto de teste limpo. Amostras sintéticas geradas pelo método GAN ou Gaussian de retenção foram adicionadas apenas aos dados de treinamento para reduzir o risco de vazamento de dados. O conjunto final de treinamento aumentado consistiu em aproximadamente 242 amostras reais e 1.000 amostras sintéticas, totalizando 1.242 amostras de treinamento. Nenhum conjunto fixo de validação estática foi utilizado. Em vez disso, a validação cruzada estratificada foi aplicada durante o treinamento do modelo, com cada dobra dividindo os dados de treinamento aumentados em subconjuntos de treinamento e validação.
O conjunto de dados foi carregado em um DataFrame Pandas e inspecionado em busca de valores ausentes. Características numéricas com valores ausentes foram tratadas usando imputação mediana com a classe SimpleImputer do scikit-learn, usando estratégia = 'mediana'. Características categóricas com valores ausentes foram tratadas usando imputação por modo com o SimpleImputer usando estratégia = 'most_frequent'. Os mecanismos de ausência foram documentados calculando a porcentagem faltante para cada característica usando df.isnull().sum() / len(df). Padrões de ausência não aleatória foram avaliados comparando os valores médios de outras características entre amostras com e sem dados ausentes, utilizando testes t. para características numéricas e testes qui-quadrado para características categóricas. A ausência foi então documentada como Ausente Completamente Aleatoriamente (MCAR), Ausente Aleatoriamente (MAR) ou Ausente Não Aleatória (MNAR), quando aplicável.
Para conjuntos de dados com ausência substancial, foi recomendada uma análise de sensibilidade comparando a imputação mediana/modo com a Imputação Múltipla por Equações Encadeadas (MICE), usando fancyimpute. IterativoImputer com max_iter = 10, e imputação KNN, usando fancyimpute. KNN com k = 5. Uma diferença de precisão inferior a 0,03 foi tratada como indicação de robustez ao métodode imputação 12. Essa análise de sensibilidade foi considerada opcional para o conjunto de dados de Cleveland devido à sua falta limitada, mas foi recomendada para outros conjuntos clínicos com valores faltando mais de 5%. Padrões de ausência também foram visualizados usando a biblioteca missingno, gerando um mapa de calor de matriz de falta com msno.matrix(df). O agrupamento dos padrões de ausência foi usado para identificar se os valores ausentes ocorreram de forma sistemática, o que pode indicar mecanismos de MNAR que requerem participação de especialistas clínicos.
As características numéricas foram padronizadas usando normalização de escores z. O StandardScaler do scikit-learn foi ajustado nos dados de treinamento e depois aplicado tanto em conjuntos de treinamento quanto de teste. Variáveis categóricas foram codificadas usando codificação one-hot. O tipo de dor torácica (cp), que contém quatro categorias, foi convertido em quatro colunas indicadoras binárias usando pandas.get_dummies. A talassemia (thal), que contém três categorias, foi convertida em três colunas indicadoras binárias. Como o gerador e discriminador GAN usavam uma dimensão fixa de entrada/saída de 13 características correspondentes ao conjunto de dados original antes da codificação one-hot, amostras sintéticas eram geradas no espaço original de 13 características e depois passavam pelo mesmo pipeline de codificação one-hot que os dados reais. Isso preservava a compatibilidade com a arquitetura GAN enquanto permitia o uso de recursos codificados para treinamento de modelos.
Definições matemáticas e métricas de qualidade
A distância de Fréchet foi usada para comparar distribuições de características reais e sintéticas. A distância de Fréchet Fr(F, G) entre duas distribuições F e G foi definida da seguinte forma:
Fr2(F,G)=minX,YE|X-Y|2 (1)
onde E representa a expectativa, e a minimização é tomada sobre todas as variáveis aleatórias X e Y que possuem distribuições F e G, respectivamente19.
A Otimização Harris Hawk (HHO) foi usada como método de otimização metaheurística. O HHO é inspirado no comportamento cooperativo de caça dos falcõesHarris 20. A transição entre as fases de exploração e exploração era controlada pela energia de escape E. Na fase de exploração, onde |E| ≥ 1, a atualização foi definida da seguinte forma:
X(t+1) = Xrand (t) - r1 | Xrand (t) - 2r2X (t)|
Na fase de exploração, onde |E| < 1, as atualizações foram determinadas pela energia de escape E = 2E(1 − t/T) e força do salto J = 2(1 − r5). Na condição de cerco suave, onde estão ≥ 0,5 e |E| ≥ 0.5, a atualização foi definida da seguinte forma:
X(t+1) = ΔX(t) - E|JX coelho (t) - X(t)|
Na condição de cerco difícil, onde estão ≥ 0,5 e |E| < 0.5, a atualização foi definida da seguinte forma:
X(t+1) = Xcoelho (t) - E|ΔX(t)|
A justiça foi avaliada usando paridade estatística e equilíbrio de taxa de erro, seguindo Hardt et al.20 e Lima et al.21. Diferença de paridade demográfica, diferença de chances equalizada e erro de calibração baseado em idade foram usados como métricas de justiça.

ΔEO = max(|TPRA - TPRB |,| FPRA - FPRB |)
ΔBS=|BS idade<50 - BSidade>50 |
onde BS é a Pontuação Brier:

A interpretabilidade do painel foi baseada nos valores SHAP, que são calculados usando teoria dos jogos coalizionais18.

onde Φi representa a atribuição SHAP para a característica i, F. f(S) representa o conjunto de todas as características, e representa a previsão do modelo para um subconjunto de características S.
Ampliação de dados baseada em GAN
Para lidar com a escassez de dados e o desequilíbrio de classes, uma Rede Generativa Adversarial (GAN) foi usada para gerar amostras sintéticas. A arquitetura do gerador foi configurada em TensorFlow/Keras. Ele aceitou um vetor de ruído de 100 dimensões amostrado a partir de uma distribuição normal padrão N(0,1), seguido por camadas densas com 128, 256 e 512 unidades usando ativação ReLU. A camada de saída continha 13 unidades, correspondentes à dimensão original da característica, e usava ativação sigmoide.
A arquitetura discriminadora aceitava um vetor de características de 13 dimensões como entrada. Consistia em camadas densas com 512, 256 e 128 unidades usando ativação LeakyReLU com α = 0,2. A camada de saída continha uma unidade com ativação sigmoide para classificação binária de amostras reais versus sintéticas.
A GAN foi treinada para 100 épocas usando um lote de 64. O otimizador Adam foi usado com uma taxa de aprendizado de 0,0002, β1 = 0,5 e β2 = 0,999. Durante cada época, o discriminador era alternadamente treinado em lotes reais e sintéticos, e o gerador era treinado para enganar o discriminador. Após o treinamento, 1.000 vetores de ruído aleatório foram inseridos no gerador para produzir 1.000 amostras sintéticas, que foram adicionadas apenas ao conjunto de treinamento.
O colapso de modos foi monitorado durante o treinamento GAN medindo a variância de cada característica sintética em 100 amostras geradas a cada 10 épocas. Se a variância de qualquer característica caísse abaixo de 10% da variância correspondente dos dados reais em três verificações consecutivas, suspeitava-se de colapso do modo. As estratégias de mitigação incluíram reduzir a taxa de aprendizado para 1 × 10⁻4, aumentar o tamanho do lote para 128, reiniciar o treinamento com uma inicialização diferente do peso ou substituir o GAN padrão por Wasserstein GAN com Penalidade de Gradiente (WGAN-GP), conforme descrito por Arjovsky et al.17. A implementação usou um GAN padrão com um fallback de perturbação Gaussiana para garantir geração de dados sintéticos quando o TensorFlow não estava disponível.
A qualidade dos dados sintéticos foi avaliada calculando a Distância de Fréchet entre distribuições de características reais e sintéticas usando uma implementação personalizada. Um classificador, como regressão logística, também foi treinado para distinguir amostras reais de sintéticas; A precisão da classificação quase casual foi tratada como indicando alta fidelidade. Foi calculado o AUC de Recordação de Precisão, com valores maiores que 0,9 considerados indicativos de boa captura de distribuição. Correlações de Pearson entre pares de características nos conjuntos de dados reais e sintéticos também foram comparadas, com diferenças abaixo de 0,05 tratadas como preservação aceitável da estrutura de correlação.
Quando o TensorFlow/Keras estava indisponível ou o treinamento GAN falhava, era utilizado um método de recuo por perturbação gaussiana. Para cada classe, a média (μ) e o desvio padrão (σ) de cada característica foram calculados a partir do conjunto de treinamento. Amostras sintéticas foram então geradas da seguinte forma:
Xsynthetic = μ + ε × σ × 0,05, onde ε ~ N(0,1)
Os rótulos de classe eram gerados proporcionalmente à distribuição original de classes. Esse plano B foi incluído para suportar a reprodutibilidade em ambientes sem dependências de deep learning.
Seleção de recursos híbrida
Foi aplicada uma estratégia híbrida de seleção de recursos em duas etapas. Na primeira etapa, foi realizada uma pré-filtragem estatística. Para cada característica xi no conjunto X, os valores foram divididos em dois grupos de acordo com a variável binária de resultado: G0 para y = 0, indicando ausência de doença, e G1 para y = 1, indicando presença de doença. O teste t de duas amostras de Welch foi realizado usando scipy.stats.ttest_ind com equal_var = Falso. O tamanho do efeito d de Cohen foi então calculado da seguinte forma:
d = (média1 − média2) / pooled_std
onde:
pooled_std = sqrt((std12 + std22)/2)
O nome da característica, o valor p e o valor d de Cohen eram armazenados em uma tabela de resultados. As características foram selecionadas se atendessem a ambos os critérios: valor-p < 0,05 e |O d| do Cohen ≥ 0,5. O conjunto de recursos resultante foi definido como Xfiltered.
O teste t de Welch foi usado porque é adequado para características numéricas contínuas como idade, talaco e oldpeak. Para características categóricas binárias como sexo e exang, o teste t. produz resultados comparáveis a um teste de proporção ao comparar dois grupos. Características multicategoriais como cp e thal foram codificadas em um hot, e cada indicador binário foi testado individualmente contra a variável de resultado. Essa abordagem foi considerada adequada porque o conjunto de dados de Cleveland possui mais de 30 amostras, as características foram padronizadas antes da análise e equal_var = Falsas explicações para variâncias desiguais entre grupos. Para características com violações graves da normalidade, o teste Mann-Whitney U foi considerado como um teste alternativo não paramétrico.
O limiar p < 0,05 seguiu a significância estatística convencional, enquanto |O d| do Cohen ≥ 0,5 correspondia a um tamanho de efeito moderado a grande. Para conjuntos de dados com amostras pequenas ou resultados raros, ajustamento baseado em bootstrap, correção de Hedges g ou limiares exploratórios relaxados foram recomendados com contribuição clínica de especialistas. Por exemplo, 1.000 reamostras bootstrap poderiam ser usadas para calcular os intervalos de confiança d de Cohen, e g de Hedges poderia ser aplicado para corrigir o viés de amostras pequenas. Características com estatísticas borderline, como valores p entre 0,03 e 0,08 ou |d| Valores entre 0,4 e 0,6 foram documentados para possível revisão clínica de especialistas antes da exclusão.
Na segunda etapa, a Otimização Harris Hawk (HHO) foi aplicada ao conjunto de recursos filtrado estatisticamente. O tamanho da população do HHO foi definido para 20, e o número máximo de iterações foi fixado para 50. Cada solução era representada como um vetor binário com comprimento igual ao número de características em Xfiltered, onde 1 indicava que uma característica foi selecionada e 0 indicou que ela não foi selecionada. Posições contínuas de HHO foram mapeadas para vetores binários usando a função de transferência em formato de V:
T(x) = |tanh(x)|
O valor binário era definido como 1 se T(x) > 0,5 e 0 caso contrário. A função em formato de V foi selecionada porque suporta exploração balanceada e exploração durante a conversão binária.
A função de aptidão para cada solução foi definida usando regressão logística. Um modelo de regressão logística foi treinado usando apenas as características selecionadas pelo vetor binário, e a validação cruzada 5 vezes foi realizada usando cross_val_score do scikit-learn. A aptidão foi calculada da seguinte forma:
aptidão = 1 − precisão média
A população das posições dos falcões foi inicializada uniformemente no intervalo [−1, 1] usando numpy.random.uniform(−1, 1, (population_size, n_features)) com uma semente aleatória fixa de 42 para reprodutibilidade. A cada iteração, a aptidão de todos os falcões foi avaliada, a melhor posição do falcão foi identificada como o coelho, e as posições dos falcões foram atualizadas usando as equações de exploração e exploração do HHO baseadas na energia de escape. Após a convergência, o vetor binário com melhor desempenho foi selecionado como o subconjunto final de características, Xfinal.
As características selecionadas foram registradas a partir de uma única execução de otimização HHO com uma semente aleatória fixa. Para aplicações que exigem maior confiança estatística, recomendaram-se 30 sequências independentes com diferentes sementes aleatórias, e características de consenso que aparecem em pelo menos 80% das sequências poderiam ser selecionadas. A implementação relatada foi baseada em uma única rodada representativa, já que testes preliminares indicaram convergência consistente.
Treinamento e otimização de modelos
Três modelos foram considerados: Regressão Logística, Floresta Aleatória e uma Rede Neural Artificial (RNA) otimizada para PSO. A regressão logística foi treinada usando validação cruzada estratificada de 5 vezes para manter a distribuição das classes. A força de regularização C foi otimizada usando o espaço de busca C
[0,001, 0,01, 0,1, 1, 10]. Para cada dobra e cada valor de C, o modelo foi treinado na dobra de treinamento e avaliado na dobra de validação. Foi selecionado o valor de C que maximizava a precisão média de validação entre dobras.
O modelo Random Forest foi treinado usando ajuste por hiperparâmetros. O espaço de busca incluía max_depth = [5, 10, 15, Nenhum] e min_samples_split = [2, 5, 10]. A busca em grade com validação cruzada 5 vezes foi realizada usando o ROC-AUC como métrica de otimização pelo GridSearchCV, com pontuação = 'roc_auc'. O modelo selecionado de Floresta Aleatória usou max_depth = 10 e min_samples_split = 5. A estimativa de pontuação fora do saco (OOB) foi habilitada usando oob_score = Verdadeiro.
O sobreajuste foi avaliado calculando a diferença entre a precisão do treinamento e a pontuação OOB:
overfitting_gap = training_accuracy − oob_score
Uma diferença de sobreajuste abaixo de 0,05 foi considerada indicativa de boa generalização, enquanto uma diferença maior que 0,10 indicou a necessidade de reduzir max_depth ou aumentar min_samples_split. Com uma pontuação OOB de 0,9296 e precisão típica de treino entre 0,94 e 0,96, a diferença foi de aproximadamente 0,01–0,03.
Um classificador ANN também foi otimizado usando Otimização por Enxame de Partículas (PSO). A arquitetura ANN consistia em uma camada de entrada, uma camada oculta com 64 neurônios usando ativação ReLU, e uma camada de saída com um neurônio usando ativação sigmoide. O PSO foi inicializado com 50 partículas e 50 iterações e foi usado para otimizar os pesos iniciais da rede. A RNA foi então treinada usando retropropagação padrão. Como a otimização de PSO foi realizada nos mesmos dados de treinamento sem validação cruzada aninhada, esse componente foi tratado com cautela. Para aplicações futuras, foi recomendada a validação cruzada aninhada, com um loop externo de 10 para avaliação e um loop interno de 10 para seleção de hiperparâmetros PSO. Uma lacuna de generalização abaixo de 0,08 foi considerada aceitável, enquanto uma lacuna acima de 0,15 indicou potencial superajuste que exigiu simplificação do modelo.
Avaliação de modelos
A avaliação do modelo foi realizada usando validação cruzada estratificada de 10 vezes no conjunto final de características, Xfinal. Em cada dobra, modelos de Regressão Logística e Floresta Aleatória foram treinados com os dados de treinamento e avaliados com os dados de validação. Precisão, Precisão, Recordação, F1-score e ROC-AUC foram calculados usando classification_report e roc_auc_score do scikit-learn. A média e o desvio padrão de todas as métricas foram calculados ao longo das 10 vezes.
A lacuna de generalização também foi calculada para cada dobra da seguinte forma:
generalization_gap = training_accuracy − validation_accuracy
A diferença média de generalização em todas as 10 vezes foi relatada. Uma diferença média abaixo de 0,08 foi considerada indicativa de sobreajuste mínimo, enquanto uma diferença acima de 0,15 sugeria sobreajuste e a necessidade de regularização ou redução da complexidade do modelo. Testes de Wilcoxon com patente por sinal foram realizados para comparar a estrutura proposta com métodos de linha base em 10 folds usando α = 0,01.
Análise de explicabilidade
A análise de explicabilidade foi realizada usando métodos específicos e agnósticos para cada modelo. Para a Regressão Logística, o modelo final foi ajustado e os valores dos coeficientes foram extraídos para cada característica selecionada. As razões de probabilidade foram calculadas como exp (coeficiente), e intervalos de confiança de 95% foram calculados usando os erros padrão dos coeficientes.
Para Random Forest, as pontuações de importância de Gini foram extraídas do modelo treinado usando o atributo feature_importances_ e normalizadas para somar 1. As explicações do SHAP eram geradas usando a biblioteca SHAP. Um objeto KernelExplainer foi criado usando o modelo treinado e um conjunto de dados de fundo, como 100 amostras de treinamento selecionadas aleatoriamente. Os valores SHAP foram calculados para todas as instâncias do conjunto de teste usando shap_values. Plots resumo de enxames de abelhas foram gerados usando shap.summary_plot, e gráficos de barras dos valores absolutos médios de SHAP foram gerados usando shap.bar_plot.
Gráficos de Dependência Parciais (PDPs) foram gerados para as principais características identificadas pela análise SHAP. Para cada característica selecionada, uma sequência de valores abrangendo o intervalo de características era criada. Cada valor foi substituído na coluna de características mantendo as outras características constantes, e a probabilidade média prevista foi calculada em todas as instâncias. Os valores das características foram plotados com base em previsões médias usando matplotlib. Intervalos de confiança de 95% foram adicionados usando 100 iterações de reamostragem bootstrap.
Gráficos de Expectativa Condicional Individual (ICE) foram gerados para características selecionadas ao traçar trajetórias de previsão para instâncias individuais conforme os valores das características mudavam. A linha do PDP foi sobreposta ao terreno do ICE. Os métodos de explicação foram comparados calculando a correlação de classificação de Spearman entre as razões de probabilidades de regressão logística e os valores do SHAP da Floresta Aleatória usando scipy.stats.spearmanr. Discrepâncias entre os métodos de explicação foram documentadas para interpretação clínica. Quando os coeficientes de regressão SHAP e logística entraram em conflito, o PDP para essa característica foi examinado. Se o PDP mostrou uma tendência não linear, a explicação do SHAP foi priorizada em relação ao coeficiente de regressão logística, porque a Random Forest pode capturar relações não lineares que modelos lineares não conseguem.
Protocolo de generalização de framework para validação externa usando MIMIC-III
Um protocolo de validação externo foi delineado para aplicar a estrutura ao banco de dados MIMIC-III. O acesso ao MIMIC-III exigiria aprovação da PhysioNet e a conclusão do treinamento exigido em humanos com sujeitos. A coorte proposta incluiria pacientes adultos com 18 anos ou mais com primeira internação na UTI e códigos CID-9 410–414 para infarto agudo do miocárdio ou códigos CID-10 I20–I25 para doença cardíaca isquêmica. Os critérios de exclusão incluiriam valores ausentes de mais de 30% nas características-alvo, tempo de internação abaixo de 24 horas, idade acima de 90 anos, cirurgia cardíaca prévia ou doença cardíaca congênita.
O resultado proposto foi eventos cardíacos adversos graves (ECM) em até 72 horas após a admissão, definidos como um composto de mortalidade hospitalar, choque cardiogênico ou arritmia ventricular que necessita de intervenção. Características de séries temporais como frequência cardíaca e pressão arterial seriam agregadas nas primeiras 24 horas da estadia na UTI usando média, mediana, mínima, máxima e tendência, onde a tendência seria estimada como a inclinação da regressão linear ao longo do tempo. A frequência cardíaca máxima seria usada como equivalente mapeado do talaque.
As características do conjunto de dados Cleveland seriam mapeadas para variáveis MIMIC-III. Por exemplo, o thalach seria mapeado para a frequência cardíaca máxima registrada durante as primeiras 24 horas de internação na UTI, a cp seria mapeada para avaliações estruturadas de dor e menções extraídas por PLN, e oldpeak seria mapeada para desvio do segmento ST em relação aos relatórios do ECG. Uma tabela de mapeamento seria criada para documentar todos os alinhamentos de características.
Antes de aplicar todo o pipeline, a extração de PLN para oldpeak seria validada em 100 relatórios de ECG selecionados aleatoriamente. Precisão, recordação e pontuação F1 seriam calculados contra anotação manual por dois clínicos. Se a pontuação F1 estivesse abaixo de 0,85, padrões regex seriam revisados ou dados estruturados de ECG de eventos gráficos seriam usados como alternativa. O pipeline de pré-processamento seria então repetido nos dados extraídos do MIMIC-III, o GAN seria retreinado para aumento, a seleção híbrida de características seria reaplicada, os modelos seriam retreinados, explicações seriam geradas e métricas de desempenho seriam comparadas com os resultados do conjunto de dados Cleveland.
Implementação de dashboards clínicos
Um protótipo de painel clínico baseado na web foi projetado usando um framework como Flask ou Django. Os endpoints da API HL7/FHIR foram planejados para integração com EHR, com autenticação e autorização configuradas de acordo com as políticas de segurança institucionais. As funções de mapeamento de dados foram projetadas para converter dados de EHR em formato de entrada de modelo.
A interface do usuário incluía três vistas principais. A visualização pré-triagem exibia a demografia dos pacientes e as pontuações de risco calculadas com níveis de risco codificados por cores. A visão de suporte à decisão exibia um gráfico em cascata SHAP mostrando os principais fatores contribuintes para um paciente específico. A visualização de planejamento de intervenção permitiu a análise hipotética ao ajustar fatores de risco modificáveis e exibir previsões de risco atualizadas. A funcionalidade de exportação foi incluída para salvar relatórios como arquivos PDF ou integrá-los a sistemas de documentação de EHR.
Para a futura implantação clínica, a avaliação de usabilidade por painel foi planejada com pelo menos cinco clínicos. A avaliação utilizaria a Escala de Usabilidade do Sistema, com pontuação alvo superior a 68, tempo de conclusão de tarefas, redução alvo de pelo menos 20% em comparação apenas com o uso do EHR, e escalas de satisfação de 5 pontos para clareza e confiança na explicação. Essa avaliação de usabilidade foi planejada como um passo futuro e não foi implementada no estudo atual.