Voorbeeld: Huizenprijzen Voorspellen

Nu is het tijd om alles samen te brengen! We bouwen een volledig machine learning-model om huizenprijzen te voorspellen, met alle concepten die we hebben behandeld: functies, matrices, statistiek, waarschijnlijkheid en gradient descent. Dit voorbeeld laat zien hoe deze wiskundige tools samenwerken in een echte machine learning-toepassing.

We lopen het hele proces door—van het definiëren van het probleem tot het trainen van het model—precies zoals een data scientist dit in de praktijk zou aanpakken. Deze sectie is wat wiskundiger, maar je hebt nu alle basis om het te begrijpen.


Stap 1: Ons Probleem Definiëren (Supervised Learning)

Herinner je dat dit een supervised learning-probleem is—want we hebben gelabelde trainingsdata (huizen met bekende prijzen) en willen prijzen voorspellen voor nieuwe huizen.

Specifiek is het een regression-probleem omdat we een continue numerieke waarde (prijs) voorspellen in plaats van categorieën.

Onze dataset: stel dat je werkt bij een makelaarskantoor met data over:

  • Grootte (vierkante meters): Ons primaire kenmerk.
  • Locatiescore (1–10): Kwaliteit van de buurt.
  • Prijs (€): Wat we willen voorspellen (onze targetvariabele).

We willen een functie (of model) bouwen die huiskenmerken naar prijzen vertaalt:

f(size,location)pricef(size, location) \rightarrow price

Met andere woorden, we willen het model leren het verband vast te leggen tussen kenmerken van huizen en de prijs, zodat het nauwkeurige voorspellingen kan doen voor nieuwe woningen.


Stap 2: Ons Model Kiezen (Lineaire Regression)

Gebaseerd op onze verkenning van kern machine learning-algoritmes kiezen we lineaire regression omdat:

  • Huizenprijzen vaak stijgen met de grootte (lineair verband).
  • We een uitlegbaar model willen waarin we de impact van elk kenmerk begrijpen.
  • Het simpel genoeg is om stap voor stap op te lossen.

Enkel Kenmerk Model: Met alleen de grootte ziet onze functie er zo uit:

y=w1x+by=w_1 x + b

Uitleg:

  • yy is de voorspelde prijs.
  • xx is de grootte van het huis.
  • w1w_1 is het gewicht (hoeveel de prijs per vierkante meter stijgt).
  • bb is de bias (basisprijs voor een huis van 0 m²).

Meerdere Kenmerken Model: Met toevoeging van de locatiescore:

y=w1x1+w2x2+by=w_1 x_1 + w_2 x_2 + b

waar x1x_1 onze eerste feature (grootte) is en x2x_2 de locatiescore.

We kunnen een lineair regression-model uitbreiden afhankelijk van het aantal beschikbare features!


Stap 3: Data Representeren Met Matrices

Herinner je de matrices uit Hoofdstuk 2? Hier is hoe we onze data organiseren voor efficiënte verwerking. In matrixnotatie kunnen we schrijven:

y=Xw+b\mathbf{y} = \mathbf{X} \mathbf{w} + \mathbf{b}

Dit is nieuw, maar onthoud hoe we informatie kunnen stapelen tot matrices of vectoren. Matrices worden vaak met een hoofdletter aangegeven (X\mathbf{X}) terwijl vectoren met een kleine letter worden weergegeven (y\mathbf{y}).

Wat zien deze matrices en vectoren er concreet uit?

X\mathbf{X} is de featurematrix waarin we alle kenmerken per datapunt stapelen. De labels (of waarheid) staan in vector y\mathbf{y} en de gewichten worden weergegeven door w\mathbf{w}.

X=[size1location1size2location2]y=[price1price2]w=[w1w2]\mathbf{X} = \begin{bmatrix} size_1 & location_1 \\ size_2 & location_2 \\ \vdots & \vdots \end{bmatrix} \quad \mathbf{y} = \begin{bmatrix} price_1 \\ price_2 \\ \vdots \end{bmatrix} \quad \mathbf{w} = \begin{bmatrix} w_1 \\ w_2 \end{bmatrix}

Elke rij in X\mathbf{X} representeert één huis met al zijn kenmerken. Elke kolom representeert één kenmerk voor alle huizen. De y\mathbf{y}-vector bevat alle werkelijke prijzen die we willen voorspellen.

Deze matrixrepresentatie laat ons alle huizen tegelijk verwerken in plaats van één per keer—veel efficiënter!


Stap 4: De Beste Gewichten Vinden (Optimalisatie)

Nu komt de kernuitdaging: de optimale gewichten vinden. Hier komen statistiek, afgeleiden en loss functions samen.

Om ons model te bouwen, moeten we de gewichten vinden die bepalen hoeveel de grootte de prijs beïnvloedt. Intuïtief willen we de lijn vinden die het beste past bij de data en de fout tussen voorspelling en werkelijkheid minimaliseert.

Als we w1w_1 handmatig willen vinden, nemen we twee huizen als voorbeeld:

  • Huis 1: 50 m² en €150.000.
  • Huis 2: 100 m² en €300.000.

We gebruiken de formule voor de helling, wat eigenlijk een afgeleide is:

w1=ΔyΔx=300.000150.00010050=150.00050=3000w_1 = \frac{\Delta y}{\Delta x} = \frac{300.000 - 150.000}{100 - 50} = \frac{150.000}{50} = 3000

Dit betekent dat elke extra vierkante meter €3.000 toevoegt aan de prijs.

Om de bias (bb) te vinden, vullen we één datapunt in:

150.000=3000(50)+b150.000 = 3000(50) + b b=150.000150.000=0b = 150.000 - 150.000 = 0

Ons uiteindelijke model wordt dus:

y^=3000x\hat{y} = 3000 \mathbf{x}

Bij meerdere features schakelen we over naar matrices—hetzelfde principe, maar we lossen alles in één keer op. Zo vinden we de optimale gewichten die de fout minimaliseren over de hele dataset.


Stap 5: Gradient Descent Voor Complexe Gevallen

De handmatige aanpak werkt bij kleine datasets, maar echte data bevat honderden huizen en meerdere features. Hier wordt gradient descent essentieel.

Het proces:

  1. Start met willekeurige gewichten: w1=0.5,w2=0.3,b=1000w_1 = 0.5, \quad w_2 = 0.3, \quad b = 1000.
  2. Voorspel: Gebruik de huidige gewichten om prijzen te schatten.
  3. Bereken fout: Gebruik Mean Squared Error (onze loss function).
  4. Bereken gradients: Afgeleiden vertellen hoe we de gewichten moeten aanpassen.
  5. Update gewichten: Verplaats in de richting van minder fout.
  6. Herhaal: Totdat de fout niet meer kleiner wordt.

Waarom Afgeleiden Belangrijk Zijn

Herinner je uit Hoofdstuk 2 dat afgeleiden ons vertellen hoe functies veranderen. In gradient descent:

  • ΔMSEΔw1\frac{\Delta MSE}{\Delta w_1} vertelt hoe de fout verandert bij aanpassing van het groottegewicht.
  • ΔMSEΔw2\frac{\Delta MSE}{\Delta w_2} doet hetzelfde voor locatie.
  • ΔMSEΔb\frac{\Delta MSE}{\Delta b} voor de bias.

Gradient descent gebruikt dit als gids, en past de gewichten stapsgewijs aan totdat het model de meest nauwkeurige voorspellingen doet.


Stap 6: Ons Model Evalueren

Met onze evaluatietechnieken beoordelen we hoe goed het model presteert. Stel dat na gradient descent ons model leert:

  • w1=2800w_1 = 2800 (elk m² voegt €2.800 toe).
  • w2=15.000w_2 = 15.000 (elk locatiepunt voegt €15.000 toe).
  • b=50.000b = 50.000 (basisprijs).

Het model wordt dan:

price=2800×size+15000×location+50000price = 2800 \times size + 15000 \times location + 50000

Interpretatie:

  • Locatie heeft een grotere impact dan grootte (15.000 vs 2.800).
  • Zelfs een klein huis op een toplocatie heeft hoge waarde.
  • Dit komt overeen met onze intuïtie.

Na train/validation/test splitsing:

  • Training MSE: 25.000² (gemiddelde fout €25.000).
  • Validatie MSE: 28.000².
  • Test MSE: 27.000².

De vergelijkbare prestaties tonen aan dat ons model goed generaliseert.


Stap 7: Voorspellingen Doen

Nu kunnen we prijzen voorspellen voor nieuwe huizen!

🏠 Voorbeeld Nieuw Huis: Stel een nieuw huis van 120 m² met locatiescore 7.

price=2.800(120)+15.000(7)+50.000price = 2.800(120) + 15.000(7) + 50.000 price=336.000+105.000+50.000=491.000price = 336.000 + 105.000 + 50.000 = 491.000

Dus de voorspelde prijs is €491.000.

Herinner je waarschijnlijkheid uit Hoofdstuk 2? In de praktijk voegen we vaak betrouwbaarheidsintervallen toe: “De voorspelde prijs is €491.000 ± €35.000 met 95% zekerheid.” Dit erkent de onzekerheid in voorspellingen.


Wat We Hebben Bereikt

Dit voorbeeld laat zien hoe alle concepten samenwerken:

  • Functies: We maakten een wiskundige functie die kenmerken naar prijs vertaalt.
  • Matrices: Data werd efficiënt georganiseerd.
  • Statistiek: We gebruikten MSE om fouten te meten en te minimaliseren.
  • Afgeleiden: Gradient descent bepaalde de optimale parameters.
  • Evaluatie: Data werd correct gesplitst om prestaties eerlijk te meten.
  • Supervised Learning: We leerden van gelabelde voorbeelden.
  • Lineaire Regression: We implementeerden een kern machine learning-algoritme.

Professionele modellen zouden ook bevatten:

  • Meer features (slaapkamers, leeftijd, garage, enz.).
  • Polynomial regression voor niet-lineaire relaties.
  • Regularisatie om overfitting te voorkomen.
  • Cross-validation voor robuustere evaluatie.
  • Feature engineering om betere variabelen te creëren.

Samen vormen deze stappen de basis voor het bouwen van echte machine learning-modellen die nauwkeurig en betrouwbaar zijn.


Belangrijkste Inzichten

Een machine learning-model bouwen betekent systematisch wiskundige en statistische principes toepassen om patronen te leren uit data. Deze huizenprijsvoorspeller toont hoe functies, matrices, afgeleiden en optimalisatietechnieken samenkomen om systemen te maken die nauwkeurige voorspellingen doen op nieuwe data.

De kerninzichten zijn dat machine learning geen magie is—het is de systematische toepassing van wiskundige tools om de best mogelijke functie te vinden die inputs naar outputs vertaalt. Door dit fundament te begrijpen, ben je voorbereid op complexere machine learning-problemen en kun je de geavanceerde algoritmes in moderne AI beter waarderen.