Unsupervised learning is een manier om AI te trainen op data zonder bijbehorende antwoorden. Het model krijgt bijvoorbeeld een lijst klanten met hun aankopen en zoekt zelf naar structuur: groepen klanten die op elkaar lijken, ongewone bestellingen of producten die vaak samen worden gekocht. Wat die groepen betekenen, weet het model niet; een mens moet ze een naam geven en bepalen wat ermee gebeurt.
Wat is het verschil met supervised learning?
Bij supervised learning hoort bij elk voorbeeld het goede antwoord, zoals een e-mail die als spam is gemarkeerd, en leert het model dat antwoord te voorspellen. Unsupervised learning krijgt alleen de voorbeelden. Het leerboek Deep Learning van Goodfellow, Bengio en Courville legt de naam uit: bij supervised learning laat een instructeur of leraar het systeem zien wat het moet doen, bij unsupervised learning is die er niet, en moet het algoritme zelf wijs worden uit de data. De machine-learningcursus van Google noemt het praktische verschil: bij clustering bepaal je, anders dan bij classificatie, de categorieën niet zelf.
Wat kun je ermee?
- Clustering groepeert voorbeelden die op elkaar lijken. K-means verdeelt de data in een aantal groepen dat je zelf kiest, elk rond een gemiddelde; DBSCAN vindt dichte gebieden van punten, in elke vorm, zonder vast aantal groepen.
- Dimensiereductie brengt veel kolommen terug tot een paar. PCA vindt de richtingen die de meeste variatie in de data verklaren; t-SNE tekent data met veel dimensies als een tweedimensionale kaart.
- Anomaliedetectie vindt datapunten die niet passen, wat kan wijzen op defecte apparatuur, menselijke fouten of een beveiligingslek (IBM).
- Associatieregels vinden producten die vaak samen worden gekocht, ook wel market basket analysis genoemd.
- Generatieve modellen, zoals een GAN, leren hoe de data er als geheel uitziet. Volgens het leerboek Deep Learning is dat in deep learning meestal het doel van unsupervised learning: de kansverdeling leren waar de data uit voortkomt.
Waar past self-supervised learning?
Taalmodellen maken de grens vaag. Hun pre-training gebruikt ongelabelde tekst, en de GPT-2-paper (2019) beschrijft taalmodellering als "unsupervised distribution estimation". Toch is elke trainingsstap een supervised voorspelling van het volgende token, met de tekst zelf als antwoord. Het leerboek Deep Learning merkt op dat de twee begrippen niet formeel zijn gedefinieerd, en dat deze truc een unsupervised probleem opsplitst in een reeks supervised problemen. Hugging Face noemt dit self-supervised learning: het trainingsdoel wordt uit de invoer zelf berekend, dus niemand hoeft de data te labelen.
Waar gaat het mis?
- Er is geen antwoordmodel. Volgens scikit-learn is een clustering beoordelen niet zo eenvoudig als fouten tellen, en IBM noemt een groter risico op onjuiste resultaten en de noodzaak dat mensen de uitkomst controleren.
- De methode bepaalt het resultaat. K-means heeft het aantal groepen vooraf nodig en gaat uit van compacte, gelijkmatig verspreide clusters, dus langgerekte of grillige vormen gaan slecht.
- Kaarten kunnen misleiden. In een t-SNE-plot zeggen de grootte van clusters en de afstanden ertussen mogelijk niets (Wattenberg e.a., 2016).
Voorbeeld
Stel: een webshop beschrijft elke klant met twee getallen: bestellingen per jaar en gemiddelde orderwaarde. Dit stukje code draait k-means uit scikit-learn op twaalf verzonnen klanten:
1 from sklearn.cluster import KMeans 2 from sklearn.pipeline import make_pipeline 3 from sklearn.preprocessing import StandardScaler 4 5 # bestellingen per jaar, gemiddelde orderwaarde in euro (verzonnen klanten) 6 customers = [[24, 15], [20, 18], [26, 12], [22, 20], 7 [2, 180], [3, 150], [1, 210], [2, 170], 8 [8, 60], [10, 55], [7, 70], [9, 65]] 9 model = make_pipeline(StandardScaler(), KMeans(n_clusters=3, n_init=10, random_state=0)) 10 print(model.fit_predict(customers)) # [1 1 1 1 0 0 0 0 2 2 2 2]
De scaler zet beide kolommen eerst op dezelfde schaal, omdat k-means gewone afstanden vergelijkt. De getallen 0, 1 en 2 zijn alleen labels. Een mens moet zien dat groep 1 vaak bestelt en per bestelling weinig uitgeeft, en die groep een naam geven, bijvoorbeeld "vaste klanten". Die stap beschrijft de cursus van Google ook.
Bronnen
- Goodfellow, Bengio and Courville: Deep Learning, chapter 5, Machine Learning Basics (2016)Web
- Google for Developers: Introduction to Machine Learning, What is machine learning?Web
- scikit-learn: Clustering (User Guide)Web
- IBM: What is unsupervised learning?Web
- Wattenberg, Viégas and Johnson (Google): How to Use t-SNE Effectively (Distill, 2016)Web
- Radford et al. (OpenAI): Language Models are Unsupervised Multitask Learners (GPT-2, 2019)Web
