-

Hoe doen computers slimme dingen? Ze kunnen ook prima data samenvatten

Supervised leren — het linken van input en output — is niet de enige manier waarop computers kunnen leren van data: computers kunnen ook prima data samenvatten, betoogt Professor Maurits Kaptein. Hij ontleedt de overeenkomsten en verschillen tussen Machine Learning, Data Science en AI.

In een poging om de zin van de onzin te scheiden op het gebied van Machine Learning, Data Science en AI – de naam doet er eigenlijk niet zoveel toe – een serie van zes artikelen over ‘hoe computers slimme dingen doen’. Het eerste artikel liet zien hoe computers, door middel van een goed idee, een (wiskundige) formalisatie, en daarna optimalisatie, een leuke film voor vanavond kunnen aanraden. Het tweede artikel in de serie liet de basis zien van supervised leren en in het derde artikel bespraken we geavanceerde methoden zoals (diepe) neurale netwerken.

Stap 4: Unsupervised leren

Bij unsupervised leren is er, in tegenstelling tot het supervised leren besproken in artikel 2 en 3, geen goed antwoord beschikbaar. Waar we bij supervised leren de relatie tussen input (bijvoorbeeld de eigenschappen van een huis) en output (de prijs van een huis) wilden leren, hebben we nu enkel input: we willen bijvoorbeeld huizen die op elkaar lijken groeperen, maar we weten niet vooraf naar welke groepen we op zoek zijn. Dit unsupervised leren komt best vaak voor:

  • We proberen consumenten, bijvoorbeeld bezoekers van een webwinkel, te groeperen (of clusteren, of te segmenteren), zodat we onze marketing acties kunnen aanpassen aan de verschillende types bezoekers.
  • We proberen data — bijvoorbeeld foto’s — samen te vatten: er is dan geen goed antwoord, maar we zoeken naar een samenvatting die minder data gebruikt dan het originele plaatje zonder dat we al te veel kwaliteit verliezen.

Bij unsupervised leren is een computer dus op zoek naar samenvattingen van data. Hiervoor zijn de laatste decennia zeer veel manieren bedacht, en ik zal ze niet allemaal bespreken. Maar, er zijn er een twee vrij simpele basisideeën die ten grondslag liggen aan vrijwel alle manieren van unsupervised leren: clusteren en dimensie reductie. Ik zal beiden uitleggen aan de hand van een voorbeeld.

Clusteren, groeperen, of segmenteren

Het idee van clusters (of groeperen of segmenten) is simpel: we hebben een heleboel voorbeelden (datapunten) in onze dataset, en we proberen alle voorbeelden die — op een of andere manier — op elkaar lijken hetzelfde label te geven. In tegenstelling tot supervised leren zijn de juiste antwoorden echter niet bekend (dus de labels zijn niet aanwezig).

Stel dat onze data bijvoorbeeld bestaat uit de performance van elf studenten op twee toetsen: een taaltoets en een wiskundetoets. Hieronder een visueel overzicht van deze data: ieder rondje is een student en verder naar rechts betekent een betere score op de wiskunde toets, terwijl verder naar boven een betere score op de taaltoets betekent.

Voor ons mensen is het clusteren in dit geval simpel. We zien vrij makkelijk dat er drie groepen zijn: studenten die slecht zijn in zowel taal als wiskunde (links onder), studenten die goed zijn in taal, maar niet in wiskunde (links boven), en studenten die goed zijn in wiskunde maar niet in taal (rechts onder). Voor een computer is dit echter minder evident (stiekem voor mensen ook als het niet gaat om elf studenten maar duizenden, en niet gaat om twee toetsen maar om honderden toetsen).

Om computers te leren clusteren moeten we iets meer doen dan simpelweg “naar de data kijken”. We moeten nadenken wat het betekent om bij een cluster te horen: we moeten het simpele idee van datapunten die op elkaar lijken formaliseren (ja, en daarna moeten we inderdaad optimaliseren!)

We kunnen het idee van een cluster formaliseren door gebruik te maken van een idee wat we ook in de vorige artikelen al tegenkwamen: we kunnen de afstand tussen twee datapunten — bijvoorbeeld tussen een voorspelling en de werkelijke data (artikel 2) of tussen verschillende mensen (artikel 1) — uitrekenen. Als de afstand tussen datapunten klein is dan lijken de datapunten bij elkaar.

Als we nu op zoek gaan naar drie clusters, dan kunnen we drie (fictieve) “cluster-middens” plaatsen in onze visuele weergave en daarna datapunten toeschrijven aan een van deze cluster-mddens. Ten slotte kunnen we de afstand van alle datapunten in een cluster tot hun cluster-midden uitrekenen. Door telkens de cluster-middens en de toeschrijvingen van datapunten aan de clusters te veranderen krijgen we telkens een andere oplossing. Sommige van deze oplossingen zijn slecht — de afstanden tot de clustermiddens zijn heel groot — terwijl sommige oplossingen goed zijn. Het vinden van een goede oplossing is de optimalisatie stap.

Hieronder een visuele weergave van een goede cluster oplossing: de sterren in de figuur zijn de cluster-middens, en rechts onder een illustratie van de afstanden van ieder datapunt tot haar cluster-midden.

