logo

Regressione lineare multipla

Nell'argomento precedente abbiamo appreso della regressione lineare semplice, in cui una singola variabile indipendente/predittore (X) viene utilizzata per modellare la variabile di risposta (Y). Ma possono esserci vari casi in cui la variabile di risposta è influenzata da più di una variabile predittrice; per tali casi viene utilizzato l'algoritmo di regressione lineare multipla.

Inoltre, la regressione lineare multipla è un'estensione della regressione lineare semplice poiché sono necessarie più variabili predittive per prevedere la variabile di risposta. Possiamo definirlo come:

La regressione lineare multipla è uno degli algoritmi di regressione più importanti che modella la relazione lineare tra una singola variabile continua dipendente e più di una variabile indipendente.

Esempio:

Previsione di CO2emissioni in base alla cilindrata del motore e al numero di cilindri di un'auto.

Alcuni punti chiave su MLR:

  • Per MLR, la variabile dipendente o target (Y) deve essere continua/reale, ma il predittore o la variabile indipendente può essere di forma continua o categoriale.
  • Ciascuna variabile caratteristica deve modellare la relazione lineare con la variabile dipendente.
  • MLR cerca di adattare una linea di regressione attraverso uno spazio multidimensionale di punti dati.

Equazione MLR:

Nella regressione lineare multipla, la variabile target (Y) è una combinazione lineare di più variabili predittive x1, X2, X3, ...,XN. Poiché si tratta di un miglioramento della regressione lineare semplice, quindi lo stesso viene applicato per l'equazione di regressione lineare multipla, l'equazione diventa:

 Y= b<sub>0</sub>+b<sub>1</sub>x<sub>1</sub>+ b<sub>2</sub>x<sub>2</sub>+ b<sub>3</sub>x<sub>3</sub>+...... bnxn ............... (a) 

Dove,

Y=Variabile di uscita/risposta

anno mese

B0, B1, B2, B3, BN....= Coefficienti del modello.

X1, X2, X3, X4,...= Varie Variabile indipendente/funzione

Presupposti per la regressione lineare multipla:

  • UN relazione lineare dovrebbe esistere tra le variabili Target e predittore.
  • I residui di regressione devono essere normalmente distribuito .
  • MLR presuppone poco o nessuna multicollinearità (correlazione tra la variabile indipendente) nei dati.

Implementazione del modello di regressione lineare multipla utilizzando Python:

Per implementare MLR utilizzando Python, abbiamo il seguente problema:

Descrizione del problema:

Abbiamo un set di dati di 50 start-up . Questo set di dati contiene cinque informazioni principali: Spesa per ricerca e sviluppo, spesa amministrativa, spesa per marketing, stato e profitto per un anno finanziario . Il nostro obiettivo è creare un modello in grado di determinare facilmente quale azienda ottiene il massimo profitto e quale è il fattore che influisce maggiormente sul profitto di un'azienda.

Poiché dobbiamo trovare il profitto, questo è la variabile dipendente e le altre quattro variabili sono variabili indipendenti. Di seguito sono riportati i passaggi principali della distribuzione del modello MLR:

    Passaggi di pre-elaborazione dei dati Adattamento del modello MLR al set di addestramento Predire il risultato del test set

Passaggio 1: pre-elaborazione dei dati Passaggio:

Il primo passo èImportazione di librerie:Per prima cosa importeremo la libreria che aiuterà nella costruzione del modello. Di seguito è riportato il codice:

 # importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd 
    Importazione del set di dati:Ora importeremo il set di dati (50_CompList), che contiene tutte le variabili. Di seguito è riportato il codice:
 #importing datasets data_set= pd.read_csv(&apos;50_CompList.csv&apos;) 

Produzione: Otterremo il set di dati come:

Regressione lineare multipla

Nell'output sopra, possiamo vedere chiaramente che ci sono cinque variabili, di cui quattro variabili sono continue e una è variabile categoriale.

    Estrazione di variabili dipendenti e indipendenti:
 #Extracting Independent and dependent Variable x= data_set.iloc[:, :-1].values y= data_set.iloc[:, 4].values 

Produzione:

