Werken met kleine datasets

Werkt Machine Learning ook als er weinig data beschikbaar is?

Een algoritme bouwen als er een gigantische hoeveelheid data beschikbaar is, is eenvoudiger dan met een kleine dataset. Ga je op internet op zoek naar termen als machine learning, deep learning of AI, dan vind je voorbeelden van complexe algoritmes die getraind zijn op miljoenen of miljarden datapunten. In de realiteit bestaan datasets soms maar uit duizenden of enkele tienduizenden datapunten en dan blijken deze complexe algoritmes helemaal niet bruikbaar.

Kunnen we in zo’n situatie dan toch meerwaarde leveren met een data gedreven oplossing voor een probleem? Wij menen van wel. In dit artikel kijken we naar waarom algoritmes lastig te trainen zijn met minder data en hoe we met behulp van een aantal technieken toch een krachtig algoritme kunnen bouwen met een geringe hoeveelheid data.

Waarom algoritmes lastig te trainen zijn met minder data

Om te begrijpen waarom we zoveel mogelijk data willen hebben, werkt het verhelderend om eerst te kijken waar we een algoritme nu eigenlijk voor gebruiken. Het doel van een algoritme is namelijk om ons in staat te stellen betere keuzes te maken. Denk bijvoorbeeld aan het herkennen van afwijkingen in een medische scan, voorspellen waar de aandelenprijs naar toe gaat of een inschatting maken wanneer een onderdeel van een productielijn vervangen moet worden.

Echter, voordat een algoritme kan helpen bij het maken van betere keuzes moet het eerst getraind worden. Dit doen we door het algoritme met behulp van machine learning patronen te leren herkennen in de beschikbare data. Het algoritme dat we in productie nemen gebruikt de gevonden patronen om een oordeel te leveren over de nieuwe, toekomstige data. Wanneer we bijvoorbeeld als traindata het koersverloop van een groot aantal aandelen nemen, zal het algoritme hier patronen in herkennen. Op basis van deze patronen en de huidige koers van een aandeel kan de toekomstige koers voorspeld worden.

Zelfs als we weinig traindata hebben vindt een algoritme patronen in deze data. Maar als we weinig data hebben, dan is de kans dat de gevonden patronen niet representatief zijn voor de onderliggende situatie groter. De prestaties van het algoritme zullen dan tijdens de trainfase goed zijn omdat de patronen in de beschikbare data wel herkend worden, maar omdat deze patronen waarschijnlijk niet representatief zijn voor nieuwe data, zullen prestaties in de praktijk sterk verslechteren.

Dit wordt in de statistiek overfitting genoemd. Overfitting betekent dat je een model zó exact op een dataset bouwt, dat het niet goed om kan gaan met nieuwe data die niet uit die oorspronkelijke dataset kwam. Als de oorspronkelijke dataset representatief is voor de nieuwe data, dan is er geen probleem. Echter, bij een kleine dataset is de kans kleiner dat deze ook representatief is voor nieuwe data.

Overfitting kunnen we op twee momenten voorkomen: in de voorbereidende fase en tijdens het bouwen van model. Het vinden van de optimale strategie om overfitting tegen te gaan komt tot stand door een trial-and-error proces waarbij meerdere technieken gecombineerd worden. De lijst van technieken die we in de volgende twee secties beschrijven is niet uitputtend, maar bedoeld om een inzicht te geven in wat mogelijk is.

Omgaan met weinig data in de voorbereidende fase

Een goed begin is het halve werk. Dat geldt zeker voor het bouwen van AI-toepassingen. Daarom kunnen we het gebrek aan data al aanpakken in de voorbereidende fase met de volgende technieken:
    • Data opschonen: wanneer er niet veel data beschikbaar is kunnen fouten of uitschieters in de dataset een grote impact hebben op de prestatie van het uiteindelijke model.
    • Zoek gelijksoortige data: om een algoritme goed te kunnen trainen kunnen we ook data toevoegen die niet perfect bij ons vraagstuk passen. Deze data is dan niet van dezelfde waarde, maar alle kleine beetjes kunnen helpen. Bij het ontwikkelen van een algoritme dat zeldzame ziektes herkent aan de hand van CT-scans, kun je het algoritme tijdens het trainen ook naar andere soorten medische scans laten kijken. De redenatie hierachter is dat bepaalde algoritmes eerst op zoek gaan naar algemene condities – zoals lijnen of kleur verschillen in afbeeldingen – voordat ze specifiek het probleem in kwestie proberen op te lossen. Gelijksoortige data kan het algoritme dan in het begin een zetje in de rug geven.
    • Voorspel geen exacte waardes, maar werk met intervallen: een exacte waarde voorspellen is veel moeilijker dan een interval. Wil je bijvoorbeeld bepalen hoe lang een ventilator van een productielijn nog mee gaat, dan zal de nauwkeurigheid van de voorspelling in de vorm van een interval – bijvoorbeeld 50 tot 80 dagen – veel hoger zijn dan wanneer een exact aantal dagen – bijvoorbeeld 67 dagen – voorspeld moet worden.
    • Maak een selectie van variabelen: Wanneer data schaars is, kan het minimaliseren van het aantal variabelen op basis van domeinkennis de prestaties van het algoritme ten goede komen. Zo kunnen we voorkomen dat we waarde toekennen aan variabelen waar een vakinhoudelijke expert van uit kan sluiten dat deze invloed heeft. Wanneer we bijvoorbeeld een algoritme willen bouwen dat kan voorspellen wanneer onderhoud aan een productielijn gepleegd dient te worden, kan het zomaar zijn dat een van de datapunten de kleur van een ventilator beschrijft. Het is onwaarschijnlijk dat deze invloed heeft op het te voorspellen onderhoudsmoment. Een expert kan hierover uitsluitsel geven en er dus voor zorgen dat deze variabele niet meegenomen wordt in het bouwen van een model.
    • Over- en undersampling: Weinig data kan ook betekenen dat we wel een grote dataset hebben, maar dat hetgeen we proberen te voorspellen maar weinig voorkomt in dataset. Denk hierbij aan een zeldzame ziekte, een beurscrash of een cruciaal onderdeel van een productielijn dat stuk gaat. In zo’n geval kunnen we met behulp van een aantal slimme trucs meer data genereren en meer balans aanbrengen in de dataset.
 

Omgaan met weinig data bij het bouwen van het model

Ook in het model zelf kunnen we maatregelen treffen om toch waarde uit kleine datasets te halen. Hiervoor hebben we onder andere de volgende technieken tot onze beschikking:
    • Transfer learning: een model dat gebouwd is voor het oplossen van een ander probleem kan een heel goed startpunt zijn voor het oplossen van het probleem in kwestie. De redenatie hierachter is dat er een gemene deler zit in beide problemen die het model ook heeft kunnen leren van een ander probleem. Zo zien we dat alle neurale netwerken die gebouwd zijn om afbeeldingen te herkennen in een vroeg stadium eerst leren om randen en vlakken te herkennen voor ze verder gaan met de meer specifieke taken. Op dit gebied functioneert een algoritme dat stoplichten moet herkennen dus hetzelfde als een algoritme dat plaatjes van katten probeert te herkennen.
    • Regularization en dropout: dit zijn twee technieken die er specifiek op gericht zijn om overfitting in het model te verminderen of voorkomen; ofwel door het model te ‘straffen’ voor grote gewichten (regularization) ofwel door bepaalde delen van het model bewust uit te laten vallen (dropout).
    • Loss functie: de loss functie is hoe het model zelf beoordeelt of het op de goede weg is met het leren van de patronen in de data. Het aanpassen van deze functie kan goed werken in situaties waar veel data beschikbaar is, maar weinig data van hetgeen we proberen te voorspellen. Denk hierbij weer aan het voorbeeld van de zeldzame ziektes. Als een ziekte maar bij 1 op de 10.000 mensen voor zou komen en het model voorspelt altijd dat iemand de ziekte niet heeft, dan is het model 99.99% nauwkeurig. Om deze situatie te voorkomen kunnen we de loss functie aanpassen, waardoor de gemiste gevallen waarin iemand de ziekte echt heeft (false negatives) veel zwaarder meetellen.
    • Model Averaging: zoals de term doet vermoeden is dit het gemiddelde nemen van meerdere modellen om zo tot één voorspelling te komen. De kracht van het gebruik van meerdere modellen ligt in het feit dat overfitting in de individuele modellen tegen elkaar weggestreept worden en dicht in de buurt komt van de eigenlijke distributie. Dit is vergelijkbaar met een hulpvraag uit Lotto Weekend Miljonairs, waar je de kans hebt om het publiek te vragen. Dan valt op dat het publiek in zijn geheel het bijzonder vaak bij het goede eind heeft. Hetzelfde onderliggende principe zorgt er ook voor dat veel modellen samen een goede voorspelling kunnen doen.


Conclusie
Hoewel datasets steeds groter en groter worden, zijn er ook nog veel vraagstukken waarbij niet veel relevante data beschikbaar is. Om toch inzichten uit deze data te creëren moeten we hier in de voorbereidende fase en tijdens het bouwen van een model rekening mee houden. De technieken in de voorgaande secties zijn slechts een aantal voorbeelden van hoe dit in de praktijk aangepakt kan worden. Het is vooraf onmogelijk om te weten welke techniek het best werkt voor een bepaald vraagstuk. Daarom zal het vinden van de optimale oplossing in de praktijk een iteratief proces zijn waarbij combinaties van verschillende technieken getest moeten worden.

Is er binnen uw organisatie een behoefte om data gedreven keuzes te maken, of twijfelt u aan de data of de hoeveelheid daarvan? Wij kijken graag met u mee!

Delen:

Meer posts

Waar ai menselijk wordt

Gratis consult inplannen