Ga naar hoofdinhoud

Semi-supervised learning: hoe je nauwkeurigere modellen traint met minder gelabelde data

Semi-supervised learning traint modellen op een mix van gelabelde en ongelabelde data, waardoor labelkosten dalen en de nauwkeurigheid verbetert bij taken zoals beeldclassificatie, tekstanalyse en medische diagnostiek.
Bijgewerkt 4 mei 2026  · 12 min lezen

Data labelen is duur, traag, domeinspecifiek en de meeste teams hebben er niet genoeg van.

Je hebt altijd gelabelde data nodig om een model te trainen, maar het correct labelen kost tijd en vaak een domeinexpert. Zo heb je voor medische beelden radiologen nodig en voor juridische documenten juristen. Zelfs simpele taken zoals sentimentanalyse vereisen dat iemand elk voorbeeld met de hand tagt. Daardoor eindigen de meeste ML-teams met een piepkleine gelabelde dataset en een enorme hoeveelheid ongelabelde data die ze niet kunnen gebruiken.

Semi-supervised learning lost dit op door op beide te trainen. Het neemt je kleine gelabelde dataset, combineert die met je grote ongelabelde verzameling en laat het model patronen leren.

In dit artikel leg ik uit hoe semi-supervised learning werkt, behandel ik de meest gebruikte technieken en laat ik zien wanneer het logisch is om het toe te passen.

Maar wat is Supervised Machine Learning precies? Lees onze blogpost om te leren hoe essentiële supervised learning-algoritmen werken.

Wat is semi-supervised learning?

Semi-supervised learning is een machinelearningbenadering die traint op een mix van gelabelde en ongelabelde data.

Het zit, zoals de naam al suggereert, tussen supervised en unsupervised learning in. Supervised learning vereist dat elk sample een label heeft. Unsupervised learning werkt volledig zonder labels. Semi-supervised learning gebruikt een kleine set gelabelde voorbeelden naast een grotere verzameling ongelabelde voorbeelden.

De gelabelde data vertelt het model waar het naar moet kijken. De ongelabelde data laat het model zien hoe de data is gestructureerd. In combinatie geven ze het model meer houvast dan elk type afzonderlijk.

Hoe semi-supervised learning werkt

Het proces begint met een kleine gelabelde dataset - misschien een paar honderd voorbeelden waarvan je de juiste output kent.

Daarna voeg je een veel grotere ongelabelde dataset toe. Dit kunnen duizenden of zelfs miljoenen samples zijn zonder labels. Het model gebruikt deze ongelabelde data om onderliggende patronen en relaties tussen datapunten te leren.

De gelabelde voorbeelden sturen die structuur vervolgens richting de juiste antwoorden. Het model weet al hoe de data is geordend dankzij de ongelabelde samples. De labels vertellen welke regio’s van die structuur aan welke outputs gekoppeld zijn.

Hier is een kort voorbeeld.

Stel, je classificeert e-mails als spam of geen spam. Je hebt 100 gelabelde e-mails en 10.000 ongelabelde. Het model leert eerst hoe e-mails groeperen op basis van woordpatronen en structuur. Daarna gebruikt het jouw 100 gelabelde voorbeelden om te bepalen welke groepen spam zijn en welke niet. Het resultaat is een model dat beter presteert dan wanneer je alleen op die 100 gelabelde e-mails had getraind.

Semi-supervised vs supervised vs unsupervised learning

Laten we elk leerparadigma doornemen om te zien waar semi-supervised learning zich bevindt ten opzichte van de andere twee.

Supervised learning

Supervised learning traint op volledig gelabelde data. Elk sample in de dataset heeft een input en een bekende output. Het model leert de mapping daartussen.

Dit werkt goed als je genoeg gelabelde voorbeelden hebt. Maar "genoeg" kan afhankelijk van de taak duizenden of zelfs miljoenen samples betekenen. Dat is duur om te produceren en soms gewoon onmogelijk.

Unsupervised learning

Unsupervised learning gebruikt helemaal geen labels. Het model kijkt naar ruwe data en vindt zelf structuur. Klassieke voorbeelden zijn clusteren en dimensionaliteitsreductie.

