Effettuare previsioni mediante addestramento degli algoritmi di Classificazione.

Per Classificazione si intende un’attività che richiede l’uso di algoritmi di Machine Learning che apprendono come assegnare un’etichetta di classe agli esempi dal dominio del problema.

Facciamo un esempio pratico.

Un credito è una somma di denaro prestata da un istituto finanziario, ad esempio una banca, da restituire con gli interessi, generalmente a rate.

È importante che la banca sia in grado di prevedere in anticipo il rischio connesso ad un prestito, che è la probabilità che il cliente vada in default e non restituisca l’intero importo, sia per assicurarsi che la banca realizzi un profitto e anche per non infastidire un cliente con un prestito oltre la sua capacità finanziaria.

Nel credit scoring, la banca calcola il rischio dato l’importo del credito e le informazioni sul cliente. Le informazioni sul cliente includono dati a cui abbiamo accesso e sono rilevanti per il calcolo della sua capacità finanziaria, vale a dire, reddito, risparmi, garanzie reali, professione, età, storia finanziaria passata, ecc. La banca ha un registro dei prestiti passati contenente tali dati del cliente e se il prestito è stato rimborsato o meno. Da questi dati, lo scopo è quello di inferire una regola generale che codifica l’associazione tra gli attributi di un cliente e il suo rischio, ovvero il sistema di Machine Learning adatta un modello ai dati passati per poter calcolare il rischio per una nuova applicazione e quindi decide di accettare o rifiutarlo di conseguenza.

Questo è un esempio di problema di classificazione in cui sono presenti due classi:

  1. clienti a basso rischio
  2. clienti ad alto rischio.

Le informazioni su un cliente costituiscono l’input per il classificatore il cui compito è assegnare l’input a una delle due classi.

Dopo l’addestramento con i dati passati (training set), una regola di classificazione appresa può essere della forma:

IF (reddito > θ1 AND risparmi > θ2)

THEN

basso rischio

ELSE

alto rischio

per opportuni valori di θ1 e θ2 .

Questo è un esempio di discriminante; è una funzione che separa gli esempi di diverse previsioni. Avendo una regola come questa, l’applicazione principale è la previsione: una volta che abbiamo una regola che si adatta ai dati passati, se il futuro è simile al passato, allora possiamo fare previsioni corrette per nuove istanze.

Data una nuova applicazione con un certo reddito e risparmio, possiamo facilmente decidere se è a basso rischio o ad alto rischio. In alcuni casi, invece di fare un 0/1 (basso rischio/alto rischio), potremmo voler calcolare una probabilità, ovvero P(Y|X), dove X sono gli attributi del cliente e Y è rispettivamente 0 o 1 per il rischio basso o rischio alto.

  • P(Y=0/X=x) è la probabilità che il cliente X riesca a pagare
  • P(Y=1/X=x) è la probabilità che il cliente X NON riesca a pagare

Da questo punto di vista, possiamo vedere la classificazione come l’Apprendimento di un’Associazione da X a Y. Allora per un dato X = x, se abbiamo P(Y = 1|X = x) = 0.8, diciamo che il cliente ha un 80 percentuale di probabilità di essere ad alto rischio, o equivalentemente una probabilità del 20% di essere a basso rischio. Decidiamo quindi se accettare o rifiutare il prestito a seconda di t lui possibile guadagno e perdita.

Questo è un esempio di discriminante, è una funzione che separa gli esempi di diverse previsioni. Per una regola come questa, l’applicazione principale è la previsione: una volta che abbiamo una regola che si adatta ai dati passati, se il futuro è simile al passato, allora possiamo fare previsioni corrette per nuove istanze.

Segue una figura che mostra l’output di questa classificazione

Come funziona l’apprendimento associativo (Learning Association)?

L’Association Learning è una tecnica di Machine Learning e Data Mining basata su regole che trova importanti relazioni tra variabili o funzionalità in un set di dati.

Facciamo un esempio pratico.

Nel caso della vendita al dettaglio di una catena di supermercati, un’applicazione di Association Learning è l’analisi del paniere che consiste nel trovare associazioni tra i prodotti acquistati dai clienti: se le persone che acquistano X in genere acquistano anche Y e se c’è un cliente che acquista X e non compra Y, è un potenziale cliente Y.

Una volta trovati tali clienti, possiamo indirizzarli grazie al cross-selling all’acquisto di prodotti o servizi aggiuntivi correlati al prodotto precedentemente acquistato.

Nel trovare una regola di associazione, siamo interessati ad apprendere una probabilità condizionata della forma P(Y|X) dove Y è il prodotto su cui vorremmo condizionare X, che è il prodotto o l’insieme di prodotti che sappiamo che il cliente ha già acquistato.

