Portfólio — três projetos de aprendizado de máquina em saúde

Fase de consolidação encerrada. Nenhum resultado foi revisado por pares; nenhum serve para decisão clínica.

Encerrado em 2026-08-06 07:16:32 · relatório completo, 29 figuras.

Atualização de 07/08: as predições cruas do modelo principal de tuberculose foram recuperadas por retreino (ROC-AUC 0,9135 ± 0,0341, n=800). Por fonte: montgomery 0,9359 · shenzhen 0,9099. O valor publicado antes era 0,9078; a diferença é variação de execução e vai reportada como tal. Isso destrava a análise por fonte do artigo aplicado.
parcial

P1 — POSITIVO FORTE pela régua, redescoberta pelo conteúdo

Atividade antibacteriana a partir da estrutura química

Os 17 candidatos que passaram nos três critérios acionam a regra declarada (POSITIVO FORTE). Mas 11 dos 17 são classes antibióticas já conhecidas (macrolídeos, tiopeptídeos, aminoglicosídeo), com Tanimoto mediano 0,83 ao conjunto de treino. É redescoberta, não descoberta: o modelo reconhece química antibacteriana conhecida — validação real dele — mas não propôs química nova. A falha é da minha pré-especificação: o critério de domínio tinha piso (T≥0,35) e teto só em T=1,0, então análogo quase idêntico passa.

Regra declarada antes: candidato só entra com (i) score alto E (ii) dentro do domínio E (iii) arcabouço inédito

parcial

P2 — tuberculose sólida, pneumonia invalidada

Tuberculose e pneumonia em radiografia de tórax

A tuberculose é o resultado mais forte do portfólio: ROC-AUC 0,908 ± 0,036, queda de domínio medida nos dois sentidos (−0,047 e −0,140) e sobrevive ao teste de atalho (cai para 0,657 com o pulmão apagado — o sinal está no pulmão). A pneumonia tem 0,995 e não vale: com o pulmão apagado ainda faz 0,83. E a troca pelos pesos de raio-X piorou o desempenho — o ImageNet ganhou nas duas tarefas, com IC que não cruza zero.

Regra declarada antes: validação externa cruzada declarada antes; a queda é resultado, não fracasso

parcial

P3 — modesto e honesto; o temporal perdeu do baseline

Sepse em terapia intensiva

Gradient boosting ROC-AUC 0,845 · PR-AUC 0,114 (o acaso seria 0,018). O LSTM na GPU perdeu para a floresta na CPU (0,774 / 0,083). Entre hospitais cai para ~0,75. E o número que a mediana esconde: 691 dos 2.932 pacientes sépticos não receberam alerta nenhum.

Regra declarada antes: split temporal era impossível (sem data de calendário); usado split por paciente + externo entre hospitais

Página gerada a partir dos artefatos de resultado (storage/dados/portfolio/estado.json); nenhum número é digitado à mão. Gerador em /root/backup_portfolio/gerador_artigo/indice_portfolio.py.