Comprensione della regressione multipla

Le basi fondamentali di questo algoritmo comunemente usato

La regressione lineare, pur essendo uno strumento utile, ha dei limiti significativi. Come implica il suo nome, non può facilmente abbinare qualsiasi serie di dati che non sia lineare. Può essere utilizzata solo per fare previsioni che si adattano all’intervallo del set di dati di allenamento. E, cosa più importante per questo articolo, può essere adattata solo a serie di dati con una singola variabile dipendente e una singola variabile indipendente.

È qui che entra in gioco la regressione multipla. Mentre non può superare tutte e tre queste debolezze della regressione lineare, è specificamente progettata per creare regressioni su modelli con una singola variabile dipendente e più variabili indipendenti.

Qual è la forma generale della regressione multipla?

La forma generale dell’equazione per la regressione lineare è:

y = B * x + A

dove y è la variabile dipendente, x è la variabile indipendente, e A e B sono coefficienti che dettano l’equazione. La differenza tra l’equazione per la regressione lineare e l’equazione per la regressione multipla è che l’equazione per la regressione multipla deve essere in grado di gestire più input, invece di un solo input della regressione lineare. Per tener conto di questo cambiamento, l’equazione per la regressione multipla prende la forma:

y = B_1 * x_1 + B_2 * x_2 + … + B_n * x_n + A

In questa equazione, i pedici indicano le diverse variabili indipendenti. x_1 è il valore della prima variabile indipendente, x_2 è il valore della seconda variabile indipendente, e così via. Si va avanti aggiungendo sempre più variabili indipendenti fino a quando l’ultima variabile indipendente, x_n, viene aggiunta all’equazione. Notate che questo modello vi permette di avere qualsiasi numero, n, di variabili indipendenti e più termini sono aggiunti come necessario. I coefficienti B utilizzano gli stessi pedici, indicando che sono i coefficienti legati ad ogni variabile indipendente. A, come prima, è semplicemente una costante che indica il valore della variabile dipendente, y, quando tutte le variabili indipendenti, le x, sono zero. Non sapete quanto tempo ci vuole in media, ma sapete che dipenderà da una serie di fattori. Probabilmente dipende da cose come la distanza percorsa, il numero di semafori sul percorso e il numero di altre auto sulla strada. In questo caso si potrebbe creare un’equazione di regressione lineare multipla come la seguente:

y = B_1 * Distanza + B_2 * Semafori + B_3 * Auto + A

dove y è il tempo medio di percorrenza, Distanza è la distanza tra la destinazione iniziale e quella finale, Semafori è il numero di semafori sul percorso, e A è una costante che rappresenta altri consumatori di tempo (ad esempio, mettere la cintura, avviare l’auto, forse fermarsi in un caffè).

Ora che hai il tuo modello di previsione del tempo di percorrenza, hai bisogno di adattare il tuo modello al tuo set di dati di allenamento per minimizzare gli errori.

Come si adatta un modello di regressione multipla?

Similmente a come abbiamo minimizzato la somma degli errori al quadrato per trovare B nell’esempio della regressione lineare, minimizziamo la somma degli errori al quadrato per trovare tutti i termini B nella regressione multipla.La differenza qui è che poiché ci sono termini multipli, e un numero imprecisato di termini finché non si crea il modello, non c’è una semplice soluzione algebrica per trovare i termini A e B. Questo significa che abbiamo bisogno di usare la discesa del gradiente stocastico. La discesa del gradiente stocastico è un argomento abbastanza grande da richiedere un altro articolo, quindi non mi immergerò nei dettagli qui. Tuttavia, una buona descrizione può essere trovata in Data Science from Scratch di Joel Gros. Fortunatamente, possiamo ancora presentare le equazioni necessarie per implementare questa soluzione prima di leggere i dettagli.

Il primo passo è la somma degli errori al quadrato su ogni punto. Questo prende la forma di:

Error_Point = (Actual – Prediction)²

dove Error è l’errore del modello nel prevedere il tempo di percorrenza di una persona, Actual è il valore effettivo (o il tempo di percorrenza effettivo di quella persona), e Prediction è il valore previsto dal modello (o il tempo di percorrenza di quella persona previsto dal modello). Attuale – Previsione produce l’errore per un punto, poi squadrandolo si ottiene l’errore al quadrato per un punto. Ricordate che la quadratura dell’errore è importante perché alcuni errori saranno positivi mentre altri saranno negativi e, se non vengono quadrettati, questi errori si annulleranno a vicenda facendo sembrare l’errore totale del modello molto più piccolo di quanto non sia in realtà.

Per trovare l’errore del modello, l’errore di ogni punto deve essere sommato in tutta la serie di dati. Questo significa essenzialmente che si usa il modello per prevedere il tempo di percorrenza per ogni punto dei dati che si ha, si sottrae quel valore dal tempo di percorrenza effettivo nel punto dei dati per trovare l’errore, si eleva al quadrato quell’errore e poi si sommano tutti gli errori al quadrato. In altre parole, l’errore del modello è:

Errore_Modello = somma(Actual_i – Prediction_i)²

dove i è un indice che itera attraverso tutti i punti del set di dati.

Una volta determinata la funzione di errore, è necessario mettere il modello e la funzione di errore attraverso un algoritmo di discesa del gradiente stocastico per minimizzare l’errore. Lo farà minimizzando i termini B dell’equazione. Scriverò presto un articolo dettagliato su come creare un algoritmo di discesa del gradiente stocastico, ma per ora potete trovare i dettagli in Data Science from Scratch o utilizzare gli strumenti del pacchetto Python scikit-learn.

Una volta che avete adattato il modello ai vostri dati di allenamento, il passo successivo è quello di assicurarsi che si adatti bene al modello.

Come posso assicurarmi che il modello si adatti bene ai dati?

La risposta breve è: Usa lo stesso valore r² che è stato usato per la regressione lineare. Il valore r², chiamato anche coefficiente di determinazione, indica la porzione di cambiamento nella serie di dati che è prevista dal modello. È un valore che va da 0 a 1, dove 0 indica che il modello non ha alcuna capacità di predire il risultato e 1 indica che il modello predice perfettamente il risultato. Dovreste aspettarvi che il valore r² di ogni modello che create sia compreso tra questi due valori (se non lo è, avete fatto un errore da qualche parte).

Il coefficiente di determinazione di un modello può essere calcolato utilizzando le seguenti equazioni:

r² = 1 – (Somma degli errori quadrati) / (Somma totale dei quadrati)

(Somma totale dei quadrati) = Somma(y_i – media(y))²

(Somma degli errori quadrati) = somma((Actual_i – Predizione_i)²)

I termini aggiuntivi miglioreranno sempre il modello, che il nuovo termine aggiunga o meno un valore significativo al modello.

Ecco dove testare l’adattamento di un modello di regressione multipla diventa complicato. Aggiungere più termini alla regressione multipla migliora intrinsecamente l’adattamento. Dà al modello un nuovo termine da usare per adattarsi ai dati, e un nuovo coefficiente che può variare per forzare un migliore adattamento. I termini aggiuntivi miglioreranno sempre il modello, sia che il nuovo termine aggiunga o meno un valore significativo al modello. Infatti, l’aggiunta di nuove variabili può effettivamente peggiorare il modello. Aggiungendo sempre più variabili, è sempre più probabile che il modello si adatti troppo ai dati di allenamento. Questo può risultare in un modello che inventa tendenze che non esistono realmente solo per forzare il modello a corrispondere ai punti che esistono.

Questo fatto ha implicazioni importanti quando si sviluppano modelli di regressione multipla. Sì, si potrebbe continuare ad aggiungere sempre più termini all’equazione finché non si ottiene una corrispondenza perfetta o si esauriscono le variabili da aggiungere. Ma poi vi ritrovereste con un modello molto grande, molto complesso e pieno di termini che non sono effettivamente rilevanti per il caso che state predicendo. Per esempio, nel nostro esempio di previsione dei tempi di pendolarismo, potreste migliorare il vostro modello aggiungendo un termine che rappresenta la dimensione apparente di Giove nel cielo notturno. Ma questo non ha un vero impatto sui tempi di percorrenza, vero?

