Algoritmi evolutivi: cosa sono, in quali casi possono essere applicati

Algoritmi evolutivi: cosa sono, in quali casi possono essere applicati

Si tratta di processi ispirati alle principali teorie dell’evoluzione naturale della biologia moderna, da Darwin e Wallace a Weismann e Mendel. In generale, i pilastri fondamentali su cui si basano queste tecniche sono: riproduzione, variazione, competizione e selezione.

Nel mondo industriale moderno è necessario adattare continuamente il sistema produttivo per rispondere velocemente alle esigenze del mercato.

Il cambiamento può riguardare la modifica della configurazione di uno o più livelli dell’assetto aziendale: da un macchinario alla struttura del magazzino, dalla progettazione di un prodotto all’organizzazione aziendale e così via. Spesso non è possibile valutare tutte le possibili configurazioni e per questo le aziende si affidano all’esperienza o alle linee guida disponibili, per poi accontenta accontentarsi di livelli di prestazione non ottimali.

Nel campo dell’intelligenza artificiale sono stati sviluppati numerosi algoritmi che permettono di esplorare velocemente le possibili configurazioni di un sistema individuando quelle che permettono di raggiungere prestazioni migliori.

Algoritmi evolutivi, cosa sono

Un approccio applicato in diversi settori industriali è rappresentato da un insieme di meta-euristiche appartenenti alla categoria degli algoritmi evolutivi. Questi algoritmi si ispirano alle principali teorie dell’evoluzione naturale della biologia moderna: evoluzione e selezione naturale (Darwin, Wallace), selezionismo (Weismann) e genetica (Mendel). In generale, i pilastri fondamentali su cui si basano queste tecniche sono i seguenti:

  • riproduzione
  • variazione
  • competizione e selezione

La riproduzione è il processo di generazione di nuovi elementi di una popolazione a partire dai genitori. La variazione è una sorta di mutazione, spesso inattesa e casuale che si ha nel processo di generazione della nuova progenie. Infine, la competizione tra i nuovi elementi e la selezione dei migliori sono i processi inevitabili di sopravvivenza in un ambiente con risorse limitate.

Per approfondire la conoscenza sul funzionamento di un algoritmo evolutivo si potrebbe provare a risolvere il seguente indovinello delle otto regine.

Nell’indovinello delle otto regine si devono posizionare otto regine, appunto, sulla scacchiera in modo tale che nessuna regina sia minacciata da un’altra. Per chi non avesse esperienza del gioco degli scacchi la regina può mangiare muovendosi in orizzontale, verticale e in diagonale di un numero a piacere di caselle. Per esempio, la regina in d5 di figura 1b minaccia le regine in b3c6f3, e h5. Le possibili disposizioni delle otto regine sulla scacchiera sono 4.426.165.368 (sì, più di 4 miliardi) e anche solo limitando le possibilità mettendo al massimo una regina per ciascuna riga (o colonna) avremmo comunque 16.777.216 possibili configurazioni da valutare e solo 92 soluzioni che risolvono l’indovinello. Provare tutte le possibili soluzioni non aiuterebbe la ricerca di una soluzione plausibile.

Un modo per risolvere il problema, esplorando un numero contenuto di configurazioni è l’utilizzo di un algoritmo genetico, un algoritmo evolutivo che si ispira al processo di trasmissione dei geni dal cromosoma dei genitori ai figli. L’algoritmo genetico si compone di una sequenza di operazioni:

  1. generazione di una popolazione iniziale
  2. crossover
  3. mutazione
  4. valutazione della popolazione
  5. selezione

La fase 1 è eseguita una sola volta, all’inizio del processo, le fasi successive sono ripetute in sequenza per un numero di volte stabilito inizialmente. Solitamente si decide di fermare l’esecuzione dell’algoritmo dopo un certo periodo di tempo/numero di cicli o se la soluzione è soddisfacente.

Fase 1: Generazione di una popolazione iniziale

In generale la popolazione dell’algoritmo è composta da decine, centinaia o migliaia di elementi in modo tale da avere maggiore variabilità e poter esplorare un numero più ampio di configurazioni. Per questo esempio ci limiteremo a due soli elementi.

Le due configurazioni Genitore 1 e 2 in figura 1 non sembrano molto promettenti perché molte regine si minacciano a vicenda. La soluzione dell’indovinello sembrerebbe ancora lontana.

  1. Genitore 1
  1. Genitore 2

Figura 1. Genitore 1 e Genitore 2 sono due possibili soluzioni che non risolvono l’indovinello delle otto regine.

Fase 2: Crossover

Si immagina la scacchiera come se fosse una sequenza di cromosomi e si genera un Figlio prendendo metà del patrimonio genetico dei due genitori. A titolo di esempio, si potrebbe dividere le due scacchiere a metà, trasmettere la parte sinistra di Genitore 1 e la parte destra di Genitore 2 come mostra figura 2 e unire le due parti in un Figlio in figura 3.

  1. Genitore 1
  1. Genitore 2

Figura 2: Consideriamo le scacchiere come sequenze di DNA e teniamo la parte sinistra di Genitore 1 e la parte destra di Genitore 2.

Figura 3: Figlio prima della mutazione. La metà sinistra di Genitore 1 unita alla metà destra di Genitore 2.

Fase 3: Mutazione

La mutazione genetica è un cambiamento, spesso casuale, che comporta una modifica del genoma. Analogamente, l’algoritmo genetico applica una variazione alla configurazione Figlio in figura 3 cambiando la posizione di uno o più elementi del genoma. Al fine della buona riuscita dell’algoritmo una mutazione “fortunata” della configurazione è lo spostamento di e1 in f1 e f3 in e3 che genera una soluzione dell’indovinello in figura 4.

Figura 4: Soluzione

Fase 4: Valutazione

La valutazione degli elementi della popolazione permette di scartare le configurazioni peggiori. In questo caso un criterio potrebbe essere quello di contare il numero di coppie di regine che si minacciano. Ad esempio, Genitore 1 ha 7 coppie di regine minacciate ed è una configurazione leggermente migliore di Genitore 2 che ne ha 8. Il Figlio Mutato in figura 4 è una soluzione dell’indovinello dove non ci sono coppie di regine che si minacciano.

Fase 5: Selezione

Adesso abbiamo 3 configurazioni Genitore 1Genitore 2 e Figlio Mutato, che si valuta con il criterio del numero di coppie di regine minacciate, rispettivamente 7, 8 e 0. La selezione permette solo agli elementi migliori di sopravvivere e in questo caso le soluzioni migliori sono Genitore 1 e Figlio Mutato perché sono configurazioni con un numero minore di regine minacciate.

A questo punto l’algoritmo può interrompersi e mettere a disposizione le soluzioni trovate oppure continuare a esplorare configurazioni ripartendo dalla Fase 2.

Gli algoritmi evolutivi sono una valida opzione per poter risolvere un vasto panorama di problemi. I principi alla base del funzionamento sono generici e adattabili a molteplici utilizzi.

L’applicazione degli algoritmi evolutivi

Per questi motivi, gli algoritmi evolutivi sono stati applicati con successo a molti problemi sia classici sia industriali. A titolo di esempio, il problema di scheduling è un problema che ogni azienda industriale si trova ad affrontare quando una serie di lavorazioni deve essere svolta in un determinato tempo e secondo una determinata sequenza, occupando delle risorse spesso limitate, come strumenti, macchinari o materie prime.

In questa categoria di problemi l’obiettivo è trovare la giusta configurazione di assegnamento di operazioni e risorse per ottimizzare la produzione. Un’altra applicazione trasversale a molti settori industriali riguarda i problemi di instradamento per la logistica interna ed esterna, più in dettaglio: decidere quanti mezzi sono necessari per la movimentazione, quali percorsi sono migliori e quando i mezzi devono mettersi in movimento. Gli algoritmi evolutivi sono anche stati applicati a problemi di specifici settori, ad esempio, la verifica dei componenti dei telefoni cellulari.

CONCLUSIONI

Per concludere, quando si usano queste tecniche una particolare attenzione deve essere rivolta alla scelta della funzione di valutazione degli elementi della popolazione. Da un lato, gli algoritmi evolutivi funzionano meglio se la valutazione della configurazione descrive con maggiore l’accuratezza la bontà della soluzione. Riprendendo l’esempio dell’Indovinello delle Regine un criterio per valutare una scacchiera potrebbe essere binario: giusto o sbagliato. Una configurazione è giusta se risolve l’indovinello, sbagliata altrimenti.

