Indice dei contenuti
Questo articolo è il terzo di una serie di approfondimenti dedicati al Machine Learning, la branca dell'intelligenza artificiale che si pone come obiettivo quello di sviluppare sistemi che consentano ai sistemi computazionali (computer, robot, software, etc.) di apprendere e svolgere azioni ed attività in modo simile a quello degli esseri umani o animali, ovvero imparando dall'esperienza.
In questo contributo ci dedicheremo ad approfondire il concetto di regressione lineare e le principali metodologie di misurazione e gestione degli errori (loss) durante il processo di training del modello.
Regressione
Con il termine regressione lineare si fa riferimento a un metodo per trovare la linea retta o l'iperpiano che meglio si adatta a un insieme di punti: si tratta di una metodologia particolarmente utile per svolgere qualsiasi attività di analisi predittiva, il che la rende una preziosa alleata per tutti gli approcci basati sul Machine Learning.
Come abbiamo più volte chiarito nel corso dell'approfondimento dedicato al framing, il modello a cui affideremo il compito di effettuare le previsioni impara a ragionare grazie all'allenamento (training) effettuato grazie alla lettura di un insieme di dati (data set) dei quali si conoscono sia gli input (features) che gli output (label): in altre parole, labeled examples.
Prendiamo ad esempio il seguente data set:
1 2 3 4 5 6 |
Quartiere, MetriQuadri, Costo Flaminio, 130, 600 Prati, 120, 800 Esquilino, 100, 750 Prima Porta, 150, 500 Labaro, 140, 400 |
Come possiamo vedere, si tratta di un elenco di abitazioni site all'interno del comune di Roma: ciascun example è dotato di due feature (il quartiere e i metri quadri) e di una label (il costo in migliaia di EUR). Per semplicità in questa fase ignoreremo il quartiere per concentrarsi su una singola feature (i metri quadri), che chiameremo X, e una singola label (il costo), che chiameremo Y. Sarà così possibile tracciare un piano cartesiano che preveda le feature dei singoli examples sull'asse delle X e le rispettive label sull'asse delle Y.
[immagine]
Questo ci consentirà di visualizzare in modo piuttosto evidente il modello che potremo adottare per prevedere la label partendo da una feature, ovvero il costo di un'abitazione partendo dai metri quadri: nel caso specifico, basterà tracciare una linea diagonale che intersechi i singoli punti presenti sul piano "nel modo migliore possibile", ovvero seguendo l'orientamento generale dei punti.
[immagine]
Inevitabilmente la retta risultante non riuscirà a intersecare tutti i punti, in quanto esistono evidenti elementi di "distorsione" (il quartiere, ma anche feature non note o non facilmente misurabili come il piano, l'età e lo stato di conservazione dell'immobile, etc.) che in questo momento non stiamo prendendo in considerazione. Nonostante questo, la retta che abbiamo tracciato consente già di determinare, con un buon grado di approssimazione, una previsione verosimile del prezzo di una casa sulla base del numero di metri quadri: e può farlo grazie alla presenza dei punti che abbiamo utilizzato per tracciarla, o per meglio dire per "allenarla": quei punti corrispondono dunque ai nostri training data.
Se volessimo scrivere la formula algebrica della nostra "retta predittiva", potremmo farlo nel seguente modo:
Y = WX + B
La W presente nell'equazione è il cosiddetto Weight Vector, mentre il B è relativo al bias comune a tutti i punti: idealmente città come Roma e Milano, dove i prezzi delle case sono mediamente costosi a prescindere dal quartiere, avranno bias maggiori rispetto a realtà più periferiche.
Prima di procedere, è utile fornire una breve definizione dei concetti di Weight Factor e Bias:
- Weight Factor:
- Bias: il tipo di assunzioni che il modello effettua sulla natura della funzione obiettivo: in altre parole,
L'importanza del test
Come facciamo a determinare se la nostra "retta predittiva" è sufficientemente valida? La risposta è molto semplice: mettendola alla prova con dei test data, ovvero con un data set composto da examples aventi le stesse caratteristiche di quelli utilizzati per tracciarla (training data), ma che andremo a disporre sul grafico in un secondo momento, ovvero dopo aver tracciato la retta. In questo modo potremo confrontare la loro posizione sull'asse delle Y con quella "prevista" dalla retta stessa per quel determinato valore di X. Tanto minore sarà la differenza tra il valore previsto e il valore reale, quanto migliore sarà la capacità predittiva del nostro modello.
Questa differenza prende il nome di loss, termine traducibile in italiano come scarto. Nei casi in cui il punto Y previsto corrisponde quasi perfettamente con quello atteso, possiamo dunque parlare di near-zero loss, o addirittura di zero-loss; nei casi in cui i due valori non corrispondono, avremo invece dei positive o negative loss, a seconda ovviamente della "direzione" (ovvero del segno) del nostro errore.
Calcolo e misurazione del loss
Vediamo ora come possiamo calcolare il loss di una funzione di questo tipo in modo da poter avere un dato oggettivo: ovviamente non possiamo basarci su un singolo caso di specie, ma dobbiamo trovare il modo di calcolare una sorta di "media" che ci consenta di pre-determinare quello che, in termini non tecnici, potremmo definire il coefficiente di errore.
Uno dei metodi più utilizzati è il calcolo del cosiddetto Squared Error, che si ottiene effettuando la radice quadrata della differenza tra la previsione del nostro modello e il valore reale per ciascun punto: una volta calcolato lo Squared Error per ciascun labeled example presente nel data set di test (test data) è possibile calcolare il Root Mean Square Error (RMSE), ovvero lo scarto quadratico medio: esso infatti non è altro che la radice quadrata della varianza, ovvero la media di tutti gli Squared Error presenti all'interno del data set di test.
Conclusioni
Per il momento è tutto: nei prossimi articoli abbandoneremo la teoria per immergerci nella pratica, utilizzando la libreria Microsoft ML.NET per realizzare una piccola applicazione web che ci consentirà di mettere in pratica tutto quello che abbiamo imparato finora.
Articoli correlati
- INTELLIGENZA ARTIFICIALE
- MACHINE LEARNING