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.
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
Come funzionano gli algoritmi
Per poter funzionare, gli algoritmi devono avere cinque caratteristiche:
- Input: dati ben definiti che saranno trasformati durante l'elaborazione.
- Output: i dati che si ricavano dall'elaborazione.
- Determinatezza: passaggi computazionali specifici.
- Effettività: passaggi computazionali realizzabili.
- 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?
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