Come posso identificare quali parametri sono più importanti?

Un modo è calcolare l’errore standard di ogni coefficiente. L’errore standard indica quanto il modello è sicuro di ogni coefficiente, con valori più grandi che indicano che il modello è meno sicuro di quel parametro. Questo è intuitivo anche senza vedere le equazioni sottostanti – se l’errore associato ad un termine è tipicamente alto, ciò implica che non sta avendo un impatto molto forte sull’abbinamento del modello al set di dati.

Calcolare l’errore standard è un processo statistico complesso, e non può essere descritto succintamente in un rapido articolo su Medium. Fortunatamente, ci sono pacchetti Python disponibili che potete usare per farlo per voi. La domanda è stata posta e ha avuto risposta su StackOverflow almeno una volta. Questi strumenti dovrebbero farvi iniziare.

Dopo aver calcolato l’errore standard di ogni coefficiente, potete usare i risultati per identificare quali coefficienti sono più alti e quali sono più bassi. Poiché i valori alti indicano che quei termini aggiungono meno valore predittivo al modello, potete sapere che quei termini sono i meno importanti da mantenere. A questo punto si può iniziare a scegliere quali termini nel modello possono essere rimossi per ridurre il numero di termini nell’equazione senza ridurre drasticamente il potere predittivo del modello.

Un altro metodo è quello di utilizzare una tecnica chiamata regolarizzazione. La regolarizzazione funziona aggiungendo un nuovo termine al calcolo dell’errore che si basa sul numero di termini nell’equazione di regressione multipla. Più termini nell’equazione porteranno intrinsecamente a un errore di regolarizzazione più alto, mentre meno termini porteranno intrinsecamente a un errore di regolarizzazione più basso. Inoltre, la penalità per l’aggiunta di termini nell’equazione di regolarizzazione può essere aumentata o diminuita a piacere. Aumentando la penalità si otterrà anche un errore di regolarizzazione più alto, mentre diminuendola si otterrà un errore di regolarizzazione più basso.

Con un termine di regolarizzazione aggiunto all’equazione di errore, minimizzare l’errore significa non solo minimizzare l’errore nel modello ma anche minimizzare il numero di termini nell’equazione. Questo porterà intrinsecamente a un modello con un peggior adattamento ai dati di formazione, ma porterà anche intrinsecamente a un modello con meno termini nell’equazione. Valori più alti di penalità/termine nell’errore di regolarizzazione creano più pressione sul modello per avere meno termini.

Joel Gros fornisce un buon esempio di utilizzo della regressione di cresta per la regolarizzazione nel suo libro Data Science from Scratch.

Come posso dare un senso a questo modello?

Il modello che hai creato non è solo un’equazione con una serie di numeri. Ognuno dei coefficienti che hai appena ricavato indica l’impatto che una variabile indipendente ha sulla variabile dipendente, assumendo che tutte le altre siano uguali. Per esempio, il nostro esempio sul tempo di percorrenza dice che il pendolare medio impiegherà B_2 minuti in più per ogni semaforo nel percorso di una persona. Se il processo di sviluppo del modello restituisce 2,32 per B_2, significa che ogni semaforo nel percorso di una persona aggiunge 2,32 minuti alla guida.

Questa è un’altra ragione per cui è importante mantenere basso il numero di termini nell’equazione. Se si aggiungono sempre più termini, diventa sempre più difficile tenere traccia del significato fisico di ogni termine. Diventa anche più difficile giustificare la presenza di ogni termine. Sono sicuro che chiunque conti sul modello di previsione del tempo di percorrenza sarebbe abbastanza d’accordo con un termine per la distanza di percorrenza, ma molto meno d’accordo con un termine per la dimensione di Giove nel cielo notturno.

