Wil Peters & Haroun Payandeh
DEEL 1: Inzet Machine Learning bij het analyseren van boekingsomschrijvingen
Organisaties richten een fiscaal beheersingsraamwerk in om fiscale risico’s te beheersen. Zo’n fiscaal beheersingsraamwerk wordt ook wel “Tax Control Framework” genoemd, of kortweg TCF. Het doel van een TCF is het vroegtijdig ontdekken en corrigeren van eventuele fiscale fouten in primaire processen en transacties, die anders in een fiscale aangifte terecht zouden zijn gekomen. Een belangrijk onderdeel van een TCF is de monitoringfunctie. Door middel van monitoring stellen organisaties namelijk vast of hun TCF afdoende werkt. Anders gezegd: “Zijn er geen foute transacties door het net geglipt, die het TCF had moeten detecteren en corrigeren?”. Juyst is al jaren actief op het vlak van Tax Control en ondersteunt organisaties bij het op orde brengen van hun fiscale beheersing. Onder meer focussen wij daarbij op de inzet van data-analyse in het kader van monitoring. Door de inzet van zorgvuldig ontwikkelde analysemodellen brengen we de kennis en kunde van een ervaren tax-auditor over, zowel op onze eigen medewerkers als op de medewerkers van de organisaties die we ondersteunen.
Oude wijn in nieuwe zakken?
Slimme gegevensgerichte technieken op gegevens die afkomstig zijn uit financiële – en logistieke systemen kunnen helpen om de vraag “werkt het TCF?” te beantwoorden. Het toepassen van data-analyse is de laatste jaren enorm hip. Termen als “Big Data“, “Machine Learning” en “Artificial Intelligence” worden daarbij te pas en te onpas gebruikt. Het betreft echter vaak “oude wijn in nieuwe zakken“. Een flink deel van de methoden en technieken die worden gehanteerd zijn namelijk al sinds de jaren ’70 van de vorige eeuw in gebruik. Onder andere bij accountants belast met de controle van de jaarrekening. Zij maakten vanaf die tijd in toenemende mate gebruik van digitale gegevens in de geautomatiseerde systemen van de gecontroleerde en pasten daarop data-analyse toe.
Een specifieke groep accountants spitste zich zelfs helemaal toe op vraagstukken rondom de betrouwbaarheid van geautomatiseerde systemen en zo zag het vakgebied “EDP-auditing” (Electronic Data Processing) het levenslicht. Tegenwoordig geeft men de voorkeur aan de term IT-auditing en kan de IT-auditor ook andere aspecten van geautomatiseerde informatiesystemen in zijn oordeel betrekken. Volgens de Norea – de beroepsorganisatie van IT-auditors – oordeelt en adviseert de IT-auditor over IT in bedrijven en organisaties en is hij als professional de aangewezen deskundige om een onafhankelijke beoordeling uit te voeren.
Nieuwe wijn!
Toch zijn er wel degelijk óók nieuwe ontwikkelingen. Zo kunnen momenteel grote hoeveelheden gestructureerde en ongestructureerde data eenvoudig uit geautomatiseerde systemen worden ontrokken en zijn de technieken die eerder door een gebrek aan rekenkracht niet uitvoerbaar waren, nu ineens wél toepasbaar. Dit laatste ziet met name op Machine Learning en Deep Learning toepassingen. Geïnspireerd door de vele positieve geluiden en het Engelse spreekwoord “The proof of the pudding is in the eating“, hebben we binnen ons bedrijf een project opgetuigd om een van onze bestaande analysemodules gebaseerd op traditionele technieken te herschrijven. Deze analysemodule wordt momenteel ingezet om de geboekte werkkosten uit een financiële administratie te filteren.
Werkkostenregeling
De werkkostenregeling die onderdeel is van de Wet op de Loonbelasting. Elke organisatie met personeel in dienst moet volgens die wet de als werkkosten te bestempelen uitgaven registreren en categoriseren. Werkkosten inclusief btw die in de categorie “Vrije Ruimte” vallen, mogen een drempel van 1,2% van de totale loonsom niet overschrijden. Is dit onverhoopt wél het geval, dan is de werkgever 80% eindheffing over het meerdere verschuldigd. Ofwel: een teamuitje waarvoor 1.000 euro (inclusief btw) is begroot, kost dan een slordige 1.800 euro. De meeste organisaties hebben de werkkosten die via de salarisadministratie lopen goed onder controle. Geholpen door de leverancier van het salarissysteem zijn de looncomponenten die onder de regeling vallen netjes benoemd en gecategoriseerd. De kosten die via de financiële administratie lopen vormen echter een ander verhaal. Omdat de onder de regeling vallende kosten zeer divers zijn, is het (volledig) identificeren en correct classificeren ervan een grote uitdaging. Wat we zien, is dat organisaties zo goed en kwaad als het kan trachten zicht te krijgen op deze kosten door ze in de administratie een “wkr-label” mee te geven. Desondanks treffen we in de praktijk in financiële administraties vaak kosten aan zonder wkr-label, of met een incorrect wkr-label.
Doelstelling
Wat we willen is alle boekingsomschrijvingen van alle boekingen inlezen en op basis van de tekst in de omschrijving de computer een wkr-label laten toekennen. Daarna kunnen we de boekingen die zijn voorzien van een wkr-label uit de administratie filteren en de toegekende wkr-labels vergelijken met de door de organisatie aan de boekingen gehangen wkr-labels.
Fuzzy analyse
De bestaande aanpak die we al een aantal jaren gebruiken is het inzetten van klassieke data-analyse technieken. Hierbij maken we gebruik van een uitgebreide steekwoordenlijst die door een materiedeskundige is opgesteld. Op de lijst komen woorden voor die een relatie hebben met de werkkostenregeling. Dit zijn een aantal willekeurige voorbeelden van woorden in deze lijst:
Steekwoord | Soort kosten | Wkr-label (indicatie) |
appelsap | eten en drinken | nihilwaardering |
afscheid | geschenken, feesten en jubilea | vrije ruimte |
attentie | geschenken, feesten en jubilea | vrije ruimte |
barbecue | geschenken, feesten en jubilea | vrije ruimte |
beeldschermbril | kleding, beschermingsmiddelen en gereedschappen | gerichte vrijstelling |
bedrijfsfitness | sport en gezondheid | vrije ruimte |
De complete lijst is uiteindelijk gevuld met meer dan 600 woorden. Nu zijn boekingsomschrijvingen in een administratie niet altijd heel keurig gevuld. De boekingsomschrijvingen zijn doorgaans kort en staan bol van de afkortingen. Ook komen er spelfouten voor. Een zekere mate van “fuzzy zoeken” in de boekingsomschrijvingen is dus onvermijdelijk.
Bij het uitvoeren van onze Fuzzy analysemodule kunnen verschillende keuzes worden gemaakt:
- Al dan niet fuzzy zoeken
- Al dan niet rekening houden met hoofdletters en kleine letters
- Zoeken naar hele woorden of delen van woorden
Fuzzy zoeken houdt in dat bij de zoekopdracht rekening wordt gehouden met kleine afwijkingen in de schrijfwijze, bijvoorbeeld als gevolg van schrijffouten of afkortingen. Dus als gezocht wordt naar “afscheid” dan is er een hit als “afschd” in de boekingsomschrijving voorkomt. Hoeveel letters afwijking acceptabel zijn, bepaalt de gebruiker door het instellen van de mate van fuziness. Er kan voor hoog, midden of laag worden gekozen.
Ons bestaande model maakt dus strikte en minder strikte zoekopdrachten mogelijk:
- Het meest strikt is een niet-fuzzy, hoofdlettergevoelige zoekopdracht naar woorden in de boekingsomschrijvingen die exact overeenkomen met een steekwoord.
- Het minst strikt is een hoofdletterongevoelige, fuzzy zoekopdracht (fuziness hoog) naar woorden in de boekingsomschrijvingen die geheel of deels overeenkomen met een steekwoord.
Accuraatheid, Recall en Precisie
Het meten van de prestatie van een zoekmodel is niet zo eenvoudig als het lijkt. Er zijn namelijk verschillende begrippen die iets over de zoekprestatie van het model zeggen, te weten: Accuraatheid, Recall en Precisie. Laten we deze begrippen eens nader bekijken in relatie tot onze Fuzzy analysemodule:
- In geval 1. is de zoekopdracht nauwkeurig omdat het aantal vals positieve resultaten beperkt zal zijn (Precisie = Hoog). Door het strikte karakter zullen echter relatief veel wkr-gerelateerde boekingen in de administratie niet gevonden worden (Recall = Laag).
- In geval 2. is het omgekeerde het geval: relatief veel wkr-gerelateerde boekingen zullen worden geraakt (Recall = Hoog), het zoekresultaat zal echter vanwege het fuzzy karakter van de zoekopdracht nogal wat vals positieve resultaten bevatten (Precisie = Laag).
- Dan is er ook nog de accuraatheid van het model, ofwel hoeveel correcte voorspellingen zijn gedaan, ten opzicht van het totaal aantal boekingen in de administratie?
In onderstaande figuur worden de berippen “Accuraatheid“, “Recall” en “Precision” nader verduidelijkt:
Balanseren tussen recall en precisie
Bij fuzzy zoeken zal dus een balans moeten worden gezocht tussen de recall en precisie van het model. Omdat een controleur de geraakte boekingen periodiek moet beoordelen en het doorploegen van honderden of zelfs duizenden vals positieve zoekresultaten enorm tijdrovend is, hebben we náást de steekwoordenlijst een extra lijst toegevoegd die we “blacklist” noemen. Voordat de geraakte boekingsomschrijvingen van het fuzzy model als zoekresultaat worden gepresenteerd, wordt gekeken of de voorspelling het gevolg is van een woord op de blacklist. Als dat zo is, dan wordt die voorspelling alsnog overgeslagen. Op die manier kan een klantspecifieke lijst met “blacklistwoorden” worden samengesteld die de precisie van het model fors omhoog krikt.
Met de blacklist kan de precisie van het model worden verbeterd. Een pijnpunt in het model is echter dat de recall veel moeilijker te beteugelen is. We werken immers vanuit een steekwoordenlijst. Woorden die niet op die lijst staan, zullen nooit of te nimmer gevonden worden. Een oplossing is om zoveel mogelijk relevante woorden aan de steekwoordenlijst toe te voegen.
Laten we eens kijken waartoe dit leidt aan de hand van een een praktijkvoorbeeld:
Onze steekwoordenlijst bevat het woord “frisdrank”. Wat we daarentegen in administraties tegenkwamen was niet alleen het woord frisdrank, maar ook “cola”, “fanta”, “sinas”, enzovoort. Is de oplossing dan om alle mogelijke voorkomens van frisdrank op de lijst te zetten? En dan hetzelfde doen met alcoholische dranken? En idem voor maaltijden? Kortom, waar moet je stoppen? Wat we ondertussen gemerkt hadden, was dat als we de lijst met steekwoorden uitbreidden, het aantal vals positieve resultaten ook toenam! En om dat te beteugelen moest de blacklist weer worden uitgebreid…
De conclusie is dat het traditionele model goed kan presteren, maar dat er ook nadelen zijn:
- het opstellen van een complete steekwoordenlijst is lastig, hoe meer woorden hoe meer vals positieve zoekresultaten;
- het verminderen van vals positieve zoekresultaten via de blacklist is wel mogelijk maar is tijdrovend en situatieafhankelijk;
Waar we naar op zoek zijn is een meer robuust model, dat breed toepasbaar is en dat steeds kan “bijleren” welke boekingen wel of niet wkr-relevant zijn. Zou Artificial Intelligence hier een rol in kunnen spelen?
Een nieuwe aanpak
Een interessante nieuwe ontwikkeling befreft NLP, ofwel “Natural Language Processing“. Dit is een deelgebied van de vakgebieden computerwetenschappen, informatiekunde en articial intelligence dat zich richt op de interactie tussen computers en de menselijke taal. In het bijzonder gaat het bij NLP om de vraag hoe computers in staat kunnen worden gesteld de menselijke taal te leren begrijpen. De geschiedenis van NLP gaat terug naar de jaren ’50 van de vorige eeuw. Zo is het een centraal onderdeel van de door Alan Turing in 1950 ontworpen “Turing test“, waarmee de intelligentie van een computer kan worden gemeten. In die test wordt de intelligentie van een computer afgemeten aan de mate waarin de computer intelligent gedrag vertoont dat gelijk is of niet te onderscheiden is van menselijk gedrag. Anders gezegd: als de door een computer gegenereerde antwoorden die een persoon op zijn vragen krijgt, niet te onderscheiden zijn van die van een mens, is sprake van intelligent gedrag.
Het NLP-moeras
Een eerste verkenning van wat er mogelijk is op NLP-vlak, blijkt bemoedigend en ontmoedigend tegelijk. Er is een scala aan verschillende technieken en tools beschikbaar. Dat is prachtig, maar elke techniek of tool heeft een specifiek toepassingsgebied en eigen voor- en nadelen. Veel tools maken bovendien van elkaar gebruik, staan naast elkaar of stapelen op elkaar. Het voelt aanvankelijk dan ook als waden door een moeras: het ene moment heb je vast grond onder de voeten, het andere moment zink je dieper weg. Deze fase kan enkel worden overwonnen door veel te lezen en uit te proberen. Alleen op die manier wordt stap voor stap duidelijk welke techniek en tool geschikt is voor het probleem dat je wil oplossen. In ons geval is dat het classificeren van korte Nederlandse zinnen.
Alleen al het feit dat we willen werken met het Nederlands brengt echter de nodige moeilijkheden met zich mee. Het blijkt namelijk dat het overgrote deel van het vakgebied zich focust op de Engelse taal. Het Nederlands omvat een veel kleiner taalgebied, dus hiervoor is het zoeken naar concrete voorbeelden en hulpmiddelen een stuk “uitdagender”. Enige extra volharding is nodig om ook dit obstakel te overwinnen.
Spellingcorrectie
Een probleem dat ons lang heeft beziggehouden betrof de afkortingen en spelfouten in de boekingsomschrijvingen. Moeten deze worden “hersteld” of kan met de afkortingen en foute woorden worden doorgewerkt? We hebben ervoor gekozen de boekingsomschrijvingen zo veel als mogelijk te herstellen. We willen dat elke boekingsomschrijving wordt beoordeeld en dat daarin voorkomende afkortingen en spelfouten automatisch worden gecorrigeerd. Dit blijkt geen eenvoudige klus. Lees en huiver.
- We hebben alleerst een set woorden (een zogenaamde “corpus“) opgesteld die nauw aansluit bij het financiële domein waarbinnen wij onze uiteindelijke oplossing inzetten. In eerste aanleg zal dit bij gemeentelijke overheden zijn. De woorden zijn afkomstig van websites (bijvoorbeeld dfbonline) die uitleg geven bij financiële begrippen, maar ook uit publieke jaarverslagen en beleidsnotities van gemeenten. Dit heeft geresulteerd in een lijst met ongeveer 100.000 unieke woorden. Dit is overigens maar een klein deel van de totale Nederlandse corpus, die uit een veel groter aantal woorden bestaat.
- Met behulp van onze “gemeentecorpus” hebben we een woordenboek gebouwd dat bestaat uit “woordvectoren“. Een woordvector is een numerieke representatie van een een woord. Met woordvectoren kan worden gezocht naar vergelijkbare woorden en kunnen zelfs woorden worden opgezocht die niet in het woordenboek voorkomen. In het laatste geval komen woorden terug die synoniem zijn van het gezochte woord.
- Vervolgens hebben we een basisset met boekingsomschrijvingen samengesteld. Voor het samenstellen van de basisset zijn de boekingsomschrijvingen uit de financiële administraties van verschillende gemeenten gebruikt. Nadat deze basisset een aantal bewerking heeft ondergaan, zal deze worden overgeheveld naar een annotatietool. De annotatietool stelt materiedeskundigen in staat om boekingsomschrijvingen te labelen. Dit zal proces verderop nader worden toegelicht.
- De boekingsomschrijvingen uit de basisset moeten een herstelprocedure (spellingcorrectie) ondergaan. De eerste opschoning bestaat uit het omzetten van hoofdletters naar kleine letters en het verwijderen van alle tekens die niet voldoen aan het filter “a t/m z” (en varianten van “a t/m z”, dat wil zeggen letters met trema’s en dergelijke). Hierdoor verdwijnen onder meer de cijfers uit de boekingsomschrijving. Dit is een bewuste keuze, cijfers hebben immers taalkundig weinig betekenis.
- Eenduidige, veel voorkomende afkortingen zijn op een aparte lijst geplaatst. Als een van deze afkorting in een boekingsomschrijving voorkomt wordt die afkorting gesubstitueerd door de voluit geschreven tekst. Voorbeelden hiervan zijn “jr” (jaar), “nr” (nummer), “div” (diverse) en “ovk” (overeenkomst).
- Woorden in de opgeschoonde boekingsomschrijvingen die langer zijn dan 3 letters worden vervolgens in een lijst geplaatst en ontdubbeld. De lijst met opgeschoonde, unieke woorden gaat nu naar een routine die de naam “corrector” draagt. Elk woord wordt door de corrector gecontroleerd.
- De corrector stelt eerst vast of de vector van een woord exact voorkomt in het woordenboek met woordvectoren. Als dat zo is, wordt het woord in een definitieve lijst met gecorrigeerde woorden geplaatst.
- Voor “onbekende woorden” (dit zijn woorden waarvan de vector niet exact in het woordenboek voorkomt) zoekt de corrector naar een alternatief. Dit resulteert in 10 alternatieve woorden die een vector hebben die zeer dicht bij het gezochte woord liggen. Elk van de alternatieven ondergaat nu een reeks testen, waarbij iedere test een aantal bonus- of strafpunten oplevert. Het alternatief met het hoogste aantal punten is “winnaar” en komt in aanmerking om het onbekende woord uit de boekingsomschrijving te vervangen. Of de vervanging daadwerkelijk plaatsvindt hangt af van het overschrijden van een minimumscore. Wordt die minimumscore overschreden dan vervangt het gevonden alternatief het onbekende woord en komt het eveneens in de definitieve lijst met gecorrigeerde woorden terecht.
- Onbekende woorden waarvoor geen goed alternatief voorhanden is komen onveranderd in de definitieve lijst terecht. Omdat de boekingsomschrijvingen kort zijn, willen we geen informatie verloren laten gaan.
- De laatste stap is het doorlopen van de geschoonde boekingsomschrijvingen. Alle woorden die uit meer dan 3 letters bestaan worden zo mogelijk vervangen door een gecorrigeerde variant.
Het hierboven omschreven proces ziet schematisch als volgt uit:
Resultaat spellingcorrectie
Om te laten zien wat de spellingcorrectie als resultaat oplevert, hier een aantal voorbeelden:
Woord | Gecorrigeerd woord |
draagtassen | draagtas |
westerscheldezand | westerschelde |
schoonmakk | schoonmaak |
adorpsstraat | dorpsstraat |
duurzam | duurzame |
studiemiddag | studiedag |
bedrijvencentru | bedrijvencentra |
kettingzaag | ketting |
betrf | betrof |
werksch | werkschoen |
De spellingcorrectie zorgt ervoor dat woorden in de boekingsomschrijving worden gecorrigeerd dan wel worden omgezet in een meer generieke variant. Dit laatste is zichtbaar bij de woorden “westerscheldezand”, “studiemiddag” en “kettingzaag”, die worden gecorrigeerd in respectievelijk “westerschelde”, “studiedag” en “ketting”. Hoewel er kan worden gediscussieerd over de vraag of hiermee de essentie van het oorspronkelijke woord verloren gaat, denken we dat het classificatieproces hier niet onder zal lijden.
Annotatie
Een “supervised” machine learning algoritme leert met vallen en opstaan. Dit is te vergelijken met het leerproces dat een kind moet ondergaan. Het leerproces is gebaat bij een grote hoeveelheid, consistente en kwalitatief hoogwaardige voorbeelden. In ons geval bestaan de voorbeelden uit de gecorrigeerde boekingsomschrijvingen die uit het in de vorige stap beschreven correctieproces afkomstig zijn. Er ontbreekt echter nog een cruciaal element, te weten de wkr-labeling die een materiedeskundige aan een individuele boekingsomschrijving toekent. Om het toekennen van labels te ondersteunen maken we gebruik van een zelf ontwikkelde “annotatietool” binnen ons analyseplatform dbi.cloud. De annotatietool selecteert random boekingsomschrijvingen en biedt die aan de materiedeskundige (annotator) aan. De deskundige kan vervolgens kiezen uit één of meer labels. De labels die we in het kader van de werkkostenregeling hanteren zijn:
Label | Omschrijving label |
WKR_GEEN | Geen WKR |
WKR_VR | WKR vrije ruimte |
WKR_GV | WKR gericht vrijgesteld |
WKR_NW | WKR nihilwaardering |
WKR_IK | WKR intermediare kosten |
WKR_ONB | WKR onbekend |
CAT_GFJ | CAT geschenken, feesten en jubilea |
CAT_OPV | CAT overige personeelsvoorzieningen |
CAT_TCW | CAT telefoon, computer en werkplek |
CAT_ED | CAT eten en drinken |
CAT_RV | CAT reis- en verblijfkosten |
CAT_SG | CAT sport en gezondheid |
CAT_KBG | CAT kleding, beschermingsmiddelen en gereedschappen |
CAT_OB | CAT opleiding en beroep |
CAT_EK | CAT extraterritoriale kosten |
CAT_GM | CAT geldboetes en misdrijven |
CAT_HV | CAT huisvesting en verhuizing |
CAT_MK | CAT medische keuring |
CAT_KO | CAT kinderopvang |
CAT_EPKP | CAT eigen producten en kortingen personeel |
CAT_PVF | CAT personeelsvereniging en -fonds |
We hebben ervoor gekozen om twee typen labels aan te bieden. Allereerst betreft dat de labeling die nauw aansluit bij de werkkostenregeling, zijnde “vrije ruimte”, “gericht vrijgesteld”, enzovoort (labels voorafgegaan door “WKR”). Het tweede type label betreft een aanduiding van het soort kosten (labels voorafgegaan door “CAT”). De soort kosten is van belang bij het uitvoeren van detailcontroles. Omdat niet elke kostensoort evenveel risico met zich meebrengt wil de controleur kunnen selecteren op kostensoort, zodat hij prioriteiten kan aanbrengen bij de uitvoering van zijn werkzaamheden.
De eerste afweging die de materiedeskundige maakt is of uit de boekingsomschrijving kan worden afgeleid dat het een wkr-gerelateerde uitgave betreft of niet. Is dit niet het geval dan kiest hij “Geen WKR“. Komt de materiedeskundige daarentegen een boekingsomschrijving tegen die wél wkr-gerelateerd is, dan kiest hij voor de meest waarschijnlijke wkr-post waartoe de uitgave behoort. Is de wkr-post niet met zekerheid te zeggen, dan kan hij kiezen voor twee of meer posten. Naast de wkr-post kiest hij voor de van toepassing zijnde kostensoort(en). De gemaakte keuze wordt opgeslagen, waarna de annotatietool een andere willekeurige boekingsomschrijving presenteert.
Uit het annotatieproces komt een lijst met boekingsomschrijvingen die zijn voorzien van een labeling. Deze omschrijvingen en labels zullen in het classificatieproces worden gebruikt om de classifier te trainen en vervolgens te testen wat de behaalde recall en precisie zijn. Er kunnen telkens nieuwe boekingsomschrijvingen aan de annotatietool worden toegevoegd, zodat de training/test-set steeds omvangrijker en beter wordt.
Classificatie
In een volgende bijdrage zal worden ingegaan op de classificatie van de boekingsomschrijvingen.
Meer informatie?
We zijn graag bereid om u nader te informeren als u vragen heeft naar aanleiding van dit artikel. Neem contact op via e-mail.
Geraadpleegde bronnen
- Leidraad Horizontaal Toezicht
- Controleaanpak Belastingdienst
- Van risicoanalyse naar data-analyse in de publieke sector, verslag KPMG Rondetafelbijeenkomst
- Precision vs Recall
Kijk hier voor deel 2 in deze reeks.