Uscita[5]:

 array([[165349.2, 136897.8, 471784.1, &apos;New York&apos;], [162597.7, 151377.59, 443898.53, &apos;California&apos;], [153441.51, 101145.55, 407934.54, &apos;Florida&apos;], [144372.41, 118671.85, 383199.62, &apos;New York&apos;], [142107.34, 91391.77, 366168.42, &apos;Florida&apos;], [131876.9, 99814.71, 362861.36, &apos;New York&apos;], [134615.46, 147198.87, 127716.82, &apos;California&apos;], [130298.13, 145530.06, 323876.68, &apos;Florida&apos;], [120542.52, 148718.95, 311613.29, &apos;New York&apos;], [123334.88, 108679.17, 304981.62, &apos;California&apos;], [101913.08, 110594.11, 229160.95, &apos;Florida&apos;], [100671.96, 91790.61, 249744.55, &apos;California&apos;], [93863.75, 127320.38, 249839.44, &apos;Florida&apos;], [91992.39, 135495.07, 252664.93, &apos;California&apos;], [119943.24, 156547.42, 256512.92, &apos;Florida&apos;], [114523.61, 122616.84, 261776.23, &apos;New York&apos;], [78013.11, 121597.55, 264346.06, &apos;California&apos;], [94657.16, 145077.58, 282574.31, &apos;New York&apos;], [91749.16, 114175.79, 294919.57, &apos;Florida&apos;], [86419.7, 153514.11, 0.0, &apos;New York&apos;], [76253.86, 113867.3, 298664.47, &apos;California&apos;], [78389.47, 153773.43, 299737.29, &apos;New York&apos;], [73994.56, 122782.75, 303319.26, &apos;Florida&apos;], [67532.53, 105751.03, 304768.73, &apos;Florida&apos;], [77044.01, 99281.34, 140574.81, &apos;New York&apos;], [64664.71, 139553.16, 137962.62, &apos;California&apos;], [75328.87, 144135.98, 134050.07, &apos;Florida&apos;], [72107.6, 127864.55, 353183.81, &apos;New York&apos;], [66051.52, 182645.56, 118148.2, &apos;Florida&apos;], [65605.48, 153032.06, 107138.38, &apos;New York&apos;], [61994.48, 115641.28, 91131.24, &apos;Florida&apos;], [61136.38, 152701.92, 88218.23, &apos;New York&apos;], [63408.86, 129219.61, 46085.25, &apos;California&apos;], [55493.95, 103057.49, 214634.81, &apos;Florida&apos;], [46426.07, 157693.92, 210797.67, &apos;California&apos;], [46014.02, 85047.44, 205517.64, &apos;New York&apos;], [28663.76, 127056.21, 201126.82, &apos;Florida&apos;], [44069.95, 51283.14, 197029.42, &apos;California&apos;], [20229.59, 65947.93, 185265.1, &apos;New York&apos;], [38558.51, 82982.09, 174999.3, &apos;California&apos;], [28754.33, 118546.05, 172795.67, &apos;California&apos;], [27892.92, 84710.77, 164470.71, &apos;Florida&apos;], [23640.93, 96189.63, 148001.11, &apos;California&apos;], [15505.73, 127382.3, 35534.17, &apos;New York&apos;], [22177.74, 154806.14, 28334.72, &apos;California&apos;], [1000.23, 124153.04, 1903.93, &apos;New York&apos;], [1315.46, 115816.21, 297114.46, &apos;Florida&apos;], [0.0, 135426.92, 0.0, &apos;California&apos;], [542.05, 51743.15, 0.0, &apos;New York&apos;], [0.0, 116983.8, 45173.06, &apos;California&apos;]], dtype=object) 

Come possiamo vedere nell'output sopra, l'ultima colonna contiene variabili categoriali che non sono adatte per essere applicate direttamente per l'adattamento del modello. Quindi dobbiamo codificare questa variabile.

Codifica delle variabili fittizie:

Poiché abbiamo una variabile categoriale (Stato), che non può essere applicata direttamente al modello, la codificheremo. Per codificare la variabile categoriale in numeri, utilizzeremo il EtichettaEncoder classe. Ma non è sufficiente perché conserva ancora un certo ordine relazionale, che potrebbe creare un modello sbagliato. Quindi, per rimuovere questo problema, utilizzeremo OneHotEncoder , che creerà le variabili fittizie. Di seguito è riportato il codice:

 #Catgorical data from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder_x= LabelEncoder() x[:, 3]= labelencoder_x.fit_transform(x[:,3]) onehotencoder= OneHotEncoder(categorical_features= [3]) x= onehotencoder.fit_transform(x).toarray() 

Qui stiamo codificando solo una variabile indipendente, che è lo stato poiché le altre variabili sono continue.

stringa multilinea JavaScript

Produzione:

Regressione lineare multipla

