Skip to content

Drift resilient Bayesian linear regression #1376

Open
@MaxHalford

Description

@MaxHalford
class RobustBayesLinReg(BayesLinReg):

    def __init__(self, smoothing, n_features, alpha, beta):
        super().__init__(n_features, alpha, beta)
        self.smoothing = smoothing

    def learn(self, x, y):

        # Update the inverse covariance matrix, with smoothing
        cov_inv = (
            self.smoothing * self.cov_inv +
            (1 - self.smoothing) * self.beta * np.outer(x, x)
        )

        # Update the mean vector, with smoothing
        cov = np.linalg.inv(cov_inv)
        mean = cov @ (
            self.smoothing * self.cov_inv @ self.mean +
            (1 - self.smoothing) * self.beta * y * x
        )

        self.cov_inv = cov_inv
        self.mean = mean

        return self

Metadata

Metadata

Assignees

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions