Gaten in dataset opvullen met machine learning

Digitalisering staat wereldwijd in bijna iedere branche en bij menige organisatie hoog op de agenda. Handhavingsorganisaties en toezichthouders hebben meer en meer de behoefte om de gegevenshuishouding op orde te krijgen en datagedreven te gaan werken. Dit is niet gemakkelijk. Immers, voor de dagelijkse praktijk is het nodig om vanuit diverse bronnen informatie te halen: enkel een zaaksysteem waarin de administratie wordt bijgehouden volstaat in 2020 niet meer. Bronnen als het BAG, het handelsregister, de WOZ, het KNMI en het CBS worden (en moeten worden) steeds vaker geraadpleegd, omdat men pas een realistisch beeld van de werkelijkheid krijgt wanneer alle beschikbare datapunten als puzzelstukjes worden gecombineerd.

Hierbij komen specifieke problemen om de hoek kijken: wat nu als een aantal puzzelstukjes ontbreken? Staan bedrijven die wel in het zaaksysteem voorkomen, maar niet in het handelsregister, voldoende op de radar? En andersom? Beperkt onze kennis zich tot de objecten die we in iedere relevante bron tegenkomen, of kunnen we ook aan de slag wanneer er informatie ontbreekt? In dit artikel geef ik voorbeelden hoe dit veelvoorkomende probleem op verschillende manieren kan worden opgelost. 

Koppelen van datasets & het detecteren van ‘data gaten’

Het koppelen van datadumps uit verschillende bronnen gaat bij voorkeur aan de hand van een koppeltabel (merge table). Daarin staat dan bijvoorbeeld voor ieder dossier welk KVK-bedrijf erbij hoort. Wanneer deze niet beschikbaar is, zit er vaak nog maar één ding op: koppelen op basis van postcode en huisnummer. In de praktijk leidt dit tot bijvoorbeeld vaak de volgende problemen:

  1. een bedrijf ontbreekt in één van de bronnen, waardoor belangrijke informatie ontbreekt,
  2. een bron is verouderd, waardoor de gegevens van een (inmiddels opgeheven) bedrijf foutief worden gekoppeld aan het bedrijf dat momenteel op het adres gevestigd is,
  3. er zijn meerdere bedrijven op hetzelfde adres te vinden, wat ook leidt tot foutieve koppelingen van gegevens,
  4. een bedrijf heeft in de ene bron naast een huisnummer ook een huisletter: als de huisletter in een andere bron ontbreekt komt de koppeling niet tot stand. 

Omdat dit soort koppelproblemen relatief vaak voorkomen adviseer ik om tijdens het verwerken van de data regelmatig te controleren hoeveel objecten (niet) gekoppeld kunnen worden. Ook kan een visualisatie van ontbrekende waarden met het R-package ‘Amelia’ je hierbij helpen.

In een ‘missingness map’ wordt voor een dataset, waarin iedere rij (horizontaal) een adres voorstelt, per kenmerk weergegeven of we hier wel of geen gegevens voor hebben.

Het opvullen van de ontbrekende puzzelstukjes

Vaak is de aanwezigheid van ontbrekende gegevens niet te voorkomen omdat de databronnen die worden gebruikt incompleet zijn. Het probleem van ontbrekende gegevens doordat bedrijven in één van de bronnen niet voorkomen, komt bij handhavingsorganisaties relatief veel voor. Dit komt doordat er pas een dossier wordt aangemaakt van een bedrijf wanneer er een controle plaatsvindt. Een koppeling tussen zaaksysteem en handelsregister is daarom belangrijk. Hiermee ontstaat er een zo volledig mogelijk beeld van ‘alle’ bedrijven in de regio. We weten echter maar heel weinig over een bedrijf als deze slechts in het handelsregister voorkomt en niet in het zaaksysteem. Hieronder twee succesvolle toepassingen van data science die hierbij kunnen helpen.

Voorbeeld 1 – Branche codes schatten

Ieder bedrijf dat in het zaaksysteem wordt opgenomen wordt in een ‘Branche’ ingedeeld. In totaal hanteert men ca. 60 verschillende branches. Dit kenmerk wordt gebruikt om een bedrijvenlijst uit te draaien voor specifiek toezicht, bijvoorbeeld binnen de branche ‘School’. We gaan er van uit dat alle scholen in de regio in onze gekoppelde dataset voorkomen. Als een school echter niet in het zaaksysteem voorkomt, is het veld ‘Branche’ in onze gekoppelde dataset leeg. Filteren we dus onze dataset op basis van de branche, dan missen al deze scholen en zijn we niets opgeschoten met het koppelen van de datasets. 

Data science biedt ons de mogelijkheid om efficiënt en snel een redelijk goede inschatting te maken van de Branche voor de scholen uit het KVK. Hiervoor gebruiken we de bedrijven die in beide bronnen voorkomen. In deze overlappende dataset bepalen we hoe vaak een SBI-code (uit het KVK) en een Branche code samen voorkomen. Dit doen we door een co-occurrence matrix op te stellen voor deze twee kenmerken. Daarmee schatten we vervolgens voor ieder bedrijf in de KVK-dataset welke Branche erbij past op basis van de SBI-code. De aanpak is snel, flexibel (de koppeltabel kunnen we, indien gewenst, handmatig bijwerken) en dit levert ons zonder extra moeite een inschatting van de betrouwbaarheid.

Voor het bovengenoemde voorbeeld leidt dit tot het volgende resultaat: als we van de gekoppelde dataset alle ‘Scholen’ willen uitdraaien, krijgen we een dataset met ca. 80 bedrijven waarvan we weten dat het scholen zijn en ca. 20 bedrijven waarvan we inschatten dat het scholen zijn. De laatste groep, van 20 bedrijven, was zonder onze huidige aanpak onder de radar gebleven en zodoende niet op de toezichtlijst beland.

Voorbeeld 2 – Energie meldplicht schatten

In het kader van de meldplicht energieverbruik is het belangrijk dat een handhavingsorganisatie weet welke bedrijven meldplichtig zijn. Zelfs met een gekoppelde dataset lopen we ook hier weer tegen hetzelfde probleem aan als hierboven: alleen van de bedrijven waarvan de energiegegevens bekend zijn kan men bepalen of ze ‘wel’ of ‘niet’ meldplichtig zijn. Ook hierbij kan data science uitkomst bieden. Door goed naar alle overige gegevens te kijken kunnen we voor een groot aantal bedrijven bepalen of ze ‘vermoedelijk wel’ of ‘vermoedelijk niet’ meldplichtig zijn. 

Om dit te doen, kijken we naar de overlappende dataset. Hierop trainen we een classificatie model die een aantal kenmerken gebruikt die een hoog of laag energieverbruik kunnen verklaren. Dit zijn bijvoorbeeld de SBI-code, vloeroppervlakte, bouwjaar en het aantal werknemers. Hiermee kunnen we een inschatting maken van of een bedrijf groot-, midden- of kleinverbruiker is. De nauwkeurigheid van het model kunnen we evalueren op de overlappende dataset. Vervolgens maken we een inschatting van de verbruikersklasse voor de bedrijven waarvan we geen energiegegevens hebben, en verwerken we deze voorspelling naar de labels over de meldplicht. Hierbij wordt duidelijk onderscheid gemaakt tussen ‘wel meldplichtig’ en ‘vermoedelijk wel meldplichtig’, zodat we bijvoorbeeld de mogelijkheid hebben om 2 soorten brieven te versturen wanneer de betreffende bedrijven worden aangeschreven. 

Los van de aanpak met het classificatie model is er nog een mogelijkheid om verbruiksgegevens te schatten. Deze is gebaseerd op de bedrijfspanden studie van de ECN uit 2015. Zij hebben alle bedrijfspanden ingedeeld in ‘gebouwtypen’ (ca. 30 verschillende) Voor ieder gebouwtype is daarna het gemiddelde bepaald van het energieverbruik per vierkante meter, genaamd een kental. Deze kentallen zijn openbaar gemaakt, wat betekent dat wij ze kunnen gebruiken voor een rekenkundige voorspelling van het energieverbruik op basis van SBI-code, BAG-gebruiksdoel en bouwjaar van het pand en het vloeroppervlak van het bedrijf. Deze methode is generieker en onafhankelijk van een bestaande dataset met energiegegevens. Omdat er echter met gemiddelden wordt gewerkt over grote categorieën bedrijven uit heel Nederland is de gemiddelde afwijking ook groter.

De voordelen van het opvullen van ontbrekende data

Eerder zagen we al dat het opvullen van gaten in de dataset helpt met het verkrijgen van completere toezicht- en handhavingslijsten, omdat bedrijven die normaal gesproken onder de radar blijven plotseling wel meegenomen worden. Daarnaast zorgt het er ook voor dat visualisaties van een dataset, bijvoorbeeld met alle bedrijven als punten op een kaart, vollediger en informatiever worden. Daarnaast werken filters op de dataset beter, simpelweg omdat er meer velden en waarden zijn om te filteren, zodat het mogelijk is om in te zoomen en analyses te draaien op specifieke sets. Tot slot helpt het koppelen en invullen van datasets bij het ontdekken van discrepanties of verouderde gegevens in de inspectie- of toezichtlijsten.

Interesse in een assessment door een data scientist van Ynformed aan de hand van jouw dataset of zaaksysteem? Of wil je gewoon meer weten? Neem contact op!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *