$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Esse protocolo descreveu um fluxo de trabalho computacional reprodutível para benchmarking de modelos de aprendizado de máquina em conjunto usando um conjunto de dados de doenças cardiovasculares disponível publicamente.
Seleção do conjunto de dados
O estudo utilizou um conjunto de dados de doenças cardiovasculares disponível publicamente obtido do repositório Kaggle. O conjunto de dados compreendia 1190 instâncias e incluía 11 funcionalidades. Para o treinamento do modelo, 80% dos dados foram utilizados, enquanto os 20% restantes foram destinados à avaliação de desempenho. A Tabela 1 apresentou uma descrição detalhada das características do conjunto de dados. O conjunto de dados foi carregado em Python (versão 3.9) usando a biblioteca pandas (versão 1.5.3). A integridade do conjunto de dados foi verificada examinando valores ausentes, registros duplicados e tipos de dados inconsistentes.
A Tabela 1 resume os atributos demográficos, clínicos e experimentais incluídos no conjunto de dados de doenças cardiovasculares, juntamente com seus tipos de dados e formatos codificados. Essas características constituíram as variáveis de entrada para todos os procedimentos subsequentes de treinamento e avaliação do modelo.
| Sl. Não | Nome do Destaque | Tipo de Dado | Descrição |
| 1 | Idade | Numeric | Idade do paciente em anos. |
| 2 | Sexo | Nominal | Masculino representado como 1, e Feminino representado como 0. |
| 3 | Tipo de dor no peito | Categórico | 1: Típico 2: Angina típica 3: Dor não anginal 4: Assintomática |
| 4 | Pressão arterial em repouso | Numérico | Pressão arterial em repouso medida em milímetros de mercúrio (mmHg). |
| 5 | Nível de colesterol | Numeric | Colesterol sérico em miligramas por decilitro (mg/dL). |
| 6 | Açúcar no sangue em jejum | Nominal | Níveis de açúcar no sangue acima de 120 mg/dl durante o jejum são representados como 1 para verdadeiro e 0 para falso. |
| 7 | ECG em repouso | categórico | Três valores distintos são atribuídos da seguinte forma: 0 para Normal, 1 para Anormalidade na onda ST-T e 2 para Hipertrofia ventricular esquerda. |
| 8 | Frequência cardíaca máxima | Numeric | Pico de frequência cardíaca atingido |
| 9 | Angina de exercício | Nominal | Angina induzida pelo exercício, onde 0 representa NÃO e 1 representa Sim. |
| 10 | Oldpeak | Numeric | ST-depressão durante o exercício comparada ao estado de repouso. |
| 11 | Pista ST | categórico | A inclinação do segmento ST durante o exercício de pico é categorizada da seguinte forma: 0: Normal 1: Inclinação ascendente 2: Plana 3: Inclinação descendente |
Tabela 1: Descrição das características do conjunto de dados usadas para a previsão de doenças cardíacas.
Pré-processamento dos dados
O pré-processamento de dados era realizado usando bibliotecas em Python. Linhas contendo valores ausentes foram removidas usando pandas. Função DataFrame.dropna(). Valores atípicos em características numéricas foram identificados e removidos usando o método de intervalo interquartil (IQR) e visualização baseada em boxplot, que ilustra a distribuição e os valores atípicos detectados entre características (Figura 2). Todas as variáveis numéricas foram escaladas usando a função StandardScaler da biblioteca scikit-learn (versão 1.2.2). O desequilíbrio de classes foi corrigido por meio de subamostragem aleatória para obter uma distribuição de classes balanceada antes do treinamento do modelo.

Figura 2: Diagrama de caixa de todos os atributos no Conjunto de Dados de Doenças Cardiovasculares. Por favor, clique aqui para ver uma versão ampliada desta figura.
O coeficiente de correlação (PCC) de Pearson foi empregado para avaliar as relações entre características. A matriz de correlação resultante, visualizada como um mapa de calor, ilustra a força e a direção das correlações de características par a par e destaca atributos redundantes para eliminação (Figura 3).

