Learning Adventures

Data voor het trainen van je eigen model

De meeste mensen hebben inmiddels ChatGPT wel eens uitgeprobeerd en gemerkt dat de antwoorden vaak vrij algemeen zijn en niet altijd 100% kloppen. Daarbij worden jouw vragen en gegevens die je invoert ook nog eens gebruikt als trainingsdata om ChatGPT verder te trainen, dus je moet nog nadenken wat je vraagt ook.

Daarom kiezen veel bedrijven ervoor hun eigen AI-model te trainen. Dit garandeert dat privé gegevens privé blijven en dat het model op zeer specifieke taken getraind kan worden. 

Klinkt ideaal, maar om je eigen AI-model te trainen heb je data nodig. Dus dan loop je al snel tegen de volgende dingen aan: wat is data eigenlijk en hebben wij als bedrijf genoeg data in huis? En zo ja, hoe krijgen we deze data vervolgens in een AI-model? Om een antwoord op deze vragen te krijgen bespreken we in dit artikel wat data is, hoe je erachter kunt komen welke data je hebt en hoe je deze data vervolgens kunt gebruiken om je eigen AI-model te trainen.

Dus allereerst: wat is data eigenlijk?

Data komt in vele verschillende vormen voor, zo heb je Excel-bestanden, foto’s, klantendossiers, databases, video’s, formulieren en ga zo maar door. En data is er niet alleen in digitale vorm. Ook papieren dossiers en kennis in hoofden van mensen zijn vormen van data. Je begrijpt, dit is teveel om het per datatype te bespreken, dus om alles overzichtelijk te houden delen we data op in twee categorieën: gestructureerde en ongestructureerde data.

Wist je dat 80 tot 90 procent van alle data binnen een bedrijf ongestructureerde data is? En dat de meeste bedrijven deze data niet of niet optimaal gebruiken!

Gestructureerde data

Gestructureerde data is data die aan een vooraf gedefinieerd datamodel voldoet. Denk hierbij bijvoorbeeld aan databases of Excel bestanden met een traditioneel rij-kolom lay-out. Maar ook papieren registratieformulieren die aan een vast formaat voldoen en allemaal op dezelfde manier zijn ingevuld zijn vormen van gestructureerde data.

Vuistregel: je weet van tevoren welke informatie je op welke plek kunt verwachten. Dit maakt het natuurlijk ideaal als je later deze data voor andere doeleinden zoals rapportages wilt gebruiken.

Ongestructureerde data

Ongestructureerde data is zoals de naam al zegt ongestructureerd. De meeste bedrijven hebben een SharePoint die uitpuilt van de Word-bestanden en PDF’jes die allemaal compleet verschillend zijn opgemaakt en andere soorten data bevatten. En iedereen heeft duizenden e-mail conversaties zonder duidelijke indeling. Maar deze e-mails en bestanden zitten vaak barstensvol uitermate nuttige informatie.

Stel, je bent medewerkers van een verzekeringsmaatschappij en je wilt weten waarom sommige schadeclaims worden goedgekeurd en andere juist niet. Deze informatie staat allemaal in dossiers, maar de argumentatie is vaak in een ongestructureerde verhaalvorm geschreven door de behandelaars en is uniek per claim. De informatie is er dus wel, maar de data is niet gestructureerd genoeg om er effectief iets mee te kunnen doen via traditionele manieren.

AI-modellen

Hier komen AI-modellen om de hoek kijken. Je hebt verschillende soorten AI-modellen, wij bespreken hier alleen LLM’s (Large Language Models) die op basis van Machine Learning werken. Een kleine disclaimer is dat op het moment van schrijven (en waarschijnlijk nog lange tijd daarna) AI-modellen geen 100% correcte antwoorden geven, al wordt de nauwkeurigheid wel steeds beter.

Zo kun je in ons voorbeeld een AI-model trainen met alle eerdere schadeclaims. Daarnaast kun je ervoor zorgen dat het model op de hoogte is van de laatste wet- en regelgeving, polisvoorwaarden en bedrijfsbeleid. Dan heb je een heel erg krachtig middel in handen. Hiermee kun je niet alleen schade-experts begeleiden, maar ook werkinstructies en documentatie genereren. En uiteindelijk schadeclaims geheel automatisch afhandelen.

Data, data en nog meer data

Om een AI-model te trainen heb je dus data nodig. Deze data kun je vaak niet zomaar gebruiken om een AI-model te trainen, de data moet eerst worden voorbereid. Hiervoor moeten verschillende stappen worden doorlopen. Met deze stappen zorg je ervoor dat de data van hoge kwaliteit en geschikt voor het trainen van een AI-model is. Dit leidt uiteindelijk tot betere modelprestaties en nauwkeurigere voorspellingen.

Stap 1: Data verzamelen

De eerste stap om een AI-model trainen is het verzamelen van datasets. Zoek naar bronnen van gegevens die relevant kunnen zijn. Dit kan interne informatie zijn maar ook openbare informatie. Denk hierbij aan databases, SharePoints, sensor data, klantendossiers etc. 

Vervolgens bepaal je per databron hoe groot de dataset is, hoe nuttig de informatie gaat zijn en hoeveel werk het is om deze dataset te kunnen gebruiken. Natuurlijk moet je ook controleren of je deze gegevens überhaupt mag gebruiken qua wet- en regelgeving en/of bedrijfsbeleid. Op basis van deze inschattingen bepaal je of je deze databron gaat gebruiken of niet.

Stap 2: Data opschonen

Nadat je data hebt verzameld moet deze data worden opgeschoond. Het opschonen van data is verschillend voor gestructureerde en ongestructureerde data en er zijn verschillende technieken om de data ‘netjes’ te krijgen. Bij gestructureerde data denk je voornamelijk aan duplicaten verwijderen, missende gegevens aanvullen, consistentie controleren etc. Bij ongestructureerde data moet je vooral ruis voorkomen (zoals HTML-tags), stopwoorden verwijderen (zoals de, het en een) en te vaak (of te weinig) voorkomende woorden verwijderen. Daarna komen er enkele stappen om de data geschikt te maken voor LLM’s zoals woorden omzetten naar hun stamvorm en tokenisatie.

Stap 3: Data-analyse

De volgende stap is het analyseren van de data. Je probeert hierbij inzicht in de gegevens te krijgen. Dit doe je door de basisstatistieken van de data vast te leggen (bijv. het mediaan, de minimale en maximale waardes en de standaardafwijking van kolommen met getallen) en dit vervolgens te visualiseren. Hierdoor kun je in dit vroege stadium al problemen ontdekken zoals ontbrekende of foutieve waardes.

Als in ons voorbeeld er een percentage van het totale toegekende schadebedrag in een kolom hoort te staan, dan verwachten we hier een waarde tussen de 0 en 100 procent. Als we dan in onze grafiek in een aantal gevallen een negatief percentage zien staan, dan kun je concluderen dat deze data niet klopt. Dit is natuurlijk een gemakkelijk te detecteren voorbeeld, maar wanneer je dit soort gegevens visualiseert kun je een stuk sneller problemen ontdekken. Er zijn vele tools beschikbaar om bij deze stap te helpen en deze stap is cruciaal om de kwaliteit van de dataset te garanderen.

Stap 4: Feature engineering

Feature engineering komt daarna aan de beurt. In deze stap bepaal je welke features van de data belangrijk zijn en welke er nog missen. Met features worden bijvoorbeeld kolommen van tabellen bedoeld. Je gaat per feature na of het waarde toevoegt aan het trainen van het AI-model. Ook kijk je of je nog features mist of dat je door verschillende features te combineren nieuwe features kunt maken (afgeleide features).

Als in ons voorbeeld het doel van het AI-model is om schadeclaims te kunnen beoordelen en in onze dataset erg veel features bestaan met klantinformatie die weinig met de claims te maken hebben, is het onnodig en zelfs onwenselijk deze informatie mee te trainen. Niet alleen maken deze onnodige features de trainingsset onnodig groot, ook kan het model verkeerde conclusies gaan trekken. Als 80% van de data over een ander onderwerp gaat, zal jouw model ook eerder over dat andere onderwerp beginnen. Vraag een houthakker om een schroef uit een boom te halen en hij zal eerder de boom omhakken dan een schroevendraaier gebruiken omdat dat nu eenmaal is wat hij gewend is.

