Voorspellen met je eigen database

In dit artikel lees je hoe je vanuit bestaande data een algoritme kan maken dat helpt om bijvoorbeeld fouten, risico’s of afwijkingen te detecteren. En waarom dat algoritme niet perfect hoeft te presteren om van betekenis te zijn.

Veel voorbeelden van A.I. gaan over toepassingen die lekker tot de verbeelding spreken. Zoals beeldherkenning bij onderzoek (met drones uiteraard) naar schade aan bruggen en gebouwen, of voor het analyseren van afstand tussen mensen tijdens corona. Ook het “detecteren van frauduleuze patronen bij geldtransacties” is een klassieke voorbeeldcase voor menig startup.

Je zou bijna vergeten dat je nog veel meer onderwerpen met een algoritme kan voorspellen. En dat ook minder sprekende of voor hand liggende toepassingen van waarde kunnen zijn.

Het gaat er simpelweg om hoe je voorspellingen gebruikt – en waarvoor. In dit artikel laten we je zien dat je in principe over alles waarvan je data hebt, een algoritme iets kunt laten voorspellen.

Wat is een algoritme?

Een algoritme is een proces of set van instructies om een bepaald doel te bereiken. Als jij je schoenen aantrekt, voer je een algoritme uit.

Algoritme schoenen aantrekken

Een andere simpele vorm van een algoritme is een rekenfunctie: je stopt er X in en er komt Y uit. Stel je een rekenmachine voor die getallen keer 10 doet. Stop je er 2 in (X) dan komt er 20 uit (Y). Het algoritme voert een vaste instructie uit: Y = X * 10.

Daarnaast is het ook mogelijk om een algoritme een voorspelling te laten doen hoe waarschijnlijk Y is: Vandaag is de kans op regen 20%.

Hoe een algoritme leert voorspellen

Voorspellende algoritmes kennen geen vaste instructie om van X tot Y te komen. Maar zo’n algoritme moet de voorspelling van Y wel ergens op baseren. Hiervoor geven we het eerst een hele bak met X én Y combinaties die al bekend zijn, zoals 2 en 20, 3 en 30, 4 en 40.

Door veel bekende X/Y combinaties te analyseren, “leert” het algoritme om een Y te voorspellen voor een willekeurige X. Dit proces noemen we trainen.

Wat kun je voorspellen met je eigen data?

Elke organisatie verzamelt data, als deel van de dienstverlening of gewoon administratief. Ook jouw organisatie bouwt data op. In een database, Excel sheets of een extern systeem.

Denk nu eens aan jullie data, met het bovenstaande algoritme in je achterhoofd. Hoe zou je X en Y aan de data kunnen toewijzen?

Zie je jouw data als een tabel, dan is de Y een kolom die je wil voorspellen. En de X is één of meerdere andere kolommen die je als invoer gebruikt.

Neem een tabel voor ogen die belangrijk is voor jouw organisatie. Bepaal nu de kolom die je zou willen voorspellen. Deze kolom is je Y – en de rest is je X. Je geeft jouw algoritme dus een reeks kolommen die je weet, om de waarde van één andere kolom die je nog niet weet, te voorspellen.

algoritme dataset voorbeeld

Zo kun je met jouw data bijvoorbeeld dit soort voorspellingen doen:

  • Wanneer (Y) gaat deze sensor (X) kapot?
  • Zijn deze ingevulde data (X) correct (Y)?
  • Levert dit nieuwe instrument (X) veel vragen (Y) op?
  • Is het aannemelijk (Y) dat deze waarneming (X) hier gedaan is?
  • … misschien voor jou een andere vraag?

Let op: er gelden belangrijke regels voor de waardes van X. De waardes van X moeten bijvoorbeeld:

  • correct zijn (gevalideerd door experts)
  • relevant zijn (onderscheidende, relevante kenmerken)
  • eerlijk zijn (b.v. geen bias in persoonlijke of sociale kenmerken)
Als X niet voldoet aan deze voorwaarden, dan heb je te maken met ruis.
Dit kan de voorspellende kracht van je algoritme negatief beïnvloeden.

Voorbeeld: datakwaliteit voorspellen

Op het online platform Waterdiertjes.nl kunnen scholieren en andere vrijwilligers invullen wat ze met een schepnetje vangen in een sloot. Het platform wordt gebruikt in educatie campagnes en krijgt regelmatig veel aandacht in de media.

De ingevoerde data leveren belangrijke informatie op over de waterkwaliteit in Nederland. En die data groeit elk jaar:

Waterdiertjes.nl Citizen Science platform

Maar wetenschappers kunnen niet alle ingevoerde data zomaar gebruiken in hun analyses. Er worden ook regelmatig grappen ingevoerd en fouten gemaakt. Daarom kunnen beheerders ingevoerde data uitsluiten als zij vermoeden dat er onzin of fouten in staan.

Elk jaar groeit het aantal waarnemingen, waardoor beheerders steeds meer tijd kwijt zijn aan het beoordelen van de data.

Een algoritme trainen

Het platform bestaat sinds 2018 en bevat daarom aardig wat historische records met kolommen over de waarneming én een kolom die aangeeft of de waarneming door een beheerder is uitgesloten. Met deze kolommen trainden we een algoritme, dat bij nieuwe invoer voorspelt of de data moet worden uitgesloten.

Als X nemen we de kolommen:

  • de ingevoerde locatie (x,y)
  • aantal ingevoerde unieke soorten (getal)
  • aantal ingevoerde exemplaren (getal)
  • lengte van de ingevulde gebruikersnaam (getal)
  • lengte van ingevulde opmerkingen (getal)

Als Y nemen we de kolom:

  • uitsluiten? (0 of 1)

Dit algoritme geeft bij invoer van X, een voorspelling van Y tussen 0 en 1. Bij 0,1 is het een klein beetje zeker over uitsluiting, bij 0,9 is het daar heel zeker van.

We testten met algoritme met 2508 recente waarnemingen, waarvan we dus weten welke invoer werkelijk door beheerders is uitgesloten. Elke voorspelling vergelijken we met de eerdere beslissing van beheerders.

Algoritme prestaties beoordelen

Stel, het algoritme geeft voor een individuele waarneming bijvoorbeeld 0.41. Hoe ga je nu om met die voorspelde waarde? Een manier is om een ondergrens te nemen, bijvoorbeeld 0.4, waarboven je elke voorspelling aanneemt als ‘uit te sluiten’.

Om de geschikte grenswaarde te bepalen, wil je de foutmarge weten. Hoeveel waarnemingen sluit je met een grenswaarde terecht uit, en hoeveel onterecht?

Daarvoor laat je jouw algoritme los op testdata, en vergelijk je de prestaties per grenswaarde. Een grafiek zoals die hieronder helpt je daarbij.

Je ziet hier de prestaties per grenswaarde, in stappen van 0.1 (de x-as). De kleurenstapel vertelt het aantal goed voorspelde uitsluitingen (groen), gemiste uitsluitingen (zwart) en foute uitsluitingen (rood).

algoritme prestaties diagram

Let op: niet afgebeeld in deze grafiek, zijn de vele waarnemingen die terecht niét werden uitgesloten. Het totaal aantal waarnemingen is 2508, en beheerders hebben er 147 uitgesloten (groen + zwart). Van alle 2361 (2508– 147) niet uitgesloten waarnemingen, had het algoritme alleen de rode verkeerd.

Wat je hier ziet: neem je 0.1 als grenswaarde, dan vind je de meeste correcte uitsluitingen (groen). Je mist er slechts 11 (zwart). Maar je doet ook een hoop onterechte uitsluitingen (rood).

Nou ja, een hoop… dat is natuurlijk relatief. Want van de 2361 waarnemingen die volgens beheerders niet moesten worden uitgesloten, sluit het algoritme er 84 onterecht uit. Die foutmarge is 3,55%.

Aan de andere kant van de grafiek, bij 0.9, zijn de prestaties vrijwel andersom: we missen meer uitsluitingen (79 vs 14), maar sluiten er ook minder (19 vs 84) onterecht uit.

* NB: het algoritme is getraind met synthetische data, en heeft de data in onze testset dus nooit gezien.

Algoritme toepassing bepalen

Op basis van deze prestaties is beter te bepalen hoe de voorspellingen in de praktijk kunnen worden toegepast. Daarvoor moeten we onszelf een aantal vragen stellen:

  • Wat is belangrijker: snel data uitsluiten, of weinig fouten maken?
  • Wat is een acceptabele foutmarge om uitsluitingen te missen?
  • Wat is een acceptabele foutmarge om data onterecht uit te sluiten?

Het antwoord helpt ons te bepalen of we het algoritme actief of passief gaan inzetten.

Actieve rol: direct actie vanuit algoritme

We kunnen waarnemingen automatisch uitsluiten als de voorspelling hoger is dan een bepaalde waarde. De data wordt dan meteen verborgen in onze applicatie. Maar onherroepelijk zullen hierbij dan ook waarnemingen onterecht worden uitgesloten.

Als snel effect (data direct uitsluiten) het belangrijkst is, dan zoeken we de laagste grenswaarde met een acceptabele foutmarge: eentje die genoeg waarnemingen terecht uitsluit om de onterechte uitsluitingen voor lief te nemen.

Bijvoorbeeld: met een grenswaarde van 0.6 worden 102 van de 147 foute waarnemingen terecht uitgesloten (score 67%), en 45 van de 2361 goede waarnemingen onterecht uitgesloten (foutmarge 1,9%).

Passieve rol: algoritme als co-piloot

We kunnen er ook voor kiezen om het uitsluiten nog steeds aan menselijke beheerders over te laten, maar het algoritme gebruiken om hun werk makkelijker te maken.

Bijvoorbeeld met een beheerscherm dat alle voorspellingen boven de 0,1 laat zien, zodat ze die vervolgens zelf kunnen beoordelen. En/of een automatische e-mail melding als er een nieuwe waarneming door het algoritme is aangemerkt.

Als kwaliteit het belangrijkst is, dan zoeken we de laagste grenswaarde die zoveel mogelijk (liefst alle) uit te sluiten waarnemingen geeft, met een acceptabel aantal onterechte uitsluitingen, waardoor de totale vermindering van het werk voldoende tijdwinst oplevert.

In het testscenario krijgen de beheerders in totaal geen 2508 waarnemingen te zien, maar slechts 231 (147 + 84), waarvan ze er dan 147 daadwerkelijk zullen uitsluiten. Dit beperkt hun werklast enorm en stelt ze zelfs in staat om regelmatig pro-actief te kijken of er door het algoritme nieuwe waarnemingen zijn aangemerkt.

Je algoritme valideren en verbeteren

Je hebt het vast al gezien: welke toepassing we ook kiezen, er blijft een minimaal aantal (11 bij 0.1) waarnemingen die niet door het algoritme worden opgemerkt. Hoe ga je daarmee om?

Willen we uiteindelijk niets missen, dan is met deze testresultaten een periodieke controle van alle data nodig om te garanderen dat alle ongeldige data echt wordt uitgesloten.

Dit zouden we jaarlijks kunnen doen, afhankelijk van de wenselijke snelheid en de foutmarge van het algoritme.

Ontbrekende uitsluitingen die we opsporen, gebruiken we om het algoritme verder te trainen. Met als doel om de foutmarge steeds verder te verlagen.

Is de foutmarge laag genoeg richting nul, dan kunnen we de gehele controle vervangen door steekproeven.

Ook voorspellen met je eigen data?

Zie jij mogelijkheden om vanuit je eigen data fouten, risico’s of kansen te voorspellen? Zodat je beter kunt inspelen, of je werkproces kunt verbeteren?

We adviseren je graag over de kansen en kosten.

Meer weten?

Stuur ons een bericht of beschrijf je case.