Figura 3: Matriz de Correlação para o Conjunto de Dados de Doenças Cardíacas. Por favor, clique aqui para ver uma versão ampliada desta figura.
O modelo resulta em um mapa de calor da matriz de correlação que é esteticamente agradável e permite uma compreensão mais rápida das correlações entre diferentes características nos dados. Este mapa de calor usa cores para mostrar quanto e em que direção os valores estão correlacionados, tornando-o uma ferramenta importante na Análise Exploratória de Dados. Cores mais claras apresentam correlações positivas mais altas, cores mais escuras apresentam correlações negativas mais altas, e mais verdes apresentam correlações próximas de zero.
Extração de características
A seleção de características foi realizada usando a importância das características Random Forest, implementada via o RandomForestClassifier em bibliotecas de aprendizado de máquina de código aberto. As pontuações de importância das características foram calculadas com base na diminuição média da impureza, e as características foram classificadas de acordo. As características classificadas entre as N mais altas foram mantidas para análises posteriores. A seleção de características foi aplicada após a conclusão de todas as etapas de pré-processamento e antes da divisão train–test, garantindo que um conjunto de características fixo e consistente fosse usado em todos os modelos de classificação e configurações de conjunto (Figura 4).

Figura 4: Pontuações de importância das características calculadas usando a importância das características da Floresta Aleatória. As características são classificadas pelo valor de importância normalizado. Por favor, clique aqui para ver uma versão ampliada desta figura.
As características foram classificadas com base na diminuição média da impureza usando a importância das características da Floresta Aleatória com random_state = 42; no entanto, todas as funcionalidades disponíveis (N = 11) foram mantidas para o treinamento subsequente do modelo. A seleção de características foi aplicada após o pré-processamento e antes da divisão train–test, garantindo um conjunto de recursos fixo em todos os modelos.
Treinamento em modelos e construção de conjuntos
O conjunto de dados foi dividido em subconjuntos de treinamento e teste usando uma proporção de divisão 80:20 com a função train_test_split(). Os dados de treinamento foram usados exclusivamente para desenvolvimento de modelos e construção de conjuntos, enquanto os dados de teste foram reservados para avaliação de desempenho. Classificadores base, incluindo Decision Tree, Random Forest, AdaBoost e XGBoost, foram treinados no conjunto de dados de treinamento usando as configurações padrão de hiperparâmetro, salvo especificação em contrário.
Modelos de votação rígida e conjunto de votação suave foram construídos usando o VotingClassifier, com pesos iguais atribuídos a todos os classificadores base para garantir uma comparação objetiva. Um modelo de conjunto empilhante foi implementado usando a Regressão Logística como meta-classificador. O meta-classificador foi treinado com previsões fora de dobra geradas por meio da validação cruzada 5 vezes dos classificadores base, o que reduziu o sobreajuste e permitiu uma estimativa imparcial do desempenho do conjunto.
Modelo proposto
O framework de conjunto proposto foi implementado para construir um classificador composto usando múltiplas estratégias de aprendizado em conjunto. Todos os dados de treinamento foram padronizados, e etapas idênticas de pré-processamento foram aplicadas aos dados de teste para garantir consistência entre as fases de treinamento e avaliação. Classificadores base foram integrados usando votação rígida, votação suave e mecanismos de empilhamento, e o meta-classificador de empilhamento foi treinado usando Regressão Logística em previsões validadas cruzadamente. A arquitetura geral e o fluxo de dados do conjunto de estruturas (Figura 5).

Figura 5: Arquitetura do Modelo Proposto. Por favor, clique aqui para ver uma versão ampliada desta figura.
Nível I:
No Nível I do framework de ensemble, quatro classificadores base — Random Forest, Decision Tree, XGBoost e AdaBoost — foram treinados usando o conjunto de dados de treinamento escalonado. Esses classificadores base foram combinados para construir modelos de conjunto de votação rígida e de votação suave. Pesos iguais foram atribuídos a todos os classificadores base para manter a objetividade e evitar viés decorrente da afinação diferencial de peso durante a construção do conjunto.
Nível II:
No Nível II, um classificador de conjunto de empilhamento foi implementado combinando previsões geradas pelos classificadores base. Os classificadores base foram treinados usando validação cruzada 5-vezes e previsões fora de dobra foram geradas para cada dobra. Essas previsões fora do dobra foram então usadas como características de entrada para treinar um meta-classificador de Regressão Logística, reduzindo assim o sobreajuste e permitindo uma estimativa imparcial do desempenho do conjunto.