Scikit Learn - Regressão Bayesian Ridge

A regressão bayesiana permite que um mecanismo natural sobreviva a dados insuficientes ou dados mal distribuídos, formulando a regressão linear usando distribuidores de probabilidade em vez de estimativas pontuais. A saída ou resposta 'y' é considerada retirada de uma distribuição de probabilidade, em vez de estimada como um único valor.

Matematicamente, para obter um modelo totalmente probabilístico, a resposta y é assumida como sendo Gaussiana distribuída em torno de $ X_ {w} $ como segue

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

Um dos tipos mais úteis de regressão Bayesiana é a regressão Bayesian Ridge, que estima um modelo probabilístico do problema de regressão. Aqui, a anterior para o coeficiente w é dada por gaussiana esférica da seguinte forma -

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

Este modelo resultante é chamado de regressão Bayesian Ridge e no scikit-learn sklearn.linear_model.BeyesianRidge módulo é usado para regressão do cume bayesiano.

Parâmetros

A tabela a seguir consiste nos parâmetros usados ​​por BayesianRidge módulo -

Sr. Não Parâmetro e Descrição
1

n_iter - int, opcional

Ele representa o número máximo de iterações. O valor padrão é 300, mas o valor definido pelo usuário deve ser maior ou igual a 1.

2

fit_intercept - Booleano, opcional, verdadeiro padrão

Ele decide se deve calcular a interceptação para este modelo ou não. Nenhuma interceptação será usada no cálculo, se for definida como falsa.

3

tol - flutuante, opcional, padrão = 1.e-3

Ele representa a precisão da solução e interromperá o algoritmo se w tiver convergido.

4

alpha_1 - flutuante, opcional, padrão = 1.e-6

É o 1 r hiperparâmetro que é um parâmetro de forma para a distribuição Gama prévia sobre o parâmetro alfa.

5

alpha_2 - flutuante, opcional, padrão = 1.e-6

É o hiperparâmetro, um parâmetro de escala inversa para a distribuição Gama anterior ao parâmetro alfa.

6

lambda_1 - flutuante, opcional, padrão = 1.e-6

É o 1 r hiperparâmetro que é um parâmetro de forma para a distribuição Gama prévia sobre o parâmetro de lambda.

7

lambda_2 - flutuante, opcional, padrão = 1.e-6

É o hiperparâmetro, que é um parâmetro de escala inversa para a distribuição Gama anterior ao parâmetro lambda.

8

copy_X - Booleano, opcional, padrão = Verdadeiro

Por padrão, é verdade, o que significa que X será copiado. Mas se for definido como falso, X pode ser substituído.

9

compute_score - booleano, opcional, padrão = False

Se definido como verdadeiro, ele calcula a probabilidade marginal logarítmica em cada iteração da otimização.

10

verbose - Booleano, opcional, padrão = False

Por padrão, é falso, mas se definido como verdadeiro, o modo detalhado será habilitado durante o ajuste do modelo.

Atributos

A tabela a seguir consiste nos atributos usados ​​por BayesianRidge módulo -

Sr. Não Atributos e descrição
1

coef_ - matriz, forma = n_features

Este atributo fornece os vetores de peso.

2

intercept_ - flutuar

Ele representa o termo independente na função de decisão.

3

alpha_ - flutuar

Este atributo fornece a precisão estimada do ruído.

4

lambda_ - flutuar

Este atributo fornece a precisão estimada do peso.

5

n_iter_ - int

Ele fornece o número real de iterações feitas pelo algoritmo para atingir o critério de parada.

6

sigma_ - matriz, forma = (n_features, n_features)

Ele fornece a matriz de variância-covariância estimada dos pesos.

7

scores_ - matriz, forma = (n_iter_ + 1)

Ele fornece o valor da probabilidade marginal logarítmica em cada iteração da otimização. Na pontuação resultante, a matriz começa com o valor do log da verossimilhança marginal obtido para os valores iniciais de $ a \: e \: \ lambda $, e termina com o valor obtido para $ a \: e \: \ lambda estimados $.

Exemplo de Implementação

Seguir o script Python fornece um exemplo simples de ajuste do modelo Bayesian Ridge Regression usando sklearn BayesianRidge módulo.

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)

Resultado

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)

A partir da saída acima, podemos verificar os parâmetros do modelo usados ​​no cálculo.

Exemplo

Agora, uma vez ajustado, o modelo pode prever novos valores da seguinte forma -

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

Resultado

array([1.00000007])

Exemplo

Da mesma forma, podemos acessar o coeficiente w do modelo da seguinte forma -

BayReg.coef_

Resultado

array([0.49999993, 0.49999993])