$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Questo protocollo descriveva un flusso di lavoro computazionale riproducibile per il benchmarking di modelli di machine learning in ensemble utilizzando un dataset di malattie cardiovascolari pubblicamente disponibile.
Selezione del dataset
Lo studio ha utilizzato un dataset pubblico sulle malattie cardiovascolari ottenuto dal repository Kaggle. Il dataset comprendeva 1190 istanze e includeva 11 funzionalità. Per l'addestramento del modello, l'80% dei dati è stato utilizzato, mentre il restante 20% è stato destinato alla valutazione delle prestazioni. La Tabella 1 presentava una descrizione dettagliata delle caratteristiche del dataset. Il dataset è stato caricato in Python (versione 3.9) utilizzando la libreria pandas (versione 1.5.3). L'integrità del dataset è stata verificata esaminando valori mancanti, record duplicati e tipi di dati incoerenti.
La Tabella 1 riassume gli attributi demografici, clinici ed esperimentali inclusi nel dataset sulle malattie cardiovascolari, insieme ai loro tipi di dati e formati codificati. Queste caratteristiche costituivano le variabili di input per tutte le successive procedure di addestramento e valutazione del modello.
| Sl. No | Nome della caratteristica | Tipo di Dati | Descrizione |
| 1 | Età | Numerico | Età del paziente in anni. |
| 2 | Sesso | Nominale | Maschio rappresentato come 1, e femmina come 0. |
| 3 | Tipo di dolore toracico | Categoriale | 1: Tipico 2: Angina tipica 3: Dolore non anginale 4: Asintomatico |
| 4 | Pressione a riposo | Numerico | Pressione sanguigna a riposo misurata in millimetri di mercurio (mmHg). |
| 5 | Livello di colesterolo | Numerico | Colesterolo sierico in milligrammi per decilitro (mg/dL). |
| 6 | Zucchero nel sangue a digiuno | Nominale | I livelli di zucchero nel sangue superiori a 120 mg/dl durante il digiuno sono rappresentati come 1 per il vero e 0 per il falso. |
| 7 | ECG a riposo | Categoriale | Tre valori distinti sono assegnati come segue: 0 per Normale, 1 per Anomalia nell'onda ST-T e 2 per Ipertrofia ventricolare sinistra. |
| 8 | Frequenza cardiaca massima | Numerico | Frequenza cardiaca massima raggiunta |
| 9 | Angina di esercizio | Nominale | Angina indotta dall'esercizio, dove 0 rappresenta NO e 1 rappresenta Sì. |
| 10 | Oldpeak | Numerico | ST-depressione durante l'esercizio fisico rispetto allo stato di riposo. |
| 11 | Pendio ST | Categoriale | La pendenza del segmento ST durante l'esercizio di picco è classificata come segue: 0: Normale 1: Inclinazione in salita 2: Piatta 3: Discesa |
Tabella 1: Descrizione delle caratteristiche del dataset utilizzate per la previsione delle malattie cardiache.
Preprocessing dei dati
La pre-elaborazione dei dati veniva eseguita utilizzando librerie Python. Le righe contenenti valori mancanti sono state rimosse usando pandas. Funzione DataFrame.dropna(). Gli outlier nelle caratteristiche numeriche sono stati identificati e rimossi utilizzando il metodo dell'intervallo interquartile (IQR) e la visualizzazione basata su boxplot, che illustra la distribuzione e gli outlier rilevati tra le caratteristiche (Figura 2). Tutte le variabili numeriche sono state scalate utilizzando la funzione StandardScaler dalla libreria scikit-learn (versione 1.2.2). Il disequilibrio di classe è stato affrontato tramite sottocampionamento casuale per ottenere una distribuzione bilanciata delle classi prima dell'addestramento del modello.

Figura 2: Diagramma a scatola di tutti gli attributi nel dataset sulle malattie cardiovascolari. Clicca qui per visualizzare una versione più grande di questa figura.
Il coefficiente di correlazione (PCC) di Pearson è stato utilizzato per valutare le relazioni tra le caratteristiche. La matrice di correlazione risultante, visualizzata come una mappa termica, illustra la forza e la direzione delle correlazioni di caratteristiche a coppie e evidenzia attributi ridondanti per l'eliminazione (Figura 3).

Figura 3: Matrice di correlazione per il dataset sulle malattie cardiache. Clicca qui per visualizzare una versione più grande di questa figura.
Il modello produce una mappa termica della matrice di correlazione esteticamente gradevole e consente una comprensione più rapida delle correlazioni tra le diverse caratteristiche nei dati. Questa mappa termica utilizza i colori per mostrare quanto e in quale direzione i valori sono correlati, rendendola uno strumento importante nell'Analisi Esplorativa dei Dati. I colori più chiari mostrano correlazioni positive più elevate, i colori scuri mostrano correlazioni negative più elevate e più verdi mostrano correlazioni vicine a zero.
Estrazione delle caratteristiche
La selezione delle caratteristiche veniva effettuata utilizzando l'importanza delle caratteristiche Random Forest implementata tramite il RandomForestClassifier nelle librerie di machine learning open source. I punteggi di importanza delle caratteristiche sono stati calcolati sulla base della diminuzione media dell'impurità e le caratteristiche sono state classificate di conseguenza. Le caratteristiche tra le prime N, classificate, sono state mantenute per analisi successive. La selezione delle caratteristiche è stata applicata dopo il completamento di tutti i passaggi di preelaborazione e prima della divisione treno–test, garantendo che un set di caratteristiche fisso e coerente fosse utilizzato in tutti i modelli di classificazione e le configurazioni degli ensemble (Figura 4).

Figura 4: Punteggi di importanza delle caratteristiche calcolati utilizzando l'importanza delle caratteristiche della Foresta Casuale. Le caratteristiche sono classificate in base al valore di importanza normalizzato. Clicca qui per visualizzare una versione più grande di questa figura.
Le caratteristiche sono state classificate in base alla diminuzione media dell'impurità usando l'importanza delle caratteristiche della Foresta Casuale con random_state = 42; tuttavia, tutte le caratteristiche disponibili (N = 11) furono mantenute per l'addestramento successivo del modello. La selezione delle caratteristiche veniva applicata dopo la pre-elaborazione e prima della divisione treno-test, garantendo un set di funzionalità fisso su tutti i modelli.
Addestramento al modello e costruzione dell'ensemble
Il dataset è stato suddiviso in sottoinsiemi di addestramento e test utilizzando un rapporto di divisione 80:20 con la funzione train_test_split(). I dati di addestramento venivano utilizzati esclusivamente per lo sviluppo del modello e la costruzione di ensemble, mentre i dati di test erano riservati alla valutazione delle prestazioni. I classificatori base, inclusi Decision Tree, Random Forest, AdaBoost e XGBoost, venivano addestrati sul dataset di addestramento usando le impostazioni predefinite degli iperparametri, salvo diversa specificazione.
I modelli di ensemble hard voting e soft voting sono stati costruiti utilizzando il VotingClassifier, con pesi uguali assegnati a tutti i classificatori base per garantire un confronto oggettivo. Un modello di ensemble a impilamento è stato implementato utilizzando la Regressione Logistica come meta-classificatore. Il meta-classificatore è stato addestrato su previsioni out-of-fold generate tramite la validazione incrociata 5-fold dei classificatori base, che ha ridotto l'overfitting e permesso una stima imparziale della performance dell'ensemble.
Modello proposto
Il framework di ensemble proposto è stato implementato per costruire un classificatore composito utilizzando strategie di apprendimento multiple in ensemble. Tutti i dati di addestramento sono stati standardizzati e sono stati applicati passaggi di pre-elaborazione identici ai dati di test per garantire la coerenza tra le fasi di addestramento e quella di valutazione. I classificatori base sono stati integrati utilizzando meccanismi di voto rigido, voto soft e stacking, mentre il meta-classificatore di stacking è stato addestrato usando la Regressione Logistica su previsioni convalidate incrociatamente. L'architettura complessiva e il flusso di dati del framework dell'ensemble (Figura 5).

Figura 5: Architettura del modello proposto. Clicca qui per visualizzare una versione più grande di questa figura.
Livello I:
Al Livello I del framework ensemble, quattro classificatori base—Random Forest, Decision Tree, XGBoost e AdaBoost—sono stati addestrati utilizzando il dataset scaled training. Questi classificatori di base sono stati combinati per costruire sia modelli di ensemble hard voting che soft vote. Pesi uguali sono stati assegnati a tutti i classificatori base per mantenere l'obiettività e prevenire bias derivanti dalla regolazione differenziale del peso durante la costruzione dell'ensemble.
Livello II:
Al Livello II, un classificatore a combinazione di sovraprevisioni generate dai classificatori base è stato implementato combinando le previsioni generate dai classificatori di base. I classificatori base sono stati addestrati utilizzando la validazione incrociata a 5 volte e sono state generate previsioni out-of-fold per ciascuna piegatura. Queste previsioni out-of-fold sono state poi utilizzate come caratteristiche di input per addestrare un meta-classificatore di Regressione Logistica, riducendo così l'overfitting e consentendo una stima imparziale della performance dell'ensemble.