Deze manier van clusteren, ook wel k-means clustering genoemd, vormt de basis voor veel methoden van clusteren en segmenteren: we zoeken groepen datapunten waartussen de afstanden klein zijn. Gegeven een beoogd aantal clusters — bijvoorbeeld drie — kan een computer prima zoeken naar de beste oplossing, zelfs als er duizenden datapunten en honderden toetsen zijn.

Dimensiereductie

Het is vrij logisch dat clusteren data samenvat: in plaats van 11 unieke studenten hebben we 3 types studenten. Echter, er is nog een andere manier om data samen te vatten namelijk doormiddel van dimensiereductie. Dat klinkt lastig, maar de essentie is simpel.

Stel, we hebben data over negen winkels in het mooie dorpje Ulft (dat bestaat) en van iedere winkel weten we hun positie op een kaart: we weten de positie in de oost-west richting en in de noord-zuid richting. De locatie van ieder van de negen winkels wordt dan ook weergegeven door twee coördinaten, en in totaal hebben we 2*9=18 getallen nodig om alle locaties te beschrijven. Hieronder een illustratie:

Om deze data samen te vatten lijkt clusteren niet heel handig: ten eerste zijn er niet heel duidelijk clusters te zien, en ten tweede zijn we niet op zoek naar “types-winkel”.

Echter, ook deze data is prima samen te vatten. Het idee hier is simpel: als ik de dorpsstraat van Ulft toevoeg in onze visuele weergave, dan zie ik dat alle winkels dicht bij de dorpsstraat liggen. Dit geeft ons de mogelijkheid om de data niet in achttien getallen op te slaan (9 winkels X 2 coördinaten), maar in negen getallen: we gebruiken simpelweg de huisnummers aan de dorpsstraat!

We hebben, doordat we slimmer naar de data kijken, nu maar negen getallen nodig in plaats van achttien. De samenvatting is niet perfect: we weten niet meer exact waar de winkels liggen aangezien we op basis van de negen getallen niet kunnen zien hoe ver winkels van de dorpsstraat afliggen. Maar de samenvatting is goed genoeg: we kunnen alle winkels terugvinden.

Hoe computers het bovenstaande formaliseren en optimaliseren is iets lastiger en te veel voor deze reeks artikelen. Maar het goede idee is er! Voor de formalisatie en optimalisatie kan de geïnteresseerde lezer beginnen bij de uitleg van principale componenten analyse.

Het idee van dimensie reductie — in ons voorbeeld van twee dimensies naar één dimensie — wordt veelvuldig gebruikt. Een veelvoorkomend gebruik is bijvoorbeeld het gebruik in het comprimeren van plaatjes: door de dimensie van een plaatje te verkleinen kunnen we vaak met minder data een plaatje versturen wat heel veel op het origineel lijkt. Voor een voorbeeld zie: https://www.r-bloggers.com/image-compression-with-principal-component-analysis/

Wanneer is unsupervised leren goed gelukt?

Clusteren en dimensie reductie zijn de twee meest gebruikte basisideeën voor unsupervised leren. Natuurlijk zijn er ook andere methoden, maar die zijn veelal kleine wijzigingen of combinaties van het bovenstaande en wat mij betreft voor een algemeen begrip minder interessant. Wat nog wel interessant is om te bespreken is hoe goed computers eigenlijk zijn in dit supervised leren: hoe goed kunnen computers clusteren of dimensies reduceren?

Deze vraag heeft twee antwoorden, de eerste simpel maar bedrieglijk, en de tweede onbevredigend. Het eerste antwoord is als volgt: “Heel goed! Computers kunnen eigenlijk altijd clusters vinden in een dataset en / of het aantal dimensies reduceren”. Dit is in essentie waar, en een computer kan altijd wel een cluster of een kleiner aantal dimensies vinden. Maar, het vinden van cluster houdt niet in dat deze clusters “goed” zijn, en het reduceren van het aantal dimensies houdt niet in dat de data goed is samengevat.

Het tweede antwoord is “Dat weten we niet”. Dat antwoord is ook waar. Juist omdat er geen goede antwoorden zijn — er is geen beoogde output zoals bij supervised leren — weten we niet of de gevonden samenvatting echt goed is. We kunnen enkel kijken of de samenvatting nuttig is: leidt de segmentatie tot een betere ervaring voor de klant dan was de clustering nuttig. Leidt de dimensie reductie tot kleinere plaatjes (in termen van MB’s) die nauwelijks van het origineel te onderscheiden zijn, dan is de samenvatting gelukt. Of unsupervised leren succesvol is hangt uiteindelijk af van hoe we de samenvatting daarna gaan gebruiken.

Unsupervised leren wordt in de praktijk op allerlei plekken gebruikt. En, in sommige gevallen combineren we unsupervised leren met supervised leren: we vatten eerst data samen, om daarna op basis van de samengevatte data voorspellingen te doen. Echter, in onze discussie tot nu toe — zowel bij het supervised leren als het unsupervised leren — gingen we ervan uit dat de data beschikbaar was: wat doen we als we deze nog moeten gaan verzamelen? Dat is het onderwerp van het volgende artikel.

Deel dit bericht

Plaats een reactie

Uw e-mailadres wordt niet op de site getoond