Modello di regressione lineare
- 24-07-2022
- chuong xuan
- 0 Comments
Mentre usiamo le librerie disponibili per addestrare il modello, ma usiamo un cucchiaio con serratura per aprire una scatola senza sapere cosa c'è dentro? Ma puoi ancora aprire la scatola. Con una migliore comprensione delle teorie all'interno dell'algoritmo, è possibile utilizzare i parametri per adattare il modello.
In questa sezione, ti familiarizzerò con la regressione lineare che è uno degli algoritmi più basilari nell'apprendimento automatico. In questo algoritmo, l'input e l'output sono descritti da una funzione lineare.
Mục lục
Problema di matematica illustrato
Supponiamo che ci sia un problema nel prevedere i prezzi delle case. Ci sono dati di 1000 case in quella città, in cui conosciamo i parametri nella parola casa è la larghezza è x 1 m 2 ha x 2 camere da letto e dista 3 km dal centro. Se aggiungi una nuova casa con i parametri di cui sopra, puoi prevedere il prezzo y della casa? Se sì, quale forma ha la funzione predittiva y = f(x)? Qui feature vector x = [x 1, x 2 , x 3 ] T è un vettore colonna contenente informazioni di input, l'output y è uno scalare.
In effetti, possiamo vedere che all'aumentare dei coefficienti delle caratteristiche della parola, aumenta anche l'output, quindi esiste una semplice funzione lineare:
y_pre = f(x) = w 0 + w 1 x 1 + w 2 x 2 + … + w n x n = x T w
Lì dentro:
- y_pre: è il valore di output previsto. (e y_pre sarà diverso da y effettivo)
- n è il numero di funzioni.
- (x i ) è l'i .esima caratteristica
- w è il parametro del modello dove w 0 è il bias e i parametri w 1 , w 2 ,….
Il problema di cui sopra è il problema di prevedere il valore dell'output in base al vettore delle caratteristiche di input. Inoltre, il valore dell'uscita può assumere molti diversi valori reali positivi. Quindi questo è un problema di regressione. La relazione y_pre = x T w è una relazione lineare. Il nome regressione lineare deriva da qui.
Formazione modello
Dopo avere un modello di regressione lineare, l'addestramento del modello consiste nel trovare i parametri più ottimali attraverso il set di dati di addestramento. Per fare questo abbiamo bisogno di un modo per determinare se il modello è buono o meno. Qui introdurrò un modo per determinare che consiste nell'usare l'espressione Root Mean Square Error (RMSE). L'obiettivo di tale formazione è ridurre al minimo il valore dell'errore quadratico medio (MSE). Significa semplicemente che vogliamo che la differenza tra la y prevista e la y effettiva sia la più piccola possibile.
La media del fattore 1/n, o la somma nella funzione di perdita, non ha alcun effetto matematico sulla soluzione del problema. Nell'apprendimento automatico, le funzioni di perdita di solito contengono il coefficiente medio per ciascun punto dati nel set di allenamento, quindi quando si calcola il valore della funzione di perdita sul set di test, è necessario calcolare l'errore medio di ciascun punto. Il calcolo della funzione di perdita aiuta a evitare l'overfitting quando il numero di punti dati è troppo grande e ci aiuta anche a valutare il modello in un secondo momento.
Equazione standard
Per trovare il valore di w che aiuta a minimizzare l'equazione sopra, possiamo calcolare la derivata della direzione superiore rispetto a w quando sono zero. E determinare il minimo.
Pertanto, possiamo determinare il minimo con la seguente formula: w = (X T X) – 1XTy.
Dove w è il valore al quale MSE(w) è minimizzato. y è il vettore da trovare includendo (y 1 , … y m ).
Implementare in Python.
Assumendo il set di dati di seguito, determina il peso di quella persona in base all'altezza.
Visualizzazione dei dati
import numpy as np
import matplotlib.pyplot as plt
X = np.array([[147, 150, 153, 158, 163, 165, 168, 170, 173, 175, 178, 180, 183]]).T
y = np.array([ 49, 50, 51, 54, 58, 59, 60, 62, 63, 64, 66, 67, 68])
Osservando il problema, dobbiamo determinare il modello della forma: (peso) = w_1*(altezza) + w_0.
Determina la soluzione secondo la formula.
Inizializza i dati
one = np.ones((X.shape[0], 1)) #Bias
Xbar = np.concatenate((one, X), axis = 1) # each point is one row
Successivamente, calcoleremo i coefficienti w_1 e w_0 in base alla formula . Nota: lo pseudo-inverso di una matrice A in Python verrà calcolato usando numpy.linalg.pinv(A ).
A = np.dot(Xbar.T, Xbar)
b = np.dot(Xbar.T, y)
w_best = np.dot(np.linalg.pinv(A), b)
Utilizzare il modello per prevedere i dati nel set di test:
y1 = w_1 * 155 + w_0
y2 = w_1 * 160 + w_0
print('Input 155cm, true output 52kg, predicted output %.2fkg' %(y1) )
print('Input 160cm, true output 56kg, predicted output %.2fkg' %(y2))
Risultato
Input 155cm, true output 52kg, predicted output 52.94kg
Input 160cm, true output 56kg, predicted output 55.74kg
Puoi anche provare con alcune librerie Python per confrontare i risultati.
Problemi risolvibili mediante regressione lineare
Vediamo che la formula X TW è una funzione lineare sia di w che di x. Ma in effetti la regressione lineare può essere applicata a modelli che devono solo essere lineari rispetto a w. Per esempio:
y w 1 x 1 + w 2 x 2 + w 3 x 2 1 + w 4 sin(x 2 ) + w 5 x 1 x 2 + w 0
È una funzione lineare di w e può quindi essere risolta anche mediante regressione lineare. Tuttavia, determinare sin(x2) e x1x2 è relativamente innaturale.
Limiti della regressione lineare
La prima limitazione della regressione lineare è che è molto sensibile al rumore. Nell'esempio di relazione altezza-peso sopra, se c'è solo una coppia di dati rumorosa (150 cm, 90 kg) i risultati saranno molto diversi.
Quindi prima di implementare il modello di formazione abbiamo bisogno di un passaggio chiamato pre-elaborazione di cui ho parlato nel blog precedente a cui puoi fare riferimento.
Il secondo limite della regressione lineare è che non può rappresentare modelli complessi.
riepilogo
Quindi, in questo articolo, ti ho mostrato come addestrare un algoritmo di regressione lineare. Fondamentalmente, per addestrare un algoritmo ci vuole:
- Definisci il modello.
- Definire una funzione di costo (o funzione di perdita).
- Ottimizzazione della funzione di costo utilizzando i dati di allenamento.
- Trova i pesi del modello in cui la funzione di costo ha il valore più piccolo.