$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Acquisizione di dataset
Il dataset UCI Heart Disease è un dataset ampiamente utilizzato nella ricerca medica e di machine learning per la previsione delle malattie cardiache. Contiene varie caratteristiche cliniche e diagnostiche dei pazienti, permettendo a professionisti sanitari e ricercatori di sviluppare modelli di previsione basati sui dati. Il dataset classifica gli individui come probabili o meno probabili di avere malattie cardiache in base a diversi attributi del paziente, tra cui età, genere, tipo di dolore toracico, pressione sanguigna, livelli di colesterolo e risultati dell'elettrocardiogramma (https://archive.ics.uci.edu/dataset/45/heart+disease)29. Il flusso di lavoro complessivo del framework proposto per la previsione delle malattie cardiache, inclusi la preprocessing dei dati, l'implementazione del modello distribuito e le fasi di valutazione, è illustrato nella Figura 1.
Configurazioni di ambienti sperimentali
L'ambiente sperimentale è stato implementato su Apache Hadoop 3.x come framework centrale di calcolo distribuito per tutte le implementazioni. Il cluster utilizzava un'architettura master-worker con un nodo master dedicato e più nodi work. Il nodo master gestiva la pianificazione dei lavori, l'allocazione delle risorse e il coordinamento del cluster utilizzando YARN (Yet Another Resource Negotiator), mentre i nodi worker eseguivano compiti di calcolo distribuito in parallelo per elaborare in modo efficiente dataset medici su larga scala. Ogni nodo del cluster era dotato di processori Intel Core i7 (o equivalenti), 16–32 GB di RAM e circa 1 TB di memoria.
Ingestione dati in HDFS
Memorizzazione dei dataset
Il dataset sperimentale era memorizzato in HDFS in un formato distribuito a blocchi, con la variabile target che indicava la presenza o l'assenza di malattie cardiache, separata dal set di caratteristiche indipendenti, prima dell'archiviazione tra i nodi del cluster. La pre-elaborazione specifica per funzionalità è stata applicata a tutti i blocchi dati memorizzati utilizzando i flussi di lavoro di MapReduce. Le caratteristiche numeriche, tra cui età, pressione sanguigna, livelli di colesterolo e frequenza cardiaca, sono state normalizzate utilizzando uno scaler robusto basato sull'intervallo interquartile, riducendo l'influenza degli outlier particolarmente prevalenti nei dataset medici dove valori estremi possono rappresentare condizioni cliniche rare o gravi. Le variabili categoriche con più di due categorie, come cp, restecg e thal, sono state trasformate usando la codifica one-hot, convertendo attributi categorici in rappresentazioni numeriche binarie compatibili con gli input 30,31,32 dell'algoritmo di apprendimento automatico. Tutte le operazioni di preprocessing venivano eseguite come job distribuiti MapReduce tra i blocchi dati HDFS, garantendo un'applicazione uniforme dell'intera pipeline senza centralizzare i dati grezzi in un singolo punto.
Partizionamento tra nodi
Il dataset è stato suddiviso in set di addestramento e test con una suddivisione 80:20, con l'80% destinato all'addestramento e il 20% riservato alla valutazione su dati non visti. Questa partizionazione è stata applicata in modo coerente su tutti i nodi worker distribuiti per garantire che ogni nodo elaborasse uno shard proporzionale e rappresentativo dell'intero dataset, prevenendo lo sbiaming dei dati e supportando la generalizzazione bilanciata del modello. La scalabilità ha garantito che tutte le variabili numeriche contribuissero in modo uguale durante l'addestramento distribuito, impedendo che caratteristiche di grandezzas maggiori dominassero il processo di apprendimento tra i nodi. Questa strategia di partizionamento strutturata migliorò l'affidabilità predittiva e aiutò a prevenire l'overfitting mantenendo una chiara separazione tra dati di addestramento e valutazione all'interno del cluster distribuito.
Preprocessing dei dati
Gestione del valore mancente
I dataset medici spesso contengono cartelle incomplete dovute a errori di inserimento dati, malfunzionamenti del dispositivo o mancata risposta del paziente durante la raccolta dei dati clinici. Prima dell'addestramento del modello, tutti gli attributi del dataset venivano esaminati per valori mancanti o nulli. Le righe con valori mancanti in caratteristiche cliniche critiche, come pressione sanguigna, colesterolo e frequenza cardiaca, sono state identificate e gestite utilizzando l'imputazione media per le variabili numeriche e l'imputazione modale per le variabili categoriche. Questo approccio preservava la distribuzione statistica del dataset assicurando che nessun campione di addestramento venisse scartato inutilmente, mantenendo la massima disponibilità dei dati per l'apprendimento dei modelli tra i nodi HDFS distribuiti.
Scalabilità delle caratteristiche
Le caratteristiche numeriche, tra cui età, pressione sanguigna, livelli di colesterolo e frequenza cardiaca massima, mostrano intervalli di valori significativamente diversi, il che può portare a caratteristiche di grandezza maggiore a influenzare in modo sproporzionato l'addestramento del modello. Per affrontare questo problema, è stato applicato uno scaler robusto basato sull'intervallo interquartile a tutti gli attributi numerici continui. Questa strategia di scalabilità è particolarmente adatta per i dataset medici dove valori clinici estremi che rappresentano condizioni rare o gravi potrebbero altrimenti distorcere il processo di apprendimento. La scalabilità ha garantito che tutte le variabili numeriche contribuissero allo stesso modo durante l'addestramento del modello ed è stata applicata in modo coerente su tutti i nodi di lavoratori distribuiti utilizzando i flussi di lavoro MapReduce.
Codifica
Le variabili categoriche con più di due categorie distinte, tra cui cp (tipo di dolore toracico), restecg (risultati elettrocardiografici a riposo) e thal (tipo talassemia), sono state trasformate utilizzando la codifica one-hot. Questo processo converteva ogni attributo categoriale in un insieme di colonne binarie numeriche indicative, producendo rappresentazioni che gli algoritmi di machine learning possono elaborare efficacemente senza imporre relazioni ordinali artificiali tra valori di categoria. Le variabili categoriche binarie furono mantenute nella loro forma numerica originale. Tutte le operazioni di codifica venivano eseguite come job distribuiti MapReduce tra i blocchi dati HDFS, garantendo una trasformazione coerente su tutti gli shard di dataset partizionati.
Divisione treno/test
Il dataset preelaborato è stato suddiviso in sottoinsiemi di addestramento e test utilizzando una suddivisione 80:20, con l'80% destinato all'addestramento del modello e il 20% riservato alla valutazione delle prestazioni su dati non visti. La variabile target, che indica la presenza o l'assenza di malattie cardiache, era separata dall'insieme di caratteristiche indipendenti prima della divisione. Questa partizionazione veniva applicata uniformemente su tutti i nodi HDFS distribuiti per garantire che ogni nodo worker elaborasse uno shard proporzionale e rappresentativo dell'intero dataset, prevenendo l'abalamento dei dati. La strategia di divisione 80:20 migliorò l'affidabilità predittiva, la generalizzazione del modello e mantenne una chiara separazione tra dati di addestramento e valutazione nell'ambiente del cluster distribuito, prevenendo così il sovrafitting.
Implementazione del modello
Il modello Cluster Visualized Hadoop Distributed Decision Tree (CViHDDT) classifica i pazienti in categorie di rischio utilizzando un albero decisionale distribuito. L'algoritmo dell'albero decisionale suddivide ricorsivamente il dataset in base alle caratteristiche più informative, massimizzando la separazione tra pazienti con e senza malattie cardiache. All'interno del framework distribuito Hadoop, questo processo viene eseguito su più nodi di calcolo, permettendo di elaborare in modo efficiente grandi dataset. L'architettura distribuita riduce il tempo di calcolo migliorando la scalabilità. L'algoritmo Cluster Visualized Hadoop Distributed K-Nearest Neighbor (CViHDKNN) utilizza lo stesso dataset ma applica una strategia di classificazione diversa. Invece di costruire un albero decisionale, il modello identifica i pazienti vicini più vicini in base a attributi medici come pressione sanguigna, livelli di colesterolo e angina indotta dall'esercizio fisico. Utilizzando il calcolo distribuito, l'algoritmo KNN raggruppa efficacemente pazienti con caratteristiche mediche simili gestendo la complessità computazionale.
Il principio di classificazione del modello distribuito K-vicino più prossimo è illustrato nella Figura 2, dove una nuova istanza viene assegnata a una classe basata sulla classe di maggioranza tra i suoi vicini più prossimi. Le tecniche di visualizzazione a cluster permettono ai professionisti sanitari di identificare gruppi di pazienti con caratteristiche cliniche simili, migliorando così l'interpretabilità e supportando raccomandazioni terapeutiche personalizzate. Il framework proposto per la previsione delle malattie cardiache integra la preelaborazione dei dati, algoritmi di machine learning distribuiti e tecniche di visualizzazione di cluster. Sfruttando le capacità di calcolo distribuito di Hadoop, il framework elabora in modo efficiente grandi dataset sanitari mantenendo un'elevata accuratezza e interpretabilità nelle previsioni, consentendo una diagnosi precoce delle malattie cardiache e un miglioramento delle decisioni cliniche.
Albero decisionale distribuito Hadoop visualizzato a cluster (CViHDDT):
Addestramento con albero decisionale distribuito
Il modello proposto Cluster Visualized Hadoop Distributed Decision Tree (CViHDDT) differisce fondamentalmente dalla costruzione tradizionale dell'albero decisionale, distribuendo il processo di costruzione dell'albero su più nodi nell'ecosistema Hadoop invece di costruire l'intero albero su una singola macchina. I singoli nodi worker costruiscono localmente alberi decisionali parziali sul sottoinsieme assegnato del dataset utilizzando MapReduce o Apache Spark per l'elaborazione parallela. Questi alberi parziali costruiti localmente vengono successivamente combinati in un albero decisionale globale completo che comprende l'intero dataset distribuito. Questa strategia di addestramento distribuito accelera significativamente l'addestramento dei modelli, consentendo al framework di gestire in modo efficiente dataset medici multi-terabyte su larga scala. L'infrastruttura di calcolo parallelo fornita da Hadoop garantisce che il modello CViHDDT sia intrinsecamente scalabile e ben adatto a soluzioni sanitarie guidate da big data. Dopo la costruzione dell'albero distribuito, vengono applicate tecniche di visualizzazione di cluster per migliorare l'interpretabilità del modello raggruppando i nodi dell'albero decisionale in cluster di pazienti con condizioni mediche simili, utilizzando algoritmi come k-means e clustering gerarchico. Questo processo di clustering produce categorie di rischio clinicamente significative—come malattie cardiache lievi, moderate e gravi—permettendo ai professionisti sanitari di identificare modelli nei dati dei pazienti, comprendere la progressione della malattia e formulare piani di trattamento personalizzati.
Selezione delle funzionalità
Prima dell'addestramento distribuito dell'albero decisionale, il modello CViHDDT applica una pipeline strutturata di preprocessing e selezione delle caratteristiche ai dati medici grezzi ingeriti da HDFS. I valori mancanti vengono affrontati tramite algoritmi di imputazione per gestire cartelle cliniche incomplete e prevenire la perdita di dati senza scartare campioni di pazienti. La normalizzazione Robust Scaler viene applicata a caratteristiche numeriche come pressione sanguigna e livelli di colesterolo per mitigare l'influenza sproporzionata degli outlier prevalenti nei dataset medici. Variabili categoriche come il genere e la storia familiare di malattie cardiache vengono trasformate utilizzando la codifica one-hot o l'etichetta per produrre rappresentazioni numeriche compatibili con algoritmi di machine learning. Dopo la pre-elaborazione, viene effettuata l'estrazione delle caratteristiche per identificare gli attributi clinici chiave più predittivi delle malattie cardiache. Questa fase elimina funzionalità irrilevanti e ridondanti dal dataset, riducendo i costi computazionali nelle successive fasi di addestramento distribuito e assicurando che solo gli attributi più informativi dal punto di vista diagnostico — come il tipo di dolore toracico, la pressione sanguigna a riposo, il colesterolo sierico, la frequenza cardiaca massima e la depressione ST — vengano mantenuti come input per il processo di costruzione distribuito dell'albero decisionale. Questa riduzione sistematica delle caratteristiche migliora l'efficienza del modello, riduce i tempi di addestramento tra i nodi distribuiti e aumenta l'affidabilità predittiva complessiva del framework CViHDDT concentrando il processo di apprendimento su attributi con il più forte potere discriminativo clinico.
Flusso di lavoro MapReduce
Il modello di programmazione MapReduce costituisce la spina dorsale computazionale della pipeline di addestramento distribuito CViHDDT, consentendo l'elaborazione parallela del dataset sulle malattie cardiache su tutti i nodi worker del cluster Hadoop. Nella fase di mappa, ogni nodo worker elabora indipendentemente il proprio data shard HDFS assegnato, calcolando strutture parziali dell'albero decisionale e statistiche di divisione locali — inclusi i valori di Information Gain e Gini Index — per ogni attributo candidato, senza richiedere l'accesso ai dati memorizzati sugli altri nodi. Nella fase di riduzione, gli alberi parziali calcolati localmente e le statistiche sufficienti vengono aggregati su tutti i nodi per costruire l'albero decisionale globale completo, consolidando la conoscenza distribuita appresa in ciascun nodo in un unico modello predittivo unificato. Questa decomposizione map-reduce del processo di costruzione dell'albero consente al modello CViHDDT di scalare linearmente con il numero di nodi lavoratori, rendendo fattibile l'analisi in tempo reale di dataset medici su larga scala. Il flusso di lavoro MapReduce supporta anche l'esecuzione distribuita di procedure di visualizzazione di cluster, in cui algoritmi di clustering vengono applicati in parallelo tra i blocchi dati HDFS per raggruppare i record dei pazienti in categorie di rischio in base alle assegnazioni dei nodi dell'albero decisionale. La valutazione delle prestazioni del modello risultante utilizza precisione, richiamo, punteggio F1 e accuratezza della classificazione come metriche principali, con la visualizzazione distribuita del cluster che riduce ulteriormente i falsi negativi permettendo confini decisionali più fini all'interno dell'albero — migliorando direttamente la sensibilità nell'identificazione dei pazienti a rischio e migliorando l'affidabilità clinica del framework di predizione delle malattie cardiache CViHDDT.
Cluster visualizza Hadoop distribuito K-Vicino più prossimo (CViHDKNN)
Clustering
Il framework CViHDKNN (Cluster Visualized Hadoop Distributed K-Nearest Neighbor) inizia applicando tecniche di clustering al dataset delle malattie cardiache prima della classificazione, raggruppando pazienti con caratteristiche mediche simili in cluster coerenti prima della ricerca KNN. Il dataset sulle malattie cardiache, contenente caratteristiche cliniche come età, livello di colesterolo, pressione sanguigna, risultati ECG e frequenza cardiaca, viene pre-elaborato e distribuito tra i nodi del cluster Hadoop tramite HDFS. Algoritmi di clustering, inclusi K-Means e Hierarchical Clustering, vengono poi applicati su queste partizioni dati distribuite per suddividere il dataset in gruppi di pazienti che condividono profili medici correlati. Questo passaggio di clustering pre-classificazione ha uno scopo computazionale fondamentale: limitando lo spazio di ricerca KNN solo al cluster più rilevante invece che all'intero dataset, l'algoritmo riduce drasticamente il numero di calcoli di distanza richiesti per ogni istanza di interrogazione. Visualizzare questi cluster offre un ulteriore beneficio clinico consentendo l'identificazione di sottogruppi di pazienti con caratteristiche mediche strettamente correlate e supportando una categorizzazione più significativa dei profili di rischio prima della fase di classificazione del vicino più prossimo. L'ottimizzazione basata su clustering non solo riduce il sovraccarico computazionale, ma migliora anche la precisione della classificazione assicurando che ogni istanza di query venga confrontata solo con i record dei pazienti più contestualmente simili, rendendo l'approccio particolarmente adatto per i dataset di malattie cardiache su larga scala dove un calcolo esaustivo della distanza su tutto il dataset sarebbe computazionalmente proibitivo.
KNN distribuito
La componente KNN distribuita di CViHDKNN affronta la limitazione fondamentale di scalabilità del KNN tradizionale, che richiede di caricare l'intero dataset in memoria prima di calcolare le distanze tra l'istanza di query e tutti i dati memorizzati. Nel framework CViHDKNN, questo calcolo della distanza viene parallelizzato tra più nodi worker nel cluster Hadoop utilizzando partizioni dati distribuite HDFS, garantendo che nessun singolo nodo sia necessario per elaborare l'intero dataset. Ogni nodo worker calcola indipendentemente la distanza tra l'istanza di query e i record del paziente memorizzati nel suo data shard HDFS assegnato localmente, identificando i vicini più prossimi localmente all'interno della sua partizione. Sfruttando le capacità di elaborazione parallela di Hadoop, CViHDKNN migliora drasticamente la scalabilità e consente una gestione efficiente di enormi quantità di dati medici relativi alla salute. Questa architettura distribuita migliora anche la sicurezza dei dati, poiché i record sensibili dei pazienti rimangono all'interno dell'ambiente del cluster distribuito invece di essere trasferiti su server cloud esterni o macchine locali centralizzate. La combinazione di riduzione dello spazio di ricerca guidata da clustering e calcolo delle distanze distribuito da Hadoop produce un sistema che raggiunge sia efficienza computazionale che accuratezza predittiva, consentendo la previsione in tempo reale delle malattie cardiache su dataset medici su larga scala. I risultati sperimentali confermano che l'implementazione distribuita raggiunge un'accuratezza di classificazione dell'85,25%, rappresentando un miglioramento significativo delle prestazioni rispetto alla tradizionale base KNN non distribuita, attribuibile direttamente alla strategia di elaborazione distribuita e migliorata dal clustering.
Classificazione
La fase di classificazione di CViHDKNN assegna ogni istanza di paziente interrogata a una classe di malattia cardiaca basata sulla maggioranza dei voti tra i suoi K vicini più prossimi identificati tramite il processo di ricerca distribuita. La scelta del valore K influenza direttamente i risultati della classificazione e la precisione predittiva. Quando K = 1, l'istanza di query viene assegnata all'etichetta di classe del suo singolo vicino più vicino, risultando in un confine decisionale altamente localizzato che può essere sensibile al rumore nei dati di addestramento. Quando K = 3, la classificazione è determinata dalla classe di maggioranza tra i tre vicini più prossimi — ad esempio, se due vicini appartengono alla Classe 1 (nessuna malattia cardiaca) e uno alla Classe 2 (presenza di malattia cardiaca), l'istanza di query viene classificata come Classe 1, fornendo una decisione più robusta e tollerante al rumore. La fase di riduzione di MapReduce aggrega i vicini più prossimi localmente identificati da tutti i nodi worker in una lista classificata globalmente, dalla quale vengono selezionati i K vicini più prossimi, e poi calcola il voto di maggioranza per produrre la previsione finale della classe. Le prestazioni del framework di classificazione CViHDKNN vengono valutate utilizzando precisione, richiamo, punteggio F1 e accuratezza complessiva della classificazione come metriche principali. L'integrazione della ricerca a vincoli a cluster con il voto a maggioranza distribuita produce confini decisionali più precisi e precisi rispetto al KNN standard, riducendo i falsi negativi nell'identificazione dei pazienti a rischio e migliorando la sensibilità, entrambi requisiti fondamentali per una previsione clinicamente affidabile delle malattie cardiache in ambienti di analisi sanitaria distribuita su larga scala.