Het voordeel is dat je geen gelabelde data nodig hebt. Het nadeel is dat het model geen idee heeft waar jij eigenlijk om geeft. Het vindt patronen, zeker, maar die patronen hoeven niet aan te sluiten op het probleem dat je probeert op te lossen.

Semi-supervised learning

Semi-supervised learning combineert het beste van beide. Je geeft het model een kleine gelabelde dataset om de taak te definiëren en een grote ongelabelde dataset om de datastructuur te leren.

De gelabelde data wijst het model de juiste richting. De ongelabelde data laat zien hoe verschillende samples zich tot elkaar verhouden. Deze combinatie presteert vaak beter dan supervised learning op dezelfde kleine gelabelde set, omdat het model patronen oppikt die het zonder de ongelabelde data had gemist.

Hier is een snelle vergelijking tussen deze drie:

Vergelijkingstabel van machinelearningbenaderingen

Vergelijkingstabel van machinelearningbenaderingen

Kortom: als labelen te veel tijd kost en je veel ongelabelde data hebt, is semi-supervised het overwegen waard. Ik laat je zo de meest voorkomende technieken zien.

Veelgebruikte technieken voor semi-supervised learning

Er zijn een paar manieren om semi-supervised learning te implementeren. Elke techniek gaat anders om met de verhouding gelabeld-ongelabeld. Laten we de meest gangbare doornemen.

Self-training

Dit is de eenvoudigste aanpak. Je traint een model op je gelabelde data en gebruikt het vervolgens om labels te voorspellen voor de ongelabelde samples. De meest zekere voorspellingen voeg je toe aan de gelabelde set als pseudo-labels, en je traint het model opnieuw op de uitgebreide dataset.

Je herhaalt dit proces tot het model niet verder verbetert of je ongelabelde data op is. Het is makkelijk te implementeren, maar als het model vroeg een foute voorspelling maakt, zit die fout nu in je dataset.

Co-training

Co-training gebruikt twee modellen in plaats van één. Elk model wordt getraind op een andere "view" van de data. Denk aan een ander subset van features.

Stel bijvoorbeeld dat je webpagina’s classificeert. Eén model kijkt naar de tekst op de pagina, terwijl het andere kijkt naar de anchortekst van links ernaartoe. Elk model labelt ongelabelde samples voor het andere, en ze leren elkaar bij over meerdere rondes.

Het idee is dat de sterke punten van het ene model de zwakke punten van het andere compenseren. Als beide views op zichzelf genoeg informatie hebben, kan co-training beter presteren dan self-training omdat fouten van het ene model door het andere worden gecorrigeerd.

Labelpropagatie

Deze aanpak bouwt een graaf waarin elk datapunt een knoop is en randen vergelijkbare punten verbinden. Labels "verspreiden" zich vervolgens van gelabelde knopen naar hun buren.

De aanname is dat vergelijkbare datapunten hetzelfde label moeten delen. Als een gelabeld sample dicht bij een cluster van ongelabelde samples ligt, horen die ongelabelde samples waarschijnlijk tot dezelfde klasse. De labels propageren door de graaf totdat elke knoop er één heeft.

Dit werkt goed als je data een duidelijke clusterstructuur heeft, maar kan misgaan wanneer de grenzen tussen klassen vaag zijn.

Semi-supervised neurale netwerken

Deep learning heeft een eigen set semi-supervised technieken. Dit zijn twee van de meest gangbare:

  • Consistentieregularisatie: dwingt het model om dezelfde output te geven voor een input, ook na kleine verstoringen zoals ruis of augmentatie. Het idee is dat een goed model zijn voorspelling niet verandert omdat je de input licht hebt aangepast
  • Pseudo-labeling in neurale netwerken: werkt als self-training maar dan op batchniveau. Het model genereert labels voor ongelabelde samples tijdens het trainen en gebruikt die naast echte labels in de lossfunctie.

Methoden zoals FixMatch en MixMatch combineren deze ideeën en laten goede resultaten zien op benchmarks met heel weinig gelabelde voorbeelden.

Waarom semi-supervised learning ertoe doet

Je zou om één reden moeten geven om semi-supervised learning: kosten.

Data labelen vereist data, domeinexperts, tijd en geld. Semi-supervised learning verlaagt de kosten door meer uit minder labels te halen.

Dan is er performance. Een model dat is getraind op 500 gelabelde samples en 50.000 ongelabelde verslaat vaak hetzelfde model dat alleen op die 500 gelabelde samples is getraind. De ongelabelde data geeft het model een completer beeld van de dataverdeling, wat leidt tot betere voorspellingen.

En dan de realiteit van de meeste datasets. Ongelabelde data is overal. Elk bedrijf zit op logs, afbeeldingen, documenten en opnames die niemand tijd heeft om te labelen. Semi-supervised learning laat je iets nuttigs maken van die data.

Toepassingen van semi-supervised learning

Semi-supervised learning duikt op in domeinen waar labels lastig te verkrijgen zijn.

Beeldclassificatie is een van de meest voorkomende use-cases. Duizenden beelden labelen is monnikenwerk, maar ongelabelde beelden verzamelen is makkelijk. Semi-supervised methoden laten je nauwkeurige classifiers trainen met slechts een paar honderd gelabelde beelden.

Tekstclassificatie idem. Je hebt misschien miljoenen klantreviews of supporttickets, maar slechts een kleine batch met handmatige labels. Semi-supervised learning helpt je classifiers bouwen die generaliseren over de volledige dataset.

Spraakherkenning is een ander interessant gebied. Audio met de hand transcriberen kost veel moeite, maar ruwe audio is in overvloed aanwezig. De ongelabelde opnames helpen het model akoestische patronen te leren, terwijl de getranscribeerde samples de juiste mappings aanleren.

Medische data-analyse is een uitstekend domeinspecifiek toepassingsgebied. Een arts scans of patiëntendossiers laten labelen is duur en traag, want ze hebben belangrijker werk. Maar ziekenhuizen hebben enorme hoeveelheden ongelabelde klinische data. Semi-supervised methoden helpen diagnostische modellen te bouwen zonder een volledig gelabelde dataset nodig te hebben.

Voordelen van semi-supervised learning

Hierdoor is semi-supervised learning vaak een goede match voor veel projecten:

  • Er is minder gelabelde data nodig: Je kunt goede resultaten behalen met een fractie van de labels die een volledig supervised aanpak vereist
  • Betere generalisatie: De ongelabelde data stelt het model bloot aan een breder scala aan voorbeelden, wat helpt om beter te presteren op onzichtbare data
  • Kosteneffectief: Als labelen duur of tijdrovend is - wat meestal zo is - bespaart semi-supervised learning tijd en budget door het maximale uit wat je al hebt te halen

Dus, als je meer data dan labels hebt, is het tijd om semi-supervised learning te overwegen.

Beperkingen van semi-supervised learning

Semi-supervised learning kent een paar trade-offs waar je van op de hoogte moet zijn.

  • De kwaliteit van ongelabelde data is belangrijk: Als je ongelabelde data niet uit dezelfde verdeling komt als je gelabelde data, leert het model de verkeerde patronen
  • Verkeerde pseudo-labels: Bij methoden als self-training wordt een zekere maar onjuiste voorspelling behandeld als waarheid. Het model traint op dat foute label, wat de fout versterkt en toekomstige voorspellingen verslechtert
  • Complexer dan supervised learning: Je hebt meer hyperparameters om af te stemmen, meer ontwerpkeuzes en meer dingen die mis kunnen gaan. Een supervised model is eenvoudiger te bouwen en uit te leggen. Semi-supervised methoden voegen complexiteit toe die niet altijd de moeite waard is - zeker als je gelabelde dataset al groot genoeg is

Geen van deze punten is onoverkomelijk, maar wel iets om te weten voordat je erin duikt.

Semi-supervised learning in de praktijk (Python-voorbeeld)

Laten we semi-supervised learning in actie zien met een eenvoudig Python-voorbeeld met scikit-learns LabelSpreading-algoritme.

Ik maak een dataset, label slechts een klein deel en laat het model de rest uitzoeken.

De data voorbereiden

Eerst genereer ik een dataset en maskeer ik het grootste deel van de labels om een semi-supervised scenario te simuleren:

import numpy as np
from sklearn.datasets import make_moons
from sklearn.semi_supervised import LabelSpreading
from sklearn.metrics import accuracy_score

