Scikit Learn - Régression de dorsale bayésienne

La régression bayésienne permet à un mécanisme naturel de survivre à des données insuffisantes ou mal distribuées en formulant une régression linéaire en utilisant des distributeurs de probabilité plutôt que des estimations ponctuelles. La sortie ou la réponse «y» est supposée tirée d'une distribution de probabilité plutôt que estimée comme une valeur unique.

Mathématiquement, pour obtenir un modèle entièrement probabiliste, la réponse y est supposée être gaussienne distribuée autour de $ X_ {w} $ comme suit

$$ p \ left (y \ arrowvert X, w, \ alpha \ right) = N \ left (y \ arrowvert X_ {w}, \ alpha \ right) $$

L'un des types les plus utiles de régression bayésienne est la régression Bayesian Ridge qui estime un modèle probabiliste du problème de régression. Ici, l'a priori pour le coefficient w est donné par la Gaussienne sphérique comme suit -

$$ p \ left (w \ arrowvert \ lambda \ right) = N \ left (w \ arrowvert 0, \ lambda ^ {- 1} I_ {p} \ right) $$

Ce modèle résultant est appelé régression de crête bayésienne et dans scikit-learn sklearn.linear_model.BeyesianRidge Le module est utilisé pour la régression de dorsale bayésienne.

Paramètres

Le tableau suivant comprend les paramètres utilisés par BayesianRidge module -

Sr. Non Paramètre et description
1

n_iter - int, facultatif

Il représente le nombre maximum d'itérations. La valeur par défaut est 300 mais la valeur définie par l'utilisateur doit être supérieure ou égale à 1.

2

fit_intercept - Booléen, facultatif, True par défaut

Il décide s'il faut calculer l'intersection pour ce modèle ou non. Aucune interception ne sera utilisée dans le calcul, si elle est définie sur false.

3

tol - float, optionnel, par défaut = 1.e-3

Il représente la précision de la solution et arrêtera l'algorithme si w a convergé.

4

alpha_1 - float, optionnel, par défaut = 1.e-6

C'est le 1 er hyperparamètre qui est un paramètre de forme pour la distribution Gamma avant le paramètre alpha.

5

alpha_2 - float, optionnel, par défaut = 1.e-6

C'est le 2 ème hyperparamètre qui est un paramètre d'échelle inverse pour la distribution Gamma avant le paramètre alpha.

6

lambda_1 - float, optionnel, par défaut = 1.e-6

C'est le 1 er hyperparamètre qui est un paramètre de forme pour la distribution Gamma antérieure sur le paramètre lambda.

sept

lambda_2 - float, optionnel, par défaut = 1.e-6

C'est le 2 ème hyperparamètre qui est un paramètre d'échelle inverse pour la distribution Gamma a priori sur le paramètre lambda.

8

copy_X - Booléen, facultatif, par défaut = True

Par défaut, il est vrai, ce qui signifie que X sera copié. Mais s'il est défini sur false, X peut être écrasé.

9

compute_score - booléen, facultatif, par défaut = False

S'il est défini sur true, il calcule la probabilité marginale logarithmique à chaque itération de l'optimisation.

dix

verbose - Booléen, facultatif, par défaut = False

Par défaut, il est faux, mais s'il est défini sur true, le mode détaillé sera activé lors de l'ajustement du modèle.

Les attributs

Le tableau suivant comprend les attributs utilisés par BayesianRidge module -

Sr. Non Attributs et description
1

coef_ - tableau, forme = n_features

Cet attribut fournit les vecteurs de poids.

2

intercept_ - flotter

Il représente le terme indépendant dans la fonction de décision.

3

alpha_ - flotter

Cet attribut fournit la précision estimée du bruit.

4

lambda_ - flotter

Cet attribut fournit la précision estimée du poids.

5

n_iter_ - int

Il fournit le nombre réel d'itérations prises par l'algorithme pour atteindre le critère d'arrêt.

6

sigma_ - tableau, forme = (n_features, n_features)

Il fournit la matrice de variance-covariance estimée des poids.

sept

scores_ - tableau, forme = (n_iter_ + 1)

Il fournit la valeur de la vraisemblance marginale logarithmique à chaque itération de l'optimisation. Dans le score résultant, le tableau commence par la valeur de la vraisemblance marginale logarithmique obtenue pour les valeurs initiales de $ a \: et \: \ lambda $, et se termine par la valeur obtenue pour $ a \: et \: \ lambda estimés $.

Exemple d'implémentation

Le script Python suivant fournit un exemple simple d'ajustement du modèle Bayesian Ridge Regression à l'aide de sklearn BayesianRidge module.

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)

Production

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)

À partir de la sortie ci-dessus, nous pouvons vérifier les paramètres du modèle utilisés dans le calcul.

Exemple

Maintenant, une fois ajusté, le modèle peut prédire de nouvelles valeurs comme suit -

BayReg.predict([[1,1]])

Production

array([1.00000007])

Exemple

De même, on peut accéder au coefficient w du modèle comme suit -

BayReg.coef_

Production

array([0.49999993, 0.49999993])