Come possiamo vedere nell'output sopra, la colonna di stato è stata convertita in variabili fittizie (0 e 1). Qui ciascuna colonna di variabili fittizie corrisponde a uno Stato . Possiamo verificarlo confrontandolo con il set di dati originale. La prima colonna corrisponde a Stato della California , la seconda colonna corrisponde a Stato della Florida , e la terza colonna corrisponde a Stato di New York .

Nota:Non dovremmo utilizzare tutte le variabili fittizie contemporaneamente, quindi deve essere 1 in meno rispetto al numero totale di variabili fittizie, altrimenti creerà una trappola delle variabili fittizie.

  • Ora stiamo scrivendo una singola riga di codice solo per evitare la trappola delle variabili fittizie:
 #avoiding the dummy variable trap: x = x[:, 1:] 

Se non rimuoviamo la prima variabile fittizia, potrebbe introdurre multicollinearità nel modello.

Regressione lineare multipla

Come possiamo vedere nell'immagine di output sopra, la prima colonna è stata rimossa.

  • Ora divideremo il set di dati in set di training e set di test. Il codice per questo è riportato di seguito:
 # Splitting the dataset into training and test set. from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test= train_test_split(x, y, test_size= 0.2, random_state=0) 

Il codice sopra suddividerà il nostro set di dati in un set di training e un set di test.

Produzione: Il codice sopra suddividerà il set di dati in set di training e set di test. Puoi controllare l'output facendo clic sull'opzione variabile Explorer fornita in Spyder IDE. Il set di test e il set di training saranno simili all'immagine seguente:

Insieme di prova:

Regressione lineare multipla

Insieme di formazione:

Regressione lineare multipla

Nota:In MLR, non eseguiremo il ridimensionamento delle funzionalità poiché è gestito dalla libreria, quindi non è necessario farlo manualmente.

Passaggio: 2- Adattare il nostro modello MLR al set di allenamento:

Ora, abbiamo preparato bene il nostro set di dati per fornire la formazione, il che significa che adatteremo il nostro modello di regressione al set di formazione. Sarà simile a quello che abbiamo fatto in Modello di regressione lineare semplice. Il codice per questo sarà:

 #Fitting the MLR model to the training set: from sklearn.linear_model import LinearRegression regressor= LinearRegression() regressor.fit(x_train, y_train) 

Produzione:

 Out[9]: LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False) 

Ora abbiamo addestrato con successo il nostro modello utilizzando il set di dati di addestramento. Nel passaggio successivo, testeremo le prestazioni del modello utilizzando il set di dati di test.

Passaggio: 3- Previsione dei risultati del set di test:

L'ultimo passaggio per il nostro modello è verificare le prestazioni del modello. Lo faremo prevedendo il risultato del test set. Per la previsione, creeremo un file y_pred vettore. Di seguito è riportato il codice:

 #Predicting the Test set result; y_pred= regressor.predict(x_test) 

Eseguendo le righe di codice sopra, verrà generato un nuovo vettore sotto l'opzione variabile Explorer. Possiamo testare il nostro modello confrontando i valori previsti e testare i valori impostati.

Produzione:

Regressione lineare multipla

Nell'output precedente, abbiamo previsto il set di risultati e il set di test. Possiamo verificare le prestazioni del modello confrontando questi due valori indice per indice. Ad esempio, il primo indice ha un valore previsto di 103015$ profitto e valore di prova/reale di 103282$ profitto. La differenza è solo di $ 267 , che è una buona previsione, quindi, finalmente, il nostro modello è completato qui.

  • Possiamo anche controllare il punteggio per il set di dati di training e il set di dati di test. Di seguito è riportato il codice:
 print(&apos;Train Score: &apos;, regressor.score(x_train, y_train)) print(&apos;Test Score: &apos;, regressor.score(x_test, y_test)) 

Produzione: Il punteggio è:

 Train Score: 0.9501847627493607 Test Score: 0.9347068473282446 

Il punteggio riportato sopra indica che il nostro modello è accurato al 95% con il set di dati di addestramento e al 93% con il set di dati di test.

sostituzione della stringa Java

Nota:Nel prossimo argomento vedremo come possiamo migliorare le prestazioni del modello utilizzando ilEliminazione all'indietroprocessi.

Applicazioni della regressione lineare multipla:

Esistono principalmente due applicazioni della regressione lineare multipla:

  • Efficacia della variabile indipendente sulla previsione:
  • Prevedere l’impatto dei cambiamenti: