La regressione lineare

Dalla stampante ai problemi del millennio

Spesso sostengo che l’informatica vive grazie all’esistenza di problemi. L’informatico è colui che viene addestrato a risolvere problemi. Certo, si passa dall’essere chiamati a risolvere il problema della stampante del vicino di casa che non viene più riconosciuta dal pc, al tentare di risolvere uno dei problemi del millennio, nella speranza di essere il fortunato destinatario del milione di euro in palio. In ogni caso, gran parte delle questioni più avvincenti dell’informatica cominciano da un problema…

Intuitivamente, qual è il problema?

Supponiamo di possedere dei dati, collezionati nel tempo, che raccolgono una serie di informazioni su delle abitazioni situate in una particolare zona degli Stati Uniti. Per ciascuna di queste abitazioni abbiamo, ad esempio, l’informazione sulla superficie che occupa, sul numero di stanze che possiede, sulla collocazione geografica rispetto alla quale è situata, sul prezzo di vendita e così via. A fronte di questi dati, vorremmo dunque rispondere alla seguente domanda:

Se possedessimo una casa di una determinata superficie, quale sarà il suo costo?

Le strade per rispondere sono essenzialmente due:

  1. nel dataset da cui partiamo abbiamo fortunatamente già mappato la superficie della nostra abitazione in relazione al suo costo, e allora la risposta sarà direttamente ottenibile dal valore risultante.
  2. La superficie di nostro interesse non è presente nel nostro dataset. Dobbiamo pertanto lavorare, tramite la regressione lineare, per prevedere il costo dell’abitazione.

Nell’intento di ottenere questa informazione costruiremo un modello diregressione lineare, ovvero cercheremo di ricavare una retta che descriva i dati da cui partiamo. Ci serviremo di tale retta per fare delle previsioni su dati non presenti nel dataset da cui partiamo.

Alcune premesse

Cos’è | La regressione è un processo statistico che cerca di stabilire una relazione tra due o più variabili. Fornito a un modello di regressione un valore x, questo restituirà il corrispondente valore y generato dall’elaborazione di x.

Perché è diversa dalla classificazione | La regressione lineare si differenzia nettamente dalla classificazione, poiché quest’ultima si limita a discriminare gli elementi in una determinato numero di classi (label), mentre nella prima l’input è un dato e il sistema ci restituisce un output reale (a differenza della classificazione che riceve in input un dato e restituisce in ouput una label, un’etichetta a cui il dato appartiene e in generale quindi un valore discreto).

Apprendimento supervisionato | Sia la regressione che la classificazione però, appartengono alla categoria delle tecniche di apprendimentosupervisionato, ovvero un tipo di apprendimento che fornisce a priori una serie di dati e informazioni al sistema, prima che questo cominci ad apprendere.

Riprendiamo l’esempio iniziale. Il dataset su cui stiamo operando ha la seguente forma grafica.

Grafico 1: esempio di distribuzione dei dati

Ogni esagono del Grafico 1 rappresenta un’abitazione, posizionato sul piano cartesiano a partire dalle sue coordinate superficie (size) e prezzo (price).

Potremmo avere l’esigenza mostrata nel Grafico 2: se la nostra abitazione possiede una dimensione di 950feet², a quanto ammonterà il suo prezzo?

Grafico 2: vorrei stimare il costo di una casa che ha una dimensione di 950 feet²

Per rispondere a questa domanda, il nostro primo compito è produrre il modello matematico che rappresenta i dati del training set. Dobbiamo quindi calcolare l’equazione della retta che meglio rappresenta i dati.

Nel Grafico 3 è riportata in blu questa retta.

La retta mostrato nel Grafico 3, non può essere disposta sul piano in maniera casuale. Abbiamo bisogno di un procedimento matematico e algoritmico che ci conduca all’ottenimento dell’equazione di questa retta.

Di seguito riportiamo i passaggi più importanti da svolgere.

Chiameremo “ipotesi” la retta che stiamo cercando. Affiancheremo all’ipotesi una funzione costo di supporto che ci permetterà di discriminare, tra le infinite possibili rette, la migliore.

 

Quindi, a partire dal training set, proveremo a formulare un’ipotesi (o analogamente: a cercare una retta), che descriva con accuratezza i dati.

Il nostro compito sarà capire:

  1. se il modello ottenuto a partire da una determinata ipotesi h, descrive con sufficiente accuratezza i dati,
  2. altrimenti, se il modello non ci soddisfa, in che modo cambiare l’ipotesi affinché il nuovo modello migliori quello precedente.

Formalizziamo l'ipotesi

La formulazione matematica dell’ipotesi è piuttosto semplice, essa infatti, dovendo assumere la forma di una retta, si presenterà nel modo seguente:

Formulazione matematica dell’ipotesi (equazione di una retta)

Nulla ci vieta di rappresentare l’ipotesi anche in forma di prodotto scalare:

Formulazione dell’ipotesi in forma scalare

Oppure in forma vettoriale:

Ipotesi in forma vettoriale

Ricordiamo al lettore che theta 0 rappresenta l’intersezione della retta con l’asse y, mentre theta 1 rappresenta la pendenza della retta.

L’ipotesi così formulata ci permette di “giocare” con i parametri theta 0 theta 1 in da poter agire sulla pendenza e/o sull’intercetta della retta.

Alla luce di queste premesse, è ora necessario individuare i migliori valori per theta 1theta 2 affinché la retta prodotta descriva al meglio i dati di input.

Minimizziamo l'ipotesi

Il problema di individuare i migliori parametri theta 0 theta 1 affinché la retta descriva con precisione i dati del nostro training set si può riformulare come un problema di minimizzazione.

Qui entra in gioco la funzione costo. Definiamo questa funzione nel modo seguente:

Funzione Costo

Questa funzione calcola, attraverso una sommatoria, lo scarto quadratico medio di tutti gli errori calcolati per gli m elementi di input, prima di dividere il valore così ottenuto per m = cardinalità del training set.

Rispetto a tale funzione, è nostro interesse individuare la somma che restituisce il valore minimo che la funzione J può assumere.

Minimizziamo la Funzione Costo J

Nella figura che segue viene mostrata l’ipotesi (la retta fucsia), alcuni punti del nostro training set (i cerchi verdi) e le distanze tra la retta e i punti del dataset (le brevi linee blu verticali).

Minimizzando la funzione costo J ci assicuriamo di minimizzare la somma di tutte le distanze blu che separano la retta dai punti.

Nel riquadro sinistro è riportata la formula dell’errore, mentre in quello destro la minimizzazione della funzione costo, che calcola la sommatoria degli errori in modo tale che essa restituisca il minimo valore possibile.

Conclusione

Attraverso i procedimenti sopra descritti e tramite la tecnica dei minimi quadrati, siamo così in grado di dare un valore a theta 0 theta 1. Con questi due valori possiamo scrivere l’equazione della retta che meglio approssima i dati di training.

Se volessimo implementare il tutto con Python, potremmo sfruttare la libreria Scikit-learn, che ci fornisce delle funzioni ad-hoc per calcolare la regressione lineare utilizzando la tecnica dei minimi quadrati.

Video: An Introduction to Linear Regression Analysis

Uno dei migliori video d’introduzione alla regressione lineare penso sia il seguente, prodotto da David Longstreet.

share the wisdom

Condividi su facebook
Condividi su twitter

Matteo Troìa / 2019