Diciamo che, ripassando i nostri dati, calcoliamo che P(chips|birra) = 0,7, quindi possiamo definire la regola:

Il 70% dei clienti che acquistano birra acquista anche patatine.

Potremmo voler fare una distinzione tra i clienti e, a tal fine, stimare P(Y|X,D) dove D è l’insieme degli attributi del cliente, ad esempio sesso, età, stato civile e così via, supponendo di avere accesso a queste informazioni. Se si tratta di una libreria anziché di un supermercato, i prodotti possono essere libri o autori. Nel caso di un portale Web, gli articoli corrispondono a collegamenti a pagine Web e possiamo stimare i collegamenti che un utente potrebbe fare clic e utilizzare queste informazioni per scaricare tali pagine in anticipo per un accesso più rapido.

Estrarre conoscenza da database di grandi dimensioni con il Machine Learning.

L’applicazione di strategie di Machine Learning su database di grandi dimensioni si chiama Data Mining.

L’analogia è che da una miniera (database di grande dimensione) venga estratta una grande quantità di terra che porta con sé una piccola quantità di materiale molto prezioso; allo stesso modo, nel data mining, un grande volume di dati viene elaborato per costruire un modello semplice con un uso prezioso, ad esempio, con un’elevata precisione predittiva.

Il data mining (letteralmente dall’inglese estrazione di dati) è l’insieme di tecniche e metodologie che hanno per oggetto l’estrazione di informazioni utili da grandi quantità di dati (es. banche dati, datawarehouse, ecc.), attraverso metodi automatici o semi-automatici (es. apprendimento automatico) e l’utilizzo scientifico, aziendale, industriale o operativo delle stesse.

Gli scenari in cui le tecniche di Data Mining vengono utilizzate per adottare strategie basate sul Machine Learning sono abbondanti e possono riguardare:

  • Le banche finanziarie analizzano i loro dati passati per costruire modelli da utilizzare nelle richieste di credito, rilevamento delle frodi e mercato azionario.
  • Nella produzione, i modelli di apprendimento vengono utilizzati per l’ottimizzazione, il controllo e la risoluzione dei problemi.
  • In medicina, i programmi di apprendimento vengono utilizzati per la diagnosi medica.
  • Nelle telecomunicazioni, i modelli vengono analizzati per l’ottimizzazione della rete e per massimizzare la qualità del servizio.
  • Nella scienza, grandi quantità di dati in fisica, astronomia e biologia possono essere analizzati abbastanza velocemente dai computer.
  • Il World Wide Web è enorme, è in costante crescita e la ricerca di informazioni rilevanti non può essere eseguita manualmente.

L’apprendimento automatico ci aiuta anche a trovare soluzioni a molti problemi di visione, riconoscimento vocale e robotica. Prendiamo l’esempio del riconoscimento dei volti: questo è un compito che svolgiamo senza sforzo; ogni giorno riconosciamo familiari e amici guardando i loro volti o dalle loro fotografie, nonostante le differenze di posa, illuminazione, acconciatura e così via.

Ma lo facciamo inconsciamente e non siamo in grado di spiegare come lo facciamo. Poiché non siamo in grado di spiegare la nostra esperienza, non possiamo scrivere il programma per computer. Allo stesso tempo, sappiamo che un’immagine del viso non è solo un casuale raccolta di pixel; un viso ha una struttura. È simmetrico. Ci sono gli occhi, il naso, la bocca, situati in determinati punti del viso. Il viso di ogni persona è un modello composto da una particolare combinazione di questi.

Estraendo informazioni da un database di grandi dimensioni (data mining) che include immagini del viso di una specifica persona, potremmo utilizzare un programma di Machine Learning che cattura il modello specifico di quella persona e quindi riconosce controllando questo modello in una data immagine.

Questo è un esempio di riconoscimento del modello.

Come abbiamo appena visto, il Machine Learning oltre al Data Mining include anche metodologie e tecniche di intelligenza artificiale.

Infatti, per essere intelligente, un sistema che si trova in un ambiente in evoluzione dovrebbe avere la capacità di apprendere. Se il sistema può apprendere e adattarsi a tali cambiamenti, il progettista di sistema non deve prevedere e fornire soluzioni per tutte le possibili situazioni.

Il Machine Learning consiste nella programmazione di computer per ottimizzare un criterio di prestazione utilizzando dati di esempio o esperienze passate.

Abbiamo un modello definito mediante alcuni parametri e l’apprendimento è l’esecuzione di un programma per computer per ottimizzare i parametri del modello utilizzando i dati di addestramento o il passato esperienza.

Il modello può essere predittivo per fare previsioni in futuro, o descrittivo per acquisire conoscenze dai dati, o entrambi. Più nello specifico, Il Machine Learning utilizza la teoria della statistica nella costruzione di modelli matematici, perché il compito principale è fare inferenze da un campione.

Il ruolo dell’informatica, quindi, è duplice: in primo luogo, nella fase di training, abbiamo bisogno di algoritmi efficienti per archiviare ed elaborare l’enorme quantità di dati che generalmente abbiamo. In secondo luogo, una volta appreso un modello, anche la soluzione algoritmica per l’inferenza deve essere efficiente.

Dai dati alle previsioni: quando il Machine Learning ci aiuta ad estrarre automaticamente gli algoritmi.

Solitamente quando ci troviamo davanti ad un problema che vogliamo risolvere mediante l’utilizzo di un computer ci serve un algoritmo. Un algoritmo è una sequenza di istruzioni necessaria a trasformare l’input in output.

Ad esempio, se volessimo ordinare un insieme di numeri abbiamo bisogno di un algoritmo di ordinamento il cui input è la lista di numeri che si vuole ordinare e l’output consiste nella corrispondente lista ordinata. Per questo compito, possono esserci vari algoritmi (ad esempio Merge Sort, Bubble Sort, Insertion Sort  etc.) e potremmo essere interessati a trovare quello più efficiente, che richiede il numero minimo di istruzioni o memoria o entrambi.

Segue una figura dell’approccio classico alla risoluzione di un problema noto:

Approccio classico di elaborazione

Purtroppo, per alcune attività non disponiamo di un algoritmo come, ad esempio, per l’identificazione delle mail di spam. Sappiamo qual è l’input: un documento di posta elettronica che nel caso più semplice è un file di caratteri. Sappiamo quale sia l’output dovrebbe essere: un output si/no che indica se il messaggio è spam o no. Non sappiamo come trasformare l’input in output. A rendere più ardua l’attività di identificazione delle mail di spam vi è la possibilità che tutto quello che può essere considerato spam cambia nel tempo e da individuo a individuo.

Come possiamo compensare questa mancanza di conoscenza?

La risposta è nei dati.

Possiamo facilmente compilare migliaia di messaggi di esempio, alcuni dei quali sappiamo essere spam per “imparare” cosa costituisce spam da loro. In altre parole, vorremmo che la macchina estraesse automaticamente l’algoritmo per questo compito.

Ma possiamo utilizzare un approccio simile anche per l’ordinamento dei numeri?

Chiaramente non serve utilizzare un approccio basato sul Machine Learning per l’ordinamento dei numeri perché non c’è bisogno di imparare a ordinare i numeri.

Ci sono molte applicazioni per le quali non abbiamo un algoritmo ma dati di esempio.

Con i progressi della tecnologia informatica, attualmente abbiamo la capacità di archiviare ed elaborare grandi quantità di dati, nonché di accedervi da luoghi fisicamente distanti su una rete di computer.

La maggior parte dei dispositivi di acquisizione dati ora sono digitali e registrano dati in maniera affidabile.

Si pensi, ad esempio, a una catena di supermercati che ha centinaia di negozi in tutto un paese che vendono migliaia di merci a milioni di clienti. I terminali del punto vendita registrano i dettagli di ogni transazione: data, codice identificativo del cliente, merce acquistata e relativo importo, totale spesa e così via. In genere si tratta di gigabyte di dati ogni giorno. Quello che la catena di supermercati vuole è poter prevedere chi sono i probabili clienti di un prodotto Anche in questo caso, l’algoritmo per questo non è evidente, cambia nel tempo e per posizione geografica, i dati memorizzati diventano utili solo quando vengono analizzati e trasformati in informazioni di cui possiamo avvalerci, ad esempio, per fare previsioni.

Sappiamo che esiste un processo che spiega i dati che osserviamo, anche se non conosciamo i dettagli del processo alla base della generazione dei dati. Ad esempio, per il comportamento dei consumatori, sappiamo che non è completamente casuale. Quando comprano birra, comprano patatine, d’estate comprano il gelato.

Quello che possiamo affermare è che nei dati ci sono modelli.

Potremmo non essere in grado di identificare completamente il processo di previsione, ma è possibile costruire una buona e utile approssimazione. Tale approssimazione potrebbe non spiegare tutto, ma potrebbe comunque essere in grado di rendere conto di una parte dei dati.

Anche se l’identificazione del processo completo non dovesse essere possibile potremmo ancora rilevare determinati modelli o regolarità.

Tali modelli possono aiutarci a capire il processo, oppure possiamo usare quei modelli per fare previsioni: supponendo che il futuro, almeno il prossimo futuro, non sarà molto diverso dal passato in cui sono stati raccolti i dati di esempio, anche le previsioni future possono essere corrette.

Questo è l’obiettivo del Machine Learning.

Segue una figura dell’approccio basato sul Machine Learning:

Machine Learning: come prevedere analizzando i dati