# Generate a dataset with 500 samples
X, y_true = make_moons(n_samples=500, noise=0.2, random_state=42)

# Keep only 10%, mask the rest as -1
rng = np.random.RandomState(42)
labeled_idx = rng.choice(500, size=50, replace=False)
y_train = np.full(500, -1)  # -1 means unlabeled in scikit-learn
y_train[labeled_idx] = y_true[labeled_idx]

print(f"Labeled samples: {np.sum(y_train != -1)}")
print(f"Unlabeled samples: {np.sum(y_train == -1)}")

Aantal gelabelde en ongelabelde datasamples

Aantal gelabelde en ongelabelde datasamples

In scikit-learn markeert -1 een sample als ongelabeld. Van de 500 samples hebben er maar 50 een label. Het model moet de andere 450 achterhalen.

Trainen en voorspellen

Nu train ik een LabelSpreading-model en kijk ik hoe goed het de ongelabelde data labelt:

model = LabelSpreading(kernel="knn", n_neighbors=7)
model.fit(X, y_train)

y_pred = model.transduction_

# Check accuracy on the originally unlabeled samples
unlabeled_mask = y_train == -1
accuracy = accuracy_score(y_true[unlabeled_mask], y_pred[unlabeled_mask])
print(f"Accuracy on unlabeled samples: {accuracy:.2%}")

Nauwkeurigheid op ongelabelde samples

Nauwkeurigheid op ongelabelde samples

Het model labelde het merendeel van de ongelabelde samples correct met slechts 10% van de data als gelabelde voorbeelden. Dat is de kern van het idee.

De resultaten visualiseren

De nauwkeurigheid is hoog - bijna 96% - maar laten we visueel bekijken welke samples verkeerd geclassificeerd zijn:

Ware en voorspelde labels

Ware en voorspelde labels

De voorspelde labels komen bijna perfect overeen met de ware labels, hoewel het model slechts 50 gelabelde voorbeelden van de 500 heeft gezien. Je ziet de verkeerd geclassificeerde in het rood in de rechtergrafiek.

Veelvoorkomende fouten bij semi-supervised learning

Je hebt gezien hoe krachtig semi-supervised learning kan zijn, maar het is niet in elk scenario ideaal. Dit zijn de meest voorkomende fouten en hoe je ze vermijdt.

  • Aannemen dat ongelabelde data altijd helpt: Dat is niet zo. Als de ongelabelde data uit een andere verdeling komt dan je gelabelde data, leert het model patronen die niet op je echte taak slaan. Controleer altijd of je gelabelde en ongelabelde data uit dezelfde bron komen en hetzelfde probleem vertegenwoordigen
  • Slechte modelinitialisatie: Semi-supervised methoden bouwen voort op een initieel supervised model. Als dat eerste model zwak is - getraind op te weinig samples of met slechte hyperparameters - erven alle volgende stappen die problemen. Begin met de beste supervised baseline die je kunt krijgen voordat je ongelabelde data toevoegt
  • Te veel vertrouwen op pseudo-labels: Pseudo-labels zijn slechts zo goed als het model dat ze genereert. Als je elk pseudo-label vertrouwt, kunnen fouten zich over trainingsrondes opstapelen. Stel een hoge confidentiedrempel in en gebruik alleen pseudo-labels waar het model zeker van is. Gooi de rest weg
  • De dataverdeling negeren: Semi-supervised methoden gaan ervan uit dat de structuur van de ongelabelde data iets nuttigs zegt over de labels. Als je data geen duidelijke clusters of gladde beslissingsgrenzen heeft, gaat die aanname niet op

Om deze vier fouten te omzeilen, begin je met een sterke supervised baseline, voeg je ongelabelde data geleidelijk toe en check je of de performance bij elke stap echt verbetert.

Wanneer gebruik je semi-supervised learning