Come si può espandere questo modello?

Nota che questo modello non dice nulla su come i parametri possano influenzarsi a vicenda. Guardando l’equazione, non c’è modo di farlo. I diversi coefficienti sono tutti collegati ad un solo parametro fisico. Se credi che due termini siano collegati, potresti creare un nuovo termine basato sulla combinazione di quei due. Per esempio, il numero di semafori sul tragitto potrebbe essere una funzione della distanza del tragitto. Una potenziale equazione per questo potrebbe essere:

Stoplights = C_1 * Distanza + D

dove C_1 e D sono coefficienti di regressione simili a B e A nell’equazione di regressione della distanza del pendolare. Questo termine per i semafori potrebbe quindi essere sostituito nell’equazione di regressione della distanza dei pendolari, permettendo al modello di catturare questa relazione.

Un’altra possibile modifica include l’aggiunta di input non lineari. Il modello di regressione multipla stesso è in grado di essere solo lineare, il che è una limitazione. È tuttavia possibile creare termini non lineari nel modello. Per esempio, diciamo che un semaforo che si blocca può impedire al traffico di passare attraverso un semaforo precedente. Questo potrebbe portare ad un impatto esponenziale dei semafori sul tempo di percorrenza. Si potrebbe creare un nuovo termine per catturare questo, e modificare il vostro algoritmo di distanza del pendolarismo di conseguenza. Sarebbe qualcosa di simile:

Stoplights_Squared = Stoplights²

y = B_1 * Distanza + B_2 * Stoplights + B_3 * Auto + B_4 * Stoplights_Squared + C

Queste due equazioni si combinano per creare un termine di regressione lineare per il tuo input non lineare Stoplights_Squared.

Concludendo

La regressione multipla è un’estensione dei modelli di regressione lineare che permette la previsione di sistemi con più variabili indipendenti. Lo fa semplicemente aggiungendo più termini all’equazione di regressione lineare, con ogni termine che rappresenta l’impatto di un diverso parametro fisico.

Questo è ancora un modello lineare, il che significa che i termini inclusi nel modello sono incapaci di mostrare qualsiasi relazione tra loro o di rappresentare qualsiasi tipo di tendenza non lineare. Questi aspetti negativi possono essere superati aggiungendo termini modificati all’equazione. Un nuovo parametro potrebbe essere guidato da un’altra equazione che traccia la relazione tra o variabili o che applica una tendenza non lineare alla variabile. In questo modo le tendenze lineari indipendenti nel modello di regressione multipla possono essere forzate per catturare le relazioni tra le due e/o gli impatti non lineari.

Perché ci sono più parametri nel modello che nella semplice regressione lineare, è necessaria più attenzione quando si crea l’equazione. Aggiungere più termini migliorerà intrinsecamente l’adattamento ai dati, ma i nuovi termini potrebbero non avere alcun significato fisico. Questo è pericoloso perché porta ad un modello che si adatta ai dati ma che in realtà non significa nulla di utile. Inoltre, più termini aumentano le probabilità di un overfitting del modello che porta a risultati potenzialmente disastrosi quando si predicono effettivamente i valori.

Ci sono molte tecniche per limitare il numero di parametri e gli svantaggi associati in questi modelli. Due includono il calcolo dell’errore standard di ogni coefficiente e la regolarizzazione. Il calcolo dell’errore standard permette di vedere quali termini sono i meno importanti per il modello e scegliere di eliminare i termini estranei di conseguenza. La regolarizzazione fa un ulteriore passo avanti aggiungendo un termine di errore per i termini aumentati nel modello, riducendo così effettivamente la bontà dell’adattamento man mano che si aggiungono altri termini. Questo metodo aiuta a trovare l’equilibrio tra la rimozione dei termini per ridurre gli svantaggi dei termini extra, mentre si include ancora abbastanza dei più importanti per ottenere un buon adattamento.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *