In de vorige les heb je geleerd dat data de brandstof van AI is. Maar brandstof alleen laat een auto niet rijden โ je hebt een motor nodig. In AI heet die motor een algoritme.
Een algoritme is simpelweg een reeks stapsgewijze instructies om een probleem op te lossen.
Je volgt al elke dag algoritmen:
Denk aan hoe je elke ochtend beslist wat je aantrekt. Je checkt het weer, denkt na over je plannen, kijkt wat schoon is โ dat is een algoritme! Je volgt een reeks stappen om een beslissing te nemen. AI-algoritmen doen hetzelfde, maar dan met data in plaats van onderbuikgevoel.
Een beslisboom neemt beslissingen door een reeks ja/nee-vragen te stellen โ net als het spel "20 vragen."
Stel je voor dat je beslist of je buiten gaat spelen:
Regent het?
โโโ Ja โ Binnen blijven ๐
โโโ Nee โ Is het boven de 15ยฐC?
โโโ Ja โ Buiten spelen! โฝ
โโโ Nee โ Jas aan en buiten spelen ๐งฅ
Elk knooppunt stelt een vraag, elke tak volgt een antwoord, elk blad geeft een definitieve beslissing.
Random Forests combineren honderden beslisbomen en laten ze "stemmen" op het antwoord. Het is alsof je 500 mensen om de weg vraagt en de meerderheid volgt. Dit simpele idee verbetert de nauwkeurigheid drastisch!
KNN is het "vraag je buren"-algoritme. De logica is prachtig simpel: dingen die vergelijkbaar zijn, liggen meestal dicht bij elkaar.
Stel je verhuist naar een nieuwe stad en zoekt een goed restaurant. Wat doe je? Je vraagt je naaste buren om aanbevelingen! Als 3 van de 5 Italiaans aanraden, probeer je waarschijnlijk Italiaans.
KNN werkt precies hetzelfde:
from sklearn.neighbors import KNeighborsClassifier
# Maak en train een KNN-model met K=5
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
# Voorspel op nieuwe data
prediction = knn.predict(X_test)
print(f"Nauwkeurigheid: {knn.score(X_test, y_test):.2%}")
KNN is een "luie leerling" โ het leert niets tijdens het trainen! Het onthoudt alle data en doet het echte werk pas bij de voorspelling door afstanden te berekenen.
Lineaire regressie is de kunst van het trekken van een lijn door datapunten. Het wordt gebruikt als je een getal wilt voorspellen (geen categorie).
Hoe meer uur je studeert, hoe hoger je toetscijfer doorgaans is. Als je dit op een grafiek zet, zie je datapunten die omhoog gaan. Lineaire regressie trekt de best passende lijn door die punten.
y = mx + b
from sklearn.linear_model import LinearRegression
import numpy as np
# Studie-uren en toetscijfers
hours = np.array([1, 2, 3, 4, 5, 6, 7, 8]).reshape(-1, 1)
scores = np.array([20, 35, 45, 55, 65, 75, 82, 90])
# Model fitten
model = LinearRegression()
model.fit(hours, scores)
# Voorspel het cijfer voor 5,5 uur studeren
predicted = model.predict([[5.5]])
print(f"Voorspeld cijfer voor 5,5 uur: {predicted[0]:.1f}")
| Vraag | Beslisboom | KNN | Lineaire Regressie | |-------|:---:|:---:|:---:| | Categorie voorspellen? | โ | โ | โ | | Getal voorspellen? | โ | โ | โ | | Beslissing uitleggen? | โ โ | โ | โ | | Zeer grote dataset? | โ | โ | โ | | Lineaire relatie? | โ | โ | โ โ |
Er is geen enkel "beste" algoritme. De juiste keuze hangt af van je data en je probleem. Een arts die ziektes diagnosticeert geeft misschien de voorkeur aan een beslisboom omdat het kan uitleggen waarom een diagnose is gesteld.
Laten we een simpele beslisboom bouwen voor filmaanbevelingen!
Wil je iets grappigs?
โโโ Ja โ Hou je van animatiefilms?
โ โโโ Ja โ Kijk "Inside Out 2" ๐ญ
โ โโโ Nee โ Kijk "The Grand Budapest Hotel" ๐จ
โโโ Nee โ Hou je van actie?
โโโ Ja โ Heb je voorkeur voor superhelden?
โ โโโ Ja โ Kijk "Spider-Man: Across the Spider-Verse" ๐ท๏ธ
โ โโโ Nee โ Kijk "Top Gun: Maverick" โ๏ธ
โโโ Nee โ Wil je een waargebeurd verhaal?
โโโ Ja โ Kijk "Hidden Figures" ๐
โโโ Nee โ Kijk "Interstellar" ๐
def recommend_movie(funny, animated, action, superhero, true_story):
if funny:
if animated:
return "Inside Out 2 ๐ญ"
else:
return "The Grand Budapest Hotel ๐จ"
else:
if action:
if superhero:
return "Spider-Man: Across the Spider-Verse ๐ท๏ธ"
else:
return "Top Gun: Maverick โ๏ธ"
else:
if true_story:
return "Hidden Figures ๐"
else:
return "Interstellar ๐"
print(recommend_movie(funny=False, animated=False,
action=True, superhero=True,
true_story=False))
Je hebt nu drie klassieke algoritmen ontmoet. In de volgende les verkennen we neurale netwerken โ de door het brein geรฏnspireerde algoritmen achter moderne AI-doorbraken! ๐ง