Semi-supervised learning is logisch in deze drie scenario’s:

  • Als gelabelde data beperkt is: Heb je slechts een kleine gelabelde dataset en is meer labelen duur of traag, dan helpt semi-supervised learning om net dat beetje extra nauwkeurigheid eruit te persen
  • Als ongelabelde data in overvloed is: Je hebt een grote hoeveelheid ongelabelde data nodig voor deze aanpak. Met een kleine ongelabelde set leert het model niet genoeg structuur om verschil te maken. Hoe groter de kloof tussen de grootte van je gelabelde en ongelabelde set, hoe meer semi-supervised methoden kunnen helpen
  • Als je data een duidelijke structuur heeft: Semi-supervised learning werkt het best wanneer vergelijkbare datapunten hetzelfde label delen. Als je data clustert of gladde grenzen tussen klassen heeft, maakt de ongelabelde data die patronen extra zichtbaar. Als de klassen door elkaar lopen zonder duidelijke scheiding, voegt de ongelabelde data weinig toe.

Als alle drie de voorwaarden gelden, is semi-supervised learning het proberen waard.

Conclusie

Heel simpel gezegd geeft semi-supervised learning je een manier om betere modellen te trainen zonder alles te labelen. Je neemt een kleine gelabelde dataset, combineert die met een grote ongelabelde set en laat het model van beide leren.

De voordelen zijn duidelijk: minder tijd kwijt aan labelen, sneller naar de markt, lagere kosten en betere performance dan trainen op alleen beperkte labels. En in sectoren als de medische wereld, juridisch en NLP - waar labelen domeinexperts vereist - is dat een groot voordeel.

Heb je een enorme hoeveelheid ongelabelde data, probeer dan semi-supervised learning. Begin met een goede supervised baseline, kies een techniek die past bij de structuur van je data en meet of de ongelabelde data daadwerkelijk helpt. scikit-learns LabelSpreading is een goed eerste experiment, maar experimenteer ook met methoden zoals FixMatch en MixMatch.

Wil je in 2026 klaar zijn voor de arbeidsmarkt, volg dan onze Machine Learning Engineer-track. Die behandelt alles van de basis tot en met MLOps.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Senior Data Scientist, gevestigd in Kroatië. Top Tech-schrijver met meer dan 700 gepubliceerde artikelen en meer dan 10 miljoen weergaven. Auteur van het boek Machine Learning Automation with TPOT.

FAQs

Wat is semi-supervised learning?

Semi-supervised learning is een machinelearningbenadering die modellen traint op een kleine set gelabelde data en een grote set ongelabelde data. De gelabelde data vertelt het model waar het naar moet zoeken, terwijl de ongelabelde data helpt om de algehele structuur van de data te begrijpen. Zo krijg je betere resultaten dan wanneer je alleen op de gelabelde data traint.

Hoe verschilt semi-supervised learning van supervised en unsupervised learning?

Supervised learning gebruikt alleen gelabelde data, waarbij elk sample een bekende output heeft. Unsupervised learning gebruikt alleen ongelabelde data en vindt zelf patronen. Semi-supervised learning gebruikt een kleine gelabelde dataset om de taak te definiëren en een grote ongelabelde dataset om de structuur van de data te leren.

Wanneer moet ik semi-supervised learning gebruiken?

Gebruik het wanneer je weinig gelabelde data hebt, veel ongelabelde data en je data een duidelijke structuur heeft, zoals natuurlijke clusters of vloeiende grenzen tussen klassen. Als labelen duur is of domeinexperts vereist - zoals bij medische beeldvorming of analyse van juridische teksten - helpt semi-supervised learning je nauwkeurige modellen te bouwen zonder alles te labelen.

Wat is self-training in semi-supervised learning?

Self-training is een techniek waarbij het model eerst traint op gelabelde data en vervolgens labels voorspelt voor de ongelabelde samples. De meest zekere voorspellingen worden toegevoegd aan de gelabelde set als pseudo-labels, en het model traint opnieuw op de uitgebreide dataset. Het risico is dat vroege foute voorspellingen later worden versterkt, dus stel een hoge confidentiedrempel in.

Onderwerpen

Leren met DataCamp

Cursus

Unsupervised Learning in Python

4 Hr
176.9K
Leer hoe je kunt clusteren, transformeren, visualiseren en inzichten kunt halen uit niet-gelabelde datasets met behulp van scikit-learn en scipy.
Bekijk detailsRight Arrow
Begin met de cursus
Meer zienRight Arrow
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer zienMeer zien