Però, come abbiamo visto, ci sono diverse gradazioni di sbagliato: 7 coppie di regine si minacciano, 8 coppie di regine… In questo modo abbiamo una descrizione migliore di quanto siamo distanti dalla soluzione e questo semplifica il lavoro del nostro algoritmo perché permette di scartare le soluzioni peggiori e tenere quelle più vicine all’obiettivo (anche se non sempre aiuta).

Dall’altro lato la valutazione è l’operazione con maggior costo computazionale e una funzione complessa può rallentare l’esecuzione dell’algoritmo.

In breve, i benefici e i punti deboli degli algoritmi evolutivi sono i seguenti:

Pros:

  • più veloci di altri algoritmi
  • semplici: richiedono poca conoscenza del dominio di applicazione
  • l’interruzione anticipata restituisce comunque una soluzione

Cons:

  • non si ha certezza di aver trovato l’ottimo assoluto
  • può non essere facile definire una funzione di valutazione

 

Bibliografia

Kaufmann, Paul, Castillo, Pedro A. (Eds.), “Proceedings of the 22nd International Conference, EvoApplications” 2019, Held as Part of EvoStar 2019, Leipzig, Germany, April 24–26, 2019.

Sanchez, Ernesto, Giovanni Squillero, and Alberto Tonda. “Industrial applications of evolutionary algorithms.” 2012.

Medicina e intelligenza artificiale: come le macchine possono migliorare la nostra salute

Medicina e intelligenza artificiale: come le macchine possono migliorare la nostra salute

Il settore della medicina sta mostrando un grande interesse nei confronti dell’Intelligenza Artificiale e soprattutto delle tecniche di Machine Learning in grado di fornire strumenti migliori agli operatori sanitari e più personalizzazione delle cure ai pazienti. Riflettori puntati sul Deep Learning con cui gestire in modo automatizzato le terapie.

Col passare degli anni, sono sempre più le discipline che stanno mostrando un grande interesse nei confronti dell’intelligenza artificiale: una di queste è il settore medico, con la ricerca proiettata nell’utilizzo di tecniche di Machine Learning in grado di migliorare le diagnosi, individuare le schematicità di una ben determinata patologia e, più in generale, di fornire strumenti migliori a disposizione dei dottori, in modo da poter intervenire sui singoli pazienti tramite contromisure adattate ad esigenze specifiche. Non solo: le recenti tecniche di deep learning potrebbero consentire in un futuro prossimo di avere fasi delle terapie totalmente automatizzate, permettendo a medici e operatori del settore di dedicarsi maggiormente allo studio di nuove soluzioni.

AI in campo medico

Cosa succederebbe se un gruppo di esperti potesse essere sempre ai servizi di un singolo paziente? Come fare per ridurre gli errori che possono essere compiuti nella formulazione di una diagnosi? In un mondo ideale, ogni terapia verrebbe formulata andando incontro con estrema precisione alle esigenze del singolo, prendendo spunto sia dalla sua storia clinica che dalla conoscenza collettiva data da milioni di altri pazienti: grazie al Machine Learning, i medici possono rompere i limiti imposti da una conoscenza circostanziale, derivante dall’applicazione di terapie su un numero ristretto di pazienti, attraverso l’uso di una “esperienza condivisa”, grazie alla quale formulare terapie ottimizzate per una persona specifica [1]. Non solo: l’adozione di tecniche di intelligenza artificiale può permettere la totale automazione di alcune fasi cliniche, agevolando il lavoro degli specialisti.

Prognosi

Una prognosi è un procedimento grazie al quale si può predire lo sviluppo di una certa malattia. Un modello di machine learning è in grado di permettere ai medici di prevedere eventi futuri: tra quanto verosimilmente un paziente potrà tornare alla vita di tutti i giorni dopo essersi sottoposto a delle cure? Quanto velocemente progredirà una malattia? Un modello algoritmico richiede dei dati in grado di fornire un quadro completo, inclusi i risultati delle terapie alle quali il paziente si è sottoposto in passato [1]. A livello clinico, andranno collezionati diversi tipi di dati, quali: risultati di test fenotipici, genomici, proteomici e patologici, congiuntamente a immagini mediche [2].

Diagnosi

I migliori dottori sono in grado di comprendere quando un particolare avvenimento clinico sia effettivamente nella norma oppure se rappresenti un rischio per la salute del paziente. L’americana Institute of Medicine ha evidenziato che tutte le persone nel corso della loro vita incorrono almeno una volta in una diagnosi errata [3]: ridurre qualsiasi tipo di errore può essere cruciale nel caso di patologie non comuni, senza considerare il fatto che ciò possa avere un effetto benefico perfino nel caso di malattie a noi più familiari. Basti pensare che complicazioni ritenute debellate quali tubercolosi e/o dissenteria hanno almeno una possibilità di non essere individuate, sebbene nei paesi sviluppati vi sia un accesso adeguato a terapie in grado di far fronte a queste disfunzioni [4]. Attraverso i dati collezionati durante terapie di tutti i giorni, le tecniche di AI possono individuare le diagnosi più probabili durante una visita clinica e prospettare quali condizioni si manifesteranno in futuro nel paziente [1].

Trattamento

In un sistema sanitario su scala nazionale, con migliaia di medici impegnati con altrettanti pazienti, potrebbero presentarsi delle variazioni circa le modalità di trattamento di certi sintomi. Un algoritmo di ML può individuare queste naturali variazioni in modo da aiutare i dottori ad identificare un trattamento da preferire rispetto ad un altro [1]. Un’applicazione potrebbe essere quella di confrontare ciò che il dottore prescriverebbe a un paziente con un trattamento suggerito da un modello algoritmico [1].

Flussi di lavoro per i medici

L’introduzione delle cartelle elettroniche (EHR, Electornic Health Record) ha agevolato l’accesso ai dati, ma allo stesso tempo ha fatto emergere dei “colli di bottiglia” derivanti da passaggi burocratici e amministrativi, creando ulteriori complicazioni per i medici. Le tecniche di ML possono permettere lo snellimento di passaggi inefficienti e macchinosi all’interno del flusso di lavoro clinico [1]. Le stesse tecnologie che vengono utilizzate nei motori di ricerca possono porre in evidenza informazioni rilevanti nella cartella clinica di un paziente, agevolando il lavoro degli specialisti. Ciò consente inoltre ulteriori facilitazioni nell’inserimento di nuovi dati tenendo conto dello storico clinico di un soggetto [1].

Coinvolgimento di un maggior numero di esperti

L’adozione dell’intelligenza artificiale può dare la possibilità di raggiungere un maggior numero di specialisti in grado di fornire una valutazione medica senza che vi sia un loro coinvolgimento diretto [1]. Ad esempio: un paziente potrebbe inviare dal suo smartphone una foto, in modo tale da ottenere un’immediata diagnosi, senza ricorrere a canali medici destinati ai casi più urgenti [1].

Tecniche di Machine Learning comunemente usate in campo medico

Di seguito verranno illustrate le tecniche di ML più usate in letteratura medica. Si sottolinea che in questa sede avverrà una trattazione maggiormente orientata al campo medico, non approfondendo gli aspetti tecnici.

Support Vector Machine

Le SVM vengono utilizzate principalmente per classificare i soggetti all’interno dei due gruppi, aventi rispettivamente come “etichetta” Y = 1 e Y = -1[5]. Questi raggruppamenti sono definiti da un confine decisionale (decision boundary) definito dai dati X in ingresso:

L’obiettivo dell’addestramento della SVM è quello di rinvenire il parametro w ottimale, in modo tale che la classificazione risulti il più precisa possibile (Figura 1). Una delle proprietà più importanti delle SVM consiste nel fatto che la determinazione dei parametri è un problema di ottimizzazione convessa, dunque la soluzione è sempre un ottimo globale.

Figura 1: un esempio di come funziona una Support Vector Machine [5]

Convolutional Neural Network

