Scikit Learn - Bayesian Ridge Regression
La regressione bayesiana consente a un meccanismo naturale di sopravvivere a dati insufficienti o dati distribuiti male, formulando la regressione lineare utilizzando distributori di probabilità piuttosto che stime puntuali. Si presume che l'output o la risposta "y" derivi da una distribuzione di probabilità piuttosto che stimata come un singolo valore.
Matematicamente, per ottenere un modello completamente probabilistico si assume che la risposta y sia gaussiana distribuita intorno a $ X_ {w} $ come segue
$$ p \ left (y \ arrowvert X, w, \ alpha \ right) = N \ left (y \ arrowvert X_ {w}, \ alpha \ right) $$Uno dei tipi più utili di regressione bayesiana è la regressione di cresta bayesiana che stima un modello probabilistico del problema di regressione. Qui la priorità per il coefficiente w è data dalla gaussiana sferica come segue:
$$ p \ left (w \ arrowvert \ lambda \ right) = N \ left (w \ arrowvert 0, \ lambda ^ {- 1} I_ {p} \ right) $$Questo modello risultante è chiamato Bayesian Ridge Regression e in scikit-learn sklearn.linear_model.BeyesianRidge viene utilizzato per la regressione della cresta bayesiana.
Parametri
La tabella seguente è costituita dai parametri utilizzati da BayesianRidge modulo -
Suor n | Parametro e descrizione |
---|---|
1 | n_iter - int, opzionale Rappresenta il numero massimo di iterazioni. Il valore predefinito è 300 ma il valore definito dall'utente deve essere maggiore o uguale a 1. |
2 | fit_intercept - Booleano, opzionale, predefinito True Decide se calcolare o meno l'intercetta per questo modello. Nessuna intercetta verrà utilizzata nel calcolo, se verrà impostata su false. |
3 | tol - float, opzionale, default = 1.e-3 Rappresenta la precisione della soluzione e fermerà l'algoritmo se w è convergente. |
4 | alpha_1 - float, opzionale, default = 1.e-6 È il 1 ° iperparametro che è un parametro di forma per la distribuzione Gamma precedente sul parametro alfa. |
5 | alpha_2 - float, opzionale, default = 1.e-6 È il 2 ° iperparametro che è un parametro di scala inverso per la distribuzione Gamma prima del parametro alfa. |
6 | lambda_1 - float, opzionale, default = 1.e-6 È il 1 ° iperparametro che è un parametro di forma per la distribuzione Gamma precedente sul parametro lambda. |
7 | lambda_2 - float, opzionale, default = 1.e-6 È il 2 ° iperparametro che è un parametro di scala inverso per la distribuzione Gamma prima del parametro lambda. |
8 | copy_X - Booleano, opzionale, predefinito = True Per impostazione predefinita, è vero, il che significa che X verrà copiato. Ma se è impostato su false, X potrebbe essere sovrascritto. |
9 | compute_score - booleano, opzionale, predefinito = False Se impostato su true, calcola la verosimiglianza marginale logaritmica ad ogni iterazione dell'ottimizzazione. |
10 | verbose - Booleano, opzionale, predefinito = False Per impostazione predefinita, è falso ma se impostato su vero, la modalità dettagliata verrà abilitata durante l'adattamento del modello. |
Attributi
La tabella seguente è costituita dagli attributi utilizzati da BayesianRidge modulo -
Suor n | Attributi e descrizione |
---|---|
1 | coef_ - array, forma = n_features Questo attributo fornisce i vettori del peso. |
2 | intercept_ - galleggiante Rappresenta il termine indipendente nella funzione decisionale. |
3 | alpha_ - galleggiante Questo attributo fornisce la precisione stimata del rumore. |
4 | lambda_ - galleggiante Questo attributo fornisce la precisione stimata del peso. |
5 | n_iter_ - int Fornisce il numero effettivo di iterazioni prese dall'algoritmo per raggiungere il criterio di arresto. |
6 | sigma_ - array, forma = (n_features, n_features) Fornisce la matrice varianza-covarianza stimata dei pesi. |
7 | scores_ - matrice, forma = (n_iter_ + 1) Fornisce il valore della probabilità marginale logaritmica ad ogni iterazione dell'ottimizzazione. Nel punteggio risultante, l'array inizia con il valore della probabilità marginale del registro ottenuto per i valori iniziali di $ a \: e \: \ lambda $ e termina con il valore ottenuto per $ a \: e \: \ lambda stimati $. |
Esempio di implementazione
Il seguente script Python fornisce un semplice esempio di adattamento del modello di regressione della cresta bayesiana utilizzando sklearn BayesianRidge modulo.
from sklearn import linear_model
X = [[0, 0], [1, 1], [2, 2], [3, 3]]
Y = [0, 1, 2, 3]
BayReg = linear_model.BayesianRidge()
BayReg.fit(X, Y)
Produzione
BayesianRidge(alpha_1 = 1e-06, alpha_2 = 1e-06, compute_score = False, copy_X = True,
fit_intercept = True, lambda_1 = 1e-06, lambda_2 = 1e-06, n_iter = 300,
normalize = False, tol=0.001, verbose = False)
Dall'output di cui sopra, possiamo controllare i parametri del modello utilizzati nel calcolo.
Esempio
Ora, una volta adattato, il modello può prevedere nuovi valori come segue:
BayReg.predict([[1,1]])
Produzione
array([1.00000007])
Esempio
Allo stesso modo, possiamo accedere al coefficiente w del modello come segue:
BayReg.coef_
Produzione
array([0.49999993, 0.49999993])