POLITECNICO DI TORINO III Facoltà di Ingegneria Corso di Laurea Specialistica in Ingegneria Informatica Tesi di Laurea Specialistica Individuazione di situazioni di rischio in dati clinici rilevati da sensori Relatrice Prof.ssa Elena Baralis Candidati Daniele Apiletti Giulia Bruno Settembre 2005 Desideriamo ringraziare Tania, per l’aiuto e la disponibilità e Raffaele, per il prezioso supporto medico. Indice CAPITOLO 1 – INTRODUZIONE .........................................................................1 CAPITOLO 2 – ANALISI DI DATI CLINICI ..........................................................3 2.1 Esigenze delle persone anziane ..................................................................3 2.2 Apparecchiature per la misura dei segnali fisiologici..............................4 2.2.1 Battito cardiaco .....................................................................................4 2.2.2 Pressione arteriosa.................................................................................5 2.2.3 Saturazione di ossigeno.........................................................................6 2.3 Progetti .........................................................................................................7 2.4 Discussione .................................................................................................11 CAPITOLO 3 – TECNICHE DI ANALISI DEI DATI..............................................12 3.1 Introduzione ..............................................................................................12 3.2 Data mining e knowledge discovery ........................................................13 3.3 Applicazioni di data mining .....................................................................15 3.4 Fasi del processo di data mining..............................................................15 3.4.1 Preparazione dei dati ...........................................................................15 3.4.2 Data mining.........................................................................................18 3.4.3 Visualizzazione, interpretazione e previsione.....................................18 3.5 Data mining ...............................................................................................18 3.5.1 Funzionalità di data mining.................................................................19 3.6 Clustering...................................................................................................23 3.6.1 Descrizione generale ...........................................................................23 3.6.2 Misure di distanza ...............................................................................24 3.6.3 Principali metodi di clustering ............................................................25 3.7 Sequenze temporali ...................................................................................31 3.8 Discussione .................................................................................................31 3.8.1 Scelta della funzionalità di data mining ..............................................31 3.8.2 Scelta dell’algoritmo di clustering ......................................................33 CAPITOLO 4 – IGUANA – IDEA .....................................................................35 4.1 Introduzione ..............................................................................................35 Indice 4.2 Creazione del modello...............................................................................37 4.2.1 Evoluzione ..........................................................................................37 4.2.2 Funzione di rischio..............................................................................38 4.2.3 Ipotesi sulla frequenza.........................................................................42 4.2.4 Clustering ............................................................................................43 4.3 Classificazione ...........................................................................................43 4.4 Rischio totale .............................................................................................47 CAPITOLO 5 – IGUANA – IMPLEMENTAZIONE ............................................49 5.1 Introduzione ..............................................................................................49 5.2 Introduzione a R........................................................................................49 5.3 Main............................................................................................................52 5.4 Lettura dei dati..........................................................................................53 5.5 Pre-elaborazione dei dati..........................................................................54 5.6 Calcolo della media mobile.......................................................................57 5.7 Creazione del modello...............................................................................60 5.7.1 Modello 1 ............................................................................................60 5.7.2 Modello 2 ............................................................................................61 5.7.3 Modello 3 ............................................................................................63 5.8 Classificazione dei dati..............................................................................64 5.8.1 Classificatore 1....................................................................................65 5.8.2 Classificatore 2....................................................................................67 5.8.3 Classificatore 3....................................................................................71 CAPITOLO 6 – BASI DI DATI MEDICHE ...........................................................75 6.1 Introduzione ..............................................................................................75 6.2 La base di dati MIMIC .............................................................................76 6.2.1 Research Resource for Complex Physiologic Signals ........................76 6.2.2 Descrizione..........................................................................................78 6.2.3 Scelta dei dati ......................................................................................79 6.3 La base di dati Fantasia............................................................................81 6.4 Pre-elaborazione dei dati..........................................................................82 6.4.1 PhysioToolkit ......................................................................................82 6.4.2 Conversione di formato.......................................................................83 6.4.3 Elaborazione........................................................................................85 Indice CAPITOLO 7 – ANALISI DEI RISULTATI ..........................................................94 7.1 Introduzione ..............................................................................................94 7.2 Modelli generati con IGUANA per MIMIC ...........................................95 7.2.1 Pazienti scelti ......................................................................................95 7.2.2 Parametri impostati .............................................................................97 7.3 Modello generato con IGUANA per Fantasia ........................................99 7.4 Esperimenti con MIMIC ........................................................................100 7.4.1 Campione di pazienti ........................................................................101 7.4.2 Numero di cluster..............................................................................107 7.4.3 Ampiezza della sliding window ........................................................113 7.4.4 Frequenza di campionamento ...........................................................116 7.4.5 Soglie di normalità ............................................................................119 7.4.6 Algoritmo di clustering .....................................................................124 7.4.7 Distanza inter-cluster ........................................................................134 7.4.8 Pesi ....................................................................................................141 7.4.9 Livelli di rischio ................................................................................152 7.5 Esperimenti con Fantasia .......................................................................158 7.5.1 Confronto tra pazienti sani ................................................................158 7.5.2 Confronto tra pazienti in diverso stato di salute................................161 7.6 Prestazioni del classificatore ..................................................................164 7.6.1 Risorse di calcolo ..............................................................................164 7.6.2 Risorse di memoria ...........................................................................166 7.7 Commenti generali ..................................................................................168 CAPITOLO 8 – CONCLUSIONI .......................................................................169 8.1 Obiettivi raggiunti...................................................................................169 8.2 Sviluppi futuri .........................................................................................170 8.2.1 Studio delle correlazioni ...................................................................170 8.2.2 Funzione di rischio totale ..................................................................171 8.2.3 Macchina a stati.................................................................................171 8.2.4 Frequenza di misurazione .................................................................171 8.2.5 Creazione del modello bilanciata ......................................................171 INDICE DELLE FIGURE ...................................................................................... 172 INDICE DELLE TABELLE .................................................................................... 175 BIBLIOGRAFIA................................................................................................... 176 Capitolo 1 Introduzione Un insieme relativamente vasto di persone è affetto da patologie o presenta disturbi di coscienza tali da non poter formulare richieste di aiuto al di fuori di contesti perimetralmente definiti. Spesso l’assistenza permanente o il ricovero in ospedale non sono indispensabili, ma richiesti ugualmente dal paziente per avere un soccorso immediato in caso di necessità (ad esempio un malore improvviso o un’alterazione pericolosa di valori fisiologici). Grazie ai recenti sviluppi tecnologici nell’area delle reti di sensori è possibile monitorare continuamente i segnali fisiologici dei soggetti sotto osservazione, indipendentemente dalle attività da loro svolte e dai luoghi in cui si trovano. Diversi segnali vitali possono essere rilevati attraverso una piccola rete di sensori, integrati in oggetti poco invasivi come orologi o bracciali, distribuiti sul corpo umano. In caso di malessere o di alterazione significativa di uno o più segnali vitali, è possibile identificare una situazione di rischio e richiedere un intervento adeguato. Recentemente si stanno sviluppando progetti per realizzare sia dispositivi tecnologici adatti alla raccolta e alla ritrasmissione dei dati, sia algoritmi per il trattamento dei dati misurati e la loro interpretazione, allo scopo di individuare situazioni di rischio in tempo reale e inviare immediatamente in modo automatico richieste di aiuto. La nostra tesi si concentra su questo secondo punto. L’obiettivo che ci siamo prefissati riguarda la definizione e la realizzazione di algoritmi di analisi dei dati volti alla caratterizzazione e all’individuazione tempestiva di situazioni rischiose a partire dai flussi di dati inviati dai sensori. Ci siamo concentrati sull’analisi di situazioni di emergenza e abbiamo considerato solo flussi di dati relativi a segnali fisiologici vitali. Tali segnali devono permettere di riconoscere gravi alterazioni dello stato di salute del paziente e devono poter essere misurati tramite sensori indossabili e non invasivi, senza limitare i movimenti dei pazienti ad un ambiente chiuso, per considerare anche le situazioni di rischio all’esterno dell’abitazione. Abbiamo scelto di considerare i segnali di battito cardiaco, pressione arteriosa sistolica e diastolica, saturazione arteriosa di ossigeno. Abbiamo studiato un algoritmo di classificazione in grado di riconoscere il profilo di una situazione a rischio per il paziente, a partire dai dati rilevati dai sensori e valutati entro appropriate finestre temporali. Ad ogni profilo può essere associato, se 1 Capitolo 1 - Introduzione necessario, un particolare soccorso o intervento richiesto automaticamente al centro medico più vicino. Un aspetto innovativo del classificatore, che sarà installato a bordo di un dispositivo mobile alimentato a batterie, sarà il contenimento del suo consumo energetico. Analizzando l’andamento dei segnali fisiologici di persone anziane, abbiamo ideato una funzione di calcolo del rischio del paziente ad ogni istante. Attraverso tecniche di clustering abbiamo diviso i valori del rischio in classi corrispondenti a diversi livelli di pericolosità, dalla normalità all’emergenza, in modo che ad ogni istante il paziente si trovi in una determinata classe. Le classi con livello di rischio più elevato possono avere associato un allarme da inviare al medico o all’ospedale. Abbiamo realizzato un prototipo in grado di creare un modello e di utilizzarlo per classificare i nuovi dati. Per mantenere una maggiore flessibilità abbiamo introdotto alcuni parametri e abbiamo confrontato i risultati ottenuti variandone uno per volta. Il documento è organizzato nel modo seguente. Nel Capitolo 2 presentiamo lo stato dell’arte della ricerca ad oggi, in particolare le apparecchiature esistenti da poter utilizzare per le misure di pressione arteriosa, battito cardiaco e saturazione di ossigeno e i progetti in corso o previsti, con relativi pregi e difetti. Infine discutiamo brevemente le differenze di tali progetti dal nostro approccio e le motivazioni che ci hanno portato a svilupparlo. Nel Capitolo 3 forniamo una panoramica sul data mining, spiegando le fasi che caratterizzano questo processo. Ci concentriamo principalmente sulle tecniche di clustering, che abbiamo deciso di utilizzare, ritenendole migliori per la risoluzione del nostro problema. Nel Capitolo 4 illustriamo il nostro framework, denominato IGUANA (Individuation of Global Unsafe ANomalies and activation of Alarms), spiegando i concetti fondamentali. Descriviamo il funzionamento generale e i meccanismi di interazione tra i vari moduli, in modo indipendente dall’implementazione sottostante. In particolare motiviamo la funzione di calcolo del rischio che abbiamo ideato, illustriamo la fase di creazione del modello e quella della sua applicazione in tempo reale ai nuovi dati rilevati dai sensori. Nel Capitolo 5 ci soffermiamo sui dettagli implementativi del prototipo di IGUANA. Descriviamo la struttura del programma, che abbiamo scritto in R, riportando le parti di codice più significative. Nel Capitolo 6 descriviamo i dati analizzati, che abbiamo prelevato da database disponibili in Internet, data l’enorme difficoltà di reperirli in forma diretta. In questo capitolo descriviamo anche la fase di pre-elaborazione dei dati, perché concettualmente è più inerente ad essi che all’algoritmo di analisi. Nel Capitolo 7 analizziamo i risultati ottenuti e il diverso comportamento dell’algoritmo al variare dei parametri impostabili. Assegniamo di volta in volta un valore diverso ad ogni parametro, riportiamo i grafici relativi in modo da visualizzare i diversi risultati, e motiviamo le nostre scelte dove necessario. Nel Capitolo 8, infine, riportiamo le conclusioni e le idee per eventuali sviluppi futuri. 2 Capitolo 2 Analisi di dati clinici 2.1 Esigenze delle persone anziane La salute e la qualità della vita degli anziani costituiscono un tema di grande rilevanza che ancora non si riflette appieno nell’azione dei servizi di prevenzione. La popolazione italiana ha subito un progressivo invecchiamento nel corso degli ultimi decenni (circa il 18% ha un’età superiore ai 65 anni1), dovuto ai profondi mutamenti demografici derivati dal calo della natalità e dalla consistente riduzione della mortalità. Spesso però all’allungamento della vita non corrisponde un effettivo miglioramento della sua qualità: la diminuzione dell’autosufficienza, la presenza di patologie multiple e l’isolamento sociale sono problemi che aumentano e si aggravano con l’età. L’aumento del numero degli anziani con problemi di salute, la diminuzione del numero dei membri della famiglia che possono prendersi cura di loro, l’aumento del fabbisogno di servizi sanitari, inclusa l’assistenza a domicilio, e l’aumento dei costi sono i problemi principali cui si deve far fronte quando la popolazione invecchia. Tra le patologie più diffuse negli anziani si registrano l’insufficienza cardiaca e l’ipertensione arteriosa come riportato in [1, 2]. In particolare appartengono al primo gruppo le seguenti malattie: l’angina pectoris, dal latino “dolore di petto”, dovuta ad un’improvvisa riduzione dell’apporto di sangue al cuore, o a parte di esso, quando la presenza di restringimenti nelle arterie coronarie non consente l’afflusso regolare di sangue; la fibrillazione atriale, un’aritmia, o anomalia del ritmo cardiaco, caratterizzata da un aumento della frequenza con battiti non regolari; può impedire al cuore di pompare la quantità di sangue e ossigeno sufficiente a soddisfare i bisogni del corpo; l’attacco ischemico transitorio, detto anche TIA, che consiste in un’interruzione di breve durata del flusso di sangue in una parte del cervello e spesso rappresenta un campanello di allarme per un ictus. 1 http://www.ministerosalute.it 3 Capitolo 2 - Analisi di dati clinici L’ipertensione arteriosa invece è un aumento eccessivo della pressione arteriosa, cioè della forza con cui il cuore pompa il sangue nelle arterie. La parete delle arterie reagisce a questo aumento accumulando sostanze grasse (colesterolo), ispessendosi e indurendosi. Queste alterazioni pericolose della parete delle arterie vengono definite con il nome di arteriosclerosi (calcificazione dell’arteria). Un’arteria ristretta è un buon terreno per la formazione di coaguli, che possono portare a un’occlusione improvvisa e totale del vaso. L’ipertensione ha conseguenze devastanti per i reni, compromettendo progressivamente la loro funzione escretoria. Il cuore, nel tentativo di vincere la resistenza maggiore delle arterie, reagisce con l’ingrossamento della parete muscolare (ipertrofia). Tuttavia, se questo sforzo eccessivo non viene alleggerito abbassando la pressione, con il tempo la parete cardiaca si trasforma, la cavità si dilata e la capacità di pompare sangue diventa inadeguata (insufficienza cardiaca). Gli obiettivi verso i quali si sta muovendo la medicina contemporanea, in particolare quella rivolta all’assistenza delle persone anziane ma ancora autosufficienti, sono: il monitoraggio continuo dei segnali fisiologici, attraverso apparecchiature non invasive (non ingombranti e che non limitino i movimenti del paziente); l’analisi dei dati raccolti per individuare tempestivamente situazioni di rischio, riducendo l’assistenza a domicilio, i periodi di osservazione in strutture ospedaliere e i ricoveri in case di cura. 2.2 Apparecchiature per la misura dei segnali fisiologici Non ci siamo occupati direttamente della parte di rilevazione delle misure tramite sensori; per dimostrare però che esistono in commercio strumenti adatti, forniamo una breve panoramica sul funzionamento di quelli che ci sarebbero utili per i parametri che abbiamo preso in considerazione in questa tesi, ossia battito cardiaco, pressione arteriosa e saturazione periferica di ossigeno nel sangue. 2.2.1 Battito cardiaco Il battito cardiaco è generato dagli impulsi elettrici provenienti dalle terminazioni nervose nell’atrio, i quali attivano i muscoli del cuore affinché inizino il movimento meccanico per pompare il sangue nelle arterie. La frequenza può variare nel corso della giornata, diminuendo durante il sonno e aumentando durante le attività fisiche. È importante rilevare le aritmie, cioè i movimenti non ritmici del cuore, dovuti a impulsi elettrici anomali o provenienti da altre aree che di solito non li originano. Un’aritmia può manifestarsi come battiti rapidi e regolari (tachicardia), battiti rapidi e irregolari (fibrillazione), battiti troppo lenti (bradicardia) o battiti straordinari (contrazioni premature), come descritto in [3]. 4 Capitolo 2 - Analisi di dati clinici I dispositivi in commercio, provenienti da diverse case produttrici, in particolare nella forma di orologi o bracciali come quelli riportati in Figura 2.1, in vendita al costo di qualche centinaio di euro [4, 5], misurano l’intervallo di tempo in millisecondi tra un battito e il successivo, o più precisamente l’intervallo tra i due punti R della forma d’onda di esempio riportata nella Figura 2.2. Figura 2.1 Esempi di orologi per la misura del battito cardiaco Figura 2.2 Intervallo tra due punti R 2.2.2 Pressione arteriosa La pressione nella circolazione sanguigna viene generata dall’azione ritmica di pompaggio del cuore, che è un potente muscolo cavo (come descritto in [1]). Contrariamente ai tubi rigidi delle canalizzazioni, le arterie hanno pareti elastiche e muscolari che fanno in modo che nell’intervallo tra un battito e l’altro la pressione non crolli e arrivi ossigeno agli organi che ne hanno maggior bisogno. Quando il muscolo cardiaco si contrae, espelle con forza il sangue nelle arterie, generando un picco di pressione. Questo picco viene rilevato nella misurazione sotto forma di pressione massima o sistolica. Il termine sistolico indica che è determinato dal cuore che si contrae (sistole = contrazione). Nella fase di rilasciamento del cuore (diastole), le sue cavità si riempiono di sangue, mentre nelle arterie cala moderatamente la pressione. Quando il cuore si rilassa, la misurazione registra il valore minimo (diastolico), che corrisponde alla resistenza che 5 Capitolo 2 - Analisi di dati clinici trova il flusso sanguigno nello scorrere nelle piccole biforcazioni delle arterie a livello degli organi e dei tessuti. La pressione arteriosa è misurabile nei suoi valori di massima e minima tramite l’uso di appositi bracciali, come quelli riportati in Figura 2.3. Figura 2.3 Esempi di bracciali per la misura della pressione arteriosa 2.2.3 Saturazione di ossigeno Il puls-ossimetro (SpO2) misura in modo continuo e non invasivo la saturazione arteriosa di ossigeno (percentuale di ossiemoglobina) su un sito periferico (ad esempio un dito del piede o della mano, o il lobo dell’orecchio), come spiegato in [6, 7, 8]. Il monitoraggio della SpO2 offre informazioni generali sul sistema cardiorespiratorio e particolari sul trasporto di ossigeno nel corpo. Viene usato per il monitoraggio di pazienti a rischio di ipossiemia. È utile perché indolore, facile da applicare, continuo e non invasivo. Il sensore per ossimetria (Figura 2.4) contiene due diodi a emissione luminosa (LED) che trasmettono luce rossa e infrarossa attraverso le estremità. La luce trasmessa viene quindi ricevuta da un rivelatore ottico. Il sangue saturo di ossigeno assorbe la luce in modo diverso dal sangue non saturo. Pertanto, la quantità di luce rossa e infrarossa assorbita dal sangue che scorre attraverso una zona periferica del corpo adatta, in genere un dito negli adulti e un piede nei neonati, può essere usata per calcolare il rapporto fra l’emoglobina ossigenata e l’emoglobina totale nel sangue arterioso. Un monitor visualizza tale rapporto come percentuale di SpO2. In alternativa al sensore a pinza è possibile usare anche un cerotto (Figura 2.5). Figura 2.4 Sensore a pinza per la misura della saturazione di ossigeno 6 Capitolo 2 - Analisi di dati clinici Figura 2.5 Cerotto per la misura della saturazione di ossigeno 2.3 Progetti La ricerca a livello europeo ed italiano sull’industria dei sensori indossabili è uno dei temi caldi del momento. La comunità europea ha già finanziato progetti di ricerca nel V progetto quadro, in particolare il progetto MobiHealth [9]. Tale progetto, come tutti quelli attivi in questo settore, ha favorito lo sviluppo di nuovi servizi mobili nell’area della salute, permettendo al paziente di stare in movimento durante il processo di monitoraggio. La diversa dislocazione dei sensori che acquisiscono i dati spinge verso la ricerca di dispositivi capaci di operare all’interno di BAN (Body Area Network) e trasmettere ad un sistema di monitoraggio centrale. In tale progetto, però, la parte di analisi e correlazione dei segnali vitali avviene soltanto in ospedale ed è automatizzata solo per poche e specifiche combinazioni di segnali; in tutti gli altri casi richiede l’intervento di un operatore medico per la diagnosi. Attualmente sono in corso, o previsti, parecchi progetti di monitoraggio a distanza di persone anziane, in collaborazione con ospedali o case di riposo. Le componenti dei progetti sono in genere tre: uso di dispositivi mobili da parte dei pazienti per il monitoraggio di alcuni parametri (battito cardiaco, pressione, respirazione, inclinazione e accelerazione lungo gli assi), ricezione dei dati dei sensori da parte di una stazione base in modalità wireless (senza fili), raccolta dei dati di tutte le stazioni in un centro di monitoraggio. A tale proposito si possono citare in particolare due progetti italiani, entrambi presentati nel 2005. 7 Capitolo 2 - Analisi di dati clinici Il primo, il progetto Aditech [10], riguarda la sperimentazione su venti anziani piemontesi di un innovativo sistema di monitoraggio a distanza per migliorare la qualità della vita delle persone con problemi di autonomia ed ottimizzare i percorsi di assistenza. La sperimentazione, voluta dalla Regione Piemonte e realizzata dal CETAD (Centro Eccellenze Tecnologie per Anziani e Disabili) e dall’Istituto Superiore Mario Boella (ISMB), è stata presentata alla casa di riposo Città di Asti dall’assessore regionale alle Politiche Sociali Mariangela Cotto, dal presidente dell’ISMB Rodolfo Zich e dal presidente del CETAD Carlo Poggio, che hanno dato dimostrazione pratica del funzionamento del sistema di telemonitoraggio. Il progetto Aditech è costituito da tre componenti: un dispositivo mobile da indossare al polso, come un normale orologio, una stazione base che riceve in modalità wireless i dati dell’orologio, un centro di monitoraggio che raccoglie e gestisce i dati provenienti dalle diverse stazioni. Il prototipo dell’orologio, attraverso appositi sensori, è in grado di rilevare i seguenti parametri: ambientali (temperatura, luminosità), fisiologici (temperatura cutanea, mobilità della persona e quindi movimenti bruschi o immobilità, battito cardiaco), di funzionamento (rimozione dal polso, guasto, copertura radio, livello batteria). La prima sperimentazione partirà su venti anziani, nella casa di riposo Città di Asti e all’Istituto di Riposo per la Vecchiaia di Torino, con la collaborazione degli operatori e degli anziani: il metodo di lavoro sarà centrato sulla persona anziana, considerata nell’insieme delle sue caratteristiche, delle sue esigenze e dell’ambiente in cui vive. Tenendo conto di questi aspetti sarà possibile migliorare la funzionalità, l’efficienza, la semplicità d’uso e la sicurezza dell’intero sistema di telemonitoraggio. Il secondo progetto, descritto in [11] e realizzato dalla SOGIT ONLUS - Sezione di Lignano Sabbiadoro - con la collaborazione del Comune di Lignano Sabbiadoro, riguarda il telemonitoraggio dei segnali fisiologici per la popolazione anziana residente e turistica della città di Lignano Sabbiadoro. Prevede l’utilizzo di MEMS (MicroElectro-Mechanical Systems), sensori micro-elettro-meccanici intelligenti, che abbinano funzioni elettriche, di gestione di fluidi, ottiche, biologiche, chimiche e meccaniche in uno spazio estremamente ridotto. Tali sensori possono essere impiegati per il monitoraggio continuo delle funzioni vitali attraverso il loro interfacciamento con ricevitori domestici e territoriali a radiofrequenze collegati ad una centrale operativa sanitaria. La ditta Wireless Sensor Networks di Monza ha recentemente perfezionato un particolare registratore di dati biomedici, basato su sensori MEMS e dotato di scheda flash di raccolta dei dati. Nell’ambito di tale progetto, si svilupperanno le seguenti azioni: posizionamento di stazioni riceventi automatiche in tre punti ad alta densità di popolazione all’interno della città di Lignano Sabbiadoro; 8 Capitolo 2 - Analisi di dati clinici predisposizione e fornitura di sensori ai pazienti con scheda di memoria e scaricamento wireless automatico dei dati in prossimità delle colonnine riceventi (“BIOTOTEM wireless”); progettazione ed attivazione di un sito internet gestito da server protetto per la consultazione e gestione di dati e referti da parte di personale medico locale e non (medici di fiducia nazionali ed internazionali dei vari pazienti, con password d’accesso; specialisti sempre con password); creazione di una rete di assistenza locale ed eventualmente convenzione con un call center specializzato. Si è scelta la città di Lignano Sabbiadoro perché è una località turistica internazionale che durante il periodo estivo presenta due peculiari problematiche: i familiari anziani dei lavoratori stagionali lamentano notevole difficoltà ad eseguire molte attività, tra cui le visite di controllo, soprattutto a causa della mancanza dell’accompagnatore; i pazienti non residenti, in particolar modo quelli stranieri, che svolgono alcuni controlli medici di routine riferiscono difficoltà a trasmettere velocemente i referti grafici e testuali al proprio medico di fiducia nel paese d’origine. Con questa iniziativa si desidera facilitare l’applicazione di protocolli di prevenzione ed assistenza medica continuativa a favore delle categorie più deboli. Gli obiettivi prefissati sono la diffusione di protocolli di prevenzione basati su nuove tecnologie a favore della popolazione anziana carente in accompagnatori, mezzi di trasporto o lontana da strutture sanitarie (esclusa l’emergenza), e la gestione elettronica della documentazione sanitaria dei pazienti semi e non autosufficienti non residenti. Non solo in Italia si assiste all’avanzamento della ricerca nel campo del monitoraggio continuo di anziani, disabili o pazienti di malattie croniche nelle loro abitazioni, per evitare il ricovero in una casa di cura. Un sistema simile è stato progettato nell’Università nazionale coreana di Hankyong dal prof. Yong Tae-Kim. Come descritto in [12], i dati medici del paziente, o biosegnali, raccolti con sensori applicati sulle zone di interesse del corpo, vengono automaticamente elaborati in un palmare, a cui l’intero sistema è collegato. Questo dispositivo trasmette a sua volta le informazioni via web usando una rete senza fili da casa direttamente all’ospedale o al medico curante. L’eventuale emergenza viene segnalata via SMS tramite un sistema di telefonia collegato. Lo stato di salute è continuamente monitorato e quindi è possibile prevenire o intervenire in tempo. Il prototipo, presentato a Sidney al convegno organizzato dal Korea Advanced Institute of Science and Technology e dalla University of New South Wales, è già in sperimentazione in alcuni ospedali coreani. Nell’ambito del data mining i ricercatori si sono dedicati alla scoperta di profili comportamentali analizzando le variazioni temporali di parametri qualitativi e quantitativi registrati da sensori. In particolare Florence Duchene, come spiegato in [13, 14], ha sviluppato un metodo per trovare strutture ed estrarre regolarità nelle sequenze dei dati registrati, per individuare i comportamenti frequenti e definire un pattern 9 Capitolo 2 - Analisi di dati clinici comportamentale di una persona nella propria abitazione. Ogni deviazione da questo profilo è considerata come una possibile situazione critica. L’attività di una persona, direttamente legata al suo stato di salute, è spesso descrivibile intuitivamente in termini di azioni semplici (alzarsi, chiudere una porta, ecc.) e poi di attività (mangiare, dormire, vestirsi, ecc.). Un deterioramento nello stato di salute di solito causa disordini comportamentali, osservabili come aumento del rischio di cadute, lentezza nell’eseguire semplici operazioni e in generale incapacità di eseguire attività quotidiane. In [14] Florence Duchene prende in considerazione, per un certo periodo di tempo, i dati di battito cardiaco, livello di attività (tramite un accelerometro), postura (persona sdraiata, seduta o in piedi) e quelli relativi alla casa (come l’occupazione delle stanze). Individua quindi le fasi di astrazione e di data mining; la prima permette di ottenere una rappresentazione sintetica dei dati come sequenze di simboli, ognuno dei quali denota l’esecuzione di un’attività per un certo tempo, la seconda seleziona le sottosequenze temporali più frequenti (chiamate tentative motifs) e poi applica su di esse un algoritmo di clustering (le sequenze rappresentative delle classi sono chiamate timeseries motifs). La maggior parte dei ricercatori si concentra sul monitoraggio all’interno di edifici, in particolare la casa dei pazienti [15, 25, 26, 27, 28, 29, 30, 31]. Ad esempio in [15] viene descritta una Smart Home, ovvero un ambiente intelligente in grado di acquisire conoscenza sui suoi abitanti e di gestire automaticamente il controllo di parecchi aspetti come la climatizzazione e l’illuminazione della casa, oltre alle emergenze. Lo scenario illustrato, che vede come protagonista un ragazzo chiamato Bob, è il seguente. Per minimizzare il consumo energetico, la Smart Home spegne il riscaldamento durante la notte; alle 6:45 lo accende, perché sa che la casa impiega un quarto d’ora a riscaldarsi. Alle 7 fa suonare la sveglia, accende la luce in camera da letto e mette in moto la macchinetta del caffè. Quando Bob entra in bagno accende automaticamente la luce, la spegne quando esce, e trasmette le ultime notizie su uno schermo, ricordandogli le medicine da prendere a colazione. Durante il funzionamento la Smart Home registra e analizza i dati e se rileva una situazione anomala, ad esempio il fatto che Bob non esce più dal bagno (magari perché si è addormentato sotto la doccia), se ne accorge e prende provvedimenti. In altri casi l’interesse è rivolto ad aspetti molto specifici, ad esempio l’analisi dei dati relativi ai malati di diabete, come descritto in [16]. Per quanto riguarda le tecniche di analisi dei dati, il problema dell’approccio classico di ricerca delle regole di associazione è limitato all’individuazione dei comportamenti più frequenti (si pensi ad esempio ai numerosi studi sul cosiddetto caso del “carrello della spesa”, in cui si individuano regole del tipo “se il cliente compra un certo prodotto x all’istante t1, è probabile che compri il prodotto y all’istante t2”). Nel nostro caso, però, questi approcci non sono adeguati, perché le situazioni di rischio sono per definizione quelle meno frequenti, e non vengono rilevate dagli algoritmi classici, come Apriori [18], GSP [19], SPIRIT [20], SPADE [21] e PrefixSpan [22], che individuano regole basate su un numero minimo di casi. Non si può risolvere il 10 Capitolo 2 - Analisi di dati clinici problema riducendo la soglia oltre la quale una sequenza è considerata frequente altrimenti si rischia di estrarre troppe regole e associazioni casuali. Un’altra soluzione può essere quella di utilizzare dati già classificati, ovvero una sequenza di valori con i relativi allarmi che sono stati lanciati. Come descritto in [23], l’algoritmo proposto scopre i comportamenti frequenti prima che si verifichi un guasto (il campo di applicazione è la meccanica idraulica). Nel nostro caso, però, abbiamo dovuto escludere questo approccio in quanto non avevamo a disposizione dati già classificati. Il testo [17] presenta una buona panoramica sulle tecniche di analisi delle sequenze temporali, il testo [24] fornisce un riassunto dettagliato dei problemi e delle soluzioni nello stesso ambito. 2.4 Discussione La ricerca in questo campo è ancora agli inizi, soprattutto per la mancanza di dati adeguati. Il principale difetto che hanno le soluzioni citate è di limitare il monitoraggio all’interno di edifici (in genere la casa del paziente, l’ospedale o strutture residenziali sociosanitarie), lasciando scoperte le situazioni di rischio all’esterno. Inoltre non bisogna dimenticare che il nostro obiettivo è individuare tempestivamente le situazioni di rischio, quindi, a differenza del lavoro descritto in [14], siamo interessati al riconoscimento di situazioni anomale istantanee e non a lungo termine. A differenza del progetto descritto in [9], il nostro obiettivo è un’analisi completamente automatica, eseguita direttamente su un dispositivo mobile, senza l’intervento di un operatore medico per la diagnosi; la richiesta del collegamento con un centro di soccorso avviene solo per situazioni a rischio. In tal caso si può inviare un codice di allarme che indica la gravità dell’evento fisiologico verificatosi nel paziente. Il lavoro presentato in [13] ha richiesto lo sviluppo di un simulatore di dati clinici, data la grande difficoltà nel reperimento di dati reali. Noi invece abbiamo utilizzato due database disponibili in Internet di pazienti monitorati per diverse ore, come spieghiamo meglio nel Capitolo 6. Parecchi lavori prendono in considerazione la correlazione tra le sequenze; la prassi medica, invece, sembra più orientata a valutare i valori assoluti assunti dai singoli segnali e la loro comparazione con soglie determinate dall’esperienza e dalle conoscenze del medico. Inoltre, per intervenire in emergenza, basta che un solo segnale fisiologico raggiunga una soglia di rischio per lanciare l’allarme: non ci siamo quindi occupati dello studio delle correlazioni tra i segnali. Rispetto agli obiettivi di Smart Home ci siamo concentrati solo sull’analisi dei segnali fisiologici, senza prendere in considerazione altre rilevazioni: il riconoscimento di pattern di comportamento esula infatti dal nostro obiettivo. 11 Capitolo 3 Tecniche di analisi dei dati 3.1 Introduzione La crescita della quantità di informazione disponibile e l’aumentata disponibilità della stessa hanno portato allo sviluppo di metodologie e strumenti in grado di elaborare i dati e ricavarne informazioni non ovvie e di grande importanza per l’utilizzatore finale. I sistemi di gestione delle basi di dati (Data Base Management System, DBMS) hanno certamente permesso di manipolare i dati in maniera efficace, ma non hanno risolto il problema di come supportare l’uomo nell’interpretazione e nell’analisi dei dati stessi. Storicamente, lo sviluppo dei metodi statistici ha prodotto un certo numero di tecniche di analisi dei dati utili nel caso in cui si debbano confermare delle ipotesi predefinite. Tali tecniche risultano però inadeguate nel processo di scoperta di nuove correlazioni e dipendenze tra i dati, che crescono in quantità, dimensione e complessità. Come spiegato in [32], possiamo individuare tre fattori che hanno cambiato il panorama dell’analisi dei dati: 1. la disponibilità di grande potenza di calcolo a basso costo; 2. l’introduzione di dispositivi di raccolta automatica dei dati, insieme alla disponibilità di vaste memorie di massa a basso costo; 3. l’introduzione di un nuovo insieme di metodi sviluppati nell’ultima decade dalla comunità dei ricercatori di intelligenza artificiale; questi metodi permettono l’analisi e l’esplorazione dei dati, consentendo una più efficace rappresentazione della conoscenza. Il processo globale di analisi ed elaborazione dell’informazione, allo scopo di estrarne della conoscenza di supporto alle decisioni, è noto come knowledge discovery. Si vuole introdurre, in questo capitolo, la definizione di data mining e, più in generale, di Knowledge Discovery in Databases (KDD), senza fare particolare riferimento ad uno specifico dominio di applicazione. 12 Capitolo 3 - Tecniche di analisi dei dati 3.2 Data mining e knowledge discovery Il processo di KDD è caratterizzato dalle seguenti fasi: 1. selezione – partendo dai dati contenuti nelle basi di dati, i “dati grezzi”, si estrae l’insieme dei dati che si ritengono maggiormente significativi per il tipo di analisi che si vuole effettuare; 2. pre-elaborazione – in questa fase viene effettuata l’integrazione dei dati, se provengono da diverse fonti e presentano delle incongruenze, l’eliminazione di eventuali errori ed il trattamento dei dati mancanti; 3. data mining – questo processo ha lo scopo di fornire all’utente finale una rappresentazione della conoscenza che ha acquisito, applicando uno o più metodi di data mining, partendo dai dati ottenuti dalla fase di preelaborazione. Il data mining si presenta come il punto di confluenza dei risultati della ricerca di settori come l’intelligenza artificiale ed il machine learning, la statistica inferenziale, le basi di dati ed il data warehousing. La difficoltà nell’esporre una visione unificata ed omogenea è dovuta alla vastità del settore ed in molti casi la stessa definizione di data mining è oggetto di discussione. In ogni caso, è possibile individuare due elementi tipici che caratterizzano il processo del KDD: la grande dimensione degli archivi di dati utilizzati e l’automatizzazione del processo di acquisizione della conoscenza. Questo settore è attualmente in fase di grande sviluppo e la sua importanza aumenta nel corso degli anni. È possibile evidenziare una serie di fattori di natura tecnologica ed economica che sono alla base di questo fenomeno. Tra questi vi è l’importanza di valorizzare il patrimonio informativo, cioè le informazioni che si hanno a disposizione. Questa necessità viene particolarmente sentita nelle organizzazioni a scopo commerciale, basti pensare alle molteplici iniziative di raccolta delle informazioni dei clienti, fatte in modo più o meno occulto dalle organizzazioni commerciali. Un tipico esempio è quello della “tessera sconto”: l’organizzazione propone la compilazione di una scheda, che permette all’organizzazione di ottenere un profilo informativo di ogni cliente. Il cliente, che compila la scheda credendo di ottenerne un beneficio (lo sconto), in realtà sta fornendo all’organizzazione qualcosa di infinitamente più prezioso, l’informazione. Chi saprà valorizzare meglio l’informazione che ha a disposizione, anche grazie ai metodi di data mining, probabilmente sarà in grado di prevedere, e quindi guidare, o perlomeno non subire, il comportamento del mercato. Un’ applicazione di data mining è l’attuazione del processo di data mining su un caso specifico, utilizzando programmi ad hoc che implementano algoritmi specifici o sfruttano strumenti generali in maniera opportuna. In Figura 3.1 si fornisce una schematizzazione dell’intero processo di KDD. 13 Capitolo 3 - Tecniche di analisi dei dati dati grezzi SELEZIONE 1. estrazione dati significativi per l’analisi dati target PRE-ELABORAZIONE 1. 2. 3. dati pre-elaborati pulizia dei dati (eliminazione errori) trattamento dati mancanti integrazione dati (trattamento incongruenze su dati provenienti da fonti diverse) TRASFORMAZIONE 1. 2. dati pronti 3. 4. deduzione nuovi attributi (elaborazione sugli attributi esistenti) trasformazione dati per adattamento al mining usato (conversione di tipo, …) campionamento (o partizionamento) discretizzazione DATA MINING 1. scelta dei metodi (o algoritmi) di data mining Percorsi (pattern) e/o regole tra i dati (conoscenza indotta) INTERPRETAZIONE, VISUALIZZAZIONE E PREVISIONE 1. verifica sul significato dell’informazione prodotta dal mining knowledge Figura 3.1 Il processo di knowledge discovery nelle basi di dati 14 Capitolo 3 - Tecniche di analisi dei dati 3.3 Applicazioni di data mining Si possono individuare almeno due tipologie di applicazioni di data mining, a seconda dell’obiettivo che l’applicazione intende raggiungere: 1. applicazioni di interpretazione; 2. applicazioni di predizione. Un’applicazione di interpretazione ha l’obiettivo di produrre conoscenza che sia il più facilmente interpretabile dall’utente. In particolare si può richiedere la produzione di regole secondo un determinato formalismo oppure l’utilizzo di rappresentazioni grafiche. In ogni caso l’attenzione è posta sull’aspetto conoscitivo. Appare evidente che esiste una problematica riguardante la valutazione automatica della “bontà” dell’informazione acquisita, non solo dal punto di vista dell’accuratezza e della rilevanza, ma anche della novità rispetto ad una conoscenza pre-esistente. Un’applicazioni di predizione, invece, ha come obiettivo la costruzione di un modello predittivo che sia il più accurato possibile. In questo caso si può anche rinunciare, del tutto o in parte, all’interpretabilità del modello medesimo (che è denominato opaco), purché quest’ultimo sia efficace (ossia accurato) ed efficiente (ossia richieda risorse limitate) nell’applicazione su nuovi dati. 3.4 Fasi del processo di data mining Il processo di data mining si può suddividere in tre fasi principali: 1. trasformazione o preparazione dei dati; 2. data mining; 3. interpretazione, visualizzazione e previsione. 3.4.1 Preparazione dei dati La fase di preparazione dei dati dipende dal metodo di data mining che verrà utilizzato nell’applicazione. Le attività tipiche di questa fase sono: 1. l’introduzione di nuovi attributi mediante l’applicazione di operatori logici e matematici, aumentando così la quantità di informazioni utili disponibili; 2. la trasformazione dei dati per essere adattati al metodo di data mining che verrà applicato; 3. il campionamento o partizionamento dei dati; 4. la discretizzazione dei dati. Le operazioni di trasformazione dei dati sono, in genere, associate a particolari limitazioni dei metodi di data mining che si vogliono utilizzare, ad esempio incapacità di gestire contemporaneamente informazione numerica e categorica o di gestire valori mancanti. Nel seguito descriviamo le principali tecniche delle attività di discretizzazione e campionamento. 15 Capitolo 3 - Tecniche di analisi dei dati Discretizzazione Il processo di discretizzazione di attributi numerici è una fase fondamentale per la maggior parte degli algoritmi di apprendimento che trattano l’informazione simbolica. È importante sottolineare come tale processo sia critico dal punto di vista della qualità della conoscenza acquisita dall’algoritmo di data mining, infatti la semplice scelta del numero di intervalli di discretizzazione per un attributo può avere conseguenze considerevoli: 1. se il numero di intervalli è troppo piccolo si potrebbero perdere informazioni utili (tanto varrebbe eliminare l’attributo); 2. se il numero di intervalli è troppo grande, al contrario, si potrebbe ricadere in un problema di sovra-addestramento e l’algoritmo potrebbe non essere in grado di estrarre conoscenza significativa, o quanto meno interpretabile, dai dati. Purtroppo non esistono delle regole generali valide per guidare questa fase. Gli algoritmi più utilizzati per la discretizzazione degli attributi, che meglio si adattano alle situazioni in cui la quantità dei dati da processare è notevole, sono: 1. EWD (Equal Width Discretization) – genera intervalli di uguale ampiezza; 2. EFD (Equal Frequency Discretization) – genera intervalli che contengono approssimativamente lo stesso numero di elementi; 3. discretizzazione mediante clustering – usa un algoritmo di clustering per raggruppare i valori numerici, quindi desume gli intervalli dalle estensioni dei vari cluster; 4. 1RD (One Rule Discretization) – suddivide inizialmente l’insieme dei valori dell’attributo in intervalli tali che ciascuno contenga almeno un numero predeterminato di elementi, quindi procede ad accrescere gli intervalli in modo tale che ognuno di essi contenga elementi compresi, per la maggior parte, nella stessa classe. Campionamento La fase di campionamento ha lo scopo di estrarre dalla totalità dei dati a disposizione un sottoinsieme (campione) sul quale verrà eseguito l’algoritmo di data mining. Sebbene il processo di data mining valorizzi la conoscenza latente contenuta nei dati, in certe situazioni un approccio poco oculato può comportare costi tali da renderlo addirittura sconveniente. In particolare bisogna tenere in considerazione il processo di data cleaning, il cui costo è proporzionale alla massa di dati trattati. Inoltre, è opportuno ridurre il numero di esempi da analizzare affinché l’algoritmo di apprendimento non sia sovra-addestrato o confuso dal rumore dei dati al punto di non essere in grado di produrre informazione facilmente interpretabile. Si consideri che tutti gli algoritmi di apprendimento sono sensibili a questi aspetti, sebbene alcuni lo siano in misura minore, ma in genere questi ultimi sono quelli con il minore potere espressivo. 16 Capitolo 3 - Tecniche di analisi dei dati Infine, si può pensare che un’opera di selezione dei dati sia utile al fine di evitare la scoperta di un numero eccessivo di regole di bassa qualità. Per evitare che venga prodotta della conoscenza già nota o per indirizzare la sensibilità del modello in una certa direzione, si possono usare le seguenti tecniche di campionamento. 1. Campionamento casuale Ogni elemento dell’insieme ha la stessa probabilità di essere estratto e considerato nel processo di creazione del modello. Garantisce delle buone prestazioni sia dal punto di vista delle risorse computazionali necessarie, sia dal punto di vista della qualità del campione estratto. 2. Campionamento mediante clustering Si procede con un pre-raggruppamento dei dati in base ad un opportuno criterio, ricadendo così nel problema più generale del clustering. Quindi si estraggono, sempre casualmente, da ogni cluster un numero di campioni proporzionale alla dimensione del cluster sull’insieme di partenza. All’interno di ogni cluster ogni campione ha la stessa probabilità di essere estratto. Se il clustering viene effettuato in modo opportuno, ossia scegliendo in modo oculato l’algoritmo e la metrica, vi è la possibilità di ridurre sostanzialmente il rumore dei dati, in quanto esempi anomali e poco significativi possono venire esclusi dall’algoritmo di clustering e pertanto avranno una probabilità nulla di essere estratti. Rispetto al campionamento casuale, vi è ovviamente, un maggiore costo computazionale. 3. Campionamento stratificato In presenza di attributi non numerici gli algoritmi di clustering possono risultare inadeguati; per migliorare la qualità del campionamento si può ricorrere alla stratificazione. Si selezionano una serie di attributi nominali di particolare interesse e si raggruppano i dati rispetto ad essi. Ogni gruppo viene denominato strato e si procede in modo analogo a quanto fatto per il campionamento mediante clustering; ogni elemento all’interno di uno strato ha la medesima probabilità di essere estratto e ogni strato contribuisce con un numero di campioni proporzionali al suo peso. Se uno strato ha un peso troppo basso, può essere scartato in quanto assimilabile a rumore nei dati. Alla fine si ottiene un campione in cui le frequenze degli attributi utilizzati per la stratificazione sono simili a quelle dell’insieme originario. Gli attributi utilizzati per la stratificazione devono assumere pochi valori distinti e ogni strato deve contenere un numero minimo di valori. 17 Capitolo 3 - Tecniche di analisi dei dati 3.4.2 Data mining In questa fase si determinano i percorsi, le eventuali regole e le caratteristiche dei dati mediante l’applicazione di uno o più metodi. Se il risultato ottenuto non è soddisfacente, si può operare una nuova trasformazione, tornando alla fase precedente e applicando nuovamente la fase di data mining, utilizzando lo stesso metodo o uno diverso. Questa fase può essere indicata anche come fase di apprendimento o di esplorazione e modellazione, in base alle denominazioni correntemente in uso del campo dell’intelligenza artificiale e della statistica, rispettivamente. 3.4.3 Visualizzazione, interpretazione e previsione Il risultato della fase di data mining è costituito da conoscenza indotta dai dati rappresentata secondo un dato formalismo. Tuttavia, prima di utilizzare ai fini pratici tali informazioni, è necessario che queste ultime siano opportunamente validate, ossia si deve verificare che il processo di data mining abbia prodotto risultati significativi. Verificato questo aspetto, a seconda della tipologia di applicazione, si presentano almeno due possibili alternative: 1. se l’applicazione di data mining è destinata alla previsione, il risultato passa, come si è soliti dire, “in produzione”, ovvero viene utilizzato per analizzare nuove situazioni; 2. se l’applicazione è di tipo interpretativo, la conoscenza acquisita dal sistema di data mining deve essere opportunamente trattata al fine di poter essere visualizzata ed interpretata da un analista, per ottenere le informazioni necessarie in fase di supporto alle decisioni. Si osservi che in entrambi i casi il risultato del data mining è sfruttato per guidare un processo decisionale. La differenza è costituita dal livello e dalle modalità con cui ciò avviene. 3.5 Data mining Un sistema di data mining è formato da un insieme di programmi ad hoc o da uno strumento generico che permette di eseguire una applicazione di data mining. In letteratura non esiste una visione unificata dei sistemi di data mining, ma è possibile evidenziare due aspetti comuni a tutte le classificazioni: 1. le funzionalità offerte dal sistema all’utente; 2. i metodi impiegati per realizzare le funzionalità. Quando si parla di funzionalità, si intende tutto ciò che un sistema di data mining mette a disposizione dell’utente, affinché possa ottenere nuova conoscenza dai dati. Il termine metodo, invece, si riferisce a come la funzionalità viene offerta. Si può distinguere il concetto di metodo tra formalismo e tecnica: a volte un metodo di data 18 Capitolo 3 - Tecniche di analisi dei dati mining (o tecnica) non determina direttamente la funzionalità, ma produce un formalismo che viene utilizzato dall’utente per realizzare la funzionalità. Riportiamo in Tabella 3.1 una suddivisione delle funzionalità in base al formalismo o alla tecnica che la genera; di seguito le descriviamo dettagliatamente. Tecnica Metodi ad hoc per reti Neurali Algoritmi di Clustering Metodi ad hoc per regole di associazione Metodi ad hoc per pattern sequenziali Metodi ad hoc per alberi di decisione Formalismo Cluster Funzionalità Classificazione/Regressione Clustering Clustering Regole di Associazione Associazioni Pattern sequenziali Sequenze Alberi di decisione Classificazione Analisi esplorativa * Associazioni Sequenze Clustering Reti Neurali Tabella 3.1 Tecniche, formalismi e funzionalità di data mining 3.5.1 Funzionalità di data mining Descriviamo in questo paragrafo le principali funzionalità di un sistema di data mining. Scoperta di Regole Questa funzionalità permette di individuare delle correlazioni tra i record di una base di dati. Le regole possono essere di due tipi: 1. associazioni – si collegano (associano) tra loro più eventi elementari in un unico evento globale, quando tali eventi elementari hanno una certa probabilità di verificarsi in concomitanza. Ad esempio se consideriamo come fatti elementari “il robot riconosce un ostacolo” e “il robot è fermo”, potremmo scoprire la regola “nel 30% dei casi, se il robot vede un ostacolo, si ferma”; 2. sequenze (o associazioni sequenziali) – gli eventi elementari si collegano non se si verificano in concomitanza, ma se hanno una certa probabilità di verificarsi progressivamente nel tempo (in sequenza). Ad esempio se consideriamo come eventi elementari “il robot vede la palla vicina” e “il robot prende la palla”, la regola scoperta potrebbe essere “nel 60% dei casi, se il robot vede la palla vicina, dopo 2 secondi prende la palla”. La regola di associazione è una relazione che lega fra loro un insieme di oggetti (rule body) che precedono un altro oggetto (rule head); la regola contiene sia 19 Capitolo 3 - Tecniche di analisi dei dati informazioni statistiche circa la frequenza di occorrenza dei gruppi di oggetti (itemset), sia l’attendibilità dei dati considerati, sia l’importanza della relazione stessa. Formalmente la regola associativa appare in questo modo: rule body → rule head [supporto, confidenza, lift] Le tre misure tipiche delle regole di associazione sono: supporto; confidenza; lift. Il supporto è il rapporto fra il numero di transazioni che soddisfano la regola di associazione (la transazione deve contenere sia il rule body che il rule head) ed il numero totale di transazioni contenute nel database. La confidenza è la percentuale di transazioni che soddisfano la regola tra tutte quelle che soddisfano il rule body. Una transazione soddisfa il rule body se contiene tutti gli oggetti del rule body. La confidenza indica l’attendibilità della regola di associazione. Il lift è il fattore per il quale una regola supera il valore di confidenza atteso. E’ espresso come il rapporto fra la confidenza della regola ed il supporto associato alla rule head. Ad esempio, data la regola A→B, e indicando con P(A) il supporto di A e P(B|A) la confidenza della regola, il lift è pari al rapporto: lift = P(B|A) / P(A). Un elevato lift equivale ad una stretta correlazione fra rule body e rule head. Classificazione e Regressione La classificazione e la regressione fanno parte dell’apprendimento supervisionato (supervised learning), ossia il processo che porta a classificare un record di una base di dati a partire dal valore assunto dai suoi attributi: da un insieme di record già classificati si determinano certe regolarità che permettono di predire il valore di un nuovo attributo del record, la classe. Si parla di: classificazione quando la variabile da predire può assumere valori in un insieme discreto, regressione quando deve essere predetto un valore continuo. La classificazione individua un modello: spesso si parla di regole di classificazione intendendo dire che il modello prodotto dalla classificazione può essere tradotto in una serie di regole. L’utente assiste parzialmente il classificatore nella creazione del modello fornendo un database di prova per la costruzione del modello dove i dati sono già associati ad etichette di classe, ed un database di test per verificare la bontà del modello creato. L’apprendimento supervisionato viene utilizzato per costruire modelli di classificazione a partire da insiemi di dati e, una volta che il modello di classificazione è stato creato, viene utilizzato per classificare nuovi casi. 20 Capitolo 3 - Tecniche di analisi dei dati L’albero decisionale su cui si basa la classificazione è una semplice struttura in cui i nodi non terminali rappresentano i test di uno o più attributi sui record considerati ed i nodi terminali (foglie) riflettono le decisioni risultanti. Lo scopo della classificazione è quello di poter inserire i record in classi a seconda del valore di determinati attributi in esso presente, in modo da poterli classificare secondo alcune caratteristiche. L’albero decisionale generalizza i dati e ci offre una sintesi degli attributi e delle loro relazioni, che sono importanti per effettuare una diagnosi accurata. I casi utilizzati per creare l’albero decisionale sono detti dati di training; tali casi sono gli unici conosciuti per essere classificati correttamente, ma il modello sarà in grado di classificare nuovi casi per i quali la classificazione non è nota a priori. È bene che il training set ed il test set siano differenti altrimenti si otterrebbe sempre una perfetta classificazione dei casi di test, dato che il modello è stato costruito sugli stessi. La classificazione è quindi un processo a due passi. Costruzione del modello: à ogni tupla campione appartiene ad una classe predeterminata come determinato dall’attributo dell’etichetta di classe; à gli insieme di tuple utilizzati nel modello prendono il nome di training set; à il modello è rappresentato da regole di classificazione, alberi decisionali, formule matematiche; à per stimare la bontà del modello creato (percentuale di predizioni esatte per un determinato dataset) si utilizza un test set e si verifica quanti casi vengono classificati correttamente; Utilizzo del modello: à classificazione di nuovi oggetti. Nell’albero decisionale i rami rappresentano l’uscita da un test. Anche la regressione è una tecnica di previsione, in quanto prevede un risultato futuro analizzando il passato. A differenza della classificazione il risultato è numerico: continuo (ad esempio il reddito annuale di una persona); discreto (ad esempio la scelta tra due valori: 1 per indicare che si è verificato un evento, 0 per indicare che non si è verificato). Si può usare la regressione anche per problemi di classificazione che contengono solo due categorie ad esempio SI e NO: mappando il SI con il numero 1 e il NO con lo 0, se i valori previsti dal modello sono vicini a 1, allora ricadono nella categoria dei SI, altrimenti in quella dei NO. Dato un record, il processo di regressione serve a predire il valore di un campo numerico (target field) conoscendo il valore degli altri campi dello stesso record (input field). I campi di input possono essere numerici o categorici. La regressione può essere usata per creare modelli e per testarli. Un modello è costruito a partire da un dataset di record, di cui sono noti i target field; poi può essere applicato sia a record di cui si conoscono solo gli input field, sia a quelli di cui si 21 Capitolo 3 - Tecniche di analisi dei dati conoscono tutti i campi (il cosiddetto test mode, per valutare la qualità del modello). Anche in questo caso bisogna dividere i dati e tenerne una parte per validare il modello corrente (validation mode). La differenza tra validation e test mode è che il primo è eseguito durante la costruzione del modello e può causare delle modifiche, invece il secondo è eseguito dopo la costruzione del modello e lo lascia invariato. Clustering (o raggruppamento) È un processo che porta a risultati simili a quelli della classificazione. A differenza della classificazione, però, è in grado di produrre una suddivisione dei record in gruppi (cluster) in maniera del tutto autonoma: si tratta di una classificazione non addestrata. Il raggruppamento è fatto in modo tale che i record in ogni cluster siano simili secondo certi criteri o metriche. Il clustering è anche detto unsupervised learning (apprendimento non supervisionato). Vista l’importanza del clustering nella nostra tesi, abbiamo deciso di dedicargli un paragrafo a parte. Considerazioni Nella letteratura statistica si usa riferirsi ai problemi di classificazione e regressione come modellazione predittiva, in quanto il risultato dell’analisi è un modello, rappresentato secondo un opportuno formalismo. Ricevuti in input i dati relativi a un nuovo caso, il modello è in grado di fornire la classificazione più probabile, oppure il valore stimato della variabile obiettivo nel caso di una regressione. Per estensione si usa la denominazione di modello per indicare il risultato del processo di data mining. Un’altra distinzione molto diffusa, derivante dall’ambito dell’apprendimento automatico, è tra algoritmi di apprendimento supervisionato e non supervisionato. Infatti, dal punto di vista della ricerca in intelligenza artificiale, il data mining è riconducibile ad un problema di apprendimento, pertanto si parla di apprendimento supervisionato nei casi di classificazione e regressione, dal momento che durante l’addestramento il sistema conosce l’esatta classificazione degli esempi analizzati. L’obiettivo dell’apprendimento è individuare la legge secondo cui i vari esempi sono classificati. Il clustering, invece, rappresenta un tipico esempio di apprendimento non supervisionato, in quanto il sistema non conosce a priori la suddivisione degli esempi, ma ha il compito di proporne una che sia, in qualche modo, particolarmente significativa. Anche la scoperta di regole di associazione e sequenza sono da considerarsi come un caso di apprendimento non supervisionato. 22 Capitolo 3 - Tecniche di analisi dei dati 3.6 Clustering 3.6.1 Descrizione generale Il clustering, come descritto in [33, 34], è un metodo attraverso il quale grandi insiemi di dati vengono partizionati in gruppi più piccoli, detti cluster (letteralmente “grappolo”). Eseguire il clustering di un dataset assegnato, contenente oggetti descritti da un insieme di attributi, significa individuare gruppi di oggetti tali che: 1. elementi appartenenti ad un cluster siano più simili l’uno all’altro (alta similarità intra-classe); 2. elementi appartenenti a cluster diversi siano meno simili l’uno all’altro (bassa similarità inter-classe). La discriminazione degli oggetti avviene valutandone gli attributi in base ad una prestabilita misura di similarità. Il clustering è una classificazione non supervisionata, per la quale non ci sono classi predefinite. Esso viene generalmente utilizzato come mezzo per verificare ipotesi intuitive relative a distribuzioni di dati, o come passo di pre-elaborazione in altri algoritmi di data mining. In generale si utilizza il cluster detection quando si sospetta che nei dati da analizzare esistano raggruppamenti naturali rappresentativi di classi (per esempio clienti o prodotti con molte caratteristiche comuni), oppure per ridurre la complessità dell’analisi ed aumentare così le probabilità di successo di una tecnica di data mining, nel caso in cui la coesistenza di diversi pattern nell’insieme dei dati renda altrimenti difficile l’identificazione di un singolo schema. I settori applicativi nei quali si fa uso di metodi di clustering sono numerosi e molto diversi fra loro. Per esempio, nell’ambito del marketing si ricercano insiemi di clienti simili nelle basi di dati, per favorire lo sviluppo di programmi mirati; in urbanistica è di interesse l’identificazione di gruppi di edifici in base a tipo, valore e locazione geografica; nello studio dei fenomeni tellurici si mira all’individuazione delle fratture continentali a partire dagli epicentri dei terremoti. La variabilità dei campi di applicazione e le differenti caratteristiche dei problemi specifici da affrontare comportano, per la scelta di un metodo di clustering appropriato, l’utilizzo di uno o più criteri discriminativi. Tra i requisiti generalmente richiesti in problemi di data mining figurano: 1. scalabilità; 2. possibilità di trattare differenti tipi di attributi; 3. individuazione di cluster con forma arbitraria; 4. necessità di minima conoscenza del dominio per determinare i parametri; 5. robustezza rispetto al rumore e agli outlier; 6. insensibilità all’ordine dei record in input; 7. capacità di operare su dati ad alta dimensionalità; 8. incorporazione di vincoli specificati dall’utente; 9. interpretabilità ed usabilità dei risultati. 23 Capitolo 3 - Tecniche di analisi dei dati 3.6.2 Misure di distanza Generalità. I coefficienti di distanza (o dissimilarità) forniscono una misura del grado di associazione fra due osservazioni, restituendo un valore nullo per osservazioni identiche ed un valore variabile da coefficiente a coefficiente per osservazioni totalmente differenti. Le proprietà che devono essere soddisfatte affinché un coefficiente di distanza sia di tipo metrico (ossia consenta di ordinare le osservazioni in uno spazio metrico) sono le seguenti: 1. D jk = 0 se j = k; 2. D jk > 0 se j ≠ k; 3. D jk = Dkj ; D jk + Dkh ≥ D jh (assioma della disuguaglianza triangolare). In generale è la quarta ed ultima proprietà quella che risulta discriminante ed il fatto che sia o meno soddisfatta distingue le misure metriche da quelle cosiddette semimetriche. 4. Distanze metriche I coefficienti di distanza metrici sono stati sviluppati per trattare dati di tipo quantitativo e, con poche eccezioni, trattano lo zero come una misura e non come una mancanza di informazione. La più familiare fra le misure di distanza è certamente quella euclidea, che corrisponde esattamente a quella che si può calcolare o misurare nello spazio fra due oggetti fisici: D jk = p ∑(x − xik ) 2 ij i =1 È importante rilevare il fatto che il quadrato della distanza euclidea, che non di rado viene utilizzato al posto di quest’ultima, è una semimetrica. È evidente che la scala dei singoli descrittori è molto influente nel determinare una distanza euclidea fra due osservazioni; è dunque necessario riservare questa scelta ai casi in cui i descrittori sono dimensionalmente omogenei o a quelli in cui essi vengono centrati e standardizzati, al fine di eliminare l’effetto di eventuali differenze di scala. Una soluzione molto flessibile è costituita dalla metrica di Minkowski: p D jk = r ⋅ ∑x ij i =1 24 − xik r Capitolo 3 - Tecniche di analisi dei dati dove r può essere assegnato in maniera teoricamente arbitraria. In realtà il caso r=2 corrisponde ad una distanza euclidea ed un valore di r maggiore di questo, in generale, non è desiderabile per non enfatizzare l’effetto della diversa scala dei descrittori. Più interessanti sono i valori di r inferiori a questa soglia e, fra questi, un caso particolare è quello che si verifica per r=1. In questo caso la distanza che si ottiene è nota come metrica di Manhattan: p D jk = ∑ xij − xik i =1 Il nome di questa misura di distanza è dovuto al fatto che la distanza fra due punti è data dalla somma della distanza in ascissa e di quella in ordinata e corrisponde al percorso più breve che unisce due punti in una città le cui strade si incrociano ad angolo retto, come, per l’appunto, a Manhattan. La metrica di Manhattan presenta gli stessi problemi legati all’influenza della scala dei descrittori di cui si è detto a proposito della metrica euclidea. Una delle varianti che, laddove necessario, la correggono in questo senso è quella proposta da Lance & Williams (1966) con il nome di metrica di Canberra: p xij − xik D jk = ∑ i =1 ( xij + xik ) I doppi zeri devono essere esclusi dal calcolo per evitare problemi di indeterminazione. Pur senza normalizzare i dati, questa distanza assegna alla differenza fra i valori che un descrittore assume in due osservazioni un peso inversamente proporzionale alla somma dei valori stessi: la medesima differenza ha un peso maggiore se è osservata fra due valori piccoli. Uno degli inconvenienti di questa soluzione è costituito dal fatto che, se uno dei due valori relativi ad un dato descrittore è uguale a zero, allora il contributo alla distanza totale è pari a 1, cioè il massimo possibile. La metrica di Canberra, dunque, si presta meglio a trattare serie di dati in cui esista eterogeneità di scala fra i descrittori senza, però, che siano presenti molti valori nulli. 3.6.3 Principali metodi di clustering Dal punto di vista dell’approccio al problema, le tecniche di clustering possono essere suddivise in alcune grandi categorie: 1. algoritmi di partizionamento: eseguono la costruzione di un numero variabile di cluster, per poi valutarli e selezionare quelli definitivi; 2. algoritmi gerarchici: creano una decomposizione gerarchica del dataset; possono essere di tipo top down o bottom up, a seconda che partano da un cluster principale che comprende tutti i punti e poi man mano lo suddividano secondo un certo criterio, o viceversa, partano da tanti cluster 25 Capitolo 3 - Tecniche di analisi dei dati quanti sono i punti e poi man mano li accorpano fino ad arrivare ad un unico cluster; 3. metodi density-based: basandosi su connettività e funzioni di densità, fanno “crescere” i cluster finché la densità di punti nel vicinato non supera un prefissato limite; sono in grado di trovare cluster di forma arbitraria; 4. metodi grid-based: sono basati su una struttura a livelli multipli di granularità, che forma una griglia sulla quale vengono eseguite tutte le operazioni; le prestazioni dipendono solo dal numero di celle della griglia; 5. metodi model-based: ipotizzano un modello per ciascun cluster cercando il miglior adattamento di quel modello con ciascun altro. In particolare esaminiamo le prime due categorie, visto che sono quelle prese in considerazione nella nostra tesi. Algoritmi di partizionamento Prevedono la costruzione di k cluster a partire da un database D di n oggetti. Il parametro k è un dato di input del problema e il risultato è un partizionamento che ottimizza il criterio di ripartizione scelto. Due noti metodi euristici sono il k-means e il k-medoids: sono rilevanti da esaminare perché spesso costituiscono la base per varianti più o meno sofisticate. 1. Il metodo k-means Sia n il numero di oggetti e k il numero desiderato di cluster. L’algoritmo prevede quattro step: si partizionano gli n oggetti in k sottoinsiemi non vuoti; si calcolano i centroidi (punti medi) dei cluster del partizionamento attuale e si designano come semi; si assegna ogni oggetto al cluster con il seme ad esso più vicino; si riprende dallo step 2, arrestandosi quando non è più possibile effettuare nuovi assegnamenti. Dal punto di vista dell’efficienza, la complessità è O(t k n) , dove t è il numero di iterazioni. Normalmente si ha k, t << n. L’algoritmo spesso termina in un ottimo locale. L’ottimo globale può essere trovato usando tecniche di compattamento deterministico ed algoritmi genetici. La limitazione principale del metodo k-means consiste nel fatto che per la sua applicazione è necessario definire il numero desiderato di cluster. Da notare infine che il metodo non è affidabile per trovare cluster di forma non convessa. 26 Capitolo 3 - Tecniche di analisi dei dati 2. Il metodo k-medoids Sua caratteristica principale è la rappresentazione del cluster per mezzo di uno degli oggetti che gli appartengono, piuttosto che per mezzo di una media di essi. Ognuno degli oggetti rappresentativi dei cluster è detto medoid. Tra gli algoritmi che sfruttano questo approccio sono rilevanti i seguenti: “PAM” (Partitioning Around Medoids) [36]: comincia da un set iniziale di medoid e cerca di minimizzare la somma delle distanze tra gli oggetti del cluster; lavora efficacemente su piccoli dataset, ma non scala; “CLARA” (Clustering LARge Applications) [36]: estrae un campione del dataset ed applica PAM sul campione per trovare i medoid; tratta efficientemente dataset più grandi rispetto a PAM, anche se l’efficienza dipende dalla dimensione del campione; inoltre è da sottolineare l’importanza dell’estrazione di un campione rappresentativo; “CLARANS” (Randomized CLARA) [35]: il processo di clustering può essere presentato come un grafo di ricerca, dove ogni nodo è una potenziale soluzione, cioè un set di k medoid; il problema di ottenere un buon clustering corrisponde a quello di cercare il minimo sul grafo; rispetto a CLARA, che estrae un campione dei nodi solo all’inizio, CLARANS ha il vantaggio di non restringere la ricerca ad un’area limitata. Algoritmi gerarchici Gli algoritmi di clustering gerarchico utilizzano una matrice di similarità (o distanza) fra gli oggetti come base per l’aggregazione di questi ultimi. È importante sottolineare il fatto che la scelta del coefficiente di similarità risulta in molti casi addirittura più determinante di quella dell’algoritmo di clustering ai fini del conseguimento dei risultati desiderati. Tale scelta, dunque, deve essere preceduta da una accurata esplorazione dell’informazione disponibile e da una chiara identificazione del tipo di relazione fra gli oggetti da rappresentare. I risultati di una procedura di clustering gerarchico possono essere illustrati in diversi modi, anche se in prevalenza si preferisce utilizzare un dendrogramma. I legami orizzontali in un dendrogramma vengono chiamati nodi, mentre le linee verticali sono dette internodi. La distanza di un nodo dalla base del dendrogramma è proporzionale alla similarità (o distanza) fra i due oggetti o gruppi di oggetti di cui il nodo rappresenta la fusione. La similarità è di solito riportata su una scala al lato del dendrogramma. La disposizione relativa degli oggetti alla base del dendrogramma è vincolata solo in parte dalla struttura di quest’ultimo e, entro questi limiti, gli oggetti possono essere liberamente riarrangiati. In molti casi è utile anche visualizzare l’andamento progressivo delle similarità a cui via via avvengono le fusioni fra oggetti o gruppi di oggetti. Questa rappresentazione è fornita dal diagramma di aggregazione, grazie al quale è possibile individuare facilmente le discontinuità più rilevanti incontrate nella procedura di clustering. Tali 27 Capitolo 3 - Tecniche di analisi dei dati discontinuità, in molti casi, possono corrispondere a partizioni "naturali" dell’insieme di oggetti analizzati e costituiscono un utile riferimento laddove sia necessario ripartire questi ultimi in un certo numero di classi (es. se si usa la partizione ottenuta come un nuovo descrittore sintetico dell’insieme degli oggetti). La distanza tra i cluster individuati può essere calcolata secondo i metodi descritti di seguito. 1. Single linkage Il metodo del legame singolo [36] è certamente il più semplice fra quelli disponibili e deve il suo nome al fatto che la fusione fra due oggetti o gruppi di oggetti può avvenire se la distanza fra due oggetti non appartenenti allo stesso gruppo è la più bassa fra quelle possibili. La distanza tra un’unità e un gruppo è la distanza minore tra quelle dell’unità da tutte le altre del gruppo. La procedura operativa, supponendo di lavorare su una matrice di distanza, è la seguente: si individua il valore minimo nella matrice (con esclusione, ovviamente, della diagonale) e si fondono i due oggetti corrispondenti in un primo gruppo; si individua il valore minimo residuo, cioè escludendo le distanze intragruppo, e si fondono i due oggetti che corrispondono a tale valore o i due gruppi a cui essi appartengono; si procede fino a quando tutti gli oggetti sono assegnati ad un unico gruppo. Come si può notare, la procedura di clustering è elementare e non richiede alcun calcolo aggiuntivo oltre quello della matrice di distanza. L’algoritmo del legame singolo, tuttavia, non è molto utilizzato, soprattutto per la sua tendenza al concatenamento degli oggetti, che rende sempre più facile l’aggregazione di nuovi elementi man mano che un gruppo diventa più numeroso. Questo comportamento è dovuto al fatto che basta un solo legame, cioè una sola coppia di oggetti simili fra loro, a far fondere due gruppi: è evidente quanto più è grande il numero di oggetti che appartengono ad un gruppo, tanto più è probabile che almeno uno di essi possa costituire un ponte verso un altro oggetto o un altro gruppo di oggetti. In altre parole, si può immaginare che l’algoritmo del legame singolo provochi una contrazione dello spazio di riferimento intorno ai gruppi proporzionale alla loro dimensione. 2. Complete linkage Una soluzione affine a quella precedentemente descritta da un punto di vista procedurale, ma completamente opposta per ciò che riguarda le regole di fusione dei gruppi è quella che prevede l’uso dell’algoritmo del legame completo [36]. In questo caso, infatti, si ammette la fusione di due gruppi di oggetti soltanto se tutte le distanze fra coppie di oggetti non appartenenti allo stesso gruppo sono inferiori alla soglia che permetterebbe la fusione di un’altra coppia di gruppi. La distanza tra un’unità e un gruppo è la distanza maggiore tra quelle dell’unità da tutte le altre del gruppo. 28 Capitolo 3 - Tecniche di analisi dei dati In questo modo si garantisce una notevole omogeneità intra-gruppo, favorendo la formazione di gruppi a cui appartiene un numero non troppo variabile di oggetti, poiché quanto più un gruppo è numeroso, tanto più è difficile che esso sia sufficientemente simile ad un altro. In contrapposizione a quanto avviene per l’algoritmo del legame singolo, in questo caso si verifica una dilatazione dello spazio di riferimento intorno ai gruppi già formati che è proporzionale alla loro dimensione. Il lato negativo, peraltro comune ad altri algoritmi, è costituito dalla possibilità di incontrare casi particolari in cui la scelta dell’aggregazione non è definibile in maniera univoca. Pur senza scendere nel dettaglio, si tenga conto che queste situazioni possono essere risolte applicando nell’ordine alcune semplici regole. In particolare, sarà privilegiata l’aggregazione che: genera il gruppo più numeroso; accelera la diminuzione del numero di gruppi; massimizza la similarità media intra-gruppo. 3. Average linkage Il metodo della media di gruppo utilizza come criterio per la fusione di due gruppi di oggetti la media aritmetica delle distanze fra tutti gli oggetti dei due gruppi e ad ogni oggetto viene attribuito lo stesso peso. La distanza tra un’unità e un gruppo è data dalla media aritmetica delle distanze tra l’unità e tutte le altre del gruppo. È un metodo molto efficiente quando gli oggetti formano naturalmente blocchi distinti e si comporta comunque bene con cluster di tipo concatenato. 4. Centroid Il metodo dei centroidi [36] è caratterizzato dal fatto che, dopo che due oggetti o gruppi di oggetti sono stati uniti, essi vengono rappresentati dal loro centroide. Questo può essere ottenuto in diversi modi, ma in genere è possibile sostituire le righe e le colonne relative agli oggetti che appartengono ad un gruppo appena formato con un vettore di valori, uguale per tutti gli oggetti, che si ottiene utilizzando una media, meglio se ponderata, delle similarità relative ai singoli oggetti. Questo metodo può dare luogo, talvolta, a delle inversioni nella struttura del dendrogramma, cioè si può verificare il caso in cui un nodo di ordine gerarchico superiore corrisponda ad un livello di distanza (o di similarità) minore (maggiore) di quello relativo ad un nodo di ordine gerarchico inferiore. Il fatto che l’algoritmo non garantisca la monotonicità del diagramma di aggregazione e del dendrogramma rende talvolta difficile l’interpretazione dei risultati, che in ogni caso devono essere utilizzati con cautela per la definizione di partizioni vere e proprie. 5. Ward Il metodo di Ward è basato sulla minimizzazione della variabilità all’interno dei gruppi: obiettivo della partizione è, infatti, minimizzare la quota di variabilità interna, massimizzando la variabilità fra i gruppi, così da ottenere classi omogenee e ben separate le une dalle altre. Ad ogni passo, l’algoritmo di Ward (o del “salto minimo di 29 Capitolo 3 - Tecniche di analisi dei dati varianza interna”) aggrega le unità o i gruppi che determinano la minor perdita di inerzia tra le classi. Si definisce inerzia [37] di una nuvola di unità statistiche la somma dei quadrati delle distanze dal centro di gravità (ossia il punto che ha coordinate medie) della nuvola stessa. Se la nuvola è suddivisa in vari gruppi, si può calcolare l’inerzia all’interno dei singoli gruppi rispetto ai loro centri di gravità e l’inerzia dei centri di gravità dei gruppi rispetto a quello di tutta la nuvola. L’inerzia totale è uguale all’inerzia tra i gruppi (interclassi) più l’inerzia all’interno dei gruppi (intra-classi). Nel caso in cui si possano utilizzare distanze metriche, e ci si trovi pertanto nell’ambito di uno spazio euclideo, la migliore partizione è quella per la quale l’inerzia inter-classi è forte e l’inerzia intra-classi è debole. Quando si passa, però, da una partizione in k+l gruppi ad una in k gruppi e se ne aggregano due in uno, l’inerzia interclassi diminuisce. Il criterio scelto per l’aggregazione nelle successive partizioni è quello di fondere i due gruppi per i quali la perdita di inerzia inter-classi è la più debole: tale perdita di inerzia è quindi assunta come misura della distanza fra i gruppi. Il metodo di Ward fornisce generalmente un insieme di gruppi di densità più o meno uguale, soddisfacendo dunque a due requisiti: il bilanciamento della numerosità dei gruppi e la garanzia che la distanza tra un gruppo e un’unità esterna non è maggiore della distanza tra due individui appartenenti allo stesso gruppo. 6. Conclusioni La scelta di un algoritmo di classificazione rispetto ad un altro dipende dai tipi di cluster e dalla loro dimensione in funzione delle ipotesi formulate. Le differenze tra un tipo di aggregazione ed un’altra influiscono sui risultati dell’analisi. Il metodo del legame singolo aggrega secondo una struttura a catena che fa riferimento a uno o pochi gruppi cui si uniscono le altre unità, con un effetto di concatenamento successivo che non permette di delineare gruppi ben distaccati o di forma sferica con il rischio di includere nello stesso gruppo unità molto lontane. Il metodo del legame completo risolve questo problema e fornisce dei cluster equilibrati rispetto al numero di unità, ma se i dati non permettono una separazione netta tra i gruppi si possono ottenere alcuni gruppi densi e una serie di gruppi piccoli. Il metodo della media del gruppo tiene invece conto di tutte le distanze tra le unità. L’estrema soggettività nella scelta del metodo da usare in questi casi fa sì che sia raccomandabile procedere a varie classificazioni usando, di volta in volta, algoritmi diversi. Se viene seguita questa strada e non si riscontrano grosse differenze tra le partizioni nella parte alta dell’albero, la classificazione può considerarsi valida. Se, invece, le partizioni sono grandemente differenziate, l’insieme delle unità studiate mal si presta ad essere classificato, risulta cioè indifferenziato. 30 Capitolo 3 - Tecniche di analisi dei dati 3.7 Sequenze temporali Siccome in questa trattazione facciamo riferimento alle sequenze temporali (time series), riteniamo opportuno riportare una serie di definizioni utili per una impostazione formale del problema. Si definisce itemset un insieme non vuoto e non ordinato di item (o oggetti). Una sequenza temporale T = t1, t2, …, tm è una lista ordinata di m itemset; m è la lunghezza della sequenza. Data una sequenza temporale T di lunghezza m, si definisce sottosequenza Cp di T una sequenza di lunghezza w (con w < m) data da Cp = tp, tp+1, …, tp+w-1, con p compreso tra 1 e m-w+1. Data una sequenza temporale T di lunghezza m, e una dimensione w definita dall’utente, si può costruire una matrice S di tutte le possibili sottosequenze facendo “scivolare” una finestra di ampiezza w (sliding window) lungo la sequenza temporale e posizionando la sottosequenza Cp di volta in volta ottenuta nella riga p di S. S è una matrice di dimensioni (m-w+1)·w. 3.8 Discussione In questo paragrafo motiviamo la scelta di usare il clustering come tecnica di data mining e, tra gli algoritmi a disposizione, la scelta di quelli gerarchici e di partizionamento come più adatti alla nostra situazione. 3.8.1 Scelta della funzionalità di data mining Come abbiamo visto, per ricavare informazione dai dati, le funzionalità offerte dal data mining sono: 1. scoperta di regole; 2. apprendimento supervisionato, a. regressione, b. classificazione; 3. apprendimento non supervisionato (clustering). Inizialmente pensavamo di utilizzare la prima funzionalità. La letteratura infatti fornisce molti esempi di utilizzo di algoritmi per la scoperta di regole. Dallo studio del comportamento di più entità in un medesimo contesto temporale (regole di associazione), sono state estese, andando oltre l’analisi del comportamento nella singola transazione, per estrarre sequenze di comportamenti interessanti e legati a più istanti (regole sequenziali). L’applicazione più tipica è la market basket analysis, l’analisi del carrello della spesa, ma è facilmente estendibile a qualunque altro settore ove sia presente un rapporto di tipo acquisto o vendita [18]. Avendo anche noi a che fare con sequenze temporali, avevamo pensato di utilizzare uno degli algoritmi già ideati, e ricavare le sottosequenze più frequenti nelle 31 Capitolo 3 - Tecniche di analisi dei dati sequenze di valori dei segnali fisiologici misurati. In questo modo pensavamo di individuare i comportamenti più frequenti dei pazienti e, una volta ottenuti, sottoporli al giudizio di un medico, affinché stabilisse il grado di rischio di ognuno. Ci siamo però accorti che, rilevando i comportamenti più frequenti, non necessariamente avremmo rilevato i più rischiosi, anzi, avremmo solo individuato le condizioni di normalità per il paziente, senza acquisire alcuna informazione utile. Noi infatti siamo interessati alle situazioni anomale, per definizione caratterizzate da una maggiore pericolosità. Non potevamo diminuire le soglie di supporto, oltre le quali una regola è considerata frequente, altrimenti sarebbe stato impossibile riconoscere le regole effettivamente interessanti da quella casuali. Abbiamo quindi abbandonato l’ipotesi di utilizzare la scoperta di regole. Non abbiamo preso in considerazione l’uso della regressione perché utilizzata per analizzare valori continui, come abbiamo spiegato nel Paragrafo 3.5.1; invece il nostro obiettivo era di ottenere dei livelli di rischio discreti. Abbiamo quindi considerato la seconda alternativa dell’apprendimento supervisionato, la classificazione. Non avevamo però a disposizione un albero di decisione (e quindi un modello già pronto), né dei dati già suddivisi in classi da cui ricavarlo. Non potevamo nemmeno chiedere ad un medico di classificare i punti di alcuni grafici o di indicare dove andassero lanciati gli allarmi, non avendo un supporto medico ufficiale che garantisse l’autorevolezza dei risultati; abbiamo quindi scartato anche la possibilità di utilizzare l’apprendimento supervisionato. Infine abbiamo valutato l’uso del clustering. Il clustering può essere utilizzato per raggruppare sequenze temporali simili oppure per individuare comportamenti simili all’interno della stessa sequenza. L’applicazione adatta al nostro scopo è la seconda. Sebbene la letteratura illustri svariati esempi di applicazione di una sliding window per ottenere le sottosequenze da raggruppare, abbiamo deciso di non adottare questa soluzione, in quanto irrilevante, come spiegato in [38]. Dopo aver opportunamente trasformato i dati, come spiegato nel Paragrafo 4.2, applichiamo il clustering per dividere i valori in intervalli discreti e normalizzarli prima di proseguire con l’elaborazione. Il clustering inoltre presenta i seguenti vantaggi: divide i dati in base a criteri di somiglianza, che dipendono dagli algoritmi scelti per calcolare la distanza; non necessita di dati già classificati da cui apprendere la suddivisione, in quanto la determina dai dati stessi. Abbiamo quindi deciso di utilizzare questo approccio e nel paragrafo successivo spieghiamo meglio le nostre scelte. 32 Capitolo 3 - Tecniche di analisi dei dati 3.8.2 Scelta dell’algoritmo di clustering Ricordiamo che i principali metodi di clustering esistenti sono gli algoritmi: 1. di partizionamento, come il k-means; 2. gerarchici, di tipo top down (divisivo) o bottom up (agglomerativo); 3. basati sul calcolo della densità, come DBSCAN [39]; 4. basati sull’applicazione di una griglia, come CLIQUE [40] e STING [41]. Ci siamo concentrati sull’analisi delle prime due tipologie. Gli algoritmi di partizionamento suddividono i punti in un certo numero (k) di partizioni e poi le valutano secondo vari criteri. Hanno i seguenti pregi: ogni punto è inserito esattamente in uno dei k cluster non sovrapposti; sono algoritmi relativamente efficienti, la cui complessità dipende linearmente dal numero di punti; terminano sempre in un ottimo locale, ma si può ricavare l’ottimo globale attraverso altre tecniche, ad esempio gli algoritmi genetici. Presentano i seguenti difetti: è necessario conoscere a priori il numero k di cluster desiderati; si possono applicare solo a dati numerici e non categorici; non gestiscono gli outlier; hanno difficoltà a individuare cluster di forma non convessa; Abbiamo deciso di applicare questo algoritmo per i seguenti motivi: non abbiamo considerato come limite il fatto di non poter riconoscere cluster di forma arbitraria, in quanto abbiamo applicato il clustering in uno spazio monodimensionale; non riteniamo limitativo il fatto di dover determinare a priori il numero k, in quanto, essendo scalabile, è possibile ripetere le prove per vari valori oppure sfruttare altre informazioni per determinare il valore ottimale (noi lo abbiamo determinato dall’analisi del dendrogramma, ottenuto applicando il clustering gerarchico); abbiamo affrontato la gestione degli outlier nella fase di pre-elaborazione dei dati, sopperendo alla carenza dell’algoritmo; siccome i dati analizzati sono esclusivamente numerici, non è necessaria la gestione di quelli categorici. Gli algoritmi gerarchici, rispetto agli algoritmi di partizionamento, hanno il vantaggio di non richiedere la conoscenza a priori del numero di partizioni in cui dividere i punti. Producono infatti un dendrogramma (come mostreremo in Figura 7.6, Figura 7.7 e Figura 7.8), dalla cui analisi si può decidere il numero di cluster ottimale per la suddivisione. Gli svantaggi principali sono però la soggettività nell’interpretazione dei risultati e la scarsa scalabilità: la complessità, infatti, aumenta con il quadrato del numero di punti. È presente anche il problema degli ottimi locali, come in ogni altro algoritmo euristico. Abbiamo deciso di considerare anche questo algoritmo per i seguenti motivi: 33 Capitolo 3 - Tecniche di analisi dei dati l’analisi del dendrogramma ci permette di osservare i diversi raggruppamenti al variare del numero di cluster, e quindi scegliere quello più adeguato; permette di valutare diversi metodi di calcolo della distanza inter-cluster; non abbiamo considerato come limite il fatto di avere una complessità proporzionale al quadrato del numero di punti, siccome prevediamo di applicarlo in una fase svolta off-line. Abbiamo trascurato l’applicazione degli algoritmi basati su funzioni di connettività e densità, perché: il concetto stesso di densità non è applicabile a questo contesto; non abbiamo gli elementi per valutare i parametri di densità richiesti come condizione di terminazione; non ci interessa trovare cluster di forma arbitraria. Non abbiamo considerato gli algoritmi basati su una struttura a griglia, con più livelli di granularità, perché dividono lo spazio in celle rettangolari: su uno spazio monodimensionale il concetto di cella non è applicabile. In generale gli algoritmi che non abbiamo preso in considerazione sono stati pensati per uno spazio multidimensionale, quindi i vantaggi che introducono non sono applicabili alla nostra situazione. 34 Capitolo 4 IGUANA – idea 4.1 Introduzione Il problema che abbiamo affrontato consiste nell’individuare la gravità delle eventuali situazioni di rischio in cui si trova un paziente in un dato istante di tempo, avendo a disposizione le misure del monitoraggio continuo di alcuni segnali fisiologici rilevati da sensori. La soluzione che proponiamo si sviluppa in due fasi: 1. creazione di un modello attraverso l’analisi di una parte dei dati a disposizione, in modo da determinare quali situazioni sono più frequenti (normali) e quali meno frequenti (più rischiose); 2. applicazione del modello per classificare i restanti dati. Entrambe le fasi sono precedute da una pre-elaborazione dei dati: sostituzione dei valori errati dovuti al malfunzionamento dei sensori con valori nulli, in modo che non influenzino né il modello creando classi sbagliate, né il classificatore causando falsi allarmi, ed eventuale ricampionamento dei dati se la frequenza di campionamento dei sensori è troppo elevata. La prima fase è preceduta da un ulteriore passo di calcolo della più lunga sottosequenza senza valori nulli, per selezionare dati adeguati alla costruzione del modello. La Figura 4.1 mostra graficamente quanto spiegato. dati ABP ABP t HR SpO2 dias sys - PREELABORAZIONE sottosequenza senza NA creazione MODELLO dati dati classificati PREELABORAZIONE CLASSIFICAZIONE Figura 4.1 Schema generale di funzionamento 35 rischio Capitolo 4 - IGUANA – idea Le sequenze temporali vengono pre-elaborate e poi analizzate per creare il modello; i nuovi dati vengono quindi classificati usando il modello prodotto e ogni valore è etichettato con il livello di rischio corrispondente; tali livelli sono combinati per ottenere il rischio totale per il paziente ad ogni istante di tempo. Abbiamo considerato le sequenze temporali dei valori dei segnali fisiologici (pressione arteriosa diastolica e sistolica, battito cardiaco e saturazione di ossigeno), valutando il relativo rischio secondo i seguenti aspetti: un valore è tanto più rischioso quanto più è raro, e viceversa, tanto più normale quanto più è frequente; il rischio dipende dalla distanza dalla media dinamica del paziente calcolata sui valori più recenti; l’andamento dei valori precedenti influisce sul rischio del valore attuale. Alla luce di queste considerazioni, i punti a rischio elevato possono essere definiti anomalie delle sequenze temporali. Siccome il nostro obiettivo è determinare il livello di rischio dei punti, abbiamo realizzato un metodo che valuta quanto sono anomale le situazioni analizzate. Il nostro approccio prevede il raggruppamento dei punti in classi, in modo che ogni classe rappresenti un diverso grado di anomalia; i gradi di anomalia maggiori corrispondono a rischi maggiori. La letteratura fornisce numerosi esempi di utilizzo delle tecniche di riconoscimento di anomalie (anomalies detection). Una di queste è descritta in [47] e sfrutta l’algoritmo gerarchico di clustering Gecko, simile a Chameleon [48], ma applicabile alle sequenze temporali in modo che i cluster non si sovrappongano nella dimensione temporale. L’invenzione di questo algoritmo è inserita nell’obiettivo più ampio di creare un modello per scoprire le anomalie facilmente interpretabile e modificabile da un utente. Il nostro modello, invece, pur essendo creato per lo stesso obiettivo (limitato però all’ambito medico di rilevare situazioni di emergenza) non prevede l’invenzione di un nuovo algoritmo di clustering: la scelta è lasciata all’utente, che può decidere quale utilizzare a seconda delle esigenze e alla luce delle nuove scoperte della ricerca. Per mantenere traccia dell’evoluzione della nostra idea, e continuare nella specie dei rettili degli autori che ci hanno ispirati, abbiamo deciso di denominare il nostro framework IGUANA (Individuation of Global Unsafe ANomalies and activation of Alarms), intendendo includere in questo termine tutto il processo composto dalle fasi descritte in questo paragrafo. La descrizione dettagliata delle fasi di creazione del modello e della sua applicazione per classificare i nuovi dati sono descritte nel seguito di questo capitolo. La fase di pre-elaborazione è invece descritta nel Paragrafo 6.4, perché strettamente correlata al tipo di dati utilizzati. 36 Capitolo 4 - IGUANA – idea 4.2 Creazione del modello La fase di creazione del modello prevede l’analisi di dati clinici relativi a un campione di pazienti per individuare quali situazioni sono più frequenti (normali) e quali più rare (rischiose). 4.2.1 Evoluzione Alla base del nostro lavoro vi è l’ideazione di una funzione di calcolo del rischio per il paziente, in modo che si avvicini il più possibile alla valutazione che farebbe un medico. Abbiamo fatto l’ipotesi di considerare una situazione tanto più rischiosa quanto meno è frequente. Il nostro obiettivo è ottenere una classificazione del rischio in un certo numero di livelli. Associamo un livello di rischio ad ogni segnale in ogni istante, e uno complessivo al paziente, come combinazione dei rischi di tutti i segnali fisiologici analizzati. Pur avendo a disposizione sequenze temporali, abbiamo deciso di calcolare il rischio puntuale (relativo ad ogni istante), poiché lo scopo principale è individuare tempestivamente le situazioni pericolose e permettere interventi in grado di salvare una vita umana. Ci siamo quindi concentrati sugli aspetti che incidono sulla determinazione del rischio considerando un solo segnale fisiologico, ad esempio il battito cardiaco. Considerando una sequenza di valori, abbiamo esaminato due fattori di rischio: 1. la distanza del valore attuale da una media dinamica che rappresenta il comportamento del paziente negli ultimi minuti (abbiamo denominato offset tale valore); 2. la pendenza, cioè la variazione del valore attuale rispetto al precedente, per considerare quanto rapidamente il paziente sta variando la sua condizione; in pratica si tratta del coefficiente angolare della retta che unisce i due punti (denominato slope); siccome i punti sono tutti alla stessa distanza sull’asse del tempo, abbiamo deciso di calcolare tale valore solo come differenza tre le ordinate dei punti, senza dividere per la differenza tra le ascisse. Parlando con un esperto del settore, ci siamo resi conto che, per valutare effettivamente il rischio di un paziente, serve considerare la posizione del punto rispetto a certe soglie, dette di “normalità” (un valore massimo e uno minimo). Abbiamo quindi introdotto un terzo fattore, denominato dist, per poter incrementare il rischio se il valore oltrepassa tali soglie. Le soglie di normalità andrebbero impostate direttamente dal medico e personalizzate a seconda del paziente e della malattia; non avendo questa possibilità abbiamo pensato di ricavarle direttamente dai dati, impostandole come i valori minimo e massimo della media mobile calcolata come spiegato nel Paragrafo 5.6. Sempre parlando con un esperto abbiamo scoperto che ci sono ulteriori soglie, che abbiamo chiamato “assolute”, oltre le quali va sempre lanciato l’allarme: ai valori che le 37 Capitolo 4 - IGUANA – idea oltrepassano è assegnata automaticamente la classe di rischio più elevato. La Figura 4.2 mostra graficamente quanto spiegato. valore dati originali soglie assolute media mobile soglie di normalità dist offset slope tempo Figura 4.2 Esempio di calcolo di offset, slope e dist 4.2.2 Funzione di rischio Dopo aver trasformato i dati provenienti dalla fase di pre-elaborazione nei corrispondenti valori di offset, slope e dist, abbiamo ricavato la funzione matematica indicata dalla Formula (4.1), in grado di combinarli per ottenere il rischio. (4.1) risk = offset + slope + (offset ) 2 + ( slope) 2 + dist Spieghiamo ora il contributo dei vari termini e il loro significato. Consideriamo ad esempio il grafico riportato in Figura 4.3. Supponiamo che derivi dalla trasformazione di alcuni punti di una sequenza temporale nelle rispettive coordinate di slope e offset. Non consideriamo il contributo di dist, quindi supponiamo che i punti siano all’interno delle soglie di normalità; in caso contrario avremmo un grafico tridimensionale. I punti nel primo e nel terzo quadrante sono quelli che caratterizzano le situazioni più rischiose, perché indicano che il segnale analizzato si sta allontanando dalla media (offset e slope concordi); quelli nel secondo e nel quarto quadrante, invece, caratterizzano situazioni meno rischiose, perché il segnale si sta avvicinando alla media (offset e slope discordi). 38 Capitolo 4 - IGUANA – idea offset slope Figura 4.3 Trasfomazione di alcuni punti nelle coordinate slope-offset Il primo termine della Formula (4.1), offset + slope , considera le quattro possibili combinazioni di slope e offset: 1. offset positivo e slope positivo: il valore è sopra la media e si sta allontanando; il rischio aumenta, infatti le componenti si sommano; 2. offset negativo e slope negativo: il valore è sotto la media e sta diminuendo; anche in questo caso il rischio deve aumentare della somma delle due componenti, come si ottiene applicando il valore assoluto; 3. offset positivo e slope negativo: il valore è sopra la media ma sta diminuendo, le componenti si sottraggono e il rischio è minore; 4. offset negativo e slope positivo: il valore è sotto la media ma si sta avvicinando ad essa; anche in questo caso il rischio è minore. Evidenziando i punti con lo stesso rischio, si ottengono delle rette inclinate a –45° e simmetriche rispetto all’origine. Raggruppando quelli a rischio simile, si ottiene un grafico come quello riportato in Figura 4.4. Possiamo notare che: l’ampiezza tra le “fasce” a rischio simile dipende dal metodo di raggruppamento utilizzato, nel nostro caso un algoritmo di clustering; la simmetria delle rette rispetto all’origine dipende dai pesi assegnati a slope e offset: come infatti spiegato nel seguito del paragrafo, assegnando lo stesso peso a valori positivi e negativi dei parametri si ottengono rette simmetriche, in caso contrario questo non si verifica; i punti centrali hanno rischio basso (offset e slope quasi nulli, quindi valori nella norma) e il rischio cresce allontanandosi dall’origine. 39 Capitolo 4 - IGUANA – idea offset slope Figura 4.4 Contributo del primo termine nel calcolo del rischio offset slope Figura 4.5 Contributi dei primi due termini nel calcolo del rischio Il primo termine della Formula (4.1), però, non è sufficiente a valutare il rischio in modo adeguato. Considerando che un punto nell’origine è meno rischioso di uno che ha slope e offset uguali, discordi ma non nulli, abbiamo introdotto un altro contributo, 40 Capitolo 4 - IGUANA – idea (offset ) 2 + ( slope) 2 , che rappresenta la distanza dall’origine. Otteniamo quindi delle ellissi allineate con l’asse maggiore a –45°, come mostrato in Figura 4.5. Infine, per aumentare il rischio nel caso in cui il valore esca dalle soglie di normalità abbiamo introdotto il terzo contributo, dist. Per aggiungere flessibilità alla soluzione, abbiamo pensato di permettere al medico di modificare il contributo delle componenti del rischio pesandole in modo opportuno a seconda del parametro; ad esempio per il battito cardiaco sono poco importanti le variazioni, anche se brusche, rispetto al valore assoluto, quindi slope deve influenzare di meno il calcolo del rischio. Quindi abbiamo introdotto dei pesi (con valori da 0 a 1) per ognuna delle componenti. La Formula (4.2) tiene conto di queste considerazioni. (4.2) risk = wo ⋅ offset + ws ⋅ slope + wr ⋅ (offset ) 2 + ( slope) 2 + wd ⋅ dist Nell’equazione riportata wo indica il peso (weight) di offset, ws quello di slope e wd quello di dist. Agendo sui primi due pesi si varia l’inclinazione delle rette; il peso wr serve invece a regolare l’importanza del raggio, cioè della distanza dal centro, e sul grafico di slope-offset ha l’effetto di “deformare” l’ellisse. I valori dei pesi wo, ws, wd sono impostabili dall’utente, mentre wr non è un parametro libero ma dipende dai primi due; abbiamo deciso di definire il suo valore come media tra wo e ws in quanto se wo e ws sono posti a zero, anche la distanza dall’origine del piano cartesiano individuato da slope e offset non deve contribuire al rischio; se invece wo e ws sono maggiori di zero, wr deve influire in modo proporzionale ad essi. Un’ulteriore considerazione ci ha portato a introdurre una differenziazione dei pesi, a seconda che il valore sia positivo o negativo. Da valutazioni mediche, infatti, abbiamo capito che è più pericoloso se i valori scendono sotto la media, perché generalmente sono situazioni provocate da malfunzionamenti dell’organismo. Ad esempio, se il battito cardiaco scende sotto i 60 battiti al minuto, probabilmente si tratta di un problema di percorso elettrico tra cuore superiore e inferiore, un cosiddetto blocco cardiaco, che causa una contrazione dei ventricoli troppo lenta o una perdita di sincronizzazione tra cuore superiore o inferiore; oppure un problema di pacemaker, che non invia più segnali alla frequenza necessaria determinando un numero minore di contrazioni. Un aumento dei valori oltre la media, invece, può essere causato anche da sforzi fisici, come una corsa. Non avendo a disposizione misure per capire se il paziente sta facendo attività fisica, abbiamo previsto di considerare separatamente le due situazioni (valori positivi o negativi di offset, slope e dist). Nel caso in cui, in futuro, si presentasse questa possibilità, sarebbe possibile modificare il framework per gestire l’integrazione delle nuove misure di movimento/attività in modo semplice. 41 Capitolo 4 - IGUANA – idea 4.2.3 Ipotesi sulla frequenza Abbiamo ipotizzato che le situazioni più frequenti siano quelle meno rischiose, come abbiamo verificato facendo l’istogramma dei valori di slope, offset e dist, e notando che avevano un andamento simile a quello riportato in Figura 4.6. La maggior parte dei punti si trova in situazioni poco rischiose, corrispondenti a bassi valori di slope, offset e dist: tali situazioni sono quindi le più frequenti. Al contrario, solo pochi punti hanno valori elevati: le situazioni più rischiose sono quindi le più rare. Figura 4.6 Istogramma della distribuzione dei valori ipotizzata Se questa ipotesi non fosse vera, potremmo avere un andamento dei valori di slope, offset e dist simile a quello riportato in Figura 4.7. IGUANA funzionerebbe allo stesso modo nel rilevare un certo numero di situazioni significative, ma l’effetto sarebbe quello di differenziare le situazioni di normalità e lasciare un’unica classe di rischio elevato con tanti punti. Figura 4.7 Istogramma della distribuzione dei valori alternativa 42 Capitolo 4 - IGUANA – idea 4.2.4 Clustering Definiti i concetti di slope, offset e dist, abbiamo pensato ad un metodo per classificarli; ricordiamo infatti che l’obiettivo di questa fase è ottenere un modello di classificazione. Per le motivazioni spiegate nel Paragrafo 3.8.1, abbiamo pensato di applicare la classificazione non supervisionata, ovvero il clustering. Le scelte prese in considerazione sono: 1. applicare il clustering tridimensionale sui valori dei tre parametri per vedere se individua situazioni di rischio simile, e riportare in output i centri di cluster; l’effetto è quello di raggruppare i punti con slope, offset e dist simili; 2. calcolare il rischio direttamente nel modello, usando la Formula (4.2), e applicare il clustering (monodimensionale) ai valori di rischio ottenuti, in modo da dividerli in classi, e riportare in output le soglie; 3. applicare il clustering (monodimensionale) in modo separato ai valori di slope, offset e dist, riportando in output le soglie delle classi individuate per ciascuno, e spostare il calcolo del rischio nella parte di classificazione (applicazione del modello). Per quanto riguarda la scelta degli algoritmi di clustering, abbiamo preso in considerazione sia gli algoritmi di partizionamento (k-means), sia quelli gerarchici, provando per questi ultimi vari metodi di calcolo della distanza inter-cluster (single linkage, complete linkage, average linkage, centroid e ward), riportando le considerazioni teoriche nel Paragrafo 3.8.2 e i confronti sperimentale nel Paragrafo 7.4.7. Per avere a disposizione una visualizzazione dei risultati, abbiamo progettato un classificatore per ognuno dei modelli e l’abbiamo applicato a nuovi dati. Rimandiamo quindi la discussione sulla scelta del modello più adatto al Paragrafo 4.3. 4.3 Classificazione Dopo la creazione del modello, possiamo passare alla fase della sua applicazione per classificare nuovi dati. Ricordiamo che la creazione del modello può essere effettuata off-line, senza particolari limiti di tempo o prestazioni, invece la classificazione va fatta on line sul flusso di dati che arriva dai sensori, nel più breve tempo possibile. Non avendo a disposizione apparecchiature che ci permettessero di registrare un flusso in tempo reale, l’abbiamo simulato leggendo i dati da file (diversi da quelli usati per la creazione del modello). A questo punto non è necessaria la fase di pre-elaborazione dei dati, o meglio, si riduce al solo campionamento, nel caso in cui la frequenza dei sensori sia troppo elevata. Prevediamo, infatti, che durante il periodo di monitoraggio possano verificarsi malfunzionamenti dei sensori, e quindi siano presenti dei valori non significativi nelle sequenze. Abbiamo deciso che, se un sensore non rileva la misura di un segnale, tale 43 Capitolo 4 - IGUANA – idea segnale non va ad influire sul calcolo del rischio complessivo per il paziente in quell’istante. A seconda del modello scelto, si deve utilizzare un diverso classificatore. In Figura 4.8 mostriamo lo schema dei tre tipi di classificatori. MODELLO 1 <cluster offset, slope, dist> offset dato slope confronto dato classificato dist MODELLO 2 <cluster rischio> offset dato slope rischio dato classificato confronto dist MODELLO 3 <cluster offset> < cluster slope> <cluster dist> offset dato slope dist offset class confronto slope class rischio discretizzazione dato classificato dist class Figura 4.8 Classificatori per i tre tipi di modelli Il primo passo, ossia la scomposizione del dato di input nei corrispondenti valori di slope, offset e dist, è comune a tutti e tre. Nel primo classificatore si assegna la terna di valori al cluster più vicino tra quelli disponibili nel modello, ossia al cluster il cui centro ha distanza minima dal punto. Abbiamo verificato che il modello creato per il primo classificatore individua dei cluster che non corrispondono a classi di rischio diverse, non avendo ancora definito il rischio come risultato della funzione descritta nella Formula (4.2). Riconosce invece i cosiddetti “comportamenti simili”, raggruppando i punti che hanno slope, offset e dist analoghi, come si può notare nella Figura 4.9 (relativa alla pressione arteriosa sistolica della registrazione mimic-pulmEde-f92-71h-414n): ad esempio si distinguono le situazioni in cui il paziente è sotto la media o poco sopra (punti arancioni e gialli, a seconda che slope sia negativo o positivo) o decisamente sopra la media (punti verdi). 44 Capitolo 4 - IGUANA – idea Non essendoci utile al raggiungimento dell’obiettivo iniziale, abbiamo scartato questa soluzione. Figura 4.9 Risultato dell’applicazione del primo modello Nel secondo classificatore si calcola il rischio con la Formula (4.1) e si confronta il valore ottenuto con le soglie ricavate dal modello. In questo modo si ottiene la classe di rischio del segnale ad uno specifico istante di tempo. La Figura 4.10, relativa alla pressione arteriosa sistolica della registrazione mimic-pulmEde-f92-71h-414n, mostra il risultato dell’applicazione di questo secondo metodo: si nota che i punti vicini alla media e dentro le soglie sono poco rischiosi (di colore verde), mentre quelli più lontani lo sono di più (punti rossi e viola). Con questo approccio la parte di classificazione è semplice, e lasciando il clustering (e quindi la discretizzazione) alla fine è possibile mantenere la massima accuratezza. D’altra parte, calcolando il rischio nel modello si ha uno svantaggio: siccome l’operazione richiede l’impostazione di molti parametri, ogni volta che se ne modifica uno bisogna eliminare il vecchio modello e costruirne uno nuovo; al crescere della dimensione dei dati esaminati, tale operazione richiede parecchio tempo. 45 Capitolo 4 - IGUANA – idea Per quanto riguarda l’aspetto pratico, il principale svantaggio di questa soluzione sta nella valutazione delle situazioni di rischio solo in base al valore finale del rischio calcolato, senza considerare se questo sia dovuto a una o più delle tre componenti slope, offset e dist. Possono verificarsi situazioni in cui il valore del rischio è elevato solo a causa di una componente, e altre situazioni in cui il rischio non è elevato, anche se una componente assume valori anomali. Figura 4.10 Risultato dell’applicazione del secondo modello Nel terzo classificatore, prima si confrontano i valori di slope, offset e dist con le soglie ricavate dal modello, e dopo ci si occupa del calcolo del rischio, pesandoli in modo opportuno. La Figura 4.11, relativa alla pressione arteriosa sistolica della registrazione mimic-pulmEde-f92-71h-414n, mostra il risultato ottenuto. Il principale vantaggio della terza soluzione presentata è quello di analizzare le tre componenti del rischio per valutarne l’impatto singolarmente. Lo svantaggio è che la classificazione è più complessa, ma la differenza nel tempo di elaborazione è dell’ordine dei millisecondi e le prestazioni finali sono comunque accettabili (Paragrafo 7.6). Anticipare il clustering (quindi la discretizzazione) prima del calcolo del rischio ci permette di eliminare il rumore dovuto alle imprecisioni delle misure dei sensori. 46 Capitolo 4 - IGUANA – idea Inoltre questo passo è utile anche per normalizzare le tre misure ed evitare che i valori assoluti influenzino in modo errato il calcolo del rischio. Figura 4.11 Risultato dell’applicazione del terzo modello Dalle considerazioni teoriche e dai risultati sperimentali, riteniamo che la terza soluzione sia la migliore; esperti del settore, ai quali abbiamo mostrato i grafici ottenuti, hanno confermato tale scelta. Per questi motivi abbiamo svolto le prove per la determinazione dei parameri del framework e dei pesi usando il terzo modello; i risultati sono analizzati nel Capitolo 7. 4.4 Rischio totale Avendo assegnato un rischio ad ogni segnale rilevato in ciascun istante di tempo, l’ultimo problema è determinare il rischio complessivo del paziente. Siccome in questa tesi abbiamo considerato solo segnali fisiologici vitali, abbiamo deciso di assegnare come rischio complessivo il massimo tra quelli individuali. Se in futuro si aggiungessero altri segnali meno significativi o nuove conoscenze, si potrebbe modificare questa scelta in modo semplice. 47 Capitolo 4 - IGUANA – idea Il grafico in Figura 4.12 mostra il rischio totale per il paziente, comune a tutti i parametri. Figura 4.12 Rischio totale riportato sui quattro parametri Si notano frequenti situazioni in cui il rischio complessivo è massimo a causa del basso livello di ossigenazione anche se il paziente presenta battito cardiaco e pressione sanguigna nella norma. Questo è dovuto all’ipotesi di considerare tutti i segnali fisiologici della stessa importanza per determinare la gravità della situazioni clinica del paziente. 48 Capitolo 5 IGUANA – implementazione 5.1 Introduzione In questo capitolo descriviamo i dettagli implementativi del nostro framework IGUANA. Presentiamo una breve introduzione sul funzionamento di R, l’ambiente che abbiamo usato per realizzare il prototipo (maggiori informazioni sono disponibili sul sito [42]). Inoltre dettagliamo le fasi di lettura dei dati da file, pre-elaborazione dei dati e calcolo della media mobile, e specifichiamo le fasi di creazione del modello e classificazione dei dati riportando l’implementazione dei tre metodi individuati nel capitolo precedente. Abbiamo ritenuto opportuno inserire solo le parti di codice più significative. 5.2 Introduzione a R R è un linguaggio e un ambiente specifico per l’utilizzo di funzioni statistiche e la visualizzazione di grafici. Il codice sorgente è disponibile come software libero nei termini delle licenze della GNU Free Software Foundation2; si compila e si esegue sotto parecchie piattaforme UNIX (inclusi i sistemi FreeBSD e Linux), Windows e MacOS. Figura 5.1 Logo di R R è un’integrazione di strumenti per la manipolazione dei dati, di calcolo e di grafica; deriva dall’implementazione del linguaggio S, sviluppata da Rick Becker, John Chambers e Allan Wilks nei laboratori Bell. Permette un’efficiente gestione e memorizzazione dei dati, comprende parecchi operatori per fare calcoli direttamente su 2 http://www.gnu.org 49 Capitolo 5 - IGUANA – implementazione vettori e matrici, include una notevole collezione di strumenti per l’analisi dei dati (integrati e coerenti) e la loro rappresentazione grafica, e utilizza un linguaggio di programmazione semplice ed efficace, che permette all’utente di definire nuove funzioni, e può richiamare a run-time codice scritto in C, C++ e Fortran. Con il termine “ambiente” si intende affermare che R è un sistema ben progettato e coerente, piuttosto che un insieme di strumenti troppo specifici e poco flessibili, come in genere succede nel caso di altri software per l’analisi dei dati. Inoltre, R può essere facilmente esteso tramite package: alcuni sono già inclusi nella distribuzione, gli altri sono scaricabili da Internet3. I comandi possono essere eseguiti direttamente dal prompt o richiamati da uno script, salvato su un file con estensione “.r”, tramite > source("commands.r") Le entità create sono chiamate “oggetti” (variabili, vettori, stringhe, funzioni o strutture più complesse) e, durante una sessione, sono creati e memorizzati per nome. Il comando > objects() serve a visualizzare i nomi degli oggetti correntemente memorizzati in R (che prendono il nome di workspace). Tutti gli oggetti creati durante una sessione possono essere salvati in un file per essere riutilizzati in una sessione futura; sono scritti su un file con estensione RData e le linee di comando usate sono scritte in un file con estensione Rhistory. Quando R viene riavviato, carica il workspace da questi file. R opera su strutture dati; la più semplice è il vettore numerico, costituito da una sequenza ordinata di numeri. Per creare un vettore di nome x di cinque numeri, 10.4, 5.6, 3.1, 6.4 e 21.7, si usa il comando > x <- c(10.4, 5.6, 3.1, 6.4, 21.7) La funzione c() concatena un numero arbitrario di elementi passati come argomenti. Nella maggior parte dei casi si può usare “=” come simbolo alternativo di assegnazione, o la funzione assign() > assign(“x”,c(10.4, 5.6, 3.1, 6.4, 21.7)) Se si scrive un’espressione senza assegnare il risultato ad una variabile, esso viene solo visualizzato ma non memorizzato. Per accedere a un elemento di un vettore si usano le parentesi quadre. Ad esempio x[c(1:3)] restituisce i primi tre elementi del vettore. I vettori possono essere usati in espressioni aritmetiche, in cui le operazioni sono fatte elemento per elemento. Non sempre i vettori devono essere della stessa lunghezza; se non lo sono, il risultato sarà un vettore con lunghezza pari al vettore più lungo, e quelli più corti sono ripetuti finché non raggiungono la lunghezza necessaria. Ad esempio, mantenendo x definito prima, nel comando > y <- 2*x + 1 la variabile 1 è ripetuta cinque volte per essere sommata a tutti gli elementi di x. 3 http://CRAN.R-project.org 50 Capitolo 5 - IGUANA – implementazione Gli operatori aritmetici elementari sono +, -, *, / e ^ per elevare a potenza; inoltre sono disponibili altre funzioni aritmetiche comuni (log(x), exp(x), sin(x), cos(x), tan(x), sqrt(x)) e statistiche: max(x) e min(x) per selezionare il più grande o il più piccolo elemento di un vettore, length(x) per ricavare il numero di elementi che lo compongono, sum(x) per la somma totale degli elementi, prod(x) per il loro prodotto, mean(x) e var(x) per il calcolo di media e varianza, sort(x) per ordinare gli elementi. R ha una serie di funzioni per generare facilmente sequenze di numeri, ad esempio > 1:30 è il vettore c(1, 2, …, 29, 30), equivalente a > seq(1,30,by=1) A volte alcune componenti di un vettore possono non essere note: quando un elemento è “Not Available” viene sostituito dal valore speciale NA. In genere ogni operazione con un NA dà come risultato NA. La funzione is.na(x) restituisce un vettore logico, della stessa lunghezza di x, con TRUE in corrispondenza degli elementi NA in x. C’è un secondo caso di valori mancanti, i cosiddetti “Not a Number” (NaN), derivanti da forme indeterminate come 0/0 o Inf-Inf. Anche nel caso di questi valori la funzione is.na() restituisce un valore TRUE. Per sapere se si tratta di NA o NaN bisogna effettuare un secondo controllo tramite is.nan(). Spesso servono anche vettori di caratteri, in genere per le etichette dei grafici. Le stringhe vanno racchiuse tra doppi apici e si possono concatenare tramite le funzioni c() o paste(): quest’ultima ha un numero arbitrario di argomenti e li concatena in una stringa, separati da uno spazio (il separatore è modificabile). Altri tipi di oggetti, oltre ai vettori, sono le matrici (generalizzazioni dei vettori, indicizzate da due o più indici), le liste (forme generali di vettori, in cui gli elementi non devono necessariamente essere dello stesso tipo, anzi sono a loro volta vettori o liste; sono usate per memorizzare i dati di un calcolo statistico), i data frame (strutture simili a matrici, in cui le colonne possono essere di tipo diverso, ad esempio per rappresentare le diverse variabili prese in considerazione durante varie osservazioni), e le funzioni. Non ci soffermiamo sulla trattazione di tutte le strutture dati e dei comandi, anche perché facilmente comprensibili intuitivamente, ma dedichiamo un’ultima parte alle funzioni grafiche. Per aprire una nuova finestra grafica si usa il comando x11(). Si usa il comando > plot(x) per visualizzare gli elementi del vettore (asse y) e il loro indice nel vettore (asse x); se x è un vettore di numeri complessi produce il grafico della parte reale e di quella immaginaria. Oppure si usa > plot(x,y) per visualizzare i punti che hanno coordinate x nel vettore x, e y in y (i due vettori devono avere la stessa lunghezza). Inoltre si possono impostare altri argomenti, tra cui: 51 Capitolo 5 - IGUANA – implementazione 1. type, per il tipo di grafico a. type = “p”, disegna solo i punti (impostato di default); b. type = “l”, disegna solo le linee che congiungono i punti; c. type = “b”, disegna sia i punti che le linee; d. type = “h”, disegna linee verticali dal punto all’asse x; e. type = “n”, non disegna i punti ma solo gli assi; xlab, per l’etichetta sull’asse x; ylab, per l’etichetta sull’asse y; main, per il titolo del grafico; sub, per il sottotitolo (posto sotto l’asse x, a caratteri più piccoli). 2. 3. 4. 5. Se questo non è sufficiente a produrre il grafico desiderato, si possono usare altri comandi più a basso livello, in particolare: > points(x,y) per aggiungere dei punti al grafico corrente; > text(x,y,labels,…) per aggiungere del testo posizionato nel punto (x,y); > abline(a,b) per aggiungere una linea di pendenza b e intercetta a; > abline(h=y,v=x) per aggiungere una linea orizzontale ad altezza y o verticale a distanza x; > polygon(x,y,…) per disegnare un poligono definito dai vertici in (x,y); > legend(x,y,legend,…) per aggiungere una legenda nella specifica posizione (x,y). 5.3 Main Abbiamo strutturato il programma in modo da avere un flusso principale di poche righe, che richiama le varie funzioni, in particolare quelle di pre-elaborazione dei dati, di creazione del modello, della sua applicazione, e di visualizzazione dei risultati. La prima parte, relativa alla costruzione del modello, comprende le fasi di: 1. lettura dei dati su cui costruire il modello da file; 2. calcolo delle statistiche globali (somma, minimo, massimo, media) di ogni parametro; 3. pre-elaborazione dei dati (individuazione NA, campionamento); 4. calcolo della media mobile; 5. calcolo delle soglie di normalità; 6. creazione del modello (passando come parametri di input i dati, la media mobile, il numero di cluster, l’algoritmo da utilizzare per il clustering gerarchico, l’algoritmo di implementazione del k-means, il metodo di calcolo della distanza e i valori delle soglie di normalità); 7. visualizzazione del modello (per mostrare il dendrogramma ottenuto). 52 Capitolo 5 - IGUANA – implementazione La fase 6, a seconda del tipo di modello utilizzato, può ricevere o no come parametro il vettore dei pesi per slope, offset e dist, che va quindi appositamente impostato. La seconda parte, relativa all’applicazione del modello per classificare i dati, comprende le fasi di: 1. lettura dei dati da classificare; 2. calcolo delle statistiche globali (somma, minimo, massimo, media) di ogni parametro; 3. campionamento dei dati; 4. calcolo della media mobile; 5. calcolo delle soglie di normalità; 6. impostazione dei pesi (solo nel caso di utilizzo del terzo tipo di modello); 7. classificazione dei dati applicando il modello; 8. visualizzazione dei risultati (i punti sono colorati con colori diversi in base al rischio, secondo la scala verde, giallo, arancione, rosso, viola). Nel resto del capitolo spieghiamo le fasi più significative. 5.4 Lettura dei dati I dati vengono letti da file. I file, come spiegato nel Capitolo 6, sono composti da una riga iniziale di intestazione e tante colonne quanti sono i parametri misurati, più una per il tempo. Bisogna specificare il numero totale di file da leggere (in nfile) e i loro nomi (nel vettore inputFiles). Il ciclo for riportato di seguito crea una lista (filelist) con i nomi completi dei file (filename), ottenuti aggiungendo la cartella appropriata (inputPath) prima del nome originale e il suffisso (filesuffix) dopo. for ( i in 1:nfile ) { filename <- paste(inputPath,inputFiles[i],filesuffix ,sep="") filelist <- c( filelist, filename ) } Per leggere i dati da un file, bisogna usare il comando read.table, come indicato nel codice riportato. Il significato degli argomenti è il seguente: filelist[n]: il nome del file da cui leggere i dati (può essere il percorso relativo, assoluto o una URL); header: un valore logico per specificare se la prima riga del file contiene i nomi delle variabili (header = TRUE) o no (header = FALSE); colClasses: un vettore per specificare i tipi delle colonne (ad esempio numerico, logico, intero, complesso, carattere, ecc...); nel nostro caso sono tutti numerici; tale vettore si costruisce come indicato nella prima riga di codice seguente, ripetendo una volta il valore NULL, per non considerare la prima colonna, quella dei tempi, e nparam volte il valore “numeric”. 53 Capitolo 5 - IGUANA – implementazione Il risultato di questo comando è la produzione di un data frame; per manipolarlo secondo le nostre esigenze abbiamo dovuto trasformarlo in una matrice, usando il comando as.matrix. L’operazione va ripetuta per tutti i file, i cui valori vengono quindi memorizzati in una lista di matrici, denominata originaldata. Il codice seguente mostra quanto descritto. datacol <- c( rep("NULL",1), rep("numeric",nparam) ) for ( n in 1:length(filelist) ) { # for every file originaldata[[n]] <- as.matrix( read.table( filelist[n], header = TRUE, colClasses = datacol ) ) } In Figura 5.2 mostriamo graficamente la fase di lettura dei dati da file. La funzione, denominata IGUANA_read riceve come argomento la lista dei file (filelist) da cui leggere i dati e restituisce come risultato una lista di matrici contenenti i dati letti (originaldata). filelist originaldata ABP ABP t HR SpO2 dias sys - IGUANA_read - - - - - - - - - - - - - - Figura 5.2 Fase di lettura dei dati 5.5 Pre-elaborazione dei dati L’operazione di pre-elaborazione, eseguita sui dati letti dai file per la costruzione del modello, si divide in quattro fasi distinte: 1. sostituzione degli outlier (valori errati dovuti a malfunzionamenti dei sensori) con il valore NA (Not Available); 2. sostituzione degli NA isolati con la media tra il valore precedente e il successivo; 3. selezione della più lunga sottosequenza senza NA; 4. campionamento dei dati per adeguarsi alla frequenza desiderata. La prima fase comprende un ciclo, ripetuto per ogni file e per ogni parametro, che individua gli indici dei valori che oltrepassano le soglie oltre le quali sono da considerarsi come malfunzionamenti dei sensori (ad esempio i valori negativi o nulli). 54 Capitolo 5 - IGUANA – implementazione Tali soglie, denominate NAthresholds, sono impostate da letteratura medica, come indicato in Tabella 5.1. ABPsys ABPdias HR SpO2 [mmHg] [mmHg] [bpm] [%] min 20 20 20 80 max 250 150 170 100 Tabella 5.1 Soglie di outlier Il comando which ritorna gli indici per cui è soddisfatta la condizione racchiusa tra parentesi, cioè quelli dei valori che oltrepassano le soglie. A tali indici viene poi assegnato come valore NA. Il codice seguente compie le operazioni descritte. for( p in 1:nparam ) { NAi <- c( which(originaldata[[n]][,p]<NAthresholds["min",p]), which(originaldata[[n]][,p]>NAthresholds["max",p]) ) if( length( NAi ) > 0 ) originaldata[[n]][NAi,p ] <- c(NA) } La seconda fase comprende il ciclo, ripetuto per ogni file e per ogni parametro, che individua gli indici dei valori. Il comando attr ritorna uno specifico attributo di un oggetto: in questo caso l’oggetto è il risultato di na.omit, ovvero il vettore originale senza i valori NA, e l’attributo è "na.action", cioè gli indici dei valori NA. In NAs abbiamo quindi gli indici di tutti i valori NA: sia quelli che abbiamo rimosso al passo precedente, sia gli eventuali già presenti in origine. Con il comando sort li abbiamo ordinati in ordine crescente. NAs <- attr(na.omit(originaldata[[n]][,c]),"na.action") if( is.null(NAs) ) next NAs <- sort( NAs ) Se c’è un solo NA e non è il primo valore della sequenza né l’ultimo, questo viene sostituito dalla media del valore precedente e di quello successivo. len <- length( NAs ) if (len < 1) next if (len==1 && NAs[1]!=1 && NAs[1]!=length(originaldata[[n]])) originaldata[[n]][NAs[1]] <- mean(c(originaldata[[n]][NAs[1]-1,c], originaldata[[n]][NAs[1]+1,c]) ) 55 Capitolo 5 - IGUANA – implementazione Se ci sono più NA, bisogna individuare quelli isolati, e sostituirli con la medesima formula se non sono all’inizio o alla fine della sequenza; in questi casi particolari non possono essere sostituiti. if ( NAs[1]+1 != NAs[2] && NAs[1] != 1 ) { originaldata[[n]][NAs[1],c] <- mean( c( originaldata[[n]][NAs[1]-1,c], originaldata[[n]][NAs[1]+1,c]) ) } if ( NAs[len]-1 != NAs[len-1] && NAs[len] != dim(originaldata[[n]])[1] ) { originaldata[[n]][NAs[len],c] <- mean( c( originaldata[[n]][NAs[len]-1,c], originaldata[[n]][NAs[len]+1,c]) ) } for( i in 2:(len-1) ) { NArow <- NAs[i] #if it is an isolated NA (not precedeed nor followed by NA) if( (NArow-1 != NAs[i-1]) && (NArow+1 != NAs[i+1]) ) { originaldata[[n]][NArow,c] <- mean(c( originaldata[[n]][NArow-1,c], originaldata[[n]][NArow+1,c] )) } La terza fase comprende la selezione della più lunga sottosequenza senza NA. Avendo gli indici dei valori a NA, per ottenere la dimensione di tutte le sottosequenze senza NA basta fare la sottrazione tra ogni indice e quello precedente. Poi abbiamo scelto quella più lunga tramite il comando max. NArows <- c(sort(attr(na.omit(originaldata[[n]]),"na.action") ), (dim(originaldata[[n]])[1]+1) NArows2 <- NArows[2:length(NArows)] notNAseq <- NArows2 - NArows[1:length(NArows2)] NAi <- which.max( notNAseq ) originaldata[[n]] <originaldata[[n]][(NArows[NAi]+1):(NArows2[NAi]-1),] La quarta fase, infine, su una finestra mobile di dimensione nsamples, calcola la media e memorizza i valori, poi li campiona ogni nsamples. Per calcolare la media mobile si usa il comando filter, che richiede come argomenti: una sequenza temporale; un vettore di coefficienti di filtro, in questo caso una sequenza di 1; un metodo, che può essere di convoluzione (come in questo caso, per calcolare la media mobile), o di ricorsione (per l’autoregressione); 56 Capitolo 5 - IGUANA – implementazione nel caso in cui il metodo sia di convoluzione bisogna specificare per quali valori sono i coefficienti (sides=1 se sono per quelli precedenti). In originaldata abbiamo quindi i dati pronti per essere passati alla funzione di costruzione del modello. originaldata[[n]] <- filter( originaldata[[n]], filter = rep(1,nsamples), method=‘conv’, sides=1 ) / nsamples i = c( 1:floor(dim(originaldata[[n]])[1]/nsamples) ) * nsamples originaldata[[n]] <- originaldata[[n]][i,] In Figura 5.3 mostriamo graficamente la fase di pre-elaborazione dei dati. La funzione, denominata IGUANA_prepare riceve come argomenti: la lista di matrici contenenti i dati letti dai file (originaldata), l’indicazione dell’ampiezza della finestra di campionamento, espressa in numero di campioni da analizzare (nsamples). Restituisce come risultato la lista di matrici contenenti la più lunga sottosequenza di valori senza NA comune a tutti i parametri (alldata). originaldata - - - - - - - - - - - - - - alldata nsamples IGUANA_prepare - - - - - - - - - - - - - - Figura 5.3 Fase di pre-elaborazione dei dati 5.6 Calcolo della media mobile Il problema del calcolo della media mobile richiede una particolare attenzione. In Figura 5.4 mostriamo la situazione a regime: la media mobile (mm) su una finestra temporale di dimensione d, ad un certo istante di tempo t si calcola secondo la Formula (5.1). (5.1) mm[t ] = mm[t − 1] ⋅ (d − 1) + valore[t ] d La Formula (5.1) in realtà è corretta solo per i valori di t > d. Infatti, inizializzando la variabile con mm[1] = valore[1] 57 Capitolo 5 - IGUANA – implementazione si nota che al secondo passo questo valore pesa molto nella media, perché moltiplicato per (d–1), mentre sarebbe opportuno che su due punti la media mobile fosse semplicemente la loro media. Abbiamo quindi corretto la Formula (5.1) nel modo seguente. mm[t] = mean(valore[1:t]), per t ≤ d mm[t − 1] ⋅ (d − 1) + valore[t ] , per t > d mm[t ] = d d t-1 t valore mm[t-1] mm[t]=(mm[t-1]*(d-1)+valore[t])/d Figura 5.4 Calcolo della media mobile Figura 5.5 Media mobile senza considerare il rischio dei punti A questo proposito, come si nota dal grafico riportato in Figura 5.5, la media mobile (linea blu) calcolata in questo modo non si adatta correttamente alla situazione mostrata. In questo grafico il nero indica i punti a rischio minore, il rosso quelli a rischio intermedio, il verde quelli a rischio massimo. La media mobile tende a seguire troppo fedelmente i punti a rischio elevato e causa degli errori di valutazione nel rischio dei punti che rientrano nella media dopo un picco (nel grafico sono quelli con indice prossimo a 300). Durante la fase di classificazione si conosce il rischio del punto all’istante considerato. Abbiamo pensato che la media mobile non debba adattarsi alle situazioni di 58 Capitolo 5 - IGUANA – implementazione rischio elevato, quindi i punti a rischio più alto devono pesare di meno nella media mobile. Di conseguenza abbiamo introdotto la seguente correzione alla Formula (5.1). mm[t] = mean(valore[1:t]), per t ≤ d mm[t ] = ( nrisklev + 1 − risklev[t ]) nrisklev , per t > d ( nrisklev + 1 − risklev[t ]) ( d − 1) + nrisklev mm[t − 1] ⋅ ( d − 1) + valore[t ] ⋅ In questo modo il valore del punto viene pesato in base al suo rischio: nrisklev è il numero di livelli di rischio totali e risklev[t] è il rischio del punto. Se ad esempio il punto ha rischio 2, su un massimo di 5 livelli, il valore viene moltiplicato per 4/5; se ha rischio 5, viene moltiplicato solo per 1/5, quindi influisce di meno nel calcolo della media. In Figura 5.6 mostriamo graficamente la fase di calcolo della media mobile. La funzione, denominata IGUANA_movmean riceve come argomenti: la lista di matrici contenenti le sottosequenze di dati senza NA (alldata), la dimensione della finestra; siccome quest’ultima è espressa in minuti nel parametro mwin, per convertirla nel numero di valori da considerare bisogna moltiplicare i minuti per 60, ottenendo i secondi (siccome la frequenza di campionamento originale dei sensori è di un valore al secondo), e dividere per nsamples. La funzione restituisce come risultato la lista di matrici contenenti le medie mobili calcolate per ogni parametro (alldataMM). Il calcolo della media mobile è implementato in modo diverso a seconda del tipo di classificatore utilizzato. alldata - - - - - - - mwin*60/nsamples - - - - - - - IGUANA_movmean alldataMM - - - - - - - Figura 5.6 Fase di calcolo della media mobile 59 - - - - - - - Capitolo 5 - IGUANA – implementazione 5.7 Creazione del modello Come spiegato nel capitolo precedente, abbiamo costruito i tre tipi di modelli, corrispondenti alle tre diverse applicazioni del clustering ai dati. Di seguito riportiamo le parti più rilevanti di ognuno di essi. 5.7.1 Modello 1 Nel primo modello eseguiamo il clustering tridimensionale sui valori di slope, offset e dist4. Avendo quindi nei vettori offsets[,c], slopes[,c], ndists[,c] i valori relativi ad un parametro (in posizione c), eseguiamo il clustering k-means con il comando kcluster <- kmeans( cbind( offsets[c,], slopes[,c], ndists[c,] ), nclust, iter.max = 10000, nstart = 1000, algorithm = kalg ) in cui nclust è il numero di cluster desiderati, 10000 è il numero massimo di iterazioni, 1000 è il numero massimo di insiemi da scegliere a caso e kalg è il tipo di algoritmo che implementa il k-means (noi abbiamo usato quello di Hartigan and Wong del 1979, perché più efficiente). Per memorizzare i risultati abbiamo usato una lista di nome res: res <- list() res[["kclusters"]] <- kclusters In Figura 5.7 mostriamo graficamente la fase di creazione del modello. La funzione, denominata IGUANA_model, riceve come argomenti: la lista di matrici contenenti i dati letti dai file (alldata), la lista di matrici delle medie mobili (alldataMM), le soglie di normalità (Nthtesholds), il numero di cluster (nclust), l’algoritmo di implementazione del k-means da utilizzare (kalg). Restituisce come risultato il modello, ovvero i centri di cluster calcolati. 4 Il parametro dist nella nostra implementazione è denominato ndist, per distinguerlo dalla funzione di calcolo della distanza dist(). 60 Capitolo 5 - IGUANA – implementazione allata - - - - - - - - - - - - - - alldataMM - - - - - - - - - - - - - - Nthresholds nclust IGUANA_model MODELLO 1 <cluster offset, slope, dist> kalg Figura 5.7 Fase di creazione del primo tipo di modello 5.7.2 Modello 2 Nel secondo modello, invece, calcoliamo prima il rischio e poi eseguiamo il clustering. Per ogni parametro concateniamo nel vettore risks[,c] i rischi di ogni punto calcolati secondo la Formula (5.2). (5.2) risk = wo ⋅ offset + ws ⋅ slope + wr ⋅ (offset ) 2 + ( slope) 2 + wd ⋅ dist Per il clustering gerarchico abbiamo effettuato le seguenti operazioni. distance <- dist( risks[,c], method = dmethod ) hcluster <- hclust( distance, method = cmethod ) myclust <- cutree( hcluster, nclust ) Il commando dist() serve a calcolare la matrice delle distanze, usando dmethod come misura di distanza (nel nostro caso quella euclidea). Il comando hclust() esegue il clustering gerarchico usando il metodo di calcolo della distanza inter-cluster specificato in cmethod (single linkage, complete linkage, average linkage, ward o centroid): all’inizio ogni punto è in un cluster diverso, poi si procede iterativamente, unendo ad ogni passo i due più simili, fino a raggiungere un unico cluster che comprende tutti i valori. Il risultato di quest’operazione è un dendrogramma, come mostrato in Figura 5.8. Infine il comando cutree() “taglia” il dendrogramma ad un’altezza pari al numero di cluster indicato in nclust. La scelta del numero di cluster va fatta dopo aver analizzato il dendrogramma, in modo da avere una divisione significativa dei punti, non distorta dagli outlier. 61 Capitolo 5 - IGUANA – implementazione Figura 5.8 Esempio di dendrogramma Nel caso invece del k-means abbiamo eseguito i comandi kcluster <- kmeans( risks[,c], nclust, iter.max = 1000, nstart = 100, algorithm = kalg) kmcluster[,c] <- kcluster$cluster Il secondo comando serve a memorizzare le etichette di cluster. Per entrambi i tipi di clustering abbiamo ordinato i cluster in modo che nel primo ci siano i valori più bassi del rischio e nell’ultimo quelli più alti. Abbiamo infine memorizzato le soglie delle classi come i valori massimi dei punti di ogni cluster, e le abbiamo salvate nella lista dei risultati. In Figura 5.9 mostriamo graficamente la fase di creazione del modello. La funzione, denominata IGUANA_model, riceve come argomenti: la lista di matrici contenenti i dati letti dai file (alldata), la lista di matrici delle media mobili (alldataMM), le soglie di normalità (Nthtesholds), il numero di cluster (nclust), l’algoritmo di implementazione del k-means (kalg), il metodo di calcolo della distanza inter-cluster (cmethod) del gerarchico, il metodo di calcolo della distanza intra-cluster (dmethod) del gerarchico, il vettore dei pesi di offset, slope e dist per il calcolo del rischio (wrisk). Restituisce come risultato il modello, ovvero i cluster del rischio, come soglie massime di ogni cluster. 62 Capitolo 5 - IGUANA – implementazione allata - - - - - - - - - - - - - - Nthresholds - - - - - - - wrisk IGUANA_model alldataMM - - - - - - - nclust dmethod cmethod MODELLO 2 <cluster rischio> kalg Figura 5.9 Fase di creazione del secondo tipo di modello 5.7.3 Modello 3 Nel terzo modello eseguiamo il clustering separatamente sui tre vettori di slope, offset e dist, e riportiamo in output le soglie delle classi. Prima abbiamo calcolato il valore assoluto dei tre vettori tramite il comando abs, eseguendo il codice seguente. Questo passo è necessario perché abbiamo previsto che due valori identici ma di segno opposto debbano appartenere allo stesso cluster. offsets <- abs( offsets ) slopes <- abs( slopes ) ndists <- abs( ndists ) Riportiamo il codice per il calcolo su slope, per gli altri due parametri (offset e dist) il procedimento è analogo. Riportiamo anche il ciclo per l’ordinamento dei cluster, che prima avevamo omesso. Per entrambi i tipi di clustering abbiamo ordinato i cluster, in modo che nel primo ci siano i valori più bassi e nell’ultimo quelli più alti. Questo passaggio è svolto perché, secondo l’ipotesi iniziale descritta nel Paragrafo 4.2.3, supponiamo che i comportamenti più frequenti, e quindi meno rischiosi, di slope, offset e dist siano quelli con valori più bassi. Per il clustering gerarchico si ha: distance <- dist( slopes[,c], method = dmethod ) hcluster <- hclust( distance, method = cmethod ) myclust <- cutree( hcluster, nclust ) for( k in 1:nclust ) { slopelevh[k,c] <- max( slopes[ which(myclust==k) ,c] ) } slopelevh[,c] <- sort( slopelevh[,c] ) 63 Capitolo 5 - IGUANA – implementazione E per il k-means: kcluster <- kmeans( slopes[,c], nclust, iter.max = 1000, nstart = 100, algorithm = kalg ) kcluster <- kcluster$cluster for( k in 1:nclust ) { slopelevk[k,c] <- max( slopes[ which(kcluster==k) ,c] ) } slopelevk [,c] <- sort( slopelevk[,c] ) In Figura 5.10 mostriamo graficamente la fase di creazione del modello. La funzione, denominata IGUANA_model, riceve come argomenti: la lista di matrici contenenti i dati letti dai file (alldata), la lista di matrici delle media mobili (alldataMM), le soglie di normalità (Nthtesholds), il numero di cluster (nclust), l’algoritmo di implementazione del k-means (kalg), il metodo di calcolo della distanza inter-cluster (cmethod) del gerarchico, il metodo di calcolo della distanza intra-cluster (dmethod) del gerarchico. allata Nthresholds - - - - - - - - - - - - - - alldataMM - - - - - - - - - - - - - - nclust IGUANA_model dmethod cmethod MODELLO 3 <cluster offset> < cluster slope> <cluster dist> kalg Figura 5.10 Fase di creazione del terzo tipo di modello Restituisce come risultato il modello, ovvero i cluster di offset, slope, e dist, come soglie massime di ogni cluster. 5.8 Classificazione dei dati Non avendo a disposizione un vero flusso di dati in tempo reale, per la fase di classificazione l’abbiamo simulato leggendo i valori da file, riga per riga. I file usati per la classificazione sono diversi da quelli usati per la creazione del modello. 64 Capitolo 5 - IGUANA – implementazione In questa fase bisogna anche gestire i valori non significativi, per simulare il vero comportamento dei sensori, che possono staccarsi o non funzionare per brevi periodi di tempo. Dopo aver letto i dati dei parametri all’istante di tempo t, per ogni parametro p, si trasforma il dato nei valori corrispondenti di slope e offset: in patientData c’è il valore del dato, in mm quello della media mobile. slopes [t,p] <- slopew <- patientData[t,p] - patientData[t-1,p] offsets[t,p] <- offsetw <- patientData[t,p] - mm[t-1,p] Controlliamo se il valore oltrepassa le soglie di normalità (Nthresholds), e in tal caso calcoliamo la distanza dalla soglia come valore di ndist; altrimenti tale valore è zero. if( (is.na( patientData[t,p] ) == FALSE ) && ( (patientData[t,p] > Nthresholds["max",p]) || (patientData[t,p] < Nthresholds["min",p]) ) ) { ndists[t,p]<-min(abs(patientData[t,p]-Nthresholds["max",p]), abs( patientData[t,p]-Nthresholds["min",p])) } else { ndists[t,p] <- 0 } Per la gestione degli NA non è sufficiente controllare solo che il valore del punto corrente non sia NA, perchè se era nullo quello precedente, la slope del punto corrente è comunque NA; quindi controlliamo il valore corrente di slope. Se è NA a seconda che t sia minore o maggiore della dimensione della finestra su cui calcolare la media mobile, si aggiorna quest’ultima in modo diverso (anche a seconda del tipo di classificatore utilizzato). Vediamo nel dettaglio come abbiamo implementato i classificatori. 5.8.1 Classificatore 1 Il primo classificatore assegna direttamente il punto al cluster più vicino tra quelli calcolati nel modello. Per eseguire questa operazione trasforma il punto nei corrispondenti valori di slope, offset e dist, calcola la distanza da tutti centri di cluster disponibili e lo assegna a quello a distanza minima; poi aggiorna la media mobile. Di seguito riportiamo il codice per il parametro p all’istante t. kc <- kclusters[[p]]$centers for( n in 1:nclust ) { distance <- sqrt( (kc[n,1] - offsets[t,p])^2 + (kc[n,2] - slopes [t,p])^2 + 65 Capitolo 5 - IGUANA – implementazione (kc[n,3] - ndists [t,p])^2 ) if( n==1 ) { minclust <- 1 mindist <- distance } else { mindist <- min( c(mindist, distance) ) if( mindist==distance ) { minclust <- n } } clabels[t,p] <- minclust Il primo comando serve a ricavare i centri di cluster, sotto forma delle loro coordinate tridimensionali, come riportato in Tabella 5.2 (supponendo che il modello sia stato creato per ottenere 5 centri di cluster). In kclusters, infatti, avevamo memorizzato il risultato del commando kmeans, cioè i punti etichettati in base al cluster di appartenenza e i relativi centri di cluster, oltre a informazioni aggiuntive. Per accedere al campo center di kcluster, relativo al primo parametro, occorre digitare il comando kcluster[[1]]$centers. numero di cluster offset slope dist 1 0.5910311 2.6369520 0.0000000 2 2.8033333 0.6556225 2.8033333 3 2.8033333 3.0425926 2.8033333 4 0.5972663 0.5659132 0.0000000 5 0.8881410 6.7040385 0.3881538 Tabella 5.2 Esempio di coordinate dei centri di cluster Il ciclo for ricava la distanza del punto da ogni centro di cluster e memorizza quella minima in minclust. L’ultimo comando assegna al punto l’etichetta del cluster corrispondente. Per aggiornare la media mobile, si esegue il codice seguente. if ( is.na(slopes[t,p]) ) { if( t <= mmlen ) { mm[t,p] <- mean( patientData[1:t,p], na.rm=TRUE ) } else { mm[t,p] <- mm[t-1,p] } next } 66 Capitolo 5 - IGUANA – implementazione # standard situation: not NA value if( t <= mmlen ) { ## updating moving mean mm[t,p] <- mean( patientData[1:t,p], na.rm=TRUE ) } else { mm[t,p] <- mean( patientData[(t-mmlen):t,p], na.rm=TRUE ) } In Figura 5.11 mostriamo graficamente la fase di classificazione dei dati. Abbiamo denominato la funzione IGUANA_cell perché dovrebbe essere implementata su un cellulare o un dispositivo in grado di ricevere i dati dai sensori. Tale funzione riceve come argomenti: il modello con i centri di cluster (MODELLO 1), la matrice contenente i dati da classificare (data), le soglie di normalità per il paziente (Nthtesholds), la dimensione della finestra su cui fare la media mobile (mwin*60/nsamples). data MODELLO 1 <cluster offset, slope, dist> classified data IGUANA_cell Nthresholds mwin*60/ nsamples Figura 5.11 Fase di classificazione usando il primo tipo di classificatore Restituisce come risultato i dati classificati, non secondo i valori di rischio, ma in base ai cosiddetti “comportamenti simili”. 5.8.2 Classificatore 2 Il secondo classificatore, dopo aver trasformato il punto nei corrispondenti valori di slope, offset e dist, calcola il rischio applicando la Formula (5.2) e individua il cluster a cui assegnarlo confrontando il valore di rischio con le soglie di rischio dei cluster individuati dal modello. Poi deve aggiornare la media mobile, tenendo conto del rischio del punto, affinché questa non sia influenzata in modo errato, come spiegato nel Paragrafo 5.6. 67 Capitolo 5 - IGUANA – implementazione Di seguito riportiamo il codice per ricavare il cluster a cui assegnare il punto, confrontando il rischio del parametro p al tempo t, risks[t,p], con le soglie memorizzate in patientRisk[RL,p]: tali soglie sono relative ai risultati ottenuti con l’algoritmo k-means o con quello gerarchico, a seconda di quanto specificato dall’utente. Ricordiamo che nparam è il numero di parametri rilevati dai sensori. for( p in 1:nparam ) { # for every column/parameter for( RL in 1:(nclust-1) ) { # for every cluster/risk level # we want to find in which risk level the present risk falls if( risks[t,p] <= patientRisk[RL,p] ) { risklevs[t,p] <- RL # current risk level of p is RL break } } # end for each risk level } Esempi di tabelle con le soglie massime dei cluster sono riportate in Tabella 5.3 e Tabella 5.4. Nel ciclo for confrontiamo quindi il valore di rischio di ogni parametro con le soglie dei cluster, ricordando che sono già ordinate per valori di rischio crescenti. Quando il valore risulta minore di una soglia, si è individuato il cluster adatto e si passa al parametro successivo. numero cluster ABPsys ABPdias HR SpO2 1 15.33279 17.63010 8.93434 1.775887 2 23.47524 24.41488 27.78596 4.585371 3 37.18844 38.04287 39.92303 6.223571 4 51.97725 61.13793 43.92269 9.229552 5 57.47440 77.82098 113.74589 10.918692 Tabella 5.3 Esempio di soglie di cluster per algoritmo gerarchico 68 Capitolo 5 - IGUANA – implementazione numero cluster ABPsys ABPdias HR SpO2 1 2.931438 1.872022 3.302531 0.4666667 2 6.412665 4.215327 8.673692 1.1592245 3 11.783693 9.333811 17.496219 2.2750281 4 22.850577 24.414878 43.922686 4.5853711 5 57.474395 77.820975 113.745893 10.9186922 Tabella 5.4 Esempio di soglie di cluster per algoritmo kmeans Bisogna quindi verificare che il punto non oltrepassi le soglie assolute, in caso contrario si assegna automaticamente al cluster a rischio più elevato. Di seguito riportiamo il codice corrispondente. # checking global thresholds for( p in 1:nparam ) { if( patientData[t,p] < Athresholds["min",p] || patientData[t,p] > Athresholds["max",p] ) { risklevtot[t] <- nclust } } Le soglie assolute sono memorizzate nella matrice Athresholds (absolute thresholds), riportata in Tabella 5.5, e sono state assegnate da letteratura medica [43, 44, 45, 46]. ABPsys ABPdias HR SpO2 min 80 40 40 90 max 220 120 150 100 Tabella 5.5 Soglie assolute Infine, dopo aver ricavato le classi di rischio per tutti i parametri all’istante t, abbiamo definito il rischio totale per il paziente in quell’istante come il massimo tra i rischi dei vari parametri, come indicato di seguito. # current risk level of the patient is the max among all par risklevtot[t] <- max( risklevs[t,] ) 69 Capitolo 5 - IGUANA – implementazione A questo punto si può aggiornare la media mobile. Riportiamo il codice corrispondente all’implementazione della Formula (5.1). Ricordiamo che in mmlen c’è la dimensione della finestra temporale su cui calcolare la media mobile, in mm c’è il valore di quest’ultima e in patientData ci sono i dati originali. if (t <= mmlen) { for( p in 1:nparam ) { ## for every column/parameter mm[t,p] <- mean( patientData[1:t,p], na.rm = TRUE ) } } else { mm[t,] <- (mm[t-1,]*(mmlen-1)+patientData[t,]*1/risklevs[t,])/ (rep(mmlen-1,nparam) + 1/risklevs[t,]) } In Figura 5.12 mostriamo graficamente la fase di creazione del modello. La funzione, denominata IGUANA_cell, riceve come argomenti: il modello con le soglie di rischio (MODELLO 2), la matrice contenente i dati da classificare (data), le soglie di normalità (Nthtesholds), il metodo per specificare se classificare usando il modello costruito con il kmeans oppure quello con l’algoritmo gerarchico (method), il vettore con i pesi di offset, slope e dist per la funzione di calcolo del rischio (wrisk), coincidenti con quelli usati nel modello, la dimensione della finestra su cui calcolare la media mobile (mwin*60/nsamples). data MODELLO 2 <cluster rischio> classified data risk IGUANA_cell mwin*60/ nsamples Nthresholds method wrisk Figura 5.12 Fase di classificazione usando il secondo tipo di classificatore Restituisce come risultato i dati classificati secondo il rischio, e il rischio totale del paziente ad ogni istante di tempo. 70 Capitolo 5 - IGUANA – implementazione 5.8.3 Classificatore 3 Il terzo classificatore, dopo aver trasformato il punto nei corrispondenti valori di offset, slope e dist, individua per ognuno il cluster a cui assegnarlo, confrontando i valori con le soglie ricavate dal terzo modello e memorizzate in offsetlev, slopelev e ndistlev. Esempi di tali soglie sono riportati in Tabella 5.6, Tabella 5.7 e Tabella 5.8. Di seguito riportiamo il codice corrispondente, che corrisponde a quello analizzato per il secondo classificatore, ripetuto tre volte. # standard situation: not NA value for( c in 1:(nclust-1) ) { ## for every cluster if( abs(offsets[t,p]) <= offsetlev[c,p] ) { offsetclust <- c break } } for( c in 1:(nclust-1) ) { ## for every cluster if( abs(slopes[t,p]) <= slopelev[c,p] ) { slopeclust <- c break } } for( c in 1:(nclust-1) ) { ## for every cluster if( abs(ndists[t,p]) <= ndistlev[c,p] ) { ndistclust <- c break } } Il comando abs ritorna il valore assoluto dell’argomento. Il modello infatti è stato costruito utilizzando i valori assoluti di slope, offset e dist, quindi le soglie di cluster sono tutte positive. 71 Capitolo 5 - IGUANA – implementazione numero cluster ABPsys ABPdias HR SpO2 1 5.786667 2.595000 5.330000 0.2816667 2 8.343333 4.288333 9.916667 0.8133333 3 12.190000 6.593333 13.521667 1.3400000 4 18.158333 8.236667 19.430000 1.7800000 5 21.393333 10.813333 25.208333 2.0966667 6 27.035000 12.081667 28.711667 2.5316667 7 32.071667 14.108333 33.648333 2.9216667 8 36.648333 17.090000 38.220000 3.4400000 9 40.903333 18.320000 41.628333 4.0066667 10 44.963333 21.860000 46.145000 5.2833333 Tabella 5.6 Esempio di soglie di cluster di offset numero cluster ABPsys ABPdias HR SpO2 1 2.018333 1.286667 2.223333 0.4383333 2 4.733333 2.230000 5.190000 1.0700000 3 7.670000 3.508333 9.193333 1.3466667 4 8.996667 4.506667 11.720000 1.8333333 5 10.428333 5.751667 16.163333 2.2533333 6 12.253333 6.925000 20.133333 2.6783333 7 14.358333 8.598333 22.730000 2.9333333 8 17.506667 9.251667 26.233333 3.4316667 9 19.130000 11.880000 28.738333 4.0700000 10 24.141667 13.511667 35.351667 4.4633333 Tabella 5.7 Esempio di soglie di cluster di slope 72 Capitolo 5 - IGUANA – implementazione numero cluster ABPsys ABPdias HR SpO2 1 2.411667 0.8233333 3.316667 0.2100000 2 5.295000 2.2833333 8.430000 0.6766667 3 7.701667 3.7100000 10.925000 1.1433333 4 10.418333 5.1850000 13.421667 1.5766667 5 12.493333 6.0466667 15.543333 2.1433333 6 15.685000 7.2633333 20.230000 2.4733333 7 19.265000 9.4516667 22.791667 2.9433333 8 23.065000 11.0516667 28.993333 3.3066667 9 26.465000 12.1850000 33.460000 3.8100000 10 28.931667 15.3183333 36.593333 4.2583333 Tabella 5.8 Esempio di soglie di cluster di dist Il passo successivo consiste nel calcolare il rischio applicando la Formula (5.2), in cui al posto di slope, offset e dist originali, ci sono le etichette di cluster corrispondenti (offsetclust, slopeclust, ndistclust). A seconda che i valori di slope, offset e dist originali siano positivi o negativi, si moltiplicano le etichette di cluster corrispondenti per i pesi appropriati e infine si applica la formula per ottenere il rischio istantaneo. Di seguito riportiamo il codice relativo al calcolo del rischio per il parametro p all’istante t. if( offsets[t,p] > 0 ) { offsetclustw <- wrisk["woffsetpos"] * (offsetclust-1) } else { offsetclustw <- wrisk["woffsetneg"] * (offsetclust-1) * -1 } if( slopes[t,p] > 0 ) { slopeclustw <- wrisk["wslopepos"] * (slopeclust-1) } else { slopeclustw <- wrisk["wslopeneg"] * (slopeclust-1) * -1 } if( ndists[t,p] > 0 ) { ndistclustw <- wrisk["wglobalpos"] * (ndistclust-1) } else { ndistclustw <- wrisk["wglobalneg"] * (ndistclust-1) } 73 Capitolo 5 - IGUANA – implementazione # RISK EVALUATION # risklevs[t,p] <- 0 risklevs[t,p] <- ( risklevs[t,p] + abs( offsetclustw + slopeclustw ) ) risklevs[t,p] <- ( risklevs[t,p] + mean( wrisk[1:4] ) * ## ex-wradius sqrt(offsetclustw^2 + slopeclustw^2) ) risklevs[t,p] <- ( risklevs[t,p] + ndistclustw ) Inoltre bisogna controllare che il valore del punto non oltrepassi le soglie assolute, e poi aggiornare la media mobile con la stessa formula vista nel paragrafo precedente, ossia tenendo conto del rischio, affinché questa non sia influenzata in modo errato dai valori più rischiosi. Infine bisogna discretizzare il rischio negli intervalli desiderati (nrisklev) e calcolare il rischio del paziente all’istante t come il massimo tra i livelli di rischio dei parametri. # converting risklevs to a value in 1:nrisklev risklevs[t,p] <- ceiling(risklevs[t,p]*nrisklev/risklevmax[p]) # current risk level of the patient is the max among all param risklevtot[t] <- max( c(1,risklevs[t,]), na.rm=TRUE ) In Figura 5.13 mostriamo graficamente la fase di creazione del modello. La funzione, denominata IGUANA_cell, riceve gli stessi argomenti di quella spiegata nel paragrafo precedente, varia solo il tipo di modello utilizzato. Restituisce come risultato i dati classificati secondo il rischio, e il rischio totale del paziente ad ogni istante di tempo. data MODELLO 3 <cluster offset> < cluster slope> <cluster dist> classified data IGUANA_cell mwin*60/ nsamples Nthresholds method wrisk Figura 5.13 Fase di classificazione usando il terzo tipo di classificatore 74 risk Capitolo 6 Basi di dati mediche 6.1 Introduzione Per costruire un algoritmo di individuazione delle situazioni di rischio, avremmo voluto analizzare dei dati classificati da un medico che indicasse quali fossero gli eventi rischiosi da riconoscere. Analizzando la classificazione dell’esperto umano, avremmo cercato di riprodurne il comportamento e saremmo stati in grado di verificare i risultati del nostro algoritmo con certezza. Purtroppo il reperimento di dati adeguati è stato difficile anche senza pretendere la presenza di annotazioni mediche, quindi abbiamo deciso di limitare i requisiti a quelli elencati di seguito in ordine di priorità. 1. Segnali fisiologici di rilevanza medica vitale e facili da misurare (battito cardiaco, pressione sanguigna e saturazione arteriosa di ossigeno). 2. Periodo di rilevazione di alcune ore o maggiore. 3. Frequenza delle misure dell’ordine dei secondi o decine di secondi. 4. Pazienti anziani in condizioni di salute variabili. 5. Disponibilità immediata. Per soddisfare questi requisiti abbiamo privilegiato come fonte la rete Internet e abbiamo preso contatto con altri gruppi di ricerca che svolgono analisi simili. Questo ci ha portato ad escludere istituzioni mediche e sanitarie (ospedali, cliniche, facoltà di Medicina) che sono probabilmente in possesso di dati utili, ma il cui accesso richiede una lenta burocrazia cartacea, anche in considerazione di eventuali problematiche legate alla privacy. Purtroppo, il primo requisito ha escluso quasi tutte le fonti trovate in Internet, principalmente perché si tratta di progetti specifici (es. pazienti diabetici [16]), o che sfruttano dati simulati [14]. Delle rimanenti, solo una rimane accettabile: la base di dati MIMIC dell’archivio PhysioBank. Fortunatamente MIMIC soddisfa parzialmente tutti i requisiti, sebbene richieda un lavoro attento di pre-elaborazione dei dati prima di poter essere usata con il prototipo di IGUANA da noi implementato. In questo capitolo descriviamo le caratteristiche di MIMIC (Paragrafo 6.2), la pre-elaborazione dei dati per l’analisi con IGUANA (Paragrafo 6.4) e il data-set 75 Capitolo 6 - Basi di dati mediche alternativo Fantasia5 (Paragrafo 6.3), che, sebbene contenga solo misure relative al battito cardiaco, ci è servito per trarre utili conclusioni sui risultati ottenuti. 6.2 La base di dati MIMIC La base di dati “Multi-parameter Intelligent Monitoring for Intensive Care” (MIMIC6) fa parte dell’archivio PhysioBank della Research Resource for Complex Physiologic Signals7. Nel prossimo paragrafo illustriamo il progetto di cui fa parte MIMIC, successivamente descriveremo le caratteristiche di questa base di dati. 6.2.1 Research Resource for Complex Physiologic Signals La Research Resource for Complex Physiologic Signals è stata fondata dal National Center for Research Resources8, che fa parte dei National Institutes of Health9 degli Stati Uniti, la principale agenzia federale per la ricerca medica. È un progetto cooperativo iniziato da ricercatori delle seguenti istituzioni: Boston’s Beth Israel Deaconess Medical Center10, Harvard Medical School11, Boston University12, McGill University13, Massachusetts Institute of Technology (MIT)14. Il progetto si suddivide in tre aree. 1. PhysioNet15 – un forum on-line per la diffusione e lo scambio di registrazioni di segnali biomedici, software open-source per la loro analisi, guide e pubblicazioni che, facendo uso degli strumenti messi a disposizione, spiegano come utilizzarli. 2. PhysioBank – un vasto archivio di registrazioni digitali di segnali fisiologici e relative descrizioni a disposizione della comunità scientifica; le basi di dati contengono segnali multiparametrici di pazienti in svariate condizioni cliniche, dall’epilessia alla morte per arresto cardiaco. 5 http://www.physionet.org/physiobank/database/fantasia/ http://www.physionet.org/physiobank/database/mimicdb/ 7 http://www.physionet.org/resource.shtml 8 http://www.ncrr.nih.gov/ 9 http://www.nih.gov/ 10 http://reylab.bidmc.harvard.edu/ 11 http://www.med.harvard.edu/ 12 http://polymer.bu.edu/ 13 http://www.cnd.mcgill.ca/ 14 http://lcp.mit.edu/ 15 PhysioNet, MIT Room E25-505A, 77 Massachusetts Avenue, Cambridge, MA 02139 USA 6 76 Capitolo 6 - Basi di dati mediche PhysioToolkit16 – una libreria di software in continuo sviluppo per l’analisi e l’elaborazione dei segnali fisiologici, per la rilevazione di eventi significativi, la visualizzazione grafica dei dati, la creazione di nuove basi di dati e la simulazione di segnali fisiologici. L’obiettivo della ricerca che contribuisce ad arricchire PhysioToolkit è l’estrazione di informazioni “nascoste” dai segnali biomedici, informazioni che possono avere un valore medico diagnostico o prognostico e un valore scientifico descrittivo o predittivo. Tutto il software di PhysioToolkit è disponibile in formato sorgente ed è coperto da GNU General Public License (GPL)17. Le istituzioni che collaborano a questo progetto, anche grazie alla loro riconosciuta autorevolezza, garantiscono che i dati di PhysioBank e il software di PhysioToolkit siano accuratamente selezionati e revisionati. La ricerca svolta presso la Research Resource for Complex Physiologic Signals ha alcuni punti in comune con il nostro lavoro di tesi. I loro obiettivi, infatti, sono i seguenti: 1. studio di metodi per la valutazione della qualità dei segnali e le rilevazioni di eventi in dati multiparametrici debolmente correlati; studio di metodi di previsione e di analisi multivariata dell’andamento dei segnali; modellazione di sistemi cardiovascolari; studio di tecniche innovative di elaborazione dei segnali per la diagnosi automatica o semi-automatica; elaborazione di segnali via web per applicazioni di telemedicina; studio di algoritmi di data mining per la ricerca efficiente in sequenze di dati molto lunghe (G. B. Moody18, R. G. Mark19, W. Zong); 2. studio di algoritmi che quantificano le proprietà transitorie e locali di segnali fisiologici non stazionari e l’interazione tra segnali multiparametrici; rilevazione dei cambiamenti che possono precedere l’inizio di eventi fisiologici gravi (J. M. Hausdorff20, L. Glass21, A. L. Goldberger22, C. K. Peng23); 3. studio di tecniche per quantificare le dinamiche del controllo fisiologico; modellazione matematica dei meccanismi del controllo fisiologico; identificazione di nuove misure per le dinamiche non lineari e la ricalibrazione frattale utili nelle patologie cardiopolmonari critiche (H. E. Stanley24, A. L. Goldberger, C. K. Peng, P. Ch. Ivanov25). 3. 16 http://www.physionet.org/physiotools/ http://www.fsf.org/copyleft/gpl.html 18 http://ecg.mit.edu/george/ 19 http://reylab.bidmc.harvard.edu/people/Roger.html 20 http://reylab.bidmc.harvard.edu/people/Jeff.html 21 http://www.cnd.mcgill.ca/bios/glass/glass.html 22 http://reylab.bidmc.harvard.edu/people/Ary.html 23 http://reylab.bidmc.harvard.edu/people/CK.html 24 http://argento.bu.edu/hes/ 25 [email protected] 17 77 Capitolo 6 - Basi di dati mediche La nostra analisi copre alcuni aspetti del primo obiettivo elencato, ma prevede l’individuazione di eventi particolari (situazioni di grave rischio per la vita del paziente) a partire da parametri fisiologici facilmente misurabili. 6.2.2 Descrizione La base di dati MIMIC comprende 121 registrazioni di 90 pazienti (alcune registrazioni si riferiscono allo stesso paziente). Di queste, solo 72 sono complete, mentre di tutte le 121 sono disponibili le misure periodiche, definite “numerics”, che formano un sottoinsieme della base di dati. Le misure complete includono tutti i segnali campionati a 125 Hz (tranne l’elettrocardiogramma a 500 Hz). Le misure periodiche comprendono solo alcuni segnali (es. la frequenza del battito cardiaco) campionati ogni secondo, come appaiono nei display numerici (da cui il nome) della strumentazione che li rileva. Noi abbiamo utilizzato il sottoinsieme MIMIC-numerics perché offre una maggiore varietà di pazienti, comprende tutte le 121 registrazioni, e perché non siamo interessati all’analisi delle forme d’onda dei segnali, che richiederebbe la rilevazione delle misure ad alta frequenza della base di dati MIMIC principale (terzo requisito descritto nel Paragrafo 6.1). Iniziato nel tardo 1994, l’archivio MIMIC è ancora in costruzione, sebbene il completamento fosse atteso entro la fine del 1996. Si prevede che i dati a disposizione crescano oltre gli attuali 200 giorni-paziente di segnali in tempo reale che si possono scaricare dal sito. La durata delle singole registrazioni varia mediamente dalle 30 alle 40 ore, con un minimo di circa 1 ora e un massimo di circa 80 ore, e soddisfa completamente il secondo requisito descritto nel Paragrafo 6.1. Le misure sono eseguite da apparecchiature26 di monitoraggio ospedaliere tipicamente utilizzate nei reparti di rianimazione e comprendono vari segnali fisiologici, scelti dal personale medico in base alle condizioni del paziente. Questa caratteristica non è coerente con l’obiettivo della nostra analisi rappresentato dal primo requisito descritto nel Paragrafo 6.1, in quanto noi supponiamo di effettuare le rilevazioni con dispositivi indossabili e assolutamente non invasivi. Quindi abbiamo selezionato solo le registrazioni che comprendono i quattro parametri fisiologici da noi scelti, in quanto questi sono misurabili anche con i sensori descritti nel Paragrafo 2.2. Insieme ai valori rilevati dai sensori, la base di dati fornisce anche le annotazioni relative ad eventi medici significativi. Purtroppo queste non ci sono state di aiuto, in quanto segnalano esclusivamente il superamento di eventuali soglie predefinite per alcuni segnali, come avviene tipicamente con la strumentazione dei reparti ospedalieri di terapia intensiva. 26 In particolare è stata usata una stazione di monitoraggio Hewlett Packard CMS “Merlin” 78 Capitolo 6 - Basi di dati mediche 6.2.3 Scelta dei dati Tra i pazienti abbiamo individuato quelli con un’età superiore a 60 anni, in modo da focalizzare l’attenzione sulle persone anziane. Le registrazioni disponibili in MIMIC-numerics, che contengono i segnali che ci interessano e che riguardano pazienti adatti, sono le seguenti 64: mimic-pulmEde-f75-47h-231n mimic-pulmEde-f76-13h-260n mimic-pulmEde-f76-47h-259n mimic-pulmEde-f82-50h-213n mimic-pulmEde-f92-21h-413n mimic-pulmEde-f92-71h-414n mimic-pulmEde-m70-69h-466n mimic-pulmEde-m84-41h-212n mimic-pulmEde-m86-12h-417n mimic-renal-f78-62h-471n mimic-resp-f64-25h-401n mimic-resp-f64-53h-403n mimic-resp-f67-21h-211n mimic-resp-f76-19h-241n mimic-resp-f76-47h-242n mimic-resp-m67-26h-218n mimic-resp-m67-27h-219n mimic-resp-m67-39h-216n mimic-resp-m68-31h-226n mimic-resp-m74-28h-033n mimic-resp-m87-22h-052n mimic-resp-m87-40h-054n mimic-resp-m90-46h-243n mimic-sepsis-f82-31h-271n mimic-sepsis-f82-42h-269n mimic-trauma-f92-51h-482n mimic-valve-f65-48h-453n mimic-valve-f65-49h-262n mimic-valve-f65-49h-454n mimic-valve-f67-35h-442n mimic-valve-f73-42h-481n mimic-valve-f77-52h-479n mimic-angina-m67-37h-268n mimic-angina-m67-45h-267n mimic-angina-m67-55h-467n mimic-angina-m68-30h-240n mimic-bleed-m70-77h-039n mimic-bleed-m79-36h-472n mimic-brain-f68-01h-220n mimic-brain-f68-23h-221n mimic-brain-m60-42h-280n mimic-brain-m75-42h-449n mimic-cabg-f72-35h-476n mimic-cabg-f80-57h-457n mimic-cabg-m67-30h-477n mimic-cabg-m84-49h-456n mimic-cardio-f63-47h-237n mimic-cardio-f67-47h-235n mimic-cardio-f71-50h-293n mimic-cardio-f80-47h-248n mimic-cardio-m65-46h-264n mimic-cardio-m68-26h-232n mimic-liver-f71-43h-277n mimic-NA-f61-42h-289n mimic-NA-f66-58h-276n mimic-NA-f73-49h-458n mimic-NA-f76-52h-468n mimic-NA-m60-44h-484n mimic-NA-m61-10h-281n mimic-NA-m69-49h-485n mimic-NA-m75-51h-474n mimic-pulmEde-f63-47h-245n mimic-pulmEde-f72-25h-214n mimic-pulmEde-f75-19h-230n Abbiamo assegnato un nome ad ogni registrazione in modo da identificarla univocamente e avere nello stesso tempo le indicazioni di base sul paziente e la durata della stessa. 79 Capitolo 6 - Basi di dati mediche L’identificativo risulta composto dai seguenti elementi, nell’ordine indicato e separati da un trattino: mimic, nome della base di dati; abbreviazione del tipo di patologia o anomalia da cui è afflitto il paziente, à angina = angina pectoris, à bleed = emorragia, à brain = trauma cranico, à cabg = intervento chirurgico alle coronarie, à cardio = shock cardiaco, à liver = intervento chirurgico al fegato, à pulmEde = edema polmonare, à renal = blocco renale, à resp = insufficienza respiratoria, à sepsis = infezione del sangue à trauma = trauma non specificato, à valve = intervento chirurgico alle valvole cardiache, à NA = informazione non disponibile; sesso del paziente (m, f); età del paziente in anni (es. m67); durata della registrazione in ore (es. 37h); numero identificativo del record della base di dati secondo la classificazione adottata dai responsabili del progetto di MIMIC, seguito dalla lettera “n” che indica “numerics” (es. 268n). Dalla descrizione delle alterazioni dello stato di salute dei pazienti possiamo osservare che si tratta di situazioni decisamente estreme per un essere umano, che sicuramente rappresentano un grave rischio per la vita, e questo è ciò che cerchiamo di rilevare col nostro lavoro, ma dobbiamo riconoscere che soddisfano in misura ridotta il quarto requisito descritto nel Paragrafo 6.1. Come confermato da consulenti medici, in situazioni di ricovero ospedaliero all’interno dei reparti di terapia intensiva, l’andamento dei parametri fisiologici si discosta significativamente da quello tipico di una persona che, sebbene malata, non richieda tali cure. Vista la difficoltà a trovare dati più adeguati per la nostra analisi e considerando che tutti gli altri requisiti sono soddisfatti dalle misurazioni di MIMIC, abbiamo scelto di prendere opportuni accorgimenti nella fase di pre-elaborazione dei dati (Paragrafo 6.4) e di analizzare il comportamento del nostro algoritmo anche con i pazienti della base di dati Fantasia (Paragrafo 6.3). 80 Capitolo 6 - Basi di dati mediche 6.3 La base di dati Fantasia Fantasia fa parte come MIMIC dell’archivio PhysioBank della Research Resource for Complex Physiologic Signals, progetto che abbiamo illustrato nel Paragrafo 6.2.1. Fantasia comprende registrazioni della durata di sole 2 ore, l’unico segnale disponibile è l’elettrocardiogramma (campionato a 250 Hz) e le misure sono effettuate su persone sane. Tuttavia abbiamo deciso di applicare IGUANA anche ai dati di Fantasia, perché riteniamo che ci sia utile per valutare il comportamento del nostro algoritmo in situazioni completamente opposte rispetto a MIMIC, che è basato su pazienti in terapia intensiva. Il gruppo di volontari che si è sottoposto alle misure è composto da venti giovani (da 21 a 34 anni) e venti anziani (da 68 a 85 anni), metà maschi e metà femmine. Coerentemente con le scelte fatte per MIMIC (Paragrafo 6.2.3), anche in questo caso prendiamo in considerazione solo i valori relativi alle persone anziane. Le misure sono state eseguite con i volontari in posizione sdraiata supina, mentre guardavano il film Fantasia27, da cui deriva il nome della base di dati. Le registrazioni che ci interessano e che riguardano i venti anziani, sono le seguenti, indicate con l’identificativo usato dai responsabili della base di dati Fantasia: f1o01 f1o02 f1o03 f1o04 f1o05 f1o06 f1o07 f1o08 f1o09 f1o10 f2o01 f2o02 f2o03 f2o04 f2o05 f2o06 f2o07 f2o08 f2o09 f2o10 Le annotazioni allegate in Fantasia riguardano eventuali aritmie del battito cardiaco. Per la nostra analisi non sono utili in quanto richiederebbero la disponibilità di una rilevazione continua (con campionamento ad alta frequenza) dell’attività cardiaca, siccome si basano sull’analisi della forma d’onda dell’elettrocardiogramma. La nostra ipotesi di lavoro, invece, prevede la lettura dei segnali con un periodo dell’ordine dei secondi e l’analisi è svolta sui valori della frequenza del battito cardiaco. Inoltre alcune registrazioni contengono anche le rilevazioni della pressione sanguigna, parametro che ci interessa, ma che non prendiamo in considerazione per questa base di dati in quanto non è presente in tutti i record e nella forma da noi richiesta (valore di pressione massima/minima, ovvero sistolica/diastolica), ma è fornito come segnale continuo. 27 Walt Disney, 1940, http://imdb.com/Title?0032455 81 Capitolo 6 - Basi di dati mediche 6.4 Pre-elaborazione dei dati Prima di applicare la nostra implementazione dell’algoritmo IGUANA sui dati appena descritti, è necessario pre-elaborarli opportunamente. Delle operazioni che descriveremo, alcune sono tecnicamente necessarie per convertire i dati in un formato fisicamente leggibile, invece altre applicano delle trasformazioni ai dati per renderli più adatti alla nostra analisi. Le operazioni sono state svolte con diversi strumenti, scelti di volta in volta tra i più consoni alla situazione. Anche se queste scelte non rivestono particolare importanza perché dipendono dal software a propria disposizione, dalle proprie conoscenze e soprattutto dalle caratteristiche dei dati, riteniamo necessario descrivere uno strumento in particolare, il PhysioToolkit. 6.4.1 PhysioToolkit Il PhysioToolkit è una collezione di strumenti software messi a disposizione dalla Research Resource for Complex Physiologic Signals, progetto che abbiamo illustrato nel Paragrafo 6.2.1. I programmi disponibili consistono in una raccolta di comandi, sia sotto forma di eseguibili precompilati, sia come codice sorgente, che permettono di estrarre, convertire, visualizzare, analizzare e creare dati dell’archivio PhysioBank. I file binari sono disponibili per le piattaforme GNU/Linux e MS-Windows, mentre i sorgenti, scritti quasi completamente in linguaggio C, sono portabili su qualunque architettura disponga di un compilatore C ANSI/ISO, sebbene gli autori suggeriscano gcc in ambiente GNU/Linux. Del PhysioToolkit noi abbiamo utilizzato la libreria WFDB Software Package28, sia con Windows XP, sia con Debian GNU/Linux. In ambiente Windows abbiamo installato il pacchetto Cygwin29, come indicato dagli sviluppatori. Il WaveForm DataBase (WFDB) Sotware Package comprende la maggior parte degli strumenti sviluppati nell’ambito del progetto PhysioToolkit, attualmente sotto licenza GPL (GNU General Public License30), a differenza del precedente DB Software Package31 di cui alcuni programmi facevano parte. I principali componenti del pacchetto software WFDB sono i seguenti. Libreria. È un insieme di funzioni per leggere e scrivere file nei formati usati dalle basi di dati di PhysioBank. à Può essere usata da qualunque programma scritto in ANSI/ISO C, C++ o Fortran, e con qualunque sistema operativo per il quale esista il compilatore adeguato. 28 http://www.physionet.org/physiotools/wfdb.shtml http://www.physionet.org/physiotools/cygwin/ 30 http://www.physionet.org/physiotools/wfdb/COPYING 31 http://www.physionet.org/physiotools/old/ 29 82 Capitolo 6 - Basi di dati mediche à Opzionalmente può essere compilata con il supporto per la lettura dei dati direttamente da web (HTTP) e da server FTP senza l’uso di browser o client FTP. In questo caso sono necessarie le librerie libwww del World Wide Web Consortium o in alternativa le libcurl. à Fa parte della libreria il WFDB Tools Package, che permette di interfacciare la libreria stessa con Matlab R13 o successivo, in modo da permettere alle applicazioni di Matlab di accedere alle funzioni del pacchetto WFDB. Applicazioni. Sono un insieme di programmi a riga di comando per l’elaborazione dei segnali e la loro analisi automatica. Alcuni sono stati sviluppati per soddisfare gli standard statunitensi per la valutazione delle apparecchiature mediche e degli algoritmi su dati clinici. WAVE. È un ambiente grafico interattivo ed estensibile per la manipolazione di raccolte di segnali digitali e di eventuali annotazioni. à È costruito sulla libreria di WFDB e sul software open-source XView, quindi è completamente compatibile con i dati dell’archivio PhysioBank e può essere utilizzato su qualunque piattaforma supporti la libreria e XView, anche da remoto se si ha a disposizione un server X11. à Permette di visualizzare le forme d’onda dei segnali in varie scale, scorrerle per cercare eventuali annotazioni, modificarle aggiungendo i propri commenti e fornisce un aiuto contestuale all’utilizzo. Documentazione. Oltre a numerose pubblicazioni e corsi introduttivi online (tutorial), sono disponibili le seguenti guide in formato HTML, PostScript e PDF. Infine ogni comando ha una propria man page. à Programmer’s Guide, per la libreria. à Applications Guide, per le applicazioni. à WAVE User’s Guide, per lo strumento grafico WAVE. 6.4.2 Conversione di formato Il primo passo di preparazione dei dati consiste nella conversione degli stessi in formato testuale, che è facilmente leggibile con le funzioni di input messe a disposizione da R (Paragrafo 5.2). I dati di PhysioBank sono scaricabili in formato binario sotto forma di file con estensione dat, uno per ogni registrazione. Ogni record ha anche un file di intestazione con estensione hea ed eventuali file con le annotazioni, la cui estensione varia in base al tipo di eventi annotati. Sebbene fosse possibile sfruttare le funzionalità di rete del PhysioToolkit per convertire i dati binari in testuali, abbiamo preferito scaricare le basi di dati MIMICnumerics e Fantasia prima di procedere alla conversione, per averli a disposizione più velocemente per successive analisi. L’operazione è molto semplice ricorrendo al tool 83 Capitolo 6 - Basi di dati mediche wget, disponibile per UNIX/Linux e Cygwin/Windows; per MIMIC-numerics la riga di comando è la seguente: wget -r -np http://www.physionet.org/physiobank/database/mimicdb/numerics/ Con i dati binari a disposizione sul disco locale e il WFDB Software Package installato in un sistema Debian GNU/Linux, abbiamo preparato uno script bash per convertire i record dei pazienti selezionati in file di testo. Lo script esegue le seguenti operazioni. Impostazione delle variabili d’ambiente del WFDB Software Package che indicano il percorso del filesystem in cui sono memorizzati i dati di Physiobank da convertire. WFDB="/database/mimic" Uso del comando rdsamp (read samples) del PhysioToolkit per l’estrazione dei valori dei segnali campionati, espressi come numeri decimali stampati su standard output, una riga per ogni istante di tempo e una colonna per ogni parametro registrato. rdsamp -r 039n -s 1 2 3 6 -p -v > mimic-bleed-m70-77h-039n.txt Le opzioni del comando rdsamp indicano il nome del record da elaborare(-r 054n), i segnali fisiologici da convertire numerati secondo l’ordine con cui sono memorizzati nel record (-s 1 2 3 6), la precisione e le unità di misura desiderate (–p specifica che il tempo è indicato in secondi e i valori dei sensori in unità fisiche, con precisione alla terza cifra decimale) e la richiesta delle intestazioni di colonna con il nome del parametro (-v). È necessario prestare molta attenzione ad indicare correttamente quali segnali si desidera convertire, in quanto la loro posizione (e di conseguenza il numero da indicare come parametro dell’opzione -s) non è costante per tutti i record. La verifica può essere svolta richiedendo l’intestazione di colonna (opzione -v) e ispezionando ogni file creato, anche automaticamente (da console abbiamo usato grep), affinché la prima riga contenga i nomi giusti, ossia “time ABPsys ABPdias HR SpO2”. Per come abbiamo strutturato la successiva implementazione di IGUANA, anche il loro ordine è importante. Dopo aver eseguito il comando rdsamp per ogni record scelto, abbiamo un insieme di file testuali con i dati che ci interessano. Il nome che abbiamo assegnato ai file è univoco e ci permette di avere subito alcune informazioni essenziali sul paziente cui si riferisce, come illustrato nel paragrafo 6.2.3. I passi successivi della preparazione dei dati sono svolti in uno script di R. 84 Capitolo 6 - Basi di dati mediche 6.4.3 Elaborazione La fase di elaborazione dei dati precedente all’esecuzione di IGUANA si articola nei seguenti passaggi, che, nella nostra implementazione, sono svolti all’interno di uno script R: 1. lettura dei dati dai file testuali e relativa memorizzazione; 2. calcolo delle statistiche globali (valore minimo, medio, massimo di tutti i dati letti, numero di valori disponibili, ecc.); 3. rimozione degli outlier; 4. rilevamento di eventuali valori nulli (NA) e rimozione di quelli singoli isolati; 5. selezione della sottosequenza più lunga senza valori nulli; 6. ricampionamento della sottosequenza individuata al punto precedente. Lettura e memorizzazione I dati sono letti dai file testuali prodotti al passo descritto nel Paragrafo 6.4.2 e memorizzati in una struttura dati a lista così composta: ogni elemento della lista contiene i dati di un file, che corrisponde a una registrazione32; i dati di ogni file sono memorizzati in una matrice che ha una riga per ogni istante di tempo e una colonna per ogni segnale fisiologico misurato: à colonna 1 = ABPsys, pressione sanguigna sistolica; à colonna 2 = ABPdias, pressione sanguigna diastolica; à colonna 3 = HR, battito cardiaco; à colonna 4 = SpO2, ossigenazione periferica del sangue. 32 Ogni registrazione è associata a un solo paziente, ma un paziente può essere associato a più registrazioni diverse. 85 Capitolo 6 - Basi di dati mediche time … … … … file1 1 2 3 ABPsys … … … … ABPsys … … … file testuali ABPdias … … … … ABPdias … … … file2 1 2 3 ABPsys … … … HR … … … HR … … … … SpO2 … … … … lista SpO2 … … … ABPdias … … … HR … … … SpO2 … … … Figura 6.1 Schema della lettura e memorizzazione dei dati da file Come descritto nel Paragrafo 5.4, alla funzione di lettura dei dati (read.table) indichiamo che la prima riga dei file contiene le intestazioni di colonna (opzione header = TRUE) e per migliorare le prestazioni di lettura specifichiamo di convertire i 86 Capitolo 6 - Basi di dati mediche dati in formato numerico e di ignorare la prima colonna che contiene il tempo (opzione colClasses). La memorizzazione avviene in modo sequenziale, file per file, nell’ordine in cui sono stati specificati dall’utente nell’apposita sezione di configurazione dello script (lista inputFilesM). Al termine di questa fase abbiamo la lista di matrici original_data, indicata in Figura 6.1. L’ordine degli elementi è lo stesso della lista inputFilesM. Statistiche globali Da tutti i dati memorizzati nella lista original_data calcoliamo le seguenti informazioni: numero totale di valori letti; valore minimo; valore massimo; valore medio. Rimozione degli outlier Non potendo formulare ipotesi sull’affidabilità dei sensori abbiamo dovuto gestire la possibilità di avere dati “sporchi”, non sempre significativi, ad esempio valori negativi o nulli, o addirittura troppo elevati, per i segnali fisiologici considerati. Con la consulenza di un esperto e basandoci su informazioni note in letteratura medica [43, 44, 45, 46] abbiamo ricavato le soglie per i valori fisicamente raggiungibili da un essere umano. I dati che oltrepassavano tali soglie sono stati considerati malfunzionamenti dei sensori, e quindi scartati: non sono stati eliminati dalla sequenza, altrimenti avremmo perso la sincronizzazione tra i parametri, ma semplicemente sostituiti con un valore di “Not Available”, NA. Per capire meglio questo passaggio, possiamo fare riferimento alle figure seguenti. Sono tutte riferite a dati relativi al segnale fisiologico HR (battito cardiaco) della registrazione mimic-brain-f68-01h-220n. 87 Capitolo 6 - Basi di dati mediche Figura 6.2 Dati originali In Figura 6.2 sono riportati i dati originali letti da file. In ordinata i valori sono espressi in battiti al minuto, mentre in ascissa è indicato il riferimento temporale (contatore progressivo). Come si può notare, sono presenti parecchie misure inaccettabili, in particolare quelle a zero: non è possibile infatti che il battito cardiaco di un essere umano in vita raggiunga tale valore. Non possiamo utilizzare questi dati perché i valori palesemente errati influenzerebbero il modello. 88 Capitolo 6 - Basi di dati mediche Figura 6.3 Dati dopo la rimozione degli outlier In Figura 6.3 sono riportati i dati dopo la fase di rimozione degli outlier: i valori posti a NA non sono visualizzati sul grafico, che presenta quindi alcune discontinuità (ad esempio dopo il campione 3000). Individuazione dei valori nulli Al termine dell’operazione precedente, abbiamo notato che nei dati a nostra disposizione comparivano molti NA singoli e isolati, che di fatto frammentavano la sequenza. Supponendo che il valore di un parametro non possa variare significativamente in un solo istante di campionamento, abbiamo deciso di sostituire al valore nullo NA la media tra il valore precedente e il successivo. Questa sostituzione è stata effettuata solamente per i valori nulli singoli isolati, ossia preceduti e seguiti da un valore non nullo. 89 Capitolo 6 - Basi di dati mediche Riportiamo in Figura 6.4 il risultato dell’applicazione di quest’operazione ai dati presi in considerazione. Non si notano differenze rispetto alla Figura 6.3 in quanto i valori NA isolati sono difficilmente individuabili a colpo d’occhio sul grafico. Figura 6.4 Dati dopo la rimozione dei valori NA isolati Sottosequenza non nulla Questo passo è svolto solo per la preparazione dei dati utilizzati nella creazione del modello, che prevede che non siano presenti valori nulli (NA). Selezioniamo la più lunga sottosequenza dei dati originali con questa caratteristica e procediamo limitando le successive elaborazioni ai dati così individuati. Il risultato di questa terza fase è mostrato in Figura 6.5. 90 Capitolo 6 - Basi di dati mediche Figura 6.5 Più lunga sottosequenza senza valori nulli (NA) Nel caso in cui i dati siano preparati per la classificazione, siccome la procedura gestisce anche valori nulli, le operazioni di individuazione e rimozione di tali valori non sono svolte. Ricampionamento I sensori possono rilevare i valori ad intervalli di tempo variabili, dipendenti dalle specifiche di fabbricazione. Siccome stiamo considerando il caso di monitoraggio continuo su un ampio periodo di tempo (qualche giorno), la frequenza di campionamento non può essere troppo elevata, per i problemi di consumo energetico che comporterebbe. Quindi abbiamo previsto un parametro impostabile dall’utente, in modo che la frequenza dei dati considerati per la creazione del modello sia indipendente dall’effettiva frequenza di campionamento dei sensori. 91 Capitolo 6 - Basi di dati mediche L’utente può decidere ogni quanti valori prendere un campione (ad esempio uno ogni 10, se i sensori rilevano le misure ogni secondo e invece si vuole effettuare l’analisi ogni 10 secondi). Il valore del campione non è semplicemente il valore puntuale del segnale in quell’istante, ma è una media su una finestra mobile di lunghezza pari al valore del parametro, come mostrato in Figura 6.6. In particolare questo accorgimento si è rivelato utile perché alcuni dei dati che avevamo a disposizione erano campionati ogni secondo, periodo di tempo decisamente troppo breve per le nostre esigenze. . . . . . . . . . . . . valori originali media su finestra mobile valori ricampionati Figura 6.6 Fase di ricampionamento dei dati In Figura 6.7 mostriamo il risultato di quest’ultima operazione. Terminata la fase di pre-elaborazione, abbiamo a disposizione le sequenze temporali sincronizzate per ogni parametro. A questo punto possiamo procedere con l’elaborazione vera e propria, eseguendo i passi di creazione del modello e classificazione dei dati, la cui implementazione è descritta nei Paragrafi 5.7 e 5.8. 92 Capitolo 6 - Basi di dati mediche Figura 6.7 Dati ricampionati 93 Capitolo 7 Analisi dei risultati 7.1 Introduzione In questo capitolo descriviamo gli esperimenti che abbiamo svolto per validare IGUANA con i dati clinici descritti nel Capitolo 6. Inoltre analizziamo i risultati ottenuti al variare dei diversi parametri previsti dal nostro framework. Siccome alcuni parametri influiscono non solo nella fase di classificazione ma anche in quella di creazione del modello, abbiamo ripetuto l’operazione di costruzione del modello quando necessario, in modo che le due fasi fossero coerenti. In particolare, ancora prima di cambiare i parametri, è necessario ricreare il modello al variare del campione di pazienti considerati per la sua creazione. Abbiamo diviso le registrazioni selezionate da MIMIC-numerics in due gruppi: uno con i dati su cui abbiamo costruito i modelli, l’altro con quelli che abbiamo classificato. Per avere a disposizione due insiemi con caratteristiche sufficientemente variegate da permettere l’esplorazione di situazioni diverse, abbiamo fatto in modo che in ogni gruppo fossero presenti pazienti con malattie e sesso differenti. A questo scopo, per la classificazione abbiamo selezionato almeno un paziente per ogni malattia; le registrazioni scelte sono le seguenti: mimic-angina-m67-55h-467n mimic-bleed-m70-77h-039n mimic-brain-m60-42h-280n mimic-cabg-f80-57h-457n mimic-cardio-f71-50h-293n mimic-NA-f66-58h-276n mimic-NA-m75-51h-474n mimic-pulmEde-f92-71h-414n mimic-pulmEde-m70-69h-466n mimic-renal-f78-62h-471n mimic-resp-f64-53h-403n mimic-resp-m90-46h-243n mimic-sepsis-f82-42h-269n mimic-trauma-f92-51h-482n mimic-valve-f77-52h-479n 94 Capitolo 7 - Analisi dei risultati Le restanti registrazioni (descritte nel Paragrafo 7.2) sono state utilizzate nella creazione dei modelli, selezionandone di volta in volta un sottoinsieme adeguato. Oltre alla selezione di un campione di pazienti adeguato, abbiamo analizzato il comportamento del nostro algoritmo al variare dei seguenti parametri: numero di cluster del modello, ampiezza della finestra temporale della media mobile, frequenza di misurazione dei dati, soglie di normalità, algoritmo di clustering, metodo di calcolo della distanza inter-cluster in caso di clustering gerarchico, pesi di offset, slope e dist nella funzione di calcolo del rischio, numero di livelli di rischio. I risultati ottenuti sono descritti nel Paragrafo 7.4. Viste le sostanziali differenze tra le caratteristiche della base di dati Fantasia rispetto a MIMIC descriviamo nel Paragrafo 7.3 i modelli creati appositamente per la valutazione di questi dati. Ricordiamo che Fantasia comprende registrazioni del solo segnale di battito cardiaco della durata di 2 ore relative a persone in normali condizioni di salute, mentre MIMIC comprende registrazioni di vari segnali vitali registrati per decine di ore relative a pazienti affetti da diverse patologie. Nel Paragrafo 7.5 descriviamo le prove sperimentali svolte utilizzando la base di dati Fantasia, per verificare il comportamento di IGUANA su pazienti in buono stato di salute. 7.2 Modelli generati con IGUANA per MIMIC Per avere a disposizione dei modelli coerenti con le modalità di classificazione (caratteristiche del paziente e parametri impostati), utilizzando IGUANA abbiamo creato diversi modelli selezionando sottoinsiemi di pazienti adeguati. 7.2.1 Pazienti scelti Abbiamo effettuato la scelta dei pazienti in base a due caratteristiche: malattia da cui sono affetti, sesso. Non abbiamo considerato l’età in quanto tutti i pazienti che abbiamo selezionato dalla base di dati MIMIC hanno più di 60 anni, quindi i modelli che abbiamo costruito contengono insiemi di persone con combinazioni diverse di malattie e sesso. Per valutare i cambiamenti dovuti alle variazioni del solo campione di pazienti scelti per la costruzione del modello, abbiamo mantenuto invariati gli altri parametri. Abbiamo assegnato i valori di questi parametri costanti in base alle altre prove 95 Capitolo 7 - Analisi dei risultati sperimentali che abbiamo svolto, descritte nel Paragrafo 7.4, decidendo di mantenere i seguenti valori predefiniti: numero di cluster = 10; dimensione della finestra temporale = 10 minuti; frequenza di misurazione = 15 secondi; algoritmo di clustering = gerarchico; metodo di distanza inter-cluster = average linkage; soglie = valori minimo e massimo della media mobile per paziente; pesi della funzione di calcolo del rischio come riportati dalla Tabella 7.1. ABPsys ABPdias HR SpO2 wo+ 0.6 0.8 0.6 0.0 wo– 0.6 0.8 0.8 0.8 ws+ 0.6 0.8 0.2 0.0 ws– 0.6 0.8 0.4 0.2 wd+ 1.0 1.0 0.8 0.0 wd– 1.0 1.0 1.0 1.0 Tabella 7.1 Pesi predefiniti delle componenti del rischio I modelli creati sono i seguenti. 1. Iguana3_mix Questo modello è stato creato considerando un paziente per ogni tipo di malattia, tra quelli precedentemente selezionati per la creazione dei modelli. Le registrazioni scelte sono: mimic-angina-m67-37h-268n mimic-bleed-m79-36h-472n mimic-brain-f68-01h-220n mimic-cabg-f72-35h-476n mimic-cardio-f63-47h-237n mimic-liver-f71-43h-277n mimic-pulmEde-f63-47h-245n mimic-resp-f64-25h-401n mimic-sepsis-f82-31h-271n mimic-valve-f65-48h-453n 2. Iguana3_pulmEde Questo modello è stato costruito solo con i dati di pazienti affetti da edema polmonare: mimic-pulmEde-f63-47h-245n mimic-pulmEde-f72-25h-214n mimic-pulmEde-f75-19h-230n 96 Capitolo 7 - Analisi dei risultati mimic-pulmEde-f75-47h-231n mimic-pulmEde-f76-13h-260n mimic-pulmEde-f76-47h-259n mimic-pulmEde-f82-50h-213n mimic-pulmEde-f92-21h-413n mimic-pulmEde-m84-41h-212n mimic-pulmEde-m86-12h-417n 3. Iguana3_resp Per questo modello abbiamo considerato solo i pazienti affetti da insufficienza respiratoria: mimic-resp-f64-25h-401n mimic-resp-f67-21h-211n mimic-resp-f76-19h-241n mimic-resp-f76-47h-242n mimic-resp-m67-26h-218n mimic-resp-m67-27h-219n mimic-resp-m67-39h-216n mimic-resp-m68-31h-226n mimic-resp-m74-28h-033n mimic-resp-m87-22h-052n mimic-resp-m87-40h-054n 4. Iguana3_resp_males Tra i dati elencati al punto precedente abbiamo selezionato quelli relativi a pazienti di sesso maschile, i cui identificativi iniziamo con mimic-resp-m. 5. Iguana3_resp_females Infine abbiamo selezionato quelli relativi a pazienti di sesso femminile, i cui identificativi iniziano con mimic-resp-f. 7.2.2 Parametri impostati Per valutare i cambiamenti dovuti alle variazioni dei parametri, abbiamo mantenuto costanti i dati utilizzati per la creazione del modello, scegliendo quelli delle seguenti registrazioni (modello Iguana3_mix del Paragrafo 7.2.1): mimic-angina-m67-37h-268n mimic-bleed-m79-36h-472n mimic-brain-f68-01h-220n mimic-cabg-f72-35h-476n 97 Capitolo 7 - Analisi dei risultati mimic-cardio-f63-47h-237n mimic-liver-f71-43h-277n mimic-pulmEde-f63-47h-245n mimic-resp-f64-25h-401n mimic-sepsis-f82-31h-271n mimic-valve-f65-48h-453n Abbiamo variato i parametri uno alla volta, mantenendo gli altri fissi ai valori elencati nel Paragrafo 7.2.1. I modelli che abbiamo creato sono i seguenti. 1. Iguana3_mix_Nthresholds In questo modello abbiamo fissato le soglie di normalità secondo le informazioni disponibili in letteratura medica [43, 44, 45, 46], anziché calcolarle direttamente dai dati per ogni paziente. In Tabella 7.2 riportiamo i valori assegnati. min max ABPsys 120 140 ABPdias 60 90 HR 60 100 SpO2 97 100 Tabella 7.2 Soglie di normalità per i segnali fisiologici da letteratura medica 2. Iguana3_mix_movwin=2 In questo modello abbiamo fissato la dimensione della finestra della media mobile a 2 minuti. 3. Iguana3_mix_movwin=60 In questo modello abbiamo fissato la dimensione della finestra della media mobile a 60 minuti. 4. Iguana3_mix_nsamples=5 In questo modello abbiamo impostato il tempo di campionamento a 5 secondi: esaminiamo un valore ogni cinque dei dati originali, che sono campionati ogni secondo. 5. Iguana3_mix_nsamples=60 In questo modello abbiamo impostato il tempo di campionamento a 60 secondi. 6. Iguana3_mix_nclust=5 In questo modello abbiamo impostato il numero di cluster in cui discretizzare offset, slope e dist a 5. 7. Iguana3_mix_nclust=30 In questo modello abbiamo impostato il numero di cluster a 30. 98 Capitolo 7 - Analisi dei risultati 8. Iguana3_mix_single In questo modello abbiamo eseguito il clustering gerarchico utilizzando il metodo single linkage per calcolare la distanza inter-cluster. 9. Iguana3_mix_complete In questo modello abbiamo eseguito il clustering gerarchico utilizzando il metodo complete linkage per calcolare la distanza inter-cluster. 10. Iguana3_mix_centroid In questo modello abbiamo eseguito il clustering gerarchico utilizzando il metodo centroid per calcolare la distanza inter-cluster. 11. Iguana3_mix_ward In questo modello abbiamo eseguito il clustering gerarchico utilizzando il metodo ward per calcolare la distanza inter-cluster. 7.3 Modello generato con IGUANA per Fantasia Per analizzare il comportamento di IGUANA applicato ai dati delle registrazioni di Fantasia, abbiamo creato un modello apposito, in quanto le loro caratteristiche sono sostanzialmente diverse da quelle dei dati di MIMIC. La base di dati Fantasia, descritta nel Paragrafo 6.3, contiene solo 20 registrazioni, relative ad altrettanti pazienti in buono stato di salute, di entrambi i sessi e di età avanzata. L’unico segnale fisiologico disponibile di nostro interesse è il battito cardiaco, la cui misurazione dura circa 2 ore. Il modello che abbiamo generato utilizza 19 registrazioni delle 20 disponibili, corrispondenti a quelle elencate nel Paragrafo 6.3 tranne la f2o09, che abbiamo usato per la classificazione. La scelta di quale paziente classificare non è cruciale in quanto non vi sono distinzioni di caratteristiche. Gli altri parametri per la creazione del modello sono stati fissati ai seguenti valori: numero di cluster = 10; dimensione della finestra temporale = 10 minuti; frequenza di misurazione = 1 minuto; algoritmo di clustering = gerarchico; metodo di distanza inter-cluster = average linkage; soglie = valori minimo e massimo della media mobile per paziente; pesi della funzione di calcolo del rischio come riportati dalla Tabella 7.1 nella riga relativa al battito cardiaco (HR, Heart Rate). 99 Capitolo 7 - Analisi dei risultati 7.4 Esperimenti con MIMIC In questo paragrafo analizziamo i risultati ottenuti al variare dei parametri impostabili dall’utente, usando di volta in volta il modello appropriato tra quelli descritti nel Paragrafo 7.2. Nei grafici che utilizziamo per illustrare i risultati abbiamo stabilito le seguenti convenzioni: l’asse delle ordinate ha come etichetta la sigla del segnale vitale visualizzato, le cui unità di misura, non indicate, sono à ABPdias, pressione sanguigna diastolica, in mmHg, à ABPsys, pressione sanguigna sistolica, in mmHg, à HR, battito cardiaco, in battiti al minuto, à SpO2, ossigenazione periferica del sangue, in percentuale; l’asse delle ascisse indica il numero progressivo dei valori analizzati e, salvo diversamente specificato, il tempo di campionamento è di 15 secondi; le linee orizzontali eventualmente presenti indicano à la media statica (azzurro), à le soglie di normalità, massima e minima (verde), à le soglie di rischio assoluto, massima e minima (rosse); i punti rappresentano i valori misurati; il colore e il simbolo con cui sono rappresentati hanno il seguente significato: à i punti di colore verde e di forma circolare (○) indicano il livello di rischio minimo (normalità), à i punti di colore giallo e di forma triangolare (∆) indicano il livello di rischio medio-basso, à i punti di colore arancione che hanno la forma del segno più (+) indicano il livello di rischio medio, à i punti di colore rosso e di forma a croce (X) indicano il livello di rischio medio-alto, à i punti di colore viola e di forma a rombo (◊) indicano il livello di rischio massimo; eventuali punti azzurri rappresentano i valori della media mobile. In alcuni grafici si riscontra il caso particolare di una linea verde (soglia di normalità) che oltrepassa una linea rossa (soglia di rischio assoluto): in presenza di dati di pazienti in condizioni di salute normali, questo caso non dovrebbe mai verificarsi. Per la particolarità dei dati che abbiamo analizzato e per il metodo di calcolo delle soglie di normalità che abbiamo utilizzato, a volte nei nostri risultati si verifica questo fenomeno. Rimandiamo una spiegazione più dettagliata al Paragrafo 7.7. 100 Capitolo 7 - Analisi dei risultati 7.4.1 Campione di pazienti Per determinare le differenze nell’applicazione dei diversi modelli, abbiamo classificato gli stessi dati usando di volta in volta modelli costruiti su gruppi di pazienti con caratteristiche differenti. Abbiamo scelto di valutare i livelli di rischio di una paziente di sesso femminile affetta da insufficienza respiratoria, classificando i suoi dati utilizzando vari modelli, costruiti con dati di pazienti che condividono lo stato di salute o il sesso, e altri che non li condividono. L’obiettivo di questo esperimento è stabilire l’eventuale necessità di prendere in considerazione caratteristiche quali sesso e tipo di malattia per costruire il modello adatto, o se è possibile applicare un modello generale a pazienti con caratteristiche diverse. Confronti Riportiamo in questa sezione i grafici dei livelli di rischio della pressione sanguigna diastolica (ABPdias) e del battito cardiaco (HR), relativi alla registrazione mimic-resp-f64-53h-403n. Abbiamo applicato i seguenti modelli, costruiti sui dati dei pazienti elencati nel paragrafo 7.2.1. Iguana3_mix, con pazienti affetti da diversi tipi di malattie; Iguana3_resp, con pazienti di entrambi i sessi, affetti da insufficienza respiratoria; Iguana3_rep_males, con pazienti maschi affetti da insufficienza respiratoria; Iguana3_resp_females, con pazienti femmine affette da insufficienza respiratoria. Riportiamo i grafici della classificazione della pressione sanguigna diastolica in Figura 7.1, Figura 7.2 e Figura 7.3, ottenuti applicando rispettivamente i modelli Iguana3_resp, Iguana3_rep_males e Iguana3_resp_females, per analizzare le variazioni di risultati usando modelli costruiti su pazienti affetti dalla stessa patologia e di entrambi i sessi, affetti dalla stessa patologia e di sesso diverso, affetti dalla stessa patologia e dello stesso sesso. Riportiamo i grafici della classificazione del battito cardiaco in Figura 7.4 e Figura 7.5, ottenuti applicando rispettivamente i modelli Iguana3_mix e Iguana3_resp, per analizzare le variazioni di risultati usando modelli costruiti su pazienti affetti dalla stessa patologia e su pazienti affetti da varie patologie. 101 Capitolo 7 - Analisi dei risultati Figura 7.1 Grafico del rischio usando il modello Iguana3_resp Il grafico in Figura 7.1 riporta la classificazione dei dati della paziente affetta da insufficienza respiratoria usando il modello costruito con dati di pazienti affetti dalla stessa patologia. 102 Capitolo 7 - Analisi dei risultati Figura 7.2 Grafico del rischio usando il modello Iguana3_resp_males Il grafico in Figura 7.2 riporta la classificazione dei dati della paziente affetta da insufficienza respiratoria usando il modello costruito con dati di pazienti affetti dalla stessa patologia ma di sesso diverso. 103 Capitolo 7 - Analisi dei risultati Figura 7.3 Grafico del rischio usando il modello Iguana3_resp_females Il grafico Figura 7.3 riporta la classificazione dei dati della paziente affetta da insufficienza respiratoria usando il modello costruito con dati di pazienti affetti dalla stessa patologia e dello stesso sesso. Rispetto ai due grafici precedenti si nota che questo modello individua un maggior numero di situazioni a rischio elevato. Dal confronto di questi tre grafici notiamo che il sesso dei pazienti su cui è costruito il modello ha un’influenza relativa sui risultati: il modello in Figura 7.3, costruito con i dati dei soli pazienti di sesso femminile, ha dato risultati nettamente diversi dagli altri due modelli per le situazioni a rischio medio-alto, mentre le situazioni di normalità individuate sono simili (punti verdi); il modello creato con i dati dei soli pazienti maschi, in Figura 7.2, ha dato risultati molto simili a quelli ottenuti applicando il modello creato con i dati di tutti i pazienti affetti da insufficienza respiratoria (maschi e femmine), riportati in Figura 7.1, sia per le situazioni a rischio, sia per quelle di normalità. 104 Capitolo 7 - Analisi dei risultati Riteniamo che questo comportamento sia dovuto al fatto che i pazienti di sesso maschile utilizzati per la creazione del modello siano in condizioni cliniche peggiori; avendo costruito il modello su un insieme ristretto di pazienti, il peso di ciascuno è tale da modificare significativamente i risultati. Pertanto le soglie di rischio risultano innalzate, per tenere conto della maggior gravità dei pazienti di sesso maschile, e di conseguenza le situazioni di rischio delle pazienti di sesso femminile sono classificate ad un livello di rischio inferiore. Figura 7.4 Grafico del rischio usando il modello Iguana3_mix 105 Capitolo 7 - Analisi dei risultati Figura 7.5 Grafico del rischio usando il modello Iguana3_resp Dal confronto di Figura 7.4 e Figura 7.5 notiamo che la malattia dei pazienti su cui è costruito il modello ha un’influenza significativa sui risultati: l’applicazione del modello costruito con i dati dei soli pazienti affetti da insufficienza respiratoria (Figura 7.5) individua alcune situazioni di rischio, sebbene non elevato; l’applicazione del modello creato con dati da pazienti affetti da varie malattie valuta nella normalità anche variazioni notevoli dei valori misurati e non individua nessuna situazione di rischio significativa (Figura 7.4). Sebbene i risultati ottenuti evidenzino una differenza nelle situazioni a rischio medio individuate, questo non si riflette sulla segnalazione di eventuali allarmi che si prevede siano impostati per attivarsi con livelli di rischio più elevati. Nel caso in cui si desiderasse discriminare anche situazioni di rischio medio, allora riteniamo consigliabile applicare un modello personalizzato per il tipo di malattia da cui è afflitto il paziente. 106 Capitolo 7 - Analisi dei risultati 7.4.2 Numero di cluster Il numero di cluster indica in quanti intervalli discretizzare i valori di slope, offset e dist. Abbiamo denominato questo parametro nclust. Quest’operazione ha anche l’effetto di normalizzare tali valori su un intervallo da 1 a nclust. Abbiamo deciso di confrontare i risultati delle prove fatte con nclust pari a 5, 10 e 30 usando il modello Iguana3_mix, che è quello più generale in quanto comprende dati provenienti da pazienti con caratteristiche diversificate (affetti da varie malattie e di entrambi i sessi, come indicato nel Paragrafo 7.2.1). I valori di nclust sono stati scelti per i seguenti motivi: 5 come valore minimo perché abbiamo 5 livelli di rischio finali, quindi non riteniamo opportuno discretizzare in un numero inferiore di intervalli; 10 come valore ottimale dall’analisi dei dendrogrammi del clustering gerarchico; 30 per verificare il comportamento con un numero elevato di cluster, all’opposto delle situazioni precedenti. Prima di passare all’analisi dei risultati finali della classificazione in livelli di rischio, supportiamo la nostra scelta del numero di cluster con l’analisi dei dendrogrammi ottenuti applicando il clustering gerarchico, con metodo di calcolo della distanza inter-cluster average linkage. In Figura 7.6, Figura 7.7 e Figura 7.8 sono riportati i dendrogrammi ottenuti dalla creazione del modello Iguana3_mix, per le tre componenti del rischio, offset, slope e dist rispettivamente. Per valutare gli effetti della scelta del numero di cluster, abbiamo ipotizzato di tagliare ciascun dendrogramma all’altezza corrispondente, come indicato dalle righe orizzontali blu (nclust=5) e rosse (nclust=10). nclust=5 nclust=10 Figura 7.6 Dendrogramma di offset del parametro ABPdias 107 Capitolo 7 - Analisi dei risultati nclust=5 nclust=10 Figura 7.7 Dendrogramma di slope del parametro ABPdias nclust=5 nclust=10 Figura 7.8 Dendrogramma di dist del parametro ABPdias Dall’analisi dei dendrogrammi in Figura 7.6, Figura 7.7 e Figura 7.8 abbiamo tratto le seguenti conclusioni: con nclust=5 viene individuata una classe di normalità troppo ampia e 3-4 cluster su 5 rappresentano situazioni molto rare; con nclust=10 vengono suddivise in cluster anche le situazioni intermedie, con un passaggio graduale dalla normalità al rischio che è ben mappato sulle variazioni dei cluster; 108 Capitolo 7 - Analisi dei risultati con nclust=30, anche situazioni che si presentano molto frequentemente sono suddivise in cluster diversi e non solo quelle rare, indicative di valori a rischio. Inoltre si nota che in tutti i dendrogrammi (in Figura 7.6, Figura 7.7 e Figura 7.8) è presente un gruppo ristretto di valori estremamente distanti dagli altri. Se nella fase di pre-elaborazione descritta nel Paragrafo 6.4 non avessimo già eliminato le misure errate dovute ad eventuali malfunzionamenti dei sensori, avremmo potuto attribuire a questa causa la loro presenza. Invece è ragionevole aspettarsi che si tratti delle situazioni meno frequenti e più rischiose tra quelle rilevate nel campione di pazienti. È interessante notare come a questo gruppo di valori venga sicuramente attribuito un cluster a parte. Se le ipotesi sulla distribuzione delle misure che abbiamo descritto nel Paragrafo 4.2.3 sono verificate, il cluster assegnato è quello a cui è associato il massimo livello di rischio. La stessa osservazione si può iterare per le successive situazioni di rischio decrescente, confermando la capacità di IGUANA di discriminare correttamente le situazioni più pericolose e adattandosi ai dati su cui è costruito il modello. Frequenza dei valori misurati e rischio associato a slope, offset, dist Approfondiamo l’ipotesi di assegnare un rischio elevato alle situazioni che si presentano poco frequentemente, che è valida per i valori misurati; quando questi sono scomposti nelle tre componenti slope, offset e dist, la supposizione citata si traduce in una distribuzione decrescente all’aumentare dei valori delle componenti stesse. In altre parole, se i valori rischiosi sono poco frequenti, allora le distribuzioni delle componenti slope, offset, dist sono decrescenti (Paragrafo 4.2.3). Abbiamo verificato questo comportamento nei dati a nostra disposizione che si riferiscono a pazienti in condizioni cliniche estreme, quindi a maggior ragione è valido per dati misurati da pazienti più sani. Confronti In di Figura 7.9, Figura 7.10 e Figura 7.11 riportiamo i grafici della classificazione del rischio relativo alla pressione sanguigna diastolica (ABPdias) della registrazione mimic-renal-f78-62h-471n, con valori del parametro nclust impostati a 5, 10 e 30. Abbiamo usato rispettivamente i modelli: Iguana3_mix_nclust=5, per nclust pari a 5; Iguana3_mix, per nclust pari a 10; Iguana3_mix_nclust=30, per nclust pari a 30. 109 Capitolo 7 - Analisi dei risultati Figura 7.9 Grafico del rischio usando il modello Iguana3_mix_nclust=5 110 Capitolo 7 - Analisi dei risultati Figura 7.10 Grafico del rischio usando il modello Iguana3_mix 111 Capitolo 7 - Analisi dei risultati Figura 7.11 Grafico del rischio usando il modello Iguana3_mix_nclust=30 Dal confronto di Figura 7.9, Figura 7.10 e Figura 7.11 abbiamo osservato che: con nclust pari a 5 si ha una presenza predominante di situazioni a rischio nullo (punti verdi); con nclust pari a 30 si dividono in cluster diversi anche situazioni di normalità molto simile, come si nota dalla maggior presenza di punti gialli e arancioni; con nclust pari a 10, invece, riteniamo che la suddivisione sia ragionevole, infatti le situazioni vengono raggruppate gradualmente al diminuire della loro frequenza, differenziando correttamente le situazioni mediamente rischiose. In generale le situazioni di rischio massimo (punti viola) sono molto simili, mentre quelle a rischio medio sono più frequenti per il modello con nclust=30. 112 Capitolo 7 - Analisi dei risultati 7.4.3 Ampiezza della sliding window L’ampiezza della finestra (sliding window) su cui calcoliamo la media mobile influisce direttamente sul calcolo della media mobile stessa e di conseguenza indirettamente sui valori di offset e sulle soglie di normalità del paziente. Ricordiamo che l’offset è la differenza tra il valore attuale e la media mobile, e le soglie di normalità nella nostra implementazione sono determinate dai valori massimo e minimo della media mobile. Le altre grandezze, come ad esempio slope e soglie assolute, non sono influenzate da eventuali variazioni di questo parametro, denominato movwin. L’effetto diretto di tale modifica si ha sull’andamento della media mobile: all’aumentare della finestra, la media mobile si adatta meno all’andamento dei dati e ha un comportamento più stabile; al diminuire della finestra, la media mobile segue più prontamente l’andamento dei dati e ha un comportamento più variabile. Influenza su offset All’aumentare dell’ampiezza della finestra della media mobile, l’andamento della media mobile stessa segue meno fedelmente le fluttuazioni della sequenza di valori, quindi il modello è costruito tenendo conto che ci sono molti valori distanti dalla media mobile. Di conseguenza i valori di offset sono tipicamente elevati e per contribuire al rischio in modo significativo devono diventare molto grandi. Al diminuire dell’ampiezza della finestra della media mobile, invece, siccome l’andamento della media mobile stessa segue più fedelmente le fluttuazioni della sequenza di valori, il modello è costruito tenendo conto che quasi tutti i valori sono vicini alla media mobile. In questo caso i valori di offset tipicamente sono bassi e quindi il rischio aumenta molto all’aumentare di offset. Influenza sulle soglie di normalità Siccome abbiamo calcolato le soglie di normalità personalizzate sui pazienti come i valori minimo e massimo della media mobile, quando la finestra è piccola e la media mobile segue l’andamento dei dati, bastano pochi valori elevati o molto bassi per ottenere delle soglie massime molto elevate e minime molto basse. In presenza di una finestra ampia, invece, la media mobile è meno soggetta all’andamento dei dati, quindi i suoi valori massimo e minimo sono meno distanti dalla media statica dei dati. In generale, fissato un insieme di dati, l’intervallo determinato dalle soglie di normalità calcolate dalla media mobile è più ampio al diminuire dell’ampiezza della finestra. 113 Capitolo 7 - Analisi dei risultati Confronti In Figura 7.12 e in Figura 7.13 riportiamo i grafici delle prove relative alla pressione sanguigna diastolica (ABPdias) della registrazione mimic-resp-f64-53h403n, con dimensione della finestra pari a 2, 10 e 60 minuti. Abbiamo usato i seguenti modelli: Iguana3_mix_movwin=2, per movwin pari a 2; Iguana3_mix, per movwin pari a 10; Iguana3_mix_movwin=60, per movwin pari a 60. Figura 7.12 Grafico del rischio usando il modello Iguana3_mix_movwin=2 114 Capitolo 7 - Analisi dei risultati Figura 7.13 Grafico del rischio usando il modello Iguana3_mix_movwin=60 L’ampiezza della finestra indica quanto tempo passato influisce sulla valutazione del rischio corrente. Il valore adatto, quindi, dovrebbe essere deciso in base a valutazioni mediche sull’importanza della storia clinica del paziente e sulla pericolosità delle variazioni rispetto alla situazione precedente. Siccome noi supponiamo che la media mobile si adatti all’attività che sta svolgendo il paziente, come spiegato nel Paragrafo 5.6, riteniamo che una durata di 10 minuti sia adatta a questo scopo. In questo caso non giustifichiamo la scelta del parametro in base ai risultati sperimentali perché la situazione clinica dei pazienti è decisamente anomala. In ogni caso dai grafici riportati in Figura 7.12 e in Figura 7.13 abbiamo osservato che: confrontando i punti all’interno delle rispettive soglie di normalità, è assegnato un rischio più elevato a quelli classificati usando il modello con dimensione della finestra pari a 2; 115 Capitolo 7 - Analisi dei risultati confrontando tutti i punti, invece, in generale si individuano situazioni a rischio più elevato con dimensione della finestra pari a 60, perché le soglie di normalità individuano un intervallo più ristretto. 7.4.4 Frequenza di campionamento In questo paragrafo analizziamo il comportamento di IGUANA al variare della frequenza con cui sono forniti i valori dai sensori. Più precisamente questo parametro, denominato nsamples, indica ogni quanti valori rilevati dai sensori è necessario elaborarne uno con l’algoritmo. Abbiamo deciso di ricampionare i valori originali per simulare dei sensori che rilevino le misure con una frequenza diversa (Paragrafo 6.4.3). Per esempio, nel caso del database MIMIC, i valori originali sono forniti ogni secondo; impostando nsamples=15, abbiamo simulato dei sensori che effettuano misure ogni 15 secondi. Sapendo che l’algoritmo rileva un’eventuale situazione di rischio in un tempo minimo pari al tempo di campionamento, le variazioni di questo parametro influenzano direttamente il tempo di intervento in caso di emergenza. Confronti In Figura 7.14 e in Figura 7.15 riportiamo i grafici delle prove relative alla pressione sanguigna diastolica (ABPdias) della registrazione mimic-resp-f64-53h403n, con valori del parametro nsamples impostati a 5, 15 e 60. Abbiamo usato i seguenti modelli: Iguana3_mix_nsamples=5, per nsamples pari a 5; Iguana3_mix, per nsamples pari a 15; Iguana3_mix_nsamples=60, per nsamples pari a 60. 116 Capitolo 7 - Analisi dei risultati Figura 7.14 Grafico del rischio usando il modello Iguana3_mix_nsamples=5 117 Capitolo 7 - Analisi dei risultati Figura 7.15 Grafico del rischio usando il modello Iguana3_mix_ nsamples=60 Dal confronto dei grafici in Figura 7.14 e in Figura 7.15 abbiamo notato che: al diminuire del tempo di campionamento, si rilevano anche brevi variazioni dei segnali misurati, nonostante l’andamento complessivo sia, ovviamente, lo stesso; per nsamples=5, siccome abbiamo analizzato pazienti in situazioni cliniche molto particolari, i dati presentano brusche oscillazioni, picchi molto elevati ed escursioni in intervalli molto ampi; come conseguenza dell’osservazione precedente, per nsamples=30 sono rilevate meno situazioni pericolose, a causa della minore varianza dei dati. Dovendo intervenire entro 15 secondi, abbiamo scelto di impostare il tempo di campionamento a tale valore per gli altri esperimenti. 118 Capitolo 7 - Analisi dei risultati 7.4.5 Soglie di normalità In questo paragrafo confrontiamo i risultati ottenuti al variare dei valori delle soglie di normalità, denominate Nthresholds. Le soglie di normalità hanno lo scopo di individuare un intervallo di valori, per ogni parametro (pressione sistolica e diastolica, battito cardiaco e ossigenazione) e per ogni paziente, in cui il rischio è dovuto solamente ad eventuali variazioni rispetto al comportamento medio del paziente e non dal valore assoluto assunto dal segnale: solo slope e offset contribuiscono al calcolo della funzione di rischio, in quanto dist è nullo. Le soglie dovrebbero essere determinate dal medico curante in base alla storia clinica del paziente, alla sua patologia, e ad altre eventuali informazioni di rilevanza terapeutica. A causa dell’assenza di un supporto medico ufficiale, abbiamo deciso di determinare le soglie dall’analisi dei dati. Siccome all’interno dell’intervallo delle Nthresholds dovrebbe essere inclusa la maggior parte dei dati (supponendo che i valori più frequenti siano i meno rischiosi), abbiamo ritenuto opportuno assegnare alle soglie i valori massimo e minimo della media mobile. Invece, per persone sane è possibile fare riferimento alla letteratura medica per ottenere dei valori di normalità standard, che sono riportati in Tabella 7.2. Purtroppo i dati a nostra disposizione sono relativi a pazienti in condizioni di salute particolari e le soglie standard non sono adeguate a rilevare situazioni di rischio effettive. Questo effetto è bilanciato dalle capacità adattative dell’algoritmo durante la fase di creazione del modello. Infatti, se il modello è costruito su un campione di persone con valori molto distanti dalle soglie, come avviene nel nostro caso per pazienti in terapia intensiva, la frequenza con cui si presentano queste situazioni, che in casi normali sarebbero rischiose, è tale da renderle meno influenti sul calcolo del rischio. La causa di questo comportamento è dovuta all’ipotesi di considerare le situazioni più frequenti meno rischiose e quelle più rare più pericolose. L’effetto appena descritto è limitato all’intervallo di valori compresi tra le soglie di rischio assolute. Ricordiamo infatti che oltre tali soglie l’organismo è sempre in pericolo di vita e il rischio assegnato da IGUANA è al livello massimo. Confronti Abbiamo deciso di confrontare i risultati ottenuti dai due metodi di calcolo delle soglie analizzati in questo paragrafo: quello che si basa sulla letteratura medica e quello personalizzato per ogni paziente, che simula la scelta di un esperto medico. In Figura 7.16 e Figura 7.17 riportiamo i grafici delle prove relative alla pressione sanguigna sistolica (ABPsys), in Figura 7.18 e Figura 7.19 quelle relative alla pressione sanguigna diastolica (ABPdias), tutti relativi alla registrazione mimicrenal-f78-62h-471n. Si notino le linee verdi che indicano le soglie di normalità e quelle rosse per le soglie di rischio assolute. 119 Capitolo 7 - Analisi dei risultati Abbiamo usato i modelli: Iguana3_mix, per Nthresholds calcolate dalla media mobile; Iguana3_mix_Nthresholds, per Nthresholds da letteratura medica. Riteniamo significativo confrontare i grafici a coppie, in quanto ognuna corrisponde a una situazione diversa. Figura 7.16 Grafico del rischio usando il modello Iguana3_mix 120 Capitolo 7 - Analisi dei risultati Figura 7.17 Grafico del rischio usando il modello Iguana3_mix_ Nthresholds La prima coppia di grafici (Figura 7.16 e Figura 7.17) ci permette di analizzare il comportamento dell’algoritmo quando, data la particolarità dei dati, i due metodi di calcolo delle soglie forniscono risultati diversi. Infatti, può succedere che le soglie di normalità oltrepassino le soglie di rischio assolute, eventualità che sicuramente non si sarebbe verificata se avessimo avuto dati adeguati all’analisi. 121 Capitolo 7 - Analisi dei risultati Figura 7.18 Grafico del rischio usando il modello Iguana3_mix 122 Capitolo 7 - Analisi dei risultati Figura 7.19 Grafico del rischio usando il modello Iguana3_mix_ Nthresholds La seconda coppia di grafici (Figura 7.18 e Figura 7.19) ci permette di verificare che, se i dati non corrispondono a situazioni estreme, i due metodi producono gli stessi risultati, validando il metodo che abbiamo scelto per calcolare le soglie. Confrontando i primi due grafici (Figura 7.16 e Figura 7.17), relativi alla pressione sanguigna sistolica, abbiamo notato che: siccome nei due casi le soglie assumono valori molto diversi, anche le situazioni di rischio individuate sono diverse; infatti usando il primo modello (Figura 7.16) le soglie sono più ampie, ndist assume valori poco elevati e non contribuisce in maniera significativa al calcolo del rischio; usando il secondo modello (Figura 7.17), invece, la considerevole presenza di punti gialli, arancioni e rossi indica un aumento graduale del rischio al crescere di ndist, che, assumendo valori molto elevati, influisce in maniera preponderante sul calcolo del rischio. 123 Capitolo 7 - Analisi dei risultati Confrontando gli altri due grafici (Figura 7.18 e Figura 7.19) relativi alla pressione sanguigna diastolica, a conferma delle considerazioni precedenti abbiamo constatato che: all’interno delle soglie di normalità le situazioni di rischio individuate sono simili; anche al di fuori delle soglie di normalità le situazioni di rischio non differiscono significativamente. 7.4.6 Algoritmo di clustering Confrontiamo ora i risultati ottenuti dai due algoritmi di clustering che abbiamo applicato: gerarchico e k-means. Per le considerazioni teoriche rimandiamo al Paragrafo 3.6.3. Prima di esaminare le situazioni di rischio individuate da IGUANA nei due casi, ne analizziamo il comportamento secondo le seguenti caratteristiche, che sono i principali parametri valutativi degli algoritmi di clustering: scalabilità e risorse di spazio (memoria) e tempo (CPU) utilizzate; capacità di elaborare tipi di dati diversi; necessità di conoscenza specifica per determinare i parametri di input; capacità di trattare rumore e valori anomali; importanza dell’ordine con cui sono elaborati i dati; facilità di interpretazione dei risultati. Scalabilità e risorse di calcolo In Tabella 7.3 riportiamo i tempi (in ore:minuti:secondi) richiesti dall’operazione di clustering dei dati relativi al solo battito cardiaco per l’implementazione di IGUANA che abbiamo descritto. Le principali caratteristiche hardware e software dei computer utilizzati per svolgere le prove sono: processore AMD Athlon64 3200+, memoria RAM 512 Mb, memoria virtuale gestita dinamicamente, sistema operativo Microsoft Windows XP Professional, R versione 2.1.1. 124 Capitolo 7 - Analisi dei risultati dati 1552 2019 4280 5968 6225 6870 slope 0:00:13 0:00:48 0:08:36 0:12:02 0:15:46 0:20:39 clustering gerarchico totale unitario (s) offset dist 0:00:13 0:00:10 0:00:36 0,023 0:00:50 0:00:35 0:02:13 0,066 0:08:44 0:05:46 0:23:06 0,324 0:12:15 0:09:45 0:34:02 0,342 0:16:05 0:10:59 0:42:50 0,413 0:20:34 0:15:14 0:56:27 0,493 slope 0:00:01 0:00:02 0:00:04 0:00:08 0:00:09 0:00:14 clustering k-means totale unitario (s) offset dist 0:00:01 0:00:01 0:00:03 0,0019 0:00:01 0:00:01 0:00:04 0,0020 0:00:03 0:00:02 0:00:09 0,0021 0:00:09 0:00:08 0:00:25 0,0042 0:00:10 0:00:10 0:00:29 0,0047 0:00:15 0:00:22 0:00:51 0,0074 Tabella 7.3 Confronto dei tempi impiegati dal clustering gerarchico e k-means Le prestazioni ottenute possono essere migliorate in fase di sperimentazione sul campo con opportune ottimizzazioni del codice, ma forniscono comunque indicazioni quantitative utili per valutare le risorse di calcolo necessarie alla creazione del modello. Le prove effettuate confermano che il clustering k-means richiede meno risorse del clustering gerarchico, anche al crescere della quantità di dati da elaborare. In particolare impiega un tempo che è mediamente 1/60 di quello del clustering gerarchico, con tempi dell’ordine delle decine di secondi in confronto alle decine di minuti. In Figura 7.20 riportiamo il grafico tratto dalla colonna del tempo totale del clustering gerarchico di Tabella 7.3. Lo stesso grafico, relativo al metodo k-means, è riportato in Figura 7.21. 125 Capitolo 7 - Analisi dei risultati Clustering gerarchico slope offset dist 0.57.36 Tempo impiegato (h:mm:ss) 0.50.24 0.43.12 0.36.00 0.28.48 0.21.36 0.14.24 0.07.12 0.00.00 1552 2019 4280 5968 6225 6870 Dati elaborati Figura 7.20 Grafico del tempo di elaborazione totale del clustering gerarchico Clustering k-means slope offset dist Tempo impiegato (h:mm:ss) 0.00.52 0.00.43 0.00.35 0.00.26 0.00.17 0.00.09 0.00.00 1552 2019 4280 5968 6225 6870 Dati elaborati Figura 7.21 Grafico del tempo di elaborazione totale del clustering k-means 126 Capitolo 7 - Analisi dei risultati I grafici evidenziano una crescita dei tempi di elaborazione del clustering gerarchico più marcata per piccole quantità di dati (2000 – 4000), dove il metodo kmeans si conferma più scalabile. Quest’ultimo, invece, ha un aumento ripido nel passaggio da 6000 a 7000 dati, dove il clustering gerarchico si è ormai stabilizzato su una crescita costante. Riteniamo che questo comportamento sia dovuto all’intervento di altre cause limitanti nell’esecuzione degli algoritmi, in particolare l’occupazione di memoria. Il clustering gerarchico memorizza una matrice delle distanze tra i punti da raggruppare che è di dimensione n × n, con n = numero di valori, quindi richiede molto più spazio di memoria rispetto al metodo k-means, costringendo il sistema operativo a ricorrere alla memoria virtuale molto più lenta. Per analizzare l’impatto di questo fenomeno abbiamo tracciato l’andamento dei tempi di elaborazione unitari (tempo medio per elaborare un dato). In Figura 7.22 e in Figura 7.23 presentiamo i relativi grafici, che evidenziano come l’aumento più significativo avvenga già nel passaggio da 2000 a 4000 dati per il clustering gerarchico e solo per 6000 – 8000 dati con il metodo k-means. Clustering gerarchico 493 Tempo medio per elaborare un dato (ms) 500 413 450 342 400 324 350 300 250 200 150 66 100 50 23 0 1552 2019 4280 5968 Dati elaborati 6225 6870 Figura 7.22 Grafico del tempo di elaborazione unitario del clustering gerarchico 127 Capitolo 7 - Analisi dei risultati Clustering k-means 7,4 Tempo medio per elaborare un dato (ms) 8,0 7,0 6,0 4,2 5,0 4,7 4,0 3,0 1,9 2,0 2,1 2,0 1,0 0,0 1552 2019 4280 5968 Dati elaborati 6225 6870 Figura 7.23 Grafico del tempo di elaborazione unitario del clustering k-means Siccome prevediamo che la fase di costruzione del modello sia svolta off-line e quindi disponga virtualmente di tempo e risorse illimitate, questi risultati non sono determinanti per la scelta dell’algoritmo di clustering. Tale decisione è determinata prevalentemente dall’accuratezza del modello generato, che valutiamo in questo paragrafo. Tipi di dati diversi La suddivisione dei tempi per slope, offset e dist riportati in Tabella 7.3 ci permette di notare che il clustering gerarchico è più sensibile al tipo di dati da elaborare rispetto al metodo k-means. Infatti il tempo impiegato per individuare i cluster del parametro dist è mediamente di circa il 30% inferiore a quello richiesto per elaborare i valori di slope e offset, e sappiamo che i valori di dist hanno una distribuzione molto particolare in quanto la maggior parte tipicamente vale zero (situazione di un paziente con valori all’interno delle soglie di normalità). 128 Capitolo 7 - Analisi dei risultati Parametri degli algoritmi Per quanto riguarda la scelta dei parametri da specificare per ciascun algoritmo, abbiamo analizzato nel Paragrafo 7.4.2 i risultati ottenuti al variare del numero di cluster desiderati, principale parametro del metodo k-means, e analizziamo nel Paragrafo 7.4.7 quelli ottenuti per il clustering gerarchico al variare del metodo di calcolo della distanza inter-cluster. Rumore e outlier La capacità di elaborare dati affetti da rumore e valori anomali è un problema che abbiamo affrontato nella fase di pre-elaborazione dei dati descritta nel Paragrafo 6.4, quindi supponiamo che a questo punto l’algoritmo di clustering non debba prevederne una gestione esplicita. Ordine dei dati L’ordine con cui sono letti i dati è importante dal punto di vista semantico; i dati, infatti, sono una serie temporale (time series, descritte nel Paragrafo 3.7): ad ogni valore è associato un istante di tempo. Nella fase di applicazione dell’algoritmo di clustering, però, la nozione del tempo è ormai incorporata nel concetto di slope e offset, per come sono stati calcolati33, quindi non è più necessario mantenere rigorosamente l’ordine cronologico. Gli algoritmi di clustering, pertanto, non prevedono la trattazione esplicita dell’informazione temporale associata ai dati. Interpretazione dei risultati Non avendo a disposizione un supporto medico ufficiale, abbiamo valutato i risultati sia consultando degli esperti medici di nostra conoscenza, sia stimando la coerenza della classificazione applicata da IGUANA con gli obiettivi che ci siamo posti. Confronti Riportiamo i grafici delle prove relative alla pressione sanguigna sistolica (ABPsys) in Figura 7.24 e Figura 7.25, e alla pressione sanguigna diastolica (ABPdias) in Figura 7.26 e Figura 7.27, tutti relativi alla registrazione mimic-renal-f78-62h471n. 33 Il valore di slope è calcolato rispetto ai punti temporalmente precedenti e quello di offset rispetto alla media mobile dei valori compresi nella sliding window, come descritto nel Paragrafo 4.2.1. 129 Capitolo 7 - Analisi dei risultati Abbiamo usato il solo modello Iguana3_mix, poiché prevede già l’applicazione di entrambi gli algoritmi di clustering. In fase di classificazione è sufficiente scegliere quale risultato utilizzare tra i due disponibili. Figura 7.24 Grafico del rischio usando il clustering gerarchico 130 Capitolo 7 - Analisi dei risultati Figura 7.25 Grafico del rischio usando il clustering k-means 131 Capitolo 7 - Analisi dei risultati Figura 7.26 Grafico del rischio usando il clustering gerarchico 132 Capitolo 7 - Analisi dei risultati Figura 7.27 Grafico del rischio usando il clustering k-means Da entrambi i confronti (Figura 7.24 con Figura 7.25, e Figura 7.26 con Figura 7.27) possiamo notare quanto segue: le situazioni di rischio elevato (quelle per cui si prevede che sarà richiesta la segnalazione di un allarme) sono molto simili, infatti entrambi i metodi individuano gli stessi punti a rischio massimo (viola); l’algoritmo k-means classifica troppe situazioni con rischio medio-alto (di colore rosso), a differenza del clustering gerarchico (la Figura 7.27 ne è un esempio lampante); le situazioni a basso rischio (verde) sono correttamente raggruppate nello stesso cluster dal clustering gerarchico, invece il metodo k-means le suddivide in vari livelli (verde, giallo e arancione). In generale il raggruppamento individuato dal clustering gerarchico è più coerente con il nostro obiettivo di discriminare le situazioni di maggior rischio in vari livelli, invece applicando il clustering k-means otteniamo anche una suddivisione delle situazioni di normalità in gradi di rischio diversi. 133 Capitolo 7 - Analisi dei risultati Abbiamo deciso di svolgere la nostra analisi applicando l’algoritmo di clustering gerarchico, tuttavia lasciamo la decisione conclusiva ad un’eventuale istituzione medico-sanitaria che debba applicare IGUANA in casi reali. 7.4.7 Distanza inter-cluster In questo paragrafo analizziamo il diverso raggruppamento dei punti in classi di rischio al variare del metodo di calcolo della distanza inter-cluster negli algoritmi di clustering gerarchico. Tale distanza rappresenta il “grado di vicinanza” tra due cluster, ed è necessaria per scegliere ad ogni passo la coppia di cluster da unire. Abbiamo denominato cmethod questo parametro. I metodi già considerati nel Paragrafo 3.6.3 e di cui abbiamo valutato i risultati sono: single linkage, complete linkage, average linkage, centroid, ward. Prestazioni Abbiamo valutato un eventuale impatto del metodo utilizzato per calcolare la distanza inter-cluster sui tempi necessari alla creazione del modello. In Tabella 7.4 riportiamo i risultati ottenuti, evidenziati dal grafico in Figura 7.28. cmethod average centroid complete average single ward slope 0:15:46 0:13:43 0:13:39 0:13:49 0:13:38 0:14:21 offset 0:16:05 0:13:54 0:13:48 0:14:03 0:14:01 0:14:03 dist 0:10:59 0:10:22 0:10:21 0:10:32 0:10:18 0:10:29 totale 0:42:50 0:37:59 0:37:48 0:38:24 0:37:57 0:38:53 Tabella 7.4 Confronto dei tempi impiegati dal clustering gerarchico 134 Capitolo 7 - Analisi dei risultati Clustering gerarchico slope offset dist Tempo impiegato (h:mm:ss) 0:43:12 0:36:00 0:28:48 0:21:36 0:14:24 0:07:12 0:00:00 average centroid complete average single Metodo di calcolo della distanza intercluster ward Figura 7.28 Grafico dei tempi impiegati dal clustering gerarchico Consideriamo insignificante la differenza tra i tempi di esecuzione con i vari metodi di calcolo della distanza inter-cluster in quanto il tempo minimo è di circa il 10% inferiore al tempo massimo. Questa osservazione è rafforzata dall’ipotesi di costruzione del modello off-line, che non pone particolari vincoli temporali e necessità di risorse di calcolo a questa fase. Confronti Riportiamo i grafici delle prove relative alla pressione sanguigna diastolica (ABPdias) della registrazione mimic-renal-f78-62h-471n, con valori del parametro cmethod impostati a single (Figura 7.29), complete (Figura 7.30), average (Figura 7.31), centroid (Figura 7.32) e ward (Figura 7.33). Abbiamo usato i seguenti modelli: Iguana3_mix_single, per cmethod = single; Iguana3_mix_complete, per cmethod = complete; Iguana3_mix, per cmethod = average; Iguana3_mix_centroid, per cmethod = centroid; Iguana3_mix_ward, per cmethod = ward. 135 Capitolo 7 - Analisi dei risultati Figura 7.29 Grafico del rischio usando il metodo single In Figura 7.29 mostriamo il risultato dell’applicazione del modello costruito con il metodo single linkage. La fusione di due oggetti o gruppi di oggetti può avvenire se la distanza fra due oggetti non appartenenti allo stesso gruppo è la più bassa fra quelle possibili. Si può notare che questo metodo produce un cluster principale comprendente la maggior parte dei punti, caratterizzati dal colore verde e quindi a rischio basso, per la sua naturale tendenza al concatenamento dei punti man mano che un gruppo diventa numeroso. 136 Capitolo 7 - Analisi dei risultati Figura 7.30 Grafico del rischio usando il metodo complete In Figura 7.30 mostriamo il risultato dell’applicazione del modello costruito con il metodo complete linkage. La fusione di due oggetti o gruppi di oggetti può avvenire soltanto se tutte le distanze fra coppie di oggetti non appartenenti allo stesso gruppo sono inferiori alla soglia che permetterebbe la fusione di un’altra coppia di gruppi. Con questo metodo si raggiunge una maggiore omogeneità intra-gruppo, favorendo la formazione di gruppi a cui appartiene un numero non troppo variabile di oggetti. 137 Capitolo 7 - Analisi dei risultati Figura 7.31 Grafico del rischio usando il metodo average In Figura 7.31 mostriamo il risultato dell’applicazione del modello costruito con il metodo average linkage. Il criterio per la fusione di due oggetti o gruppi di oggetti è la selezione della minima media aritmetica delle distanze fra tutti gli oggetti dei due gruppi. La distanza tra un’unità e un gruppo è data dalla media aritmetica delle distanze tra l’unità e tutte le altre del gruppo. Questo metodo è molto efficiente quando gli oggetti formano naturalmente blocchi distinti e si comporta comunque bene con cluster di tipo concatenato. 138 Capitolo 7 - Analisi dei risultati Figura 7.32 Grafico del rischio usando il metodo centroid In (Figura 7.32) mostriamo il risultato dell’applicazione del modello costruito con il metodo centroid. In questo caso la distanza tra due gruppi di oggetti è calcolata tra i centroidi che li rappresentano. Lo svantaggio di questo metodo è che non garantisce la monotonicità del diagramma di aggregazione, dando luogo, talvolta, a inversioni nella struttura del dendrogramma; l’interpretazione dei risultati risulta quindi più difficile e va usata con cautela. 139 Capitolo 7 - Analisi dei risultati Figura 7.33 Grafico del rischio usando il metodo ward In Figura 7.33 mostriamo il risultato dell’applicazione del modello costruito con il metodo ward. L’obiettivo della partizione è minimizzare la variabilità interna, massimizzando la variabilità fra i gruppi, così da ottenere classi omogenee e ben separate. Il criterio scelto per l’aggregazione nelle partizioni è quello di fondere i due gruppi per i quali la perdita di inerzia inter-classi è la più debole: tale perdita di inerzia è quindi assunta come misura della distanza fra i gruppi. Questo metodo fornisce generalmente un insieme di gruppi di densità più o meno uguale, soddisfacendo ai requisiti di bilanciamento della numerosità dei gruppi e di garanzia che la distanza tra un gruppo e un’unità esterna non sia maggiore della distanza tra due individui appartenenti allo stesso gruppo. Questi requisiti però non sono utili agli obiettivi che ci siamo proposti, e il metodo ward non fornisce un risultato accettabile per la corretta valutazione del rischio di un paziente. Dal confronto tra questi grafici abbiamo notato che: i metodi individuano classi di rischio diverse, in particolare, in ordine di rischio crescente, abbiamo 140 Capitolo 7 - Analisi dei risultati à single, à average e centroid, à complete, à ward; il metodo single tende a etichettare la maggior parte dei punti come appartenenti al cluster a rischio più basso (punti verdi); questo comportamento è dovuto al fatto che la distanza tra due cluster è la minima distanza fra ogni punto di una e ogni punto dell’altra, quindi basta una coppia di valori vicini a far fondere due gruppi in uno unico; l’effetto è quello di formare un cluster principale comprendente la maggior parte dei punti, e i rimanenti cluster con pochi punti ciascuno; il metodo ward, al contrario, tende a creare cluster con lo stesso numero di punti; non è quindi adatto al nostro caso, perché a noi interessa suddividere i punti all’aumentare del rischio, per ricavare classi di quest’ultimo e non della normalità. Come per la scelta dell’algoritmo di clustering (paragrafo 7.4.6), lasciamo la decisione conclusiva ad un’eventuale istituzione medico-sanitaria che debba applicare IGUANA in casi reali e decidiamo di svolgere la nostra analisi mantenendo fisso il metodo average linkage, in quanto suddivide in modo coerente ai nostri obiettivi i punti in classi di rischio, senza suddividere situazioni di normalità in cluster diversi. 7.4.8 Pesi La determinazione degli opportuni pesi per la funzione di calcolo del rischio è un’operazione fondamentale per ottenere dei risultati adeguati alle aspettative. Infatti questi influiscono direttamente sui livelli di rischio finali, a differenza degli altri parametri che hanno un effetto indiretto. Siccome i pesi da determinare sono molti riportiamo i grafici relativi ai risultati ottenuti per varie combinazioni dei loro valori, come indicato in Tabella 7.5. pesi wo+ wo– ws+ ws– wd+ wd– 0 0 0 0 0 prova 1 1 0 0 0 0 0 prova 2 1 0 0 0 0 0 prova 3 1 0 0 0 0 0 prova 4 1 0 0 0 0 prova 5 1 1 0 0 0 0 prova 6 1 1 0 0 0 0 prova 7 1 1 0 0 prova 8 1 1 1 1 prova 9 1 1 1 1 1 1 Tabella 7.5 Valori dei pesi nelle prove svolte 141 Capitolo 7 - Analisi dei risultati In questo modo verifichiamo che il risultato sia quello desiderato nelle varie situazioni. Per un’analisi del significato di ciascun peso rimandiamo al Paragrafo 4.2.2. Sebbene i pesi possano essere differenziati per ogni segnale analizzato, riteniamo significativo riportare i risultati solo per uno dei segnali fisiologici considerati, in quanto abbiamo verificato che per gli altri si ottengono risultati simili. Confronti Abbiamo scelto la pressione sanguigna diastolica (ABPdias) della registrazione mimic-renal-f78-62h-471n, classificata usando il modello Iguana3_mix. Per questa prova comparativa la classificazione in situazioni di rischio non è valutata in base alla coerenza con l’effettiva condizione clinica del paziente, ma vogliamo analizzare i contributi apportati dai singoli pesi alla funzione di rischio globale. A colpo d’occhio le gradazioni della colorazione dei punti nei grafici indicano tale contributo per il peso cui si riferiscono. Figura 7.34 Grafico del rischio della prova 1 142 Capitolo 7 - Analisi dei risultati La prova 1 valuta il contributo di offset positivo al calcolo della funzione di rischio. Questa situazione sarebbe adatta per un segnale fisiologico che diventa pericoloso per la salute del paziente quando presenta escursioni positive rispetto ai valori precedenti. Come risulta dal grafico in Figura 7.34, sono identificate come situazioni di rischio (di colore rosso e viola) quelle in cui i valori misurati sono più elevati dei precedenti all’interno della finestra della media mobile34, sia in caso di più valori consecutivi, sia quando tendono a tornare nella normalità. A differenza del grafico in Figura 7.36, che rappresenta una situazione concettualmente simile (contributo di slope positivo), in Figura 7.34 le situazioni di rischio elevato hanno una durata maggiore in quanto coinvolgono tutti i punti “distanti” dalla media mobile e non solo quelli all’inizio del cambiamento. Figura 7.35 Grafico del rischio della prova 2 34 Questo esperimento è stato condotto mantenendo la finestra della media mobile a 10 minuti, che corrisponde a 40 valori rilevati ogni 15 secondi. 143 Capitolo 7 - Analisi dei risultati La prova 2 valuta il contributo di offset negativo al calcolo della funzione di rischio. Questa situazione è duale rispetto alla precedente della prova 1 e valgono le stesse considerazioni. Dal confronto tra il grafico di Figura 7.35 e quello di Figura 7.34 possiamo notare che le escursioni negative sono meno frequenti e ampie di quelle positive, situazione che abbiamo riscontrato anche nelle prove relative ad altri pazienti e altri segnali fisiologici. Per l’ipotesi di rischio basata sulla frequenza con cui si presentano determinate situazioni cliniche, possiamo dedurre che sia più pericoloso un eventuale abbassamento dei valori dei segnali fisiologici. Questa deduzione è confermata dalla minore influenza delle attività svolte dal paziente sulla diminuzione dei valori misurati. Infatti l’attività fisica può facilmente favorire rapidi innalzamenti di pressione e battito cardiaco, mentre il riposo permette un abbassamento piuttosto lento e graduale di questi segnali fisiologici. Figura 7.36 Grafico del rischio della prova 3 144 Capitolo 7 - Analisi dei risultati La prova 3 valuta il contributo di slope positivo al calcolo della funzione di rischio. Questa situazione sarebbe adatta per un segnale fisiologico che diventa pericoloso per la salute del paziente quando presenta variazioni positive rapide e puntuali, caratteristica che tipicamente contraddistingue le emergenze. Come risulta dal grafico in Figura 7.36, sono identificate come situazioni di rischio (di colore rosso e viola) quelle di brusco innalzamento del valore misurato. In caso di più valori molto elevati consecutivi, solo il primo è considerato pericoloso, in quanto è l’unico a presentare una variazione ampia; i successivi, pur essendo elevati rispetto all’andamento precedente del paziente, non variano rispetto alla situazione puntuale e istantanea, quindi non sono classificati come situazioni a rischio. Riteniamo significativo il confronto con il grafico in Figura 7.34 della prova 1, relativo alla valutazione di offset positivo, le cui osservazioni sono a pag. 143. Figura 7.37 Grafico del rischio della prova 4 145 Capitolo 7 - Analisi dei risultati La prova 4 valuta il contributo di slope negativo al calcolo della funzione di rischio. Questa situazione è duale rispetto alla precedente della prova 3 e valgono le stesse considerazioni. Si noti che un rapido cambiamento del valore assunto da un segnale fisiologico non è sempre indicativo di una situazione reale di rischio. Nel grafico in Figura 7.37 possiamo osservare la presenza di rapidi “ritorni” a valori normali, in questo caso classificati a rischio elevato, ma la cui pericolosità è difficile da valutare. Infatti, se un repentino abbassamento della pressione del sangue può causare svenimento, potrebbe anche essere dovuto a misure correttive atte a contrastare la precedente situazione di pressione alta, come ad esempio la somministrazione di farmaci. Figura 7.38 Grafico del rischio della prova 5 La prova 5 valuta il contributo di offset, sia positivo sia negativo, al calcolo della funzione di rischio. Questa valutazione sarebbe adatta per un segnale fisiologico che diventa pericoloso per la salute del paziente quando presenta variazioni rispetto alla 146 Capitolo 7 - Analisi dei risultati situazione media dinamica, cioè rispetto ai valori assunti nel recente passato, e non rispetto a valori assoluti determinati a priori. Come risulta dal grafico in Figura 7.38, sono identificate come situazioni di rischio (di colore rosso e viola) quelle in cui i valori si discostano molto dalla media mobile35. Si noti che il rischio massimo (di colore viola) assegnato ai punti in Figura 7.38 (pesi wo+ e wo– pari a 1) non corrisponde all’unione di quelli in Figura 7.34 (peso wo+ pari a 1) e in Figura 7.35 (peso wo– pari a 1), sebbene le situazioni analizzate siano complementari. Infatti la funzione di calcolo del rischio, descritta nel Paragrafo 4.2.2, tiene conto dei pesi per riscalare il valore di rischio massimo e per calcolare un coefficiente di correzione (wr). Figura 7.39 Grafico del rischio della prova 6 35 Questo esperimento è stato condotto mantenendo la finestra della media mobile a 10 minuti, che corrisponde a 40 valori rilevati ogni 15 secondi. 147 Capitolo 7 - Analisi dei risultati La prova 6 valuta il contributo di slope, sia positivo sia negativo, al calcolo della funzione di rischio. Questa valutazione sarebbe adatta per un segnale fisiologico che diventa pericoloso per la salute del paziente quando presenta brusche variazioni rispetto alla situazione immediatamente precedente. Come risulta dal confronto tra il grafico in Figura 7.38 e quello in Figura 7.39, nel primo (relativo a offset) sono individuate situazioni a rischio caratterizzate da sequenze compatte di punti di colore rosso e viola, mentre nel secondo (relativo a slope) i punti a rischio elevato sono dispersi lungo l’asse temporale, risultando più sparsi. L’osservazione di questo comportamento ci induce a confermare che: il contributo di offset al rischio è relativo a variazioni prolungate36, adatte a individuare situazioni di pericolosità dovute alla permanenza in uno stato di alterazione dei valori fisiologici; il contributo di slope al rischio è relativo a variazioni puntuali, adatte ad individuare situazioni di emergenza immediata. Riteniamo che l’uso esclusivo di uno dei due parametri offset e slope, in particolare solo di quest’ultimo, non permetta di individuare situazioni di effettiva importanza medica per i segnali fisiologici da noi analizzati. La possibilità di scegliere il contributo di ciascun peso, però, permette di adattarsi a situazioni molto diverse, sia per riconoscere comportamenti diversi per lo stesso segnale, sia per valutare segnali fisiologici dalle caratteristiche differenti. 36 Rispetto alla durata temporale della finestra della media mobile. 148 Capitolo 7 - Analisi dei risultati Figura 7.40 Grafico del rischio della prova 7 La prova 7 valuta il contributo di dist, sia positivo sia negativo, al calcolo della funzione di rischio. Questa valutazione sarebbe adatta per un segnale fisiologico che diventa pericoloso per la salute del paziente solo quando oltrepassa le soglie di normalità. L’effetto è quello di raggruppare in un unico cluster tutti i punti all’interno delle soglie di normalità (aventi dist pari a zero), e dividere gli altri nei restanti cluster disponibili. 149 Capitolo 7 - Analisi dei risultati Figura 7.41 Grafico del rischio della prova 8 La prova 8 valuta i contributi di offset e slope, sia positivi sia negativi, al calcolo della funzione di rischio. Questa valutazione sarebbe adatta per calcolare il rischio di un segnale fisiologico tenendo conto di due aspetti: presenza di escursioni elevate rispetto alla media mobile calcolata sui valori più recenti (contributo di offset), presenza di variazioni troppo rapide rispetto al valore precedente (contributo di slope). Non si considera la distanza dalle soglie di normalità. 150 Capitolo 7 - Analisi dei risultati Figura 7.42 Grafico del rischio della prova 9 La prova 9 valuta i contributi di offset, slope e dist, sia positivi sia negativi, al calcolo della funzione di rischio. Questa valutazione tiene conto di tutti gli aspetti che abbiamo individuato come fondamentali per determinare il rischio di un paziente: presenza di escursioni elevate rispetto alla media mobile calcolata sui valori più recenti (contributo di offset), presenza di variazioni troppo rapide rispetto al valore precedente (contributo di slope), distanza dalle soglie di normalità, ossia grado di anomalia del valore rispetto a tutti quelli assunti dal paziente (contributo di dist). 151 Capitolo 7 - Analisi dei risultati Dai grafici si nota che il comportamento al variare dei valori dei pesi è coerente con le nostre aspettative; in particolare osserviamo quanto segue: le varie combinazioni non sono linearmente indipendenti, quindi in generale non è vero che i rischi individuati dalla configurazione con wo+ pari a 1 e wo– pari a 1 (Figura 7.38) sono gli stessi ottenuti dalla combinazione delle due situazioni separate (rispettivamente in Figura 7.34 e in Figura 7.35); la causa è da ricercarsi nei meccanismi interni di riscalamento del fattore di rischio in base ai pesi (il contributo di wr e l’operazione di calcolo del rischio massimo descritti nel Paragrafo 4.2.2); quando sono considerati più fattori nel calcolo del rischio (ad esempio sia slope, sia offset, sia dist hanno pesi diversi da zero), per le stesse cause descritte al punto precedente, le situazioni che lanciano un allarme sono meno frequenti a parità di dati (si confrontino Figura 7.41 e Figura 7.42); infatti è necessario che tutti i contributi siano sufficientemente elevati affinché il livello di rischio sia considerato pericoloso; la possibilità di pesare ogni singolo contributo conferisce notevole flessibilità alla soluzione proposta, al costo di dover studiare bene il loro effetto per ottenere risultati ottimali; riteniamo che la determinazione di valori adeguati, una volta note le caratteristiche delle situazioni di rischio che si desiderano individuare, richieda pochi tentativi, vista l’immediatezza con cui è possibile valutare il contributo di ciascuna modifica. 7.4.9 Livelli di rischio I livelli di rischio, denominati nrisklev, sono il numero di classi di rischio finali che si vogliono ottenere. Ne abbiamo scelti 5 in quanto, dopo vari tentativi, riteniamo che tale numero divida in modo adeguato il rischio, differenziandolo sufficientemente. Confronti Nei seguenti grafici riportiamo i risultati della classificazione del rischio relativi alla pressione sanguigna diastolica (ABPdias) della registrazione mimic-renal-f7862h-471n, con valori del parametro nrisklev impostati di volta in volta a 3 (in Figura 7.43), 4 (in Figura 7.44), 5 (in Figura 7.45) e 7 (in Figura 7.46). Abbiamo usato sempre il modello Iguana3_mix, poiché il parametro nrisklev varia solo nel classificatore. Nei seguenti grafici le convenzioni descritte nel Paragrafo 7.4 che riguardano la corrispondenza tra colore dei punti e livello di rischio non sono rispettate. Abbiamo scelto una diversa colorazione per favorire la visualizzazione dei risultati e il confronto degli stessi. I colori dei punti in ordine di rischio crescente sono i seguenti: 152 Capitolo 7 - Analisi dei risultati 1. 2. 3. 4. 5. 6. 7. verde giallo arancione rosso viola blu nero Non tutti i colori sono presenti in tutti i grafici. In particolare per quelli relativi a situazioni con 3, 4 o 5 livelli di rischio, è stato scelto un sottoinsieme di colori adeguato dall’elenco precedente, mantenendo l’ordine di pericolosità. Figura 7.43 Grafico dei dati classificati con 3 livelli di rischio In Figura 7.43 i valori misurati sono classificati in 3 livelli di rischio crescente secondo la seguente colorazione: 153 Capitolo 7 - Analisi dei risultati 1. 2. 3. verde arancione viola Quasi tutti i punti sono classificati a basso rischio ma alcune situazioni, anche non particolarmente pericolose, ricadono nel livello intermedio. I punti viola a massimo rischio sono rari e corrispondono alle situazioni più anomale. Figura 7.44 Grafico dei dati classificati con 4 livelli di rischio In Figura 7.44 i valori misurati sono classificati in 4 livelli di rischio crescente secondo la seguente colorazione: 1. 2. verde arancione 154 Capitolo 7 - Analisi dei risultati 3. 4. viola nero Come in Figura 7.43, quasi tutti i punti sono classificati a basso rischio (verde), ma la Figura 7.44 differisce per le situazioni a livello medio-basso (arancione), che sono più frequenti. Le situazioni più pericolose, contraddistinte dal colore nero, sono molto rare, infatti sono presenti anche molti punti a rischio medio-alto (viola) che nella Figura 7.43 erano classificate a rischio massimo. Figura 7.45 Grafico dei dati classificati con 5 livelli di rischio In Figura 7.45 i valori misurati sono classificati in 5 livelli di rischio crescente secondo la seguente colorazione: 1. 2. verde arancione 155 Capitolo 7 - Analisi dei risultati 3. 4. 5. viola blu nero Come in Figura 7.44, i punti a rischio massimo sono di colore nero, ma in questo caso abbiamo introdotto un livello medio-alto di colore blu. L’idea è di associare ai punti neri un intervento di emergenza e ai punti blu una segnalazione meno urgente. Le situazioni a basso rischio (verde) sono sempre numerose (confronto con la Figura 7.43 e la Figura 7.44), a conferma della caratteristica di IGUANA di discriminare le situazioni di rischio in livelli diversi. Figura 7.46 Grafico dei dati classificati con 7 livelli di rischio In Figura 7.46 i valori misurati sono classificati in 7 livelli di rischio crescente secondo la seguente colorazione: 156 Capitolo 7 - Analisi dei risultati 1. 2. 3. 4. 5. 6. verde giallo arancione viola blu nero Rispetto alla Figura 7.44, abbiamo introdotto un livello di rischio basso, di colore giallo, per verificare se questo comporta l’eccessiva differenziazione in classi diverse delle situazioni normali o se, invece, fosse adeguato per discriminare ulteriori classi di rischio significativo. Riteniamo che sia verificata la prima supposizione: sebbene i punti gialli siano ai margini della “fascia di normalità” dei punti di colore verde, questi non presentano una pericolosità degna di nota. Complessivamente dalle prove effettuate, di cui i grafici riportati sono un esempio significativo, abbiamo notato che: per nrisklev pari a 3 non si ha una sufficiente differenziazione del rischio, in quanto troviamo difficile discriminare diversi tipi di intervento da associare ai vari livelli di pericolosità; in particolare il livello intermedio non raggruppa solo situazioni effettivamente rischiose ma anche situazioni non significativamente anomale; per nrisklev pari a 4, i due livelli di rischio più elevati, pur permettendo interventi differenziati, comprendono anche situazioni non sufficientemente rischiose per la vita del paziente; per nrisklev pari a 7 si ha un’eccessiva differenziazione, infatti si suddividono anche situazioni comuni in diversi gradi di pericolosità, in particolare nei livelli di rischio medio-bassi; per nrisklev pari a 5 riteniamo che la suddivisione in classi sia adeguata ai nostri obiettivi. La determinazione di un valore ottimale per questo parametro è strettamente dipendente dalle esigenze specifiche di utilizzo dell’algoritmo. Inoltre è possibile apportare modifiche a questo parametro in qualsiasi momento a patto di adeguare opportunamente le azioni di allarme associate. Si noti che nrisklev non può essere aumentato a piacere indipendentemente da nclust (analizzato nel Paragrafo 7.4.2), in quanto il calcolo del rischio è svolto a partire dal numero di cluster generati dal modello. In linea generale abbiamo notato che i migliori risultati si ottengono quando i due parametri hanno valori dello stesso ordine di grandezza, con nrisklev preferibilmente inferiore a nclust. Valori di nrisklev superiori a nclust non forniscono buoni risultati in quanto la determinazione del livello di rischio richiede una discretizzazione superiore a quella con cui è stato creato il modello. 157 Capitolo 7 - Analisi dei risultati 7.5 Esperimenti con Fantasia In questo paragrafo riportiamo i risultati delle prove svolte con le misurazioni del battito cardiaco della base di dati Fantasia, descritta nel Paragrafo 6.3. L’analisi di questi dati con IGUANA ci permette di valutarne il comportamento nelle seguenti condizioni: individuazione di anomalie in pazienti sani; tempo di campionamento di 1 minuto; adattamento delle soglie di normalità. I valori dei vari parametri del framework sono stati fissati ai valori indicati nel Paragrafo 7.3, in particolare abbiamo applicato il modello costruito con i dati di Fantasia, relativi a pazienti in buono stato di salute. L’applicazione di IGUANA a persone sane è una situazione opposta a quella analizzata nel Paragrafo 7.4, in cui i dati provengono dalla base di dati MIMIC costruita con misurazioni di pazienti in terapia intensiva. La conoscenza a priori dello stato di salute delle persone monitorate ci permette di supporre che il tempo di intervento minimo per la rilevazione di emergenze sia superiore a quello richiesto per situazioni cliniche gravi. Considerando che le misure sono effettuate da sensori con limitate risorse energetiche, è fondamentale scegliere un tempo di campionamento equilibrato tra le esigenze contrapposte di pronto intervento e di basso consumo. Quindi, per le prove con Fantasia abbiamo deciso di impostare il tempo di campionamento (nsamples) a 1 minuto. Sempre grazie al buono stato di salute dei pazienti, possiamo verificare l’adattamento delle soglie di normalità a valori contenuti in un intervallo abbastanza limitato rispetto ai risultati ottenuti per i pazienti di MIMIC (Paragrafo 7.4.5). 7.5.1 Confronto tra pazienti sani Nei grafici in Figura 7.47 e in Figura 7.48 riportiamo i risultati della classificazione di due pazienti della base di dati Fantasia, aventi un andamento diverso del battito cardiaco. 158 Capitolo 7 - Analisi dei risultati Figura 7.47 Grafico dei dati di Fantasia con soglie ampie Siccome i valori misurati sono assolutamente nella norma, non è possibile segnalare nessun allarme, però possiamo notare la diversa classificazione per i due pazienti al variare delle soglie di normalità (indicate dalle linee orizzontali verdi nei grafici). Il paziente in Figura 7.47 presenta misure in un intervallo relativamente ampio37 di valori (circa da 54 a 62 battiti al minuto); per come calcoliamo le soglie di normalità, ossia come massimo e minimo della media mobile, queste coprono quasi tutto l’intervallo in cui variano i valori misurati, quindi tutti i punti sono classificati a rischio nullo. Si noti che nei primi minuti della registrazione il paziente presenta una 37 L’intervallo è considerato ampio rispetto a quello in Figura 7.48, non in modo assoluto. Infatti la variazione di soli 8 battiti al minuto è estremamente ristretta ed è dovuta allo stato di riposo dei pazienti sani controllati. In questo caso le nostre considerazioni sono volte alla valutazione del comportamento di IGUANA e non all’individuazione di effettive situazioni di rischio, sicuramente assenti con i dati di Fantasia. 159 Capitolo 7 - Analisi dei risultati diminuzione progressiva del battito cardiaco che è fisiologica, infatti è correttamente classificata non a rischio (verde). Figura 7.48 Grafico dei dati di Fantasia con soglie strette Il paziente in Figura 7.48 presenta misure in un intervallo decisamente stretto di valori (mediamente da 50 a 54 battiti al minuto). Le soglie di normalità lasciano fuori alcuni punti, il cui rischio è calcolato sommando il contributo di dist. Per questo motivo sono presenti dei punti di colore giallo, arancione e persino rosso. In questa analisi dobbiamo tenere conto del fatto che stiamo valutando il comportamento dell’algoritmo con persone sane. Quindi sappiamo che in realtà non dovremmo lanciare nessun allarme, ma ci interessa esaminare la classificazione dei punti anomali. L’osservazione importante è che IGUANA identifica correttamente le anomalie nella time-series, di cui forniamo la seguente interpretazione: basandosi su un modello costruito con dati di pazienti sani e sapendo che il paziente da classificare tipicamente 160 Capitolo 7 - Analisi dei risultati ha un battito cardiaco compreso tra 50 e 54 battiti al minuto, la situazione che porta rapidamente il valore misurato a meno di 46 battiti è mediamente rischiosa, in quanto non è frequente nel modello, né normale per il paziente considerato. 7.5.2 Confronto tra pazienti in diverso stato di salute In questo confronto intendiamo valutare le conseguenze dell’applicazione di un modello costruito con dati provenienti da pazienti sani a registrazioni relative a pazienti in pessime condizioni di salute. Il grafico in Figura 7.49 mostra la classificazione di una registrazione di Fantasia in cui è presente una vistosa anomalia nei valori misurati. Il classificatore assegna il massimo livello di rischio in quanto, rispetto ai dati su cui è stato costruito, l’andamento rilevato è pericoloso. Dalla consultazione con un esperto medico, sappiamo che variazioni come quella citata possono avvenire senza rischi anche in pazienti a riposo e in buono stato di salute. La visione di un filmato (in questo caso l’opera di animazione Fantasia di Walt Disney), cui è sottoposto il paziente in questione, può causare un coinvolgimento emotivo che influenza la frequenza del battito cardiaco. Il fatto che la situazione individuata sia valutata estremamente pericolosa, quindi, è dovuta ai seguenti fattori: costruzione del modello con dati inadeguati; impostazione di soglie di normalità troppo strette; scelta di pesi della funzione di calcolo del rischio troppo elevati. In questo caso, il primo elemento è sicuramente quello che ha maggiore influenza tra le cause del riconoscimento di tale situazione di pericolo. 161 Capitolo 7 - Analisi dei risultati Figura 7.49 Grafico dei dati di Fantasia con anomalia In Figura 7.50 riportiamo la classificazione del battito cardiaco di un paziente38 di MIMIC-numerics affetto da insufficienza respiratoria. Per coerenza con la necessità di mantenere un tempo di campionamento dei segnali fisiologici inferiore o uguale al tempo di intervento, le misure in questo grafico sono riportate ogni 15 secondi. 38 La registrazione classificata è mimic-resp-f64-53h-403n. 162 Capitolo 7 - Analisi dei risultati Figura 7.50 Grafico dei dati di MIMIC classificati col modello di Fantasia Dal confronto con il grafico in Figura 7.49 possiamo osservare quanto segue: le situazioni di rischio sono molto più frequenti, a conferma della peggiore situazione clinica del paziente; le soglie di normalità sono più ampie, in quanto sono personalizzate per il paziente, che presenta variazioni estese dei valori misurati; non si attivano allarmi all’interno delle soglie di normalità, a conferma dell’adattabilità di IGUANA a casi clinici differenti, anche applicando modelli creati da dati con caratteristiche completamente diverse. 163 Capitolo 7 - Analisi dei risultati 7.6 Prestazioni del classificatore Per permettere l’applicazione del nostro lavoro a situazioni di sorveglianza di pazienti con mobilità anche all’esterno della propria abitazione, è indispensabile prevedere l’esecuzione della parte di classificazione delle situazioni di rischio su dispositivi mobili dalle risorse limitate. Esula dai nostri obiettivi implementare una versione di IGUANA funzionante in ambiente mobile (cellulari, smartphone, palmari), ma riteniamo opportuno stimare le risorse di calcolo e di memoria necessarie al classificatore per la fattibilità di tale implementazione. Le prestazioni di IGUANA per quanto concerne la fase di creazione del modello sono state valutate nel Paragrafo 7.4.6, in questo paragrafo, invece, ci concentriamo su quelle della fase di classificazione. Un’ulteriore risorsa da tenere in considerazione nello studio di applicazioni mobili è il consumo energetico. Non approfondiamo la valutazione di questo aspetto perché strettamente dipendente dall’implementazione, dall’ambiente hardware e software, dalla comunicazione con i sensori e da altre considerazioni marginali rispetto ai nostri obiettivi. I metodi con cui abbiamo valutato le risorse di calcolo e di memoria ci permettono di stimare l’ordine di grandezza cui fare riferimento e non hanno l’obiettivo di giungere a valori precisi, che sarebbero inutili visto lo stato prototipale dell’implementazione di IGUANA e la diversità dell’architettura Personal Computer, su cui abbiamo svolto le prove, rispetto a quella embedded. 7.6.1 Risorse di calcolo Per stimare le risorse di calcolo richieste dall’esecuzione della fase di classificazione, abbiamo misurato il tempo impiegato ad elaborare i dati di alcune registrazioni tratte dalla base di dati MIMIC, descritta nel Paragrafo 6.2. L’obiettivo di questa valutazione è di indicare la capacità di un dispositivo mobile di elaborare le misure in tempo reale. Teoricamente il tempo di elaborazione deve essere minore dell’intervallo che intercorre tra due misure successive, tipicamente dell’ordine dei secondi, ma ci aspettiamo che sia decisamente inferiore, in quanto il dispositivo dovrà essere in grado di svolgere anche altri compiti contemporaneamente. Le misure che abbiamo rilevato, relative al tempo necessario per completare la classificazione di alcune registrazioni, sono state ripetute più volte e per la stima definitiva abbiamo considerato il valore medio. I risultati delle 5 prove che abbiamo svolto e le registrazioni interessate sono indicate nella Tabella 7.6. 164 Capitolo 7 - Analisi dei risultati registrazioni prova prova prova prova prova 1 2 3 4 5 media numero tempo delle di unitario prove misure (ms) 18,6 51716 0,36 mimic-angina-m67-55h-467n 17 17 19 19 21 mimic-bleed-m70-77h-039n 27 27 28 30 27 27,8 72528 0,38 mimic-brain-m60-42h-280n 17 18 17 18 18 17,6 43900 0,40 mimic-cabg-f80-57h-457n 20 20 22 22 19 20,6 54060 0,38 mimic-cardio-f71-50h-293n 13 13 13 14 13 13,2 47028 0,28 mimic-NA-f66-58h-276n 21 20 22 24 21 21,6 54528 0,40 mimic-NA-m75-51h-474n 12 12 13 14 13 12,8 36092 0,35 mimic-pulmEde-f92-71h-414n 08 08 09 09 08 8,4 23488 0,36 mimic-pulmEde-m70-69h-466n 23 25 25 25 23 24,2 64372 0,38 mimic-renal-f78-62h-471n 22 22 24 23 22 22,6 58748 0,38 mimic-resp-f64-53h-403n 15 15 15 16 15 15,2 39996 0,38 mimic-sepsis-f82-42h-269n 13 13 13 14 12 13,0 40452 0,32 mimic-trauma-f92-51h-482n 12 13 12 13 12 12,4 40312 0,31 mimic-valve-f77-52h-479n 16 16 15 17 16 16,0 49304 0,32 mimic-resp-m90-46h-243n 09 09 09 10 08 9,0 43748 0,21 Tabella 7.6 Tempi (in secondi) richiesti dalla fase di classificazione Le misure sono state effettuate su un calcolatore di riferimento con le seguenti caratteristiche hardware e software: processore AMD Athlon XP 2000+ @ 1,67 GHz memoria RAM 512 Mbyte sistema operativo Microsoft Windows 2000 script del prototipo di IGUANA eseguito in R versione 2.1.1 Abbiamo stimato i tempi necessari alla classificazione di una singola misura dividendo il tempo totale, impiegato ad elaborare tutti i valori di una registrazione, per il numero di misure presenti. Questo calcolo non tiene conto di eventuali ottimizzazioni svolte dall’architettura della CPU superscalare da noi utilizzata che, trovandosi ad eseguire ciclicamente le stesse istruzioni, può migliorarne le prestazioni; invece nel microprocessore di un dispositivo portatile tali ottimizzazioni potrebbero non essere presenti, di conseguenza prevediamo che il valore effettivo sia leggermente maggiore della nostra stima. Come illustrato dal grafico in Figura 7.51, il tempo necessario a classificare una singola misura sul computer di prova è dell’ordine dei decimillesimi di secondo, compreso tra 0,20 e 0,40 ms. Supponendo di usare lo stesso processore a una frequenza di 100 MHz (paragonabile a quella delle CPU dei dispositivi mobili), otteniamo un tempo 16,7 volte superiore, pari a un massimo di 6,8 ms. 165 Capitolo 7 - Analisi dei risultati Classificazione 0,45 0,40 0,35 Tempo (ms) 0,30 0,25 0,20 0,15 0,10 0,05 0,00 23488 36092 39996 40312 40452 43748 43900 47028 49304 51716 54060 54528 58748 64372 72528 Numero di misure classificate Figura 7.51 Tempo impiegato per classificare una misura Sebbene le stime siano indicative del solo ordine di grandezza, dalle prove effettuate riteniamo che il tempo necessario alla classificazione di ogni singola misura su un dispositivo mobile sia prossimo alle decine di millisecondi, quindi ampiamente inferiore ai limiti dovuti al tempo di misurazione (dell’ordine dei secondi). 7.6.2 Risorse di memoria Per valutare le risorse di memoria richieste dall’esecuzione del classificatore abbiamo preso in considerazione le informazioni di cui necessita IGUANA per determinare il livello di rischio di ogni nuovo valore. Ad ogni istante, per ogni segnale fisiologico controllato, devono essere presenti in memoria le seguenti variabili: il valore misurato attuale; il valore misurato precedente (per calcolare slope); il valore della media mobile precedente (per calcolare offset); le soglie di normalità (per calcolare dist); la suddivisione in cluster definita dal modello (3 valori per ogni cluster, corrispondenti ai tre parametri slope, offset e dist); i pesi assegnati alle varie componenti della funzione di calcolo del rischio; il livello di rischio assegnato. 166 Capitolo 7 - Analisi dei risultati In ogni istante di misurazione viene memorizzato il livello di rischio complessivo, che nella nostra implementazione è calcolato come il massimo tra i livelli di rischio dei singoli segnali fisiologici. Inoltre sono necessarie alcune variabili di supporto ai calcoli da svolgere, per esempio i cluster correnti di slope, offset e dist e i valori temporanei della funzione di calcolo del rischio. Per alcune variabili è facile indicarne il tipo (ad esempio il livello di rischio è un valore intero per il quale è più che sufficiente un byte), mentre per altre l’occupazione di memoria dipende dalla precisione con cui si elaborano i segnali, dalla gestione della memoria del sistema operativo del dispositivo mobile e dal tipo di variabili utilizzate per memorizzare i valori misurati. In Tabella 7.7 riportiamo la stima di memoria occupata per ogni segnale misurato, senza considerare il contributo delle variabili temporanee poiché estremamente dipendenti dall’implementazione. Abbiamo supposto di poter allocare variabili con la granularità del byte. variabili valore misurato attuale valore misurato precedente valore della media mobile precedente soglie di normalità slope offset dist cluster di slope, offset, dist soglie dei cluster del modello pesi assegnati livello di rischio assegnato stima 1 byte 1 byte 2 byte 1 byte 1 byte 2 byte 1 byte 1 byte 1 byte 1 byte 1 byte quantità 1 1 1 2 1 1 1 3 3 · nclust 6 1 Tabella 7.7 Occupazione di memoria del classificatore La nostra valutazione tiene conto del numero di intervalli in cui è opportuno discretizzare le misure: per esempio accettiamo che il battito cardiaco possa variare tra 20 e 170 battiti al minuto (NAthresholds, Tabella 5.1), e che i sensori possano rilevarlo con una risoluzione massima di 1 battito, quindi in tutto abbiamo 150 valori misurabili, che richiedono almeno 8 bit per essere rappresentati. È sicuramente possibile migliorare l’implementazione del prototipo per adattarla all’architettura del dispositivo su cui sarà eseguita in modo da ottimizzare il consumo di memoria, ma già allo stato attuale riteniamo che le necessità del classificatore di IGUANA siano minime: (18+3·nclust) byte. Supponendo di usare un modello che calcola 10 cluster, il classificatore richiederebbe 48 byte per ogni segnale per memorizzare le informazioni necessarie all’applicazione di IGUANA. 167 Capitolo 7 - Analisi dei risultati 7.7 Commenti generali Rimandiamo al Capitolo 8 le considerazioni sulla qualità dei risultati ottenuti e sul raggiungimento degli obiettivi che ci eravamo posti. In questo paragrafo evidenziamo alcuni aspetti comuni a diversi esperimenti illustrati nel presente capitolo. La prima osservazione riguarda l’influenza dei dati sui risultati. Non avendo a disposizione le risorse necessarie ad esaminare un campione statisticamente significativo di pazienti, i risultati riportati possono essere influenzati da casi particolari. Abbiamo notato che la fase di creazione del modello tende a discriminare in livelli di rischio diversi le situazioni meno frequenti e più lontane dalla normalità, rispetto al campione di pazienti prescelto. Se i dati dei pazienti campione sono scelti accuratamente, si ottiene un modello che differenzia correttamente le situazioni anomale e raggruppa le situazioni di normalità. Al contrario, se nel campione di pazienti sono presenti individui eterogenei, IGUANA tende ad assegnare i livelli di rischio a quelli più lontani dal comportamento medio. Tuttavia riteniamo che le conclusioni a cui siamo giunti siano indicative del comportamento dell’algoritmo nei diversi casi, siccome gli esperimenti esplorano un insieme di situazioni molto ampio. La seconda osservazione riguarda una situazione particolare che si presenta in alcuni grafici (es. in Figura 7.12, Figura 7.14 e Figura 7.15): la linea verde che indica la soglia di normalità oltrepassa la linea rossa della soglia di rischio assoluto. Con dati di pazienti in condizioni di salute non estremamente gravi, questo caso non dovrebbe mai verificarsi. Per il nostro caso specifico, invece, questa situazione si è verificata a causa dei seguenti motivi: analizziamo il comportamento di pazienti in terapia intensiva, quindi in situazioni cliniche molto gravi, con valori distanti da quelli dei pazienti che ci aspettiamo di valutare con IGUANA; calcoliamo le soglie di normalità come valori di minimo e massimo della media mobile, quindi i dati influenzano i valori scelti, che invece dovrebbero essere assegnati da un medico in base alla valutazione dello stato di salute del paziente e in base alle situazioni che si desiderano rilevare. 168 Capitolo 8 Conclusioni 8.1 Obiettivi raggiunti In questa tesi abbiamo analizzato alcuni aspetti relativi alle problematiche e alle soluzioni nell’ambito dell’analisi di dati clinici, provenienti dal monitoraggio continuo di pazienti anziani. Abbiamo ideato e sviluppato il prototipo di un framework denominato IGUANA (Individuation of Global Unsafe ANomalies and activation of Alarms), in grado di creare un modello dell’andamento fisiologico dei pazienti e di applicarlo ai dati rilevati dai sensori per classificarli. L’obiettivo finale è di ottenere un livello di rischio per il paziente monitorato ad ogni istante di tempo. Ad ogni livello di rischio può essere associato un allarme o un tipo di intervento. Ci siamo concentrati sull’analisi di situazioni di emergenza, quindi abbiamo preso in considerazione il rischio istante per istante, e abbiamo analizzato solo flussi di dati relativi a segnali fisiologici vitali. Tali segnali devono poter essere misurati tramite sensori indossabili e non invasivi, senza limitare i movimenti dei pazienti ad un ambiente chiuso, per considerare anche le situazioni di rischio all’esterno dell’abitazione. Il nostro approccio prevede la trasformazione di ogni valore misurato in tre componenti, denominati offset, slope e dist, e la definizione di una funzione di calcolo del rischio, ottenuta combinandoli in modo appropriato. Per permettere una maggiore flessibilità, abbiamo previsto l’introduzione di alcuni parametri, in parte impostabili dal medico, per personalizzare il modello a seconda del paziente o del tipo di malattia, in parte non fissati a priori, per analizzare i risultati sperimentali in seguito alla loro variazione. Dall’analisi sperimentale abbiamo dedotto dei valori consigliabili per alcuni parametri e abbiamo descritto gli effetti causati dal loro cambiamento, affinché sia possibile individuare facilmente quelli più adeguati ai casi specifici. Dalle prove svolte abbiamo valutato la capacità dell’algoritmo di adattarsi a situazioni diverse a garanzia della possibilità di applicazione del framework per esigenze differenti. IGUANA è in grado di rilevare rischi dovuti a vari fattori, dalle 169 Capitolo 8 - Conclusioni anomalie rispetto al comportamento medio previsto dal modello, al semplice superamento di soglie prestabilite, a variazioni rapide e ampie dei segnali controllati. Tra gli aspetti decisivi per la corretta valutazione del livello di rischio, vi è la scelta accurata del campione di pazienti su cui costruire il modello. Purtroppo nel nostro caso il reperimento di dati adeguati è stato arduo, ma la possibilità di verificare il comportamento di IGUANA in situazioni cliniche estreme, di eccezionale gravità o di assoluta normalità, ci permette di confidare nell’ottenimento di prestazioni paragonabili anche nelle situazioni intermedie più frequenti. Giudichiamo soddisfacenti i risultati ottenuti, in quanto il framework, così come è stato ideato e descritto, raggiunge gli obiettivi che ci eravamo posti, e il prototipo da noi implementato ci ha permesso di valutarne le caratteristiche, anche alla luce delle necessità di calcolo di un dispositivo mobile. Tuttavia, riteniamo necessaria una collaborazione ufficiale con enti di riconosciuta autorevolezza medica per una validazione definitiva, che auspichiamo avvenga in casi clinici reali per analizzare dati più adeguati di quelli a nostra disposizione. 8.2 Sviluppi futuri In questo paragrafo descriviamo le idee per i possibili sviluppi futuri e gli ampliamenti del framework, anche se di secondaria importanza rispetto al nostro obiettivo di intervenire in situazioni di emergenza. 8.2.1 Studio delle correlazioni Da consulenze non ufficiali con esperti del settore medico, abbiamo capito che è sufficiente che uno solo dei segnali superi un certo livello di rischio per fare scattare l’allarme, proprio per l’importanza vitale del segnale fisiologico controllato e per la necessità di intervenire tempestivamente. Siccome noi analizziamo solo parametri fisiologici con queste caratteristiche, non ci siamo posti il problema dello studio delle correlazioni tra di essi. Se invece avessimo avuto a disposizione altre misure, come quelle relative a un accelerometro o a un rilevatore di posizione, avremmo potuto individuare correlazioni tra questo parametro e, ad esempio, il battito cardiaco. In questo modo avremmo potuto differenziare le situazioni in cui la frequenza cardiaca aumenta in condizioni di riposo, da quelle in cui aumenta in seguito ad uno sforzo fisico (queste ultime sono ovviamente meno rischiose). Siccome nel modello manteniamo la sincronizzazione temporale tra i parametri, anziché analizzarli singolarmente, l’aggiunta di un nuovo parametro su cui studiare le correlazioni con gli altri non richiede particolari modifiche. 170 Capitolo 8 - Conclusioni 8.2.2 Funzione di rischio totale Abbiamo ipotizzato che tutti i parametri considerati abbiano la stessa importanza nel calcolo del rischio totale. Quest’ultimo è quindi determinato come il massimo tra i rischi dei vari parametri. Se questa ipotesi non fosse valida, cioè un parametro fosse da ritenersi più importante degli altri, ad esempio a seconda della malattia del paziente, si potrebbe semplicemente modificare il calcolo del rischio totale per adeguarlo alle nuove necessità. 8.2.3 Macchina a stati Ci siamo concentrati sull’analisi di situazioni di emergenza istantanee, cioè situazioni in cui non è possibile aspettare nuove misure per valutarne il rischio perché la gravità richiede un intervento immediato. Se volessimo considerare l’evoluzione su più istanti di tempo, ad esempio per valutare il rischio dovuto alla permanenza in una situazione anomala, si potrebbe introdurre una macchina a stati. Questa aggiunta potrebbe provocare un ritardo nel tempo d’intervento, che dovrà essere limitato con opportuni meccanismi. In base allo stato corrente e a quelli degli istanti precedenti si individuerebbero rischi diversi. Questa modifica sarebbe utile per anticipare una futura situazione di allarme, e quindi riuscire a prevederla. 8.2.4 Frequenza di misurazione La nostra implementazione prevede che i dati rilevati dai sensori siano misurati con una frequenza costante, la stessa con cui sono forniti i dati per la creazione del modello. Sarebbe utile implementare il classificatore in modo che insieme ai nuovi dati siano forniti anche i relativi istanti di tempo in cui sono stati misurati, in modo da gestire valori misurati con frequenze diverse o sensori temporaneamente scollegati. Attualmente richiediamo al sistema di fornirci in ogni caso una misura, eventualmente impostata a un valore nullo o non pervenuto, per mantenere la sincronizzazione delle rilevazioni. 8.2.5 Creazione del modello bilanciata Abbiamo notato che la fase di creazione del modello tende a discriminare in livelli di rischio diversi le situazioni meno frequenti e più lontane dalla normalità, rispetto al campione di pazienti prescelto. Potrebbe essere necessario modificare la fase di creazione del modello per attribuire un peso minore ai pazienti più gravi, in modo da diminuire la loro influenza. 171 Indice delle figure Figura 2.1 Esempi di orologi per la misura del battito cardiaco .......................................5 Figura 2.2 Intervallo tra due punti R.................................................................................5 Figura 2.3 Esempi di bracciali per la misura della pressione arteriosa.............................6 Figura 2.4 Sensore a pinza per la misura della saturazione di ossigeno ...........................6 Figura 2.5 Cerotto per la misura della saturazione di ossigeno ........................................7 Figura 3.1 Il processo di knowledge discovery nelle basi di dati ....................................14 Figura 4.1 Schema generale di funzionamento ...............................................................35 Figura 4.2 Esempio di calcolo di offset, slope e dist.......................................................38 Figura 4.3 Trasfomazione di alcuni punti nelle coordinate slope-offset .........................39 Figura 4.4 Contributo del primo termine nel calcolo del rischio ....................................40 Figura 4.5 Contributi dei primi due termini nel calcolo del rischio................................40 Figura 4.6 Istogramma della distribuzione dei valori ipotizzata.....................................42 Figura 4.7 Istogramma della distribuzione dei valori alternativa ...................................42 Figura 4.8 Classificatori per i tre tipi di modelli.............................................................44 Figura 4.9 Risultato dell’applicazione del primo modello..............................................45 Figura 4.10 Risultato dell’applicazione del secondo modello ........................................46 Figura 4.11 Risultato dell’applicazione del terzo modello .............................................47 Figura 4.12 Rischio totale riportato sui quattro parametri ..............................................48 Figura 5.1 Logo di R .......................................................................................................49 Figura 5.2 Fase di lettura dei dati....................................................................................54 Figura 5.3 Fase di pre-elaborazione dei dati ...................................................................57 Figura 5.4 Calcolo della media mobile ...........................................................................58 Figura 5.5 Media mobile senza considerare il rischio dei punti .....................................58 Figura 5.6 Fase di calcolo della media mobile................................................................59 Figura 5.7 Fase di creazione del primo tipo di modello..................................................61 Figura 5.8 Esempio di dendrogramma ............................................................................62 Figura 5.9 Fase di creazione del secondo tipo di modello ..............................................63 Figura 5.10 Fase di creazione del terzo tipo di modello .................................................64 Figura 5.11 Fase di classificazione usando il primo tipo di classificatore......................67 Figura 5.12 Fase di classificazione usando il secondo tipo di classificatore ..................70 Figura 5.13 Fase di classificazione usando il terzo tipo di classificatore .......................74 Figura 6.1 Schema della lettura e memorizzazione dei dati da file ................................86 Figura 6.2 Dati originali..................................................................................................88 Figura 6.3 Dati dopo la rimozione degli outlier..............................................................89 172 Indice delle figure Figura 6.4 Dati dopo la rimozione dei valori NA isolati .................................................90 Figura 6.5 Più lunga sottosequenza senza valori nulli (NA)............................................91 Figura 6.6 Fase di ricampionamento dei dati ..................................................................92 Figura 6.7 Dati ricampionati ...........................................................................................93 Figura 7.1 Grafico del rischio usando il modello Iguana3_resp ...................................102 Figura 7.2 Grafico del rischio usando il modello Iguana3_resp_males........................103 Figura 7.3 Grafico del rischio usando il modello Iguana3_resp_females.....................104 Figura 7.4 Grafico del rischio usando il modello Iguana3_mix ...................................105 Figura 7.5 Grafico del rischio usando il modello Iguana3_resp ...................................106 Figura 7.6 Dendrogramma di offset del parametro ABPdias ........................................107 Figura 7.7 Dendrogramma di slope del parametro ABPdias ........................................108 Figura 7.8 Dendrogramma di dist del parametro ABPdias ...........................................108 Figura 7.9 Grafico del rischio usando il modello Iguana3_mix_nclust=5....................110 Figura 7.10 Grafico del rischio usando il modello Iguana3_mix..................................111 Figura 7.11 Grafico del rischio usando il modello Iguana3_mix_nclust=30................112 Figura 7.12 Grafico del rischio usando il modello Iguana3_mix_movwin=2 ..............114 Figura 7.13 Grafico del rischio usando il modello Iguana3_mix_movwin=60 ............115 Figura 7.14 Grafico del rischio usando il modello Iguana3_mix_nsamples=5 ............117 Figura 7.15 Grafico del rischio usando il modello Iguana3_mix_ nsamples=60 .........118 Figura 7.16 Grafico del rischio usando il modello Iguana3_mix..................................120 Figura 7.17 Grafico del rischio usando il modello Iguana3_mix_ Nthresholds ...........121 Figura 7.18 Grafico del rischio usando il modello Iguana3_mix..................................122 Figura 7.19 Grafico del rischio usando il modello Iguana3_mix_ Nthresholds ...........123 Figura 7.20 Grafico del tempo di elaborazione totale del clustering gerarchico ..........126 Figura 7.21 Grafico del tempo di elaborazione totale del clustering k-means..............126 Figura 7.22 Grafico del tempo di elaborazione unitario del clustering gerarchico.......127 Figura 7.23 Grafico del tempo di elaborazione unitario del clustering k-means ..........128 Figura 7.24 Grafico del rischio usando il clustering gerarchico ...................................130 Figura 7.25 Grafico del rischio usando il clustering k-means ......................................131 Figura 7.26 Grafico del rischio usando il clustering gerarchico ...................................132 Figura 7.27 Grafico del rischio usando il clustering k-means ......................................133 Figura 7.28 Grafico dei tempi impiegati dal clustering gerarchico ..............................135 Figura 7.29 Grafico del rischio usando il metodo single ..............................................136 Figura 7.30 Grafico del rischio usando il metodo complete .........................................137 Figura 7.31 Grafico del rischio usando il metodo average ...........................................138 Figura 7.32 Grafico del rischio usando il metodo centroid...........................................139 Figura 7.33 Grafico del rischio usando il metodo ward................................................140 Figura 7.34 Grafico del rischio della prova 1 ...............................................................142 Figura 7.35 Grafico del rischio della prova 2 ...............................................................143 Figura 7.36 Grafico del rischio della prova 3 ...............................................................144 Figura 7.37 Grafico del rischio della prova 4 ...............................................................145 Figura 7.38 Grafico del rischio della prova 5 ...............................................................146 Figura 7.39 Grafico del rischio della prova 6 ...............................................................147 173 Indice delle figure Figura 7.40 Grafico del rischio della prova 7 ...............................................................149 Figura 7.41 Grafico del rischio della prova 8 ...............................................................150 Figura 7.42 Grafico del rischio della prova 9 ...............................................................151 Figura 7.43 Grafico dei dati classificati con 3 livelli di rischio ....................................153 Figura 7.44 Grafico dei dati classificati con 4 livelli di rischio ....................................154 Figura 7.45 Grafico dei dati classificati con 5 livelli di rischio ....................................155 Figura 7.46 Grafico dei dati classificati con 7 livelli di rischio ....................................156 Figura 7.47 Grafico dei dati di Fantasia con soglie ampie............................................159 Figura 7.48 Grafico dei dati di Fantasia con soglie strette............................................160 Figura 7.49 Grafico dei dati di Fantasia con anomalia .................................................162 Figura 7.50 Grafico dei dati di MIMIC classificati col modello di Fantasia ................163 Figura 7.51 Tempo impiegato per classificare una misura ...........................................166 174 Indice delle tabelle Tabella 3.1 Tecniche, formalismi e funzionalità di data mining.....................................19 Tabella 5.1 Soglie di outlier ............................................................................................55 Tabella 5.2 Esempio di coordinate dei centri di cluster ..................................................66 Tabella 5.3 Esempio di soglie di cluster per algoritmo gerarchico.................................68 Tabella 5.4 Esempio di soglie di cluster per algoritmo kmeans .....................................69 Tabella 5.5 Soglie assolute..............................................................................................69 Tabella 5.6 Esempio di soglie di cluster di offset ...........................................................72 Tabella 5.7 Esempio di soglie di cluster di slope............................................................72 Tabella 5.8 Esempio di soglie di cluster di dist ..............................................................73 Tabella 7.1 Pesi predefiniti delle componenti del rischio ...............................................96 Tabella 7.2 Soglie di normalità per i segnali fisiologici da letteratura medica...............98 Tabella 7.3 Confronto dei tempi impiegati dal clustering gerarchico e k-means .........125 Tabella 7.4 Confronto dei tempi impiegati dal clustering gerarchico...........................134 Tabella 7.5 Valori dei pesi nelle prove svolte...............................................................141 Tabella 7.6 Tempi (in secondi) richiesti dalla fase di classificazione...........................165 Tabella 7.7 Occupazione di memoria del classificatore................................................167 175 Bibliografia I siti Internet citati sono stati visitati nel periodo giugno - agosto 2005. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. http://www.diovan.ch/files/Patientenbroschuere_i.pdf http://www.cuore.iss.it http://www.guidant.it/Patient/Conditions/brady/glance.aspx http://www.adieta.it/carello/categoria.asp?categoria=13 http://www.skyaid.org http://www.zoll.com/docs/9650-0202-11_RevD.pdf http://www.resmedica.it http://www.tecnohealth.it http://www.mobihealth.org/ http://www.buonenotizie.it http://www.forumpa.it/forumpa2005 http://www.informanziani.it F. Duchene, C. Garbay, V. Rialle, Mining Heterogeneous Multivariate Time-Series for Learning Meaningful Patterns: Application to Home Health Telecare, 2004 F. Duchene, V. Rialle, N. Noury, Home Health Telecare: Proposal of an Architecture for Patient Monitoring and Critical Situation Detection, 2002 Diane J. Cook, Sajal Das, Karthik Gopalratnam, Abhishek Roy, Health Monitoring in an Agent-Based Smart Home Weiqiang Lin, Mehmet A. Orgun, Graham J. Williams, Mining Temporal Patterns from Health Care Data Clàudia M. Antunes, Arlindo L. Oliveira , Temporal Data Mining: an overview Vincenzo Antonio Manganaro, Scoperta di sequenze di comportamento Ramakrishnan Srikant, Rakesh Agrawal, Mining Sequential Patterns: Generalizations and Performance Improvements Minos N. Garofalakis, Rajeev Rastogi, Kyuseok Shim, SPIRIT: Sequential Pattern Mining with Regular Expression Constraints Mohammed J. Zaki, SPADE: An Efficient Algorithm for Mining Frequent Sequences Clàudia Antunes, Arlindo L. Oliveira, Generalization of Pattern-growth Methods for Sequential Pattern Mining with Gap Constraints 176 Bibliografia 23. M. J. Zaki, N. Lesh, M. Ogihara, Planmine: Sequence Mining for Plan Failures, 1999 24. John F. Roddik, Myra Spilopoulou, A Survey of Temporal Knowledge Discovery Paradigs and Methods, 2002 25. B. G. Celler, T. Hesketh, W. Earnshaw, E. Ilsar, An Instrumentation System For The Remote Monitoring Of Changes In Functional Health Status Of The Elderly At Home 26. Vincent Rialle, Norbert Noury, Thierry Hervé, An Experimental Health Smart Home and Its Distributed Internet-based Information and Communication System: First Steps of a Research Project, 2001 27. M. J. Rodriguez, M. T. Arredondo, F. del Pozo, E. J. Gbmez, A. Martinez, A. Dopico, A Home Telecare Management System 28. H. Garsden, J. Basilakis, B. G. Celler, K. Huynh, N. H. Lovell, A Home Health Monitoring System Including Intelligent Reporting and Alerts 29. Mitsuhiro Ogawa, Tastuo Togawa, Attempts at Monitoring Health Status in the Home 30. K. Doughty, R Isak, P. J. King, P. Smith, G. Williams, MIDAS - Miniature Intelligent Domiciliary Alarm System - A Practical Application Of Telecare 31. Kevin Doughty, Gareth Williams, Towards a Complete Home Monitoring System, 2001 32. http://www.dis.uniroma1.it/~spqr/tesi/todini/doc/cap1.doc 33. Michele Scardi, Tecniche Di Analisi Dei Dati In Ecologia, 1998, pagg. 912, 20-25 (http://www.bio.unipg.it/ecologia/Download/metodi_di_analisi _dati.pdf) 34. http://etd.adm.unipi.it/theses/available/etd-11272003-220300/unrestricted /02_capitolo1.pdf 35. R. Ng, J. Han, Efficient and effective clustering method for spatial data mining, VLDB’94 36. Jiawei Han, Micheline Kamber, Data Mining: Concepts and Techniques Slides for Textbook Chapter 8 37. Università degli studi di Roma “La Sapienza”, Facoltà di Scienze della Comunicazione, Cluster Analisys; adattamento a cura di I. Mingo e A. Mussino: Lezioni di Statistica Sociale, Dipartimento di Statistica Probabilità e Statistiche Applicata, capitolo V, pagg. 133-153 (http://www.comunicazione.uniroma1.it/fonti/cluster.pdf) 38. Eamonn Keogh, Jessica Lin, Clustering of time-series subsequences is meaningless: implications for previous and future research, 2004 39. M. Ester, H. P. Kriegel, J. Sander, X. Xu, A density-based algorithm for discovering clusters in large spatial databases, KDD’96 40. R. Agrawal, J. Gehrke, D. Gunopulos, P. Raghavan, Automatic subspace clustering of high dimensional data for data mining applications, SIGMOD’98 177 Bibliografia 41. W. Wang, Yang, R. Muntz, STING: A Statistical Information grid Approach to Spatial Data Mining, VLDB’97 42. R Development Core Team (2005). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. ISBN 3-900051-07-0, http://www.R-project.org 43. Garetto, La nuova medicina d’urgenza, Catania, Genova, edizioni tecnico scientifiche SRL, 1994, pag. 835 44. Harrison, Principi di medicina interna, McGraw Hill, 1992, pag. 315, pag. 1349. 45. Tassaux, Clergue, Monitoraggio perioperatorio dell’ossigeno e dell’anidride carbonica, encycl. med. chir., anestesia-rianimazione, 36-382A-10, 2003 46. Clergue, Barre, Ourahma, Monitoraggio interoperatorio dell’ossigeno e dell’anidride carbonica, encycl. med. chir., anestesia-rianimazione, 36-385A-10, 1995 47. Stan Salvador, Philip Chan, John Brodie, Learning States and Rules for Time Series Anomaly Detection, 2003 48. G. Karypis, E. H. Han, V. Kumar, CHAMELEON: hierarchical clustering using dynamic modeling, 1999 178 Individuazione di situazioni di rischio in dati clinici rilevati da sensori Relatore: prof. Elena Baralis Candidati: Daniele Apiletti Giulia Bruno Un insieme relativamente vasto di persone è affetto da patologie o presenta disturbi di coscienza tali da non poter formulare richieste di aiuto al di fuori di contesti perimetralmente definiti. Spesso l’assistenza permanente o il ricovero in ospedale non sono indispensabili, ma richiesti ugualmente dal paziente per avere un soccorso immediato in caso di necessità (ad esempio un malore improvviso o un’alterazione pericolosa di valori fisiologici). Grazie agli ultimi sviluppi tecnologici nell’area delle reti di sensori, è possibile monitorare continuamente i parametri vitali dei soggetti sotto osservazione, indipendentemente dalle attività da loro svolte e dai luoghi in cui si trovano. Diversi segnali vitali possono essere rilevati attraverso una piccola rete di sensori, integrati in oggetti poco invasivi come orologi o bracciali distribuiti sul corpo umano. In caso di malessere o di alterazione significativa di uno o più segnali vitali, è possibile identificare una situazione di rischio e richiedere un intervento adeguato. Recentemente si stanno sviluppando progetti per realizzare sia dispositivi tecnologici adatti alla raccolta e alla trasmissione dei dati, sia algoritmi per il trattamento dei dati misurati e la loro interpretazione, allo scopo di individuare situazioni di rischio in tempo reale e inviare immediatamente in modo automatico richieste di aiuto. In questa tesi ci siamo prefissati di ideare e realizzare un algoritmo di analisi e interpretazione dei dati volto alla caratterizzazione e all'individuazione tempestiva di situazioni di emergenza. L’obiettivo finale è di essere in grado di assegnare un livello di rischio al paziente controllato in ogni istante di tempo, a partire dai flussi di dati inviati dai sensori, che monitorano diversi segnali fisiologici. La soluzione che proponiamo si sviluppa in due fasi: la prima consiste nella creazione di un modello attraverso l’analisi di una parte dei dati a disposizione, in modo da determinare quali situazioni sono più frequenti (normali) e quali meno frequenti (più rischiose); la seconda parte consiste nell’applicazione del modello per classificare i restanti dati. Entrambe le fasi sono precedute da una pre-elaborazione dei dati: sostituzione dei valori errati dovuti al malfunzionamento dei sensori con valori nulli, in modo che non influenzino né il modello creando classi sbagliate, né il classificatore causando falsi allarmi, ed eventuale ricampionamento dei dati se la frequenza di campionamento dei sensori è troppo elevata. La prima fase è preceduta da un ulteriore passo di calcolo della più lunga sottosequenza senza valori nulli, per selezionare dati adeguati alla costruzione del modello. La Figura 1 mostra graficamente quanto spiegato. dati per il modello preelaborazione dati da classificare preelaborazione sottosequenza senza NA creazione modello classificazione dati classificati Figura 1 - Schema di funzionamento di IGUANA Abbiamo denominato il nostro framework IGUANA (Individuation of Global Unsafe ANomalies and activation of Alarms), intendendo includere in questo termine tutto il processo di elaborazione dei dati appena descritto. I Abbiamo considerato il monitoraggio delle misure di pressione arteriosa diastolica e sistolica, battito cardiaco e saturazione arteriosa di ossigeno, in quanto sono fondamentali per la rilevazione di situazioni di emergenza e sono misurabili tramite apparecchiature non invasive. Per ogni parametro abbiamo determinato il rischio istantaneo valutando i seguenti aspetti: • considerando che un valore è tanto più rischioso quanto più è raro, e viceversa, tanto più normale quanto più frequente, abbiamo individuato gli estremi dell’intervallo in cui ricade la maggior parte dei valori, denominandoli “soglie di normalità”; abbiamo denominato dist la distanza del valore da tali soglie; • il rischio dipende dalla distanza dalla media dinamica del paziente calcolata sui valori più recenti; abbiamo denominato offset la distanza del valore da tale media; • l’andamento dei valori misurati influisce sul rischio attuale; abbiamo denominato slope la pendenza della retta che unisce il nuovo valore a quello precedente. Combinando i contributi dei tre aspetti appena descritti, opportunamente pesati, abbiamo definito una funzione di calcolo del rischio istantaneo dovuto ad ogni parametro. Combinando infine i rischi istantanei di ogni parametro, abbiamo definito il rischio totale istantaneo per il paziente. Per costruire il modello abbiamo preso in considerazione varie tecniche di data mining, tra cui la scoperta di regole di associazione, la classificazione e il clustering. Abbiamo scelto quest’ultimo come il più adatto al nostro scopo, per dividere in classi i valori delle componenti del rischio (offset, slope e dist). Al termine di questa fase il modello contiene i cluster in cui sono stati divisi tali valori. Per quanto riguarda la scelta degli algoritmi di clustering, abbiamo preso in considerazione sia gli algoritmi di partizionamento, sia quelli gerarchici, provando per questi ultimi vari metodi di calcolo della distanza inter-cluster. Dopo la creazione del modello, siamo passati alla fase della sua applicazione per classificare nuovi dati, che possono contenere valori nulli, quindi abbiamo previsto che il classificatore sia in grado di gestirli. Abbiamo deciso che, se un sensore non rileva la misura di un parametro, tale parametro non va ad influire sul calcolo del rischio totale istantaneo per il paziente. La classificazione dei nuovi dati consiste nell’attribuzione di un rischio a ogni valore misurato. Questa operazione è svolta trasformando il valore nelle tre componenti del rischio (offset, slope e dist) e assegnandole ai rispettivi cluster individuati dal modello. Questi vengono opportunamente combinati in una funzione di calcolo del rischio che fornisce il livello di pericolosità istantanea del relativo segnale fisiologico. In Figura 2 mostriamo un esempio dei risultati ottenuti applicando IGUANA ai dati relativi alla pressione arteriosa diastolica (ABPdias, Arterial Blood Pressure - diastolic) di un paziente. Il colore indica il livello di rischio; in ordine di rischio crescente, dalle situazioni di normalità a quelle più pericolose, si hanno i punti colorati di verde, giallo, arancione, rosso o viola. Le righe verdi orizzontali indicano le soglie di normalità. L’ultimo passo è determinare il rischio totale del paziente ad ogni istante: abbiamo deciso di calcolarlo come il massimo tra quelli dei singoli segnali. Infatti, siccome abbiamo considerato solo segnali vitali, è sufficiente che uno solo di essi superi un certo livello di rischio per attivare l’allarme, proprio per l’importanza vitale del segnale fisiologico controllato e per la necessità di intervenire tempestivamente. Per analizzare il comportamento di IGUANA abbiamo sviluppato un prototipo del framework in R, un linguaggio e un ambiente specifico per l’utilizzo di funzioni statistiche e la visualizzazione di grafici. L’obiettivo dell’implementazione è di valutare velocemente i risultati ottenuti con il prototipo. R ci ha fornito sia le funzionalità grafiche necessarie, sia le librerie adatte alla nostra analisi e non abbiamo considerato come limitazione l’incapacità di gestire grandi basi di dati, in quanto di secondaria importanza rispetto all’obiettivo principale. Tra gli aspetti decisivi per la corretta valutazione del livello di rischio, vi è la scelta accurata del campione di pazienti su cui costruire il modello. Purtroppo nel nostro caso il reperimento di dati adeguati è stato arduo, ma la possibilità di verificare il comportamento di IGUANA con situazioni II cliniche estreme, di eccezionale gravità o di assoluta normalità, ci permette di confidare nell’ottenimento di prestazioni paragonabili anche nelle situazioni intermedie più frequenti. Abbiamo scelto 64 registrazioni della base di dati MIMIC1, relativa a pazienti in terapia intensiva affetti da diverse patologie, e 20 registrazioni dalla base di dati Fantasia2, relativa a persone in buono stato di salute, di cui è disponibile il solo segnale del battito cardiaco. Entrambe le basi di dati provengono dall’archivio PhysioBank3 (Harvard-MIT Division of Health Sciences and Technology) e sono relative a persone di entrambi i sessi con età superiore a 60 anni. Figura 2 - Valori in mmHg misurati ogni 15 secondi, classificati secondo il livello di rischio Abbiamo eseguito numerosi esperimenti, creando diversi tipi di modelli, per analizzare il comportamento di IGUANA in varie situazioni. Per permettere una maggiore flessibilità, abbiamo previsto l’introduzione di alcuni parametri, in parte impostabili dal medico, per personalizzare il modello a seconda del paziente o del tipo di malattia, in parte per analizzare i diversi risultati in seguito alla loro variazione. Dall’analisi sperimentale abbiamo dedotto i valori consigliabili per i parametri e abbiamo descritto gli effetti causati dal loro cambiamento, affinché sia possibile individuare facilmente quelli più adeguati al proprio caso. Le prove svolte hanno confermato la capacità dell’algoritmo di adattarsi a situazioni eterogenee, a garanzia della possibilità di applicazione del framework per esigenze differenti. IGUANA è in grado di rilevare rischi dovuti a vari fattori, dalle anomalie rispetto al comportamento medio previsto dal modello, al semplice superamento di soglie prestabilite, a variazioni rapide e ampie dei segnali controllati. Giudichiamo soddisfacenti i risultati ottenuti, in quanto il framework, così come è stato ideato e descritto, raggiunge gli obiettivi che ci eravamo posti, e il prototipo da noi implementato ci ha permesso di valutarne le caratteristiche, anche alla luce delle necessità di calcolo di un dispositivo mobile. Tuttavia riteniamo necessaria una collaborazione ufficiale con enti di riconosciuta autorevolezza medica per una validazione definitiva, che auspichiamo avvenga in casi clinici reali per analizzare dati più adeguati di quelli a nostra disposizione. 1 http://www.physionet.org/physiobank/database/fantasia/ http://www.physionet.org/physiobank/database/mimicdb/ 3 http://www.physionet.org/resource.shtml 2 III