Stap 5: Data normalisering en schaalverandering

Nu zou de data redelijk accuraat moeten zijn. De volgende stap is het normaliseren van de data en zorgen dat de schaal klopt. Vooral wanneer je (numerieke) data hebt is het belangrijk dat de waardes binnen bepaalde normen liggen. Daarom wordt data vaak omgerekent naar vaste bereiken.

Als in ons voorbeeld schadebedragen staan van 0 tot 10.000 euro, worden al deze waardes omgerekend zodat alle waardes tussen een bereik van bijvoobeeld 0 en 1. Dit leidt tot betere prestaties (snelheid) en consistentie bij de onderliggende algoritmes voor het trainen van AI-modellen. Mocht je het hoe en waarom willen begrijpen kun je convergentie, Min-Max schaling en/of Z-score normalisatie googlen en een fijne avond wiskunde tegemoet zien.

Daarnaast zorgt het gebruik van genormaliseerde waardes dat alle features van de data dezelfde waarde krijgen en dus allemaal meegenomen worden om antwoorden te genereren. Als feature A allemaal grote getallen heeft en feature B juist allemaal kleine, dan wordt feature B snel ondergesneeuwd door het ‘geschreeuw’ van feature A.

Stap 6: Labelen data

Het labelen van data is de volgende stap in het voorbereidingsproces van data voor het trainen van een AI-model. Deze stap is niet altijd nodig en is afhankelijk van de gebruikte trainingsmethode.

Je begint door het type label (bijv. een getal of boolean) en de mogelijke antwoorden vast te stellen. Dit helpt het model om beter te begrijpen wat het correcte antwoord is. Een voorbeeld van een label is of een schadeclaim is goedgekeurd of niet (de opties zijn goedgekeurd of afgewezen).
Het labelen van data kan handmatig of automatisch gedaan worden en dat wordt per label bepaald. De voorkeur gaat naar automatisch, dat gaat immers een stuk sneller, maar dit is niet altijd mogelijk. Het is aan te raden door meerdere mensen te laten labelen wanneer het handmatig gebeurt en het in alle gevallen achteraf goed te controleren, aangezien verkeerde labels desastreus zijn. Er zijn gelukkig wel vele tools beschikbaar die je bij deze taak kunnen helpen.

Stap 7: Data opsplitsen

Data moet daarna worden opgesplitst in trainingsdata en testdata.
Trainingsdata is de data waarvan een AI-model leert. Deze data bevat een (grote) hoeveelheid gegevens met een bekende output (labels) die worden gebruikt om het model te leren hoe het de juiste output kan voorspellen op basis van input. Het model ziet deze data herhaaldelijk tijdens het trainen waardoor er patronen en relaties worden geleerd.

Testdata is de data waarmee je prestaties van een model valideert. Testdata mag niet eerder zijn gebruikt om het model te trainen en het model ziet deze data dus pas nadat het getraind is. 

De verhouding trainingsdata tot testdata is afhankelijk van verschillende factoren (grootte van de dataset, tussentijdse evaluaties etc.), maar een normale verhouding is 70 tot 80 procent trainingsdata en 20 tot 30 procent testdata.

Stap 8: Opslaan en beheer

Nadat de data is voorbereid moet het worden geëxporteerd en opgeslagen in een formaat dat wordt ondersteunt door de trainingsmethode die je gaat gebruiken. In de meeste gevallen zal dit een JSON of CSV bestandsformaat zijn. Het is aangeraden een versiebeheer zoals GIT te gebruiken en/of de data redundant op te slaan om te voorkomen dat al je harde werk verloren gaat.

Conclusie

Datasets verzamelen en voorbereiden is best een behoorlijke klus, maar als je het eenmaal hebt afgerond, dan heb je een prachtige basis om je eigen AI-model te gaan trainen. Het trainen van modellen gaan we de volgende keer bespreken waarin veel van deze stappen nogmaals voorbij komen maar dan met de benodigde python code erbij.