L’accrescimento delle capacità computazionali dei dispositivi moderni ha permesso al Deep Learning di divenire uno dei campi di ricerca più gettonati all’interno di varie discipline scientifiche: in questo senso, la medicina non ha conosciuto eccezioni [5][6]. Grazie a queste tecniche di apprendimento “profonde” (cosiddette a causa della numerosa presenza di strati, in grado di astrarre schematicità molto complesse), si può effettuare un’analisi dettagliata di immagini mediche, come le scansioni a raggi X, sfruttando l’abilità di una rete neurale di gestire dati voluminosi e estremamente complessi, come appunto le immagini, in modo efficiente [5]. Nel corso degli anni, le Convolutional Neural Network hanno ottenuto un’enorme popolarità, specie nel mondo medico: basti pensare che dal 2014 in poi, questo particolare tipo di reti neurali ha soppiantato metodologie quali le Recurrent Neural Newtork e le Deep Belief Neural Network [5] (Figura 2).

Figura : popolarità degli algoritmi di Deep Learning nel campo medico [5]

Una CNN si basa sull’utilizzo di un’operazione detta di convoluzione, in grado di tenere traccia dei vari cambiamenti di un dato multidimensionale, avendo la posizione di un misuratore all’interno di uno spazio [7]. Considerando un’immagine bidimensionale I, e un kernel K (un array multidimensionale riportante i parametri appresi dall’algoritmo):

In figura 3 viene riportata una struttura a grandi linee di una CNN, mentre nella figura 4 è possibile notare ciò che viene prodotto tramite l’applicazione dell’operazione di convoluzione.

Figura 3: bozza di una CNN [8]
Figura 4: risultato di alcune operazioni di convoluzione[8]

Random Forest

La Random Forest è una tecnica che contempla l’utilizzo di più regressori, strutturati “ad albero” (i.e.: gli alberi di decisione). Ogni albero esprime un proprio candidato attraverso un algoritmo di classificazione: successivamente, i voti di tutti gli alberi vengono sottoposti a una media.

Nell’equazione il termine B sta ad indentificare i singoli bagging, ovvero gli addestramenti degli alberi di decisione su differenti istanze del dataset [9]. In campo medico, questo tipo di tecnica può essere utilizzata, ad esempio, per discriminare caratteri fenotipici di un organismo [10], oppure per classificare i dati clinici di un paziente in modo tale da poter fornire una diagnosi accurata [11].

Limiti dell’AI in campo medico

Disponibilità di dati di qualità

Uno dei temi centrali nella costruzione di un modello ML è quello di poter attingere a un dataset rappresentativo di tutti i possibili soggetti, in modo che sia il più diversificato possibile [1]. L’ideale sarebbe riuscire ad addestrare algoritmi utilizzando dati molto simili, se non identici, a quelli riportati all’interno delle cartelle cliniche elettroniche [1]: purtroppo molte volte si avrà a che fare con dataset piccoli, raccolti da piccoli centri clinici, talvolta di qualità scarsa (riportanti del rumore, ossia delle irregolarità generate da dei dati erronei).

Privacy

Come detto, avere dataset costituiti da cartelle cliniche correttamente compilate sarebbe l’ideale. Tuttavia, questi dati agli occhi della legislazione vigente sono considerati sensibili, dunque di difficile reperibilità, rendendo più difficile la delineazione di modelli di ML. Una soluzione naturale potrebbe essere quella di consegnare i dati clinici al paziente stesso, che deciderà poi che uso farne [1].

Apprendimento da pratiche passate sbagliate

Tutte le attività umane sono sottoposte involontariamente a dei bias cognitivi: alcuni degli aspetti da considerare nello sviluppare un sistema ML è quello di comprendere quanto questi bias, rappresentati dai dati, influenzeranno il modello finale [12] e quali strumenti porre in campo per far fronte a questa problematica [13].

Esperienza nella valutazione finale

Similmente a quanto avviene nei sistemi sanitari, l’applicazione di tecniche di ML richiede una sofisticata struttura regolatoria, in grado di assicurare il giusto impiego degli algoritmi nel campo medico [1]. I medici e pazienti devono capire i limiti di questi strumenti, come ad esempio l’impossibilità di una determinata struttura di poter generalizzare su un altro tipo di problematica [13]. L’affidarsi ciecamente ai modelli ML può condurre a decisioni erronee: ad esempio un medico potrebbe abbassare la guardia nel caso in cui l’algoritmo restituisca un risultato sbagliato, al di sotto di una certa soglia d’allarme [1].

Cooperazione interdisciplinare

Team di informatici, biologi e medici devono collaborare in modo da poter costruire modelli utilizzabili nei loro rispettivi settori. Una mancata comunicazione può condurre a risultati inutilizzabili da parte dei medici [1]. Spesso le pubblicazioni scientifiche vengono pubblicate online sottoforma di prestampa (i.e.: preprint) su portali quali arXiv e bioRxiv, senza considerare la moltitudine di manoscritti informatici che non vengono pubblicati sui giornali scientifici tradizionali ma bensì all’interno di conferenze quali NeurIPS e ICML [1].

Tecniche di AI applicate al COVID-19

Dall’inizio della pandemia del virus SARS-CoV-2, il mondo scientifico ha posto la sua attenzione nel porre in campo metodi in grado di poter contrastare l’accrescimento dei contagi: basti pensare che soltanto nel mese di marzo, sono stati pubblicati 24000 prestampati sui portali arXiv e bioRxiv concernenti l’utilizzo di tecniche di AI con il compito di individuare pazienti affetti da COVID-19 [15]. Molti autori hanno realizzato lavori in cui le CNN vengono usate per discriminare i malati COVID da altri con patologie più comuni, utilizzando dataset costituiti da scansioni a raggi X di pazienti affetti da polmoniti (Figura 5) [16][17].

Figura 5: struttura di una CNN per l’individuazione di pazienti affetti da SARS-CoV-2[16]

Inoltre, sono stati proposti diversi metodi in real-time per l’individuazione immediata della malattia: l’utilizzo degli smart-watch, ad esempio, permette il monitoraggio di diversi parametri fisici in grado di indicare se il soggetto abbia contratto il virus o meno [18].

Conclusioni

Marco, un paziente di 49 anni, avverte un dolore alla spalla e, nonostante ciò, decide di non richiedere assistenza medica. Qualche mese dopo, decide di farsi visitare da un dottore che gli diagnostica una cheratosi seborroica (un’escrescenza cutanea simile a un grosso neo).

Successivamente, Marco si sottopone a una colonscopia e un’infermiera nota una macchia scura sulla sua spalla. Marco decide di farsi visitare da un dermatologo, il quale ottiene un campione dell’escrescenza: le analisi effettuate evidenziano una lesione benigna del pigmento. Il dermatologo, però, non si fida e decide di effettuare una seconda analisi: stavolta la diagnosi parla di un melanoma invasivo. Dunque, un oncologo sottopone Marco a un trattamento chemioterapico ma, nel frattempo, un amico del dottore chiede al povero paziente come mai non si sia ancora sottoposto a immunoterapia [1].

Se Marco avesse avuto accesso alle più moderne tecnologie di ML, avrebbe potuto semplicemente fare una foto alla spalla tramite il suo smartphone per poi inoltrare l’immagine a un dermatologo esperto tramite un’app dedicata. Successivamente a una biopsia della lesione, raccomandata dal dermatologo, si sarebbe giunti alla diagnosi di melanoma al primo stadio: a quel punto, il dermatologo avrebbe potuto recidere la lesione [1].

L’applicazione dell’intelligenza artificiale in medicina potrà far risparmiare tempo, impiegare al meglio il know-how degli specialisti, permettere di giungere a diagnosi maggiormente accurate e, più in generale, migliorare la vita dei pazienti e snellire il lavoro degli operatori del settore.

  • Pros:

– Diagnosi più precise

– Snellimento dei procedimenti medici e burocratici

– Acquisizione di una conoscenza terapeutica globale

– Maggiore specializzazione del personale medico

  • Cons:

– Disponibilità di dati di qualità

– Mancanza di procedure di raccolta dati condivisi

– Componente umana fondamentale nella valutazione finale della diagnosi

References

[1] Rajkomar, A. – Dean, J. – Kohane, I.. “Machine Learning in Medicine.” New England Journal of Medicine, 380. 1347-1358. (2019)

[2] Qayyum, A – Junaid Q. – Muhammad, B. – Ala A.. “Secure and Robust Machine Learning for Healthcare: A Survey.” IEEE reviews in biomedical engineering (2020)

[3] McGlynn, E. – McDonald, K. – Cassel C..”Measurement is Essential for Improving Diagnosis and Reducing Diagnostic Error: A Report from the Institute of Medicine.” The Journal of the American Medical Association, Vol. 314(23), pp. 1-2 (2015)

[4] Das, J. – Woskie, L. – Rajbhandari, R. – Abbasi, K. – Jha, A.. “Rethinking assumptions about delivery of healthcare: implications for universal health coverage.” The British Medical Journal (Clinical research ed.), Vol. 361 (2018)

[5] Jiang, F. – Jiang, Y. – Zhi, H. – Dong, Y. – Li, H. – Ma, S. – Wang, Y. – Dong, Q. – Shen, H. – Wang, Y.. “Artificial Intelligence in Healthcare: Past, Present and Future.” Stroke and Vascular Neurology Vol. 2 (2017)

[6] Mori, J. – Kaji S. – Kawai H. – Kida S. – Tsubokura M. – Fukatsu, M. – Harada, K. – Noji H. – Ikezoe T. – Maeda T. – Matsuda A.. “Assessment of dysplasia in bone marrow smear with convolutional neural network.” Scientific Reports Vol.10 (2020)

[7] Goodfellow, I. – Bengio, Y. – Courville, A.. “Deep Learning.” MIT Press (2016)

[8] Yamashita, R. – Nishio, M. – Do, R., – Togashi, K.. “Convolutional neural networks: an overview and application in radiology.” Insights into imaging, Vol. 9(4), pp. 611–629 (2018)

[9] Breiman, L.. “Random Forests.” Machine Learning Vol.45(1), pp. 5 – 32 (2001)

[10] Chen, T. – Cao, Y. – Zhang, Y. – Liu, J. – Bao, Y. – Wang, C. – Jia, W. – Zhao, A.. “Random forest in clinical metabolomics for phenotypic discrimination and biomarker selection.” Evidence-based complementary and alternative medicine : eCAM (2013)

[11] Alam, Z. – Rahman, S. – Rahman, S.. “A Random Forest based predictor for medical data classification using feature ranking.” Informatics in Medicine Unlocked, Vol. 15, (2019)

[12] Gianfrancesco, MA. – Tamang, S. – Yazdany, J. – Schmajuk, G.. “Potential Biases in Machine Learning Algorithms Using Electronic Health Record Data.” Journal Of American Medical Association, Internal Medicine, Vol.178(11), pp. 1544-1547 (2018)

[13] Rajkomar, A. – Hardt, M. – Howell, M. D. – Corrado, G. – Chin, M. H.. “Ensuring Fairness in Machine Learning to Advance Health Equity.” Annals of internal medicine, Vol.169(12), pp. 866–872 (2018)

[14] Krumholz, H. M.. “Big data and new knowledge in medicine: the thinking, training, and tools needed for a learning health system.” Health affairs (Project Hope), Vol.33(7), pp. 1163-70 (2014)

[15] Hao, K.. ”Over 24,000 coronavirus research papers are now available in one place”. MIT Technology Review, URL: https://www.technologyreview.com/2020/03/16/905290/coronavirus-24000-research-papers-available-open-data/ (2020)

[16] Jain, G. – Mittal, D. – Thakur, D. – Mittal, M. K.. “A deep learning approach to detect Covid-19 coronavirus with X-Ray images”. Biocybernetics and biomedical engineering, Vol.40(4), pp. 1391-1405 (2020)

[17] Hemdan, E.E – Shouman, M. – Karar, M.. “COVIDX-Net: A Framework of Deep Learning Classifiers to Diagnose COVID-19 in X-Ray Images.” ArXiv, abs/2003.11055 (2020)

Mishra, T. – Wang, M. – Metwally, A.A., Bogu G.K. – Brooks A. W. – Bahmani A. – Alavi A. – Celli A. – [18] Higgs, E. – Dagan-Rosenfeld O. – Fay, B. – Kirkpatrick, S. – Kellogg, R. – Gibson M. – Wang, T. – Hunting E. M. – Mamic P. – Ganz A. B. – Rolnik, B. – Li, X. – Snyder M. P.. “Pre-symptomatic detection of COVID-19 from smartwatch data.” Nature Biomedical Engineering (2020).