Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

1. Data Laden en Voorbereiden

We laden eerst de California Housing dataset en selecteren een subset van features.

Dataset shape: X=(20640, 2), y=(20640,)

First 5 samples:
   MedInc  HouseAge  MedHouseVal
0  8.3252      41.0        4.526
1  8.3014      21.0        3.585
2  7.2574      52.0        3.521
3  5.6431      52.0        3.413
4  3.8462      52.0        3.422

Standardisatie

Voor Bayesiaanse regressie is het belangrijk om de data te standardiseren (mean=0, std=1). Dit maakt het makkelijker om informatieve priors te kiezen.

Scaled X mean: [6.60969987e-17 5.50808322e-18]
Scaled X std: [1. 1.]
Scaled y mean: 0.000000
Scaled y std: 1.000000

Subset voor Visualisatie

Voor de visualisatie nemen we een kleine subset van 50 observaties.

2. Bayesiaanse Parameterschatting Setup

We schatten drie parameters: b0b_0 (intercept), b1b_1 (effect van inkomen), b2b_2 (effect van leeftijd).

Prior Distributie

We kiezen een trivariate normaalverdeling als prior:

p(b)=N(μ0,Σ0)p(\pmb{b}) = \mathcal{N}(\pmb{\mu}_0, \pmb{\Sigma}_0)

Voor gestandaardiseerde data kiezen we:

  • Mean: μ0=[0,0,0]T\pmb{\mu}_0 = [0, 0, 0]^T

  • Covariance: Σ0=0.52I\pmb{\Sigma}_0 = 0.5^2 \pmb{I} (redelijk brede prior)

Prior mean:
[0. 0. 0.]

Prior covariance:
[[0.25 0.   0.  ]
 [0.   0.25 0.  ]
 [0.   0.   0.25]]

Likelihood Parameters

We nemen aan dat de observatieruis ϵ\epsilon normaal verdeeld is met bekende standaarddeviatie σ=0.8\sigma=0.8 (in de gestandaardiseerde ruimte).

Noise std (σ): 0.8
Precision (β): 1.5624999999999998

3. Visualisatie Grid Setup

Voor visualisatie maken we een 2D grid in de (b1,b2)(b_1, b_2) ruimte, waarbij we b0b_0 op zijn prior mean (0) fixeren.

4. Prior Visualisatie

We visualiseren eerst de prior distributie voor (b1,b2)(b_1, b_2).

Loading...

✍️ Oefening 1: Likelihood Functie Implementeren

Implementeer de likelihood functie voor een enkele observatie (xi,yi)(x_i, y_i).

De likelihood voor een enkele observatie is:

p(yi∣xi,b,σ)=12πσ2exp⁡(−12σ2(yi−xiTb)2)p(y_i | \pmb{x}_i, \pmb{b}, \sigma) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{1}{2\sigma^2}(y_i - \pmb{x}_i^T\pmb{b})^2\right)

Voor numerieke stabiliteit berekenen we de log-likelihood en nemen daar de exponentiaal van:

log⁡p(yi∣xi,b,σ)=−12σ2(yi−xiTb)2−12log⁡(2πσ2)\log p(y_i | \pmb{x}_i, \pmb{b}, \sigma) = -\frac{1}{2\sigma^2}(y_i - \pmb{x}_i^T\pmb{b})^2 - \frac{1}{2}\log(2\pi\sigma^2)

Hints:

  • De predictie is: y^i=b0+b1xi1+b2xi2\hat{y}_i = b_0 + b_1 x_{i1} + b_2 x_{i2}

  • De residual is: ri=yi−y^ir_i = y_i - \hat{y}_i

  • De likelihood is proportioneel aan: exp⁡(−β2ri2)\exp\left(-\frac{\beta}{2} r_i^2\right), waarbij β=1/σ2\beta = 1/\sigma^2

Likelihood shape: (100, 100)
Likelihood max: 1.000000

✍️ Oefening 2: Posterior na 1 Observatie

Bereken de posterior distributie na het observeren van het eerste datapunt.

Volgens de regel van Bayes:

p(b∣y1)∝p(y1∣b)⋅p(b)p(\pmb{b}|y_1) \propto p(y_1|\pmb{b}) \cdot p(\pmb{b})

Stappen:

  1. Bereken de likelihood voor de eerste observatie

  2. Vermenigvuldig met de prior

  3. Normaliseer zodat de posterior integreert tot 1

Visualisatie: Prior → Likelihood → Posterior (1 observatie)

Loading...

✍️ Oefening 3: Sequentiële Update (5 observaties)

Nu gaan we sequentieel meer data toevoegen. Telkens gebruiken we de vorige posterior als nieuwe prior.

Dit illustreert het incrementele leren aspect van Bayesiaanse methoden.

Algoritme:

posterior = prior
for i in range(n_observations):
    likelihood = compute_likelihood(x[i], y[i], ...)
    posterior = posterior * likelihood
    posterior = normalize(posterior)

Visualisatie na 5 observaties

Loading...

MAP estimate after 5 observations:
  b1 (MedInc): 0.545
  b2 (HouseAge): 0.343

✍️ Oefening 4: Finale Posterior (alle observaties)

Verwerk nu alle observaties sequentieel en vergelijk de finale posterior met de OLS oplossing.

Vergelijking met OLS

Bereken de OLS oplossing en vergelijk met de MAP schatting.

OLS estimates:
  b0 (intercept): 0.000
  b1 (MedInc): 0.711
  b2 (HouseAge): 0.190

MAP estimates (Bayesian):
  b0 (intercept): 0.000 (fixed)
  b1 (MedInc): 0.707
  b2 (HouseAge): 0.182

Differences (OLS - MAP):
  b1: 0.004
  b2: 0.008

Finale Visualisatie

Loading...

🎯 Bonus Oefening: Convergentie Visualiseren

Maak een plot die toont hoe de MAP schattingen evolueren als functie van het aantal observaties.

Doel:

  • Toon op de x-as het aantal observaties (1, 2, 3, ..., 50)

  • Toon op de y-as de MAP schattingen voor b1b_1 en b2b_2

  • Voeg horizontale lijnen toe voor de OLS waarden

Loading...