Algoritmi

Cosa sono e come funzionano

L'algoritmo è un elenco d'istruzioni dettagliate, elaborate per svolgere una determinata attività o risolvere un problema specifico. A ben vedere, gli algoritmi sono ovunque. La ricetta della zuppa di cipolle francese, per esempio, è un algoritmo: mette insieme una serie di input per generare un output. È così che si comportano gli algoritmi dei computer. Nell'informatica moderna gli algoritmi sono essenziali, che si tratti di convertire numeri binari in lettere per poter leggere ciò che appare sullo schermo del tablet, o consigliare prodotti azionari in base alla propensione al rischio. In questo articolo, ci concentreremo sugli algoritmi dei computer.

Breve storia degli algoritmi

Sebbene l'algoritmo possa sembrare un'invenzione recente, in realtà il termine risale a un migliaio di anni fa ed è legato al grande contributo dato alla matematica dallo studioso persiano Muḥammad ibn Mūsā al-Khwārizmī (latinizzato come Algoritmi). Il concetto fu ripreso nel XIX secolo dal matematico tedesco Carl Friedrich Gauss, che elaborò un semplice algoritmo per stabilire il giorno dell'anno solare in cui cade la Pasqua.

Gli algoritmi fecero il loro ingresso nel mondo dell'informatica verso la metà del XX secolo, quando il famoso informatico Alan Turing elaborò una teoria su come le macchine potessero eseguire serie complesse d'istruzioni. Il suo rudimentale algoritmo per il gioco degli scacchi, Turochamp, non riuscì mai a battere un essere umano finché Turing visse, ma costituì la base di quella che oggi chiamiamo intelligenza artificiale (AI, Artificial Intelligence).

Nei decenni successivi, con il progressivo aumento della potenza di calcolo crebbe anche il bisogno di algoritmi più complessi. Oggi, gli algoritmi sono fondamentali per l'informatica moderna, aiutandoci a viaggiare dal punto A al punto B, a decidere quale film vedere e perfino a trovare l'amore.

Molti programmi informatici non sono altro che una sequenza di algoritmi, scritti in un linguaggio comprensibile dai computer.

Manifatturiero

Analisi predittiva e AI per una customer experience vincente

Gli Orlando Magic usano un'app mobile e algoritmi di machine learning per personalizzare l'esperienza dei loro tifosi e quadruplicare gli acquisti dall'app.

Come vengono utilizzati gli algoritmi oggi

In ogni ambito della società, gli algoritmi si sostituiscono sempre più all'uomo nei processi decisionali e, in alcuni casi, hanno la capacità di cambiare le nostre vite. Per questa ragione, c'è chi sostiene che sia necessario aprire un dibattito sulla correttezza degli algoritmi, soprattutto nel campo della giustizia e della sanità.

Ma chi c'è dietro allo sviluppo degli algoritmi che stanno trasformando la società? Il white paper di Harvard Business Review si concentra sui volti celati dietro i progressi dell'informatica e dell'automazione che stanno cambiando il mondo.

Gli algoritmi possono anche contribuire a salvare le foreste pluviali. Cercando ogni giorno milioni d'immagini che mostrino i primi segni di deforestazione, gli algoritmi di computer vision possono aiutare governi e organizzazioni umanitarie a intervenire per proteggere le foreste in pericolo, prima che sia troppo tardi.

L'algoritmo di Netflix

Quando un utente guarda Netflix, gli algoritmi guardano lui. Il cosiddetto motore di raccomandazione di Netflix funziona tramite sofisticati algoritmi proprietari, che tengono conto di ciò che l'azienda conosce dell'utente per prevedere la probabilità che questi guardi un determinato titolo in catalogo. Oggi, l'80% del tempo trascorso davanti allo schermo di Netflix è frutto della personalizzazione. Tra gli input dell'algoritmo figurano lo storico delle visualizzazioni, i generi preferiti e l'ora del giorno in cui si guarda Netflix. Più si usa Netflix, più gli algoritmi si affinano, con il risultato d'incoraggiare l'utente a fruire degli altri programmi della piattaforma. 

Come funzionano gli algoritmi

Per poter funzionare, gli algoritmi devono avere cinque caratteristiche:

  1. Input: dati ben definiti che saranno trasformati durante l'elaborazione. 
  2. Output: i dati che si ricavano dall'elaborazione. 

  3. Determinatezza: passaggi computazionali specifici. 
  4. Effettività: passaggi computazionali realizzabili. 
  5. Finitezza: un numero limitato di passaggi.

Tutto questo porta ad algoritmi basati sulla matematica e algoritmi basati sulle regole.

Algoritmi basati sulla matematica
Poiché la maggior parte degli algoritmi è di matrice numerica, non sorprende che molti di essi siano basati sulla matematica. Ecco un semplice esempio: 1 + 1 = 2. Questo è un algoritmo basato sulla matematica, in cui gli 1 sono gli input e il 2 è l'output. Se estendiamo questo esempio, otteniamo alcuni degli algoritmi più importanti attualmente in uso, compresi gli algoritmi che trasformano i segnali in frequenze, codificano i computer e stabiliscono il ranking di un sito web nelle ricerche Google.

Algoritmi basati sulle regole
Man mano che si approfondisce la conoscenza dell'IA, appare sempre più evidente che vi sono alcune cose che non possono essere spiegate esclusivamente con costrutti matematici. Quando si sviluppa un software per l'analisi testuale, per esempio, e serve un algoritmo per volgere un sostantivo al plurale, non basta semplicemente cambiarne la desinenza in "-i" I nomi femminili, infatti, al plurale possono terminare anche in "-e". Per queste situazioni specifiche si applicano delle regole. Gli algoritmi basati su regole sono l'ideale per analizzare dati che contengono un insieme di attributi numerici e qualitativi.

Naturalmente è possibile usare più di un tipo di algoritmo per risolvere un dato problema: ad esempio per prevedere il reddito di una persona. Per fare questo calcolo si potrebbe utilizzare un algoritmo basato sulla matematica che consenta di ponderare variabili come età, luogo di residenza, istruzione, ecc. Ma si potrebbe anche impiegare un algoritmo basato su regole che preveda il reddito usando età e codice postale, per esempio. Quale funziona meglio?

Siamo arrivati a parlare di algoritmi concorrenti. Gli algoritmi sono spesso confrontati tra loro per vedere qual è il più efficace. Torniamo all'esempio della zuppa: si possono avere ricette concorrenti che danno tutte come risultato la zuppa di cipolle alla francese. Lo stesso vale per gli algoritmi dei computer. Magari l'algoritmo A è più lento ma più accurato dell'algoritmo B. Però, B è più facile da usare. L'algoritmo giusto per una certa attività dipende dai criteri utilizzati nella valutazione. Ha portato a termine quell'attività? L'ha fatto in modo rapido? L'ha fatto in modo efficiente?

L'ispirazione viene dalla natura

La maggior parte dei progetti di IA si avvale attualmente di tecnologie multiple di data science. Secondo Gartner, si usa il termine intelligenza artificiale composita quando si ricorre a una combinazione di più tecniche di IA per raggiungere il risultato ottimale.

Possiamo immaginare gli algoritmi come collegamenti al pensiero umano. Non a caso si ispirano spesso a elementi della natura. Gli algoritmi genetici, per esempio, ricalcano i meccanismi biologici con cui gli organismi si evolvono nel tempo. Questi algoritmi mettono insieme combinazioni e punti di decisione, per creare una progenie che abbia i tratti dei genitori. Allo stesso modo, le reti neurali si ispirano alla biologia del cervello e sono usate per risolvere determinati problemi, come la computer vision e il natural language processing.

Le tipologie più diffuse di algoritmi

È possibile distinguere tra algoritmi elementari e algoritmi avanzati.

Elementari
Forse non è sempre evidente, ma gli algoritmi regolano anche le attività più semplici del computer. Diamo un'occhiata a tre algoritmi elementari oggi tra i più utilizzati.

Algoritmi di compressione
La maggior parte delle persone usa il computer per attività semplici, come leggere un articolo o vedere foto. Queste attività sono possibili grazie ad algoritmi che comprimono i file in modo che possano essere visti, condivisi e ripristinati. Prendiamo i file in JPG. Quando guardiamo la foto del nipotino che si arrampica sull'albero, in realtà stiamo guardando un'immagine bitmap processata attraverso un algoritmo di compressione, per convertire milioni di rappresentazioni numeriche di pixel in quell'immagine che, sorridendo, osserviamo sul nostro schermo. 

Algoritmo di ricerca binaria
La ricerca binaria è un algoritmo di ricerca veloce che si basa sul modello divide et impera. Supponiamo di voler cercare sul computer il file Dichiarazione_dei_redditi_2020.pdf. Grazie alla ricerca binaria, l'algoritmo sceglie un'osservazione al centro del data set e verifica che il risultato trovato sia quello desiderato. Se lo trova, l'algoritmo si ferma. Altrimenti, poiché la sequenza è ordinata, l'algoritmo è in grado di determinare se l'osservazione desiderata si trova al di sopra o al di sotto di quella trovata e quindi ridefinisce l'intervallo di ricerca in modo che sia la metà di quello iniziale. Dopo di che, l'algoritmo sceglie l'osservazione a metà del nuovo range di ricerca e ripete il processo fino a trovare il PDF. Ebbene sì, lo scorso anno abbiamo pagato meno tasse del dovuto. 

Algoritmo di moltiplicazione
Ci sono algoritmi ancora più semplici di quelli che abbiamo visto. Uno degli algoritmi più usati, per esempio, è quello che moltiplica i numeri. Tutto ciò che si fa con un algoritmo richiede la moltiplicazione di due o più numeri. Anche in un campo fatto di parole come l'analisi testuale, si valutano aspetti quali la frequenza delle parole e la frequenza dei documenti e spesso in questa attività è coinvolto un moltiplicatore. 

Avanzati
All'estremo opposto, ci sono gli algoritmi avanzati. Sono strutturati sugli algoritmi elementari, ma con nuove idee. In più, spesso richiedono l'elaborazione di enormi data set.

Algoritmi di machine learning
Il machine learning usa algoritmi che ricevono e analizzano dati di input per prevedere valori di output all'interno di un range accettabile. La cosa incredibile di questi algoritmi è che imparano da altri algoritmi. Man mano che vengono inseriti nuovi dati negli algoritmi di machine learning, questi ultimi imparano a ottimizzare le loro operazioni per migliorare la performance, sviluppando intelligenza nel tempo. Esistono quattro tipi di algoritmi di machine learning: supervisionato, semi-supervisionato, non supervisionato e per rinforzo.

Algoritmi di deep learning
Gli algoritmi di deep learning usano strati multipli per estrarre progressivamente informazioni di alto livello dai dati di input. Al pari del cervello umano, questi algoritmi cercano di trarre conclusioni come farebbero gli individui, analizzando continuamente i dati con l'ausilio delle cosiddette reti neurali. L'output di questi complessi algoritmi può cambiarci la vita: pensiamo alle auto a guida autonoma, o ai libri tradotti istantaneamente dall'inglese all'arabo.

Algoritmi di potenziamento del gradiente
I modelli predittivi supportano le aziende in attività come forecast delle vendite e prezzi delle merci, basandosi sulla previsione della domanda. Il potenziamento del gradiente è un algoritmo in grado di creare questi modelli predittivi. Ci riesce trasformando alberi decisionali deboli in alberi decisionali forti, migliorando così l'accuratezza della previsione. È un algoritmo famoso per la sua velocità e precisione, soprattutto quando si lavora con data set ampi e complessi. 

Quale algoritmo usare?

Chi è alle prime armi solitamente vuole sapere quale algoritmo usare. Ma la risposta dipende da molti fattori, tra cui:

  • le dimensioni, la qualità e la natura dei dati; 
  • il tempo computazionale a disposizione; 
  • quanto è urgente l'attività; 
  • cosa si desidera fare con i dati.

Neanche un data scientist esperto è in grado di stabilire quale sia l'algoritmo più adatto se prima non ne prova diversi. Nella scelta di un algoritmo, bisogna tenere conto di questi aspetti: l'accuratezza, il tempo occorrente per la formazione e la facilità d'impiego. Molti utenti mettono al primo posto l'accuratezza, mentre i principianti di solito si concentrano sugli algoritmi che conoscono meglio. Quando si ha di fronte un data set, la prima cosa da valutare è come ottenere i risultati, al di là di quali risultati si otterranno. Una volta ottenuti i risultati e acquisita dimestichezza con i dati, si può decidere d'investire più tempo nell'uso di algoritmi più avanzati, per rafforzare la comprensione dei dati e quindi migliorare ulteriormente i risultati. Scopri di più su come scegliere gli algoritmi

Passi successivi

Se desideri imparare qualcosa sugli algoritmi, SAS ti può essere d'aiuto.

Solo dieci anni fa, per lavorare con gli algoritmi erano necessari studi avanzati e una conoscenza enciclopedica di matematica e informatica. Oggi, gli algoritmi più sofisticati al mondo sono raccolti ordinatamente in un software che consente persino agli utenti più esperti di ottenere risultati straordinari, senza dover armeggiare con le formule.  

Una di queste soluzioni è SAS® Visual Data Mining and Machine Learning. All'interno di questa soluzione vi sono alcuni tra gli algoritmi più avanzati al mondo, che consentono a utenti di qualsiasi livello di risolvere problemi analitici complessi. Questo software di alto livello offre una grande varietà di algoritmi ed è di supporto in attività come costruire modelli predittivi e identificare opportunità commerciali.