La domanda è tipica delle mie parti: "a chi appartieni?" sta per "di quale famiglia/gruppo/squadra/banda fai parte?" Con questa domanda questo mese mi avventuro nel cercare di spiegare come funzionano (a grandissime linee, niente di rigoroso, eh?) i cosiddetti algoritmi di clustering. Ora, purtroppo con gli algoritmi abbiamo imparato ad avere una certa familiarità: quelli di cui vorrei parlarvi però non ci diranno se la nostra regione di residenza è gialla, arancione o rossa, bensì come raggruppare gli oggetti simili tra loro. In fondo è qualcosa che facciamo spesso, soprattutto chi soffre di manie ossessivo-compulsive: conosco persone che ripongono i libri negli scaffali raggruppandoli in gruppi omogenei per altezza, colore o casa editrice. Ammetto di farlo anche io ogni tanto. O che dispongono i barattoli in modo ordinato nella dispensa (non è il mio caso: in cucina regna da sempre un bel disordine). Per non parlare delle manie negli armadi: magliette colorate e ordinate secondo la lunghezza d'onda del colore principale (purtroppo conosco molti fisici), camicie tutte uguali riposte in una posizione calcolata sull'ultimo lavaggio e così via...
Il punto è che raggruppare gli oggetti non è soltanto una mania, ma a volte è strettamente necessario, soprattutto quando gli oggetti (i dati) sono davvero tanti (avete presente i big data, no?): una visione di insieme è possibile soltanto dopo aver organizzato i dati in gruppi. E naturalmente una procedura automatica per poterlo fare sarebbe l'ideale.
Partiamo dall'immagine qui a destra: quale potrebbe essere un raggruppamento naturale dei personaggi della famosa serie dei Simpson's?
In realtà il primo che mi verrebbe in mente è quello qui sotto, con la famiglia Simpson da una parte e gli altri personaggi dall'altra.
E però non è certamente l'unico. Qualcun altro potrebbe decidere di separare i personaggi in maschili e femminili. Questa è una prima caratteristica del clustering: non è univoco ed è molto soggettivo, anche quando è una procedura automatica. I risultati infatti vanno interpretati davvero con molta cautela. Come definiamo l'appartenenza a un gruppo piuttosto che a un altro? Apparteniamo a un gruppo quando ci sentiamo più simili ad altri elementi di quel gruppo piuttosto che agli elementi di un altro: in altre parole quando rendiamo massima la similarità all'interno di un gruppo e rendiamo minima la similarità tra gruppi diversi. Chiaro, no?
Sì, se non fosse che dobbiamo definire cosa intendiamo per similarità: tipicamente si dice che la similarità è quella proprietà difficile da definire, ma facile da riconoscere, come nella fotografia qui accanto. Il modo migliore per definire una similarità è trovare una buona definizione di distanza: ad esempio quante differenze ci sono tra un personaggio e l'altro dei Simspon (colore dei vestiti, dei capelli), oppure i loro gradi di parentela/relazione, o ancora il numero di episodi in cui compaiono insieme. Naturalmente su questo possiamo scatenare la fantasia e definire distanze tra gli oggetti più disparati. L'importante è che però le distanze da noi definite verifichino alcune proprietà che normalmente tutte le distanze possiedono. Una prima proprietà è la simmetria: la distanza tra Anna e Beatrice deve essere la stessa tra Beatrice e Anna, altrimenti potremmo dire che Anna somiglia a Beatrice, ma Beatrice non somiglia per niente ad Anna. Una seconda è che la distanza tra un oggetto e se stesso deve essere zero, altrimenti potremmo dire che Bruno somiglia più ad Alberto di quanto Alberto non somigli a se stesso. Una terza proprietà è che la distanza tra due oggetti è zero solo se i due oggetti sono uguali, altrimenti ci sarebbero oggetti diversi in un gruppo che però non riusciremmo a distinguere in nessun modo. E infine, la più complicata: la disuguaglianza triangolare. Ovvero la distanza tra due oggetti A e B deve essere minore della somma delle distanze da A da C e di C da B, come se fossero tre punti in un triangolo. Altrimenti potremmo dire che Anna somiglia tantissimo a Barbara, Barbara somiglia tantissimo a Carla, ma Anna e Carla non hanno proprio niente in comune.Una volta trovata una definizione sensata di distanza, possiamo poi avventurarci negli algoritmi: anzitutto dobbiamo decidere se vogliamo costruire un clustering gerarchico o partizionale. Clustering gerarchico significa che intendiamo creare una gerarchia di gruppi secondo un qualche criterio, come nella figura qui accanto, con i gradi di parentela tra personaggi femminili dei Simpson's, mentre nel clustering partizionale intendiamo soltanto creare dei gruppi e valutare questi raggruppamenti, un po' come abbiamo fatto prima.
Il risultato del clustering gerarchico è il tipico diagramma con i rami, che prende il nome di dendrogramma (una parola più complicata da pronunciare era difficile da trovare e in inglese è anche peggio!). In un dendrogramma ogni oggetto corrisponde a un ramo che si unisce ad altri rami nei cosiddetti nodi. La similarità tra due oggetti è data dall'altezza del nodo in cui i loro due rami si congiungono: ad esempio Lisa e Marge hanno similarità 1, dato che i loro due rami si uniscono subito, mentre Lisa e ciascuna delle sorelle fumatrici hanno similarità 2. Il pregio dei dendrogrammi è che forniscono una rappresentazione visiva molto netta dei raggruppamenti e delle relazioni tra gli oggetti. E però, come sempre, bisogna prestare molta attenzione. Ad esempio, nel dendrogramma qui a lato è rappresentato il clustering di alcune bandiere.E' evidente che il gruppo a sinistra ha un senso: si tratta infatti di ex-colonie del Regno Unito e quindi le loro bandiere hanno caratteristiche simili alla Union Jack. Tuttavia il gruppo Niger e India non ha alcun senso: i due Paesi non hanno davvero nulla in comune sul piano geografico, storico o culturale!
Il risultato del clustering gerarchico è il tipico diagramma con i rami, che prende il nome di dendrogramma (una parola più complicata da pronunciare era difficile da trovare e in inglese è anche peggio!). In un dendrogramma ogni oggetto corrisponde a un ramo che si unisce ad altri rami nei cosiddetti nodi. La similarità tra due oggetti è data dall'altezza del nodo in cui i loro due rami si congiungono: ad esempio Lisa e Marge hanno similarità 1, dato che i loro due rami si uniscono subito, mentre Lisa e ciascuna delle sorelle fumatrici hanno similarità 2. Il pregio dei dendrogrammi è che forniscono una rappresentazione visiva molto netta dei raggruppamenti e delle relazioni tra gli oggetti. E però, come sempre, bisogna prestare molta attenzione. Ad esempio, nel dendrogramma qui a lato è rappresentato il clustering di alcune bandiere.E' evidente che il gruppo a sinistra ha un senso: si tratta infatti di ex-colonie del Regno Unito e quindi le loro bandiere hanno caratteristiche simili alla Union Jack. Tuttavia il gruppo Niger e India non ha alcun senso: i due Paesi non hanno davvero nulla in comune sul piano geografico, storico o culturale!
Dunque, per quanto si tratti di procedure automatiche, o forse proprio per questo, sarebbe bene non fidarsi troppo dei risultati: forniscono sì delle indicazioni, anche molto utili, ma non devono essere utilizzate per classificare in modo rigoroso gli oggetti, e men che meno le persone! I risultati, peraltro, dipendono moltissimo dall'algoritmo: ce ne sono davvero tantissimi e la loro scelta dipende da molti fattori, tra i quali la loro efficienza computazionale o anche il tipo di dati a nostra disposizione. Le applicazioni però sono le più disparate: mi limiterò qui a citarne due molto importanti nel campo della biofisica computazionale.
Un primo esempio qui accanto è il clustering dei coronavirus in base alle sequenze di RNA presenti: il dendrogramma permette di capire quali siano i parenti stretti del maledettissimo virus che sta tenendo in scacco il nostro intero pianeta. Le applicazioni in bioinformatica però sono praticamente illimitate: confrontare sequenze di codici genetici è probabilmente l'impresa più noiosa che possa esistere per un essere umano. Un calcolatore però procede con i suoi algoritmi e permette, ad esempio, di ricostruire i cosiddetti alberi filogenetici, ovvero i rami evolutivi delle singole specie, confrontando geni specifici. La storia evolutiva del nostro pianeta è stata quasi completamente ricostruita (tranne per gli organismi dei quali non ci è giunta alcuna traccia organica) e rende evidenti le relazioni tra le varie specie o, addirittura, tra le soluzioni a specifici problemi di adattamento all'ambiente di specie diverse.
E infine non può mancare un'applicazione alla struttura delle proteine: troppo spesso non sappiamo come riconoscere i possibili stati di una proteina in una traiettoria ottenuta al calcolatore. Il clustering permette di raggruppare le diverse strutture ottenute in insiemi significativi: assegnare un'etichetta a ciascuno di questi gruppi non è facile, ma sarebbe certamente impossibile a occhio nudo.
Non è tutto, però: le proteine presenti nel Protein Data Bank sono talmente tante che è difficile dare un senso alla mole impressionante di strutture presenti. Ciascuna di queste proteine è stata studiata per uno scopo ben preciso, ma chissà quante funzioni sono del tutto sconosciute. Siamo infatti così sicuri che una proteina svolga soltanto una ben determinata funzione? E proprio quella che conosciamo? Proteine che svolgono più di una funzione sarebbero estremamente utili dal punto di vista evolutivo, un po' come i robot da cucina multiuso. Possibile che l'evoluzione non abbia sfruttato queste possibilità? No. L'evoluzione ha operato per miliardi di anni sul nostro pianeta esplorando un bel po' di possibilità, fra cui anche queste. Siamo noi che non riusciamo a riconoscere altre funzioni di una proteina oltre quella che ci è nota dai nostri studi. Qui il clustering offre possibilità davvero interessanti: scoprire una similarità strutturale tra proteine con funzioni diverse permette infatti di porre una domanda che magari non ci saremmo mai posti su quelle proteine. Se una proteina di cui conoscevamo una specifica funzione finisce in un gruppo di proteine che ne svolgono un'altra, potremmo immaginare qualche esperimento e scoprire che in realtà quella proteina non ha un'unica funzione. Si può fare lo stesso con le persone: magari potremmo scoprire che un biofisico computazionale come me è stato raggruppato insieme a dei bravissimi cuochi. Non so se consigliarvi l'esperimento, però: dopotutto, anche Niger e India erano finiti nello stesso gruppo...
Nessun commento:
Posta un commento