Statistical Auditing (101)

Machine learning in de audit: voorspellen van klantverloop

Het doel van machine learning is om voorspellingen te maken aan de hand van data. Binnen dit veld worden doorgaans drie hoofdtoepassingen onderscheiden: classificatie, regressie en clusteren. Deze column gaat over classificatie.

Koen Derks

Classificatie is een vorm van machine learning die streeft naar het voorspellen van een categorische (dat wil zeggen niet-numerieke) variabele op basis van diverse kenmerken. Classificatie kent talloze praktische toepassingen en wordt tegenwoordig ook gebruikt in de audit. Zo kun je deze techniek bijvoorbeeld gebruiken om de continuïteit van een bedrijf te voorspellen als zorgelijk of niet, gebaseerd op verschillende financiële kengetallen.

Op dezelfde wijze kun je het frauderisico van declaraties voorspellen als hoog of laag op basis van bijvoorbeeld de doorlooptijd en het bedrag dat wordt gedeclareerd. Deze voorspellingen zijn mogelijk dankzij algoritmes die zijn getraind op data. Het trainen van dit soort algoritmes is echter niet eenvoudig en vereist vaak programmeerkennis. Dat is jammer, want dit vormt een obstakel voor het breder gebruik van deze innovatieve methoden.

In deze column demonstreer ik hoe je met het gratis open-source statistiekprogramma JASP (JASP Team, 2024; www.jasp-stats.org) zonder enige programmeerkennis een machine learning algoritme voor classificatie kan trainen en deze daarna kan toepassen in de context van een audit. Als voorbeeld behandel ik een situatie waarin je als auditor het klantverloop bij een telecomprovider wil voorspellen als onderdeel van de risicobeoordelingsactiviteiten. 

Klantverloop

Klantverloop is het fenomeen waarbij klanten stoppen met het gebruik van de diensten van een bedrijf. Het voorspellen van klantverloop in het komende jaar kan relevant zijn in de risicobeoordingsfase van een audit, aangezien een volatiel klantenbestand een risico kan zijn voor de continuïteit van het bedrijf.

In dit voorbeeld gebruik ik een voor deze column licht bewerkte versie van de algemeen toegankelijke Telco Customer Churn-dataset*. Belangrijk om op te merken is dat het hier om voorbeeldgegevens gaat. In de praktijk kun je beter historische gegevens uit de database van de telecomprovider gebruiken.

De voorbeeldgegevens bevatten voor 3.738 klanten kenmerken zoals demografische informatie, details van het telefoon- en internetcontract en of de klant het contract bij de telecomprovider heeft opgezegd**. Naast deze voorbeeldgegevens is ook het huidige klantenbestand van de telecomprovider bestaande uit tweeduizend klanten beschikbaar***. Voor deze klanten is nog onbekend of zij het komende jaar het contract gaan opzeggen.

Theorie classificatie

Voordat ik laat zien hoe je met behulp van JASP een classificatiealgoritme kunt trainen om het verwachte klantverloop te voorspellen, behandel ik eerst kort de theorie achter classificatie. Het uitgangspunt van een classificatiealgoritme is dat er een relatie bestaat tussen de klantkenmerken en het klantverloop. Als je deze relatie weet, kun je op basis van de klantkenmerken voorspellen of een klant in het komende jaar het contract zal opzeggen. Het is echter onbekend hoe de klantkenmerken zijn gerelateerd aan het klantverloop, dus deze relatie moet het algoritme leren uit historische gegevens.

Om de relatie te leren kun je het classificatiealgoritme een deel van de historische gegevens laten zien, bijvoorbeeld van 3.238 klanten. Dit heet de zogenaamde trainingsset. In dit voorbeeld bevat de trainingsset zowel de kenmerken als het verloop. Om vervolgens te evalueren of de geleerde relatie goed generaliseert naar klanten die het algoritme nog niet heeft gezien, kun je een zogenoemde testset, bestaande uit vijfhonderd klanten, apart houden tijdens de trainingsfase.

Zowel de trainingset als de testset moeten niet te veel uit balans zijn, zodat er ongeveer een gelijk aantal klanten die wel en niet hebben opgezegd aanwezig zijn. Dit is van belang om te voorkomen dat het algoritme een voorkeur heeft voor één van de twee klassen simpelweg omdat deze vaker voorkomt in de trainingsset. In dit voorbeeld zijn de trainings- en testset gebalanceerd door de data van sommige klanten uit te sluiten, waardoor er een evenwichtige verdeling van klanten is die wel en niet hebben opgezegd. Zodra deze trainings- en testset beschikbaar zijn, kun je beginnen met het trainen van een classificatiealgoritme.

Trainen classificatiealgoritme

Het trainen van een classificatiealgoritme kun je doen in JASP door eerst JASP te downloaden van www.jasp-stats.org en te installeren. Na het inladen van de gegevens in JASP kun je de Machine Learning module inschakelen door op het '+'-symbool in de rechterbovenhoek te klikken en 'Machine Learning' te kiezen. Hierdoor verschijnt de module in het menu boven in het scherm. Door vervolgens op de module te klikken, kun je alle functies zien die de module biedt. Via het menu in de linkerbovenhoek (Preferences - Interface - Preferred language) kun je daarnaast instellen dat de interface en de resultaten in het Nederlands worden weergegeven.

KoenDerks1_900x590.jpg

Zoals te zien is in de bovenstaande screenshot zijn er voor het leren van de relatie tussen de klantkenmerken en het klantverloop verschillende classificatiealgoritmes beschikbaar. In deze column kies ik voor een K-dichtste buren algoritme (James et al., 2023, pp. 183–188). Om dit algoritme in JASP te gebruiken, selecteer je in het Machine Learning menu de optie 'K-Dichtste Buren' onder 'Classificatie'. Vervolgens open je in de hieronder weergegeven interface de sectie 'Data Split Voorkeuren', selecteer je de optie 'Testset indicator' en wijs je deze de variabele testSet toe met behulp van het keuzemenu. Dit zorgt ervoor dat het algoritme de vooraf gespecificeerde 3.238 klanten gebruikt om het K-dichtste buren algoritme te trainen en de overige vijfhonderd klanten gebruikt om het algoritme te evalueren.

 In dezelfde sectie klik je onder 'Trainings- en validatiegegevens' op 'Laat-één-weg' (James et al., 2023, pp. 204–206). Hiermee geef je aan dat er tijdens de trainingsfase elke keer één rij uit de trainingsset wordt gebruikt als validatieset, terwijl het algoritme wordt getraind op de rest van de trainingsset. Dit proces wordt herhaald voor elke rij in de trainingsset met als doel om het algoritme het optimale aantal dichstbijzijnde buren, K, te laten identificeren.

Daarna open je de sectie 'Trainingsparameters' en voer je onder het kopje 'Aantal Dichtste Buren' 100 in als het maximumaantal****. Vervolgens sleep je de variabele Verloop naar het vak voor de doelvariabele. Als laatste selecteer je alle overige variabelen behalve testSet en sleep je deze naar het vak voor de kenmerken.

KoenDerks2_900x590.jpg

Zodra alle gegevens zijn ingevoerd, begint JASP met het trainen van het classificatiealgoritme. De resulterende output is hieronder weergegeven. Uit de tabel en de figuur daaronder blijkt dat het trainen en optimaliseren van het K-dichtste buren algoritme resulteert in een K=67-dichtste buren-model. Daarnaast toont de output dat dit K=67-dichtste buren-model een nauwkeurigheid van 0,79 op de testset behaalt, wat betekent dat je voor 79 procent van de klanten in de testset correct kunt voorspellen of deze het contract bij de telecomprovider hebben opgezegd.

KoenDerks3_900x590.jpg

De onderstaande verwarringmatrix biedt meer inzicht in de prestaties van het algoritme door te tonen hoe de voorspellingen voor de klanten in de testset overeenkomen met de werkelijkheid. Uit de verwarringsmatrix blijkt dat het algoritme correct voorspelt dat 215 klanten het contract zouden opzeggen, en dat het ook correct voorspelt dat 180 klanten het contract niet zouden opzeggen. Dit leidt tot een nauwkeurigheid van het algoritme op de testset van (215 + 180) / 500 = 0,79, wat overeenkomt met 79 procent.

KoenDerks4_900x590.jpg

Voorspelling

Op basis van de trainingsset kun je een absolute voorspelling doen voor een klant in het huidige klantenbestand (die niet in de trainingsset of testset zit) in termen van 'Ja, deze klant zal het contract opzeggen' of 'Nee, deze klant zal het contract niet opzeggen'. Door echter een testset te gebruiken, kun je de mate van onzekerheid bepalen waarmee deze voorspelling wordt gedaan.

Voor een klant in het huidige klantenbestand kun je nu, op basis van de verwarringmatrix, een genuanceerde voorspelling doen zoals 'Ja, deze klant zal het contract komend jaar opzeggen met een kans van 75,4 procent', aangezien 215 / (215 + 70) = 0,754, of 'Nee, deze klant zal het contract komend jaar niet opzeggen met een kans van 83,7 procent', aangezien 180 / (180 + 35) = 0,837. Het is aan jou om te beoordelen of deze mate van zekerheid voldoende is om conclusies op te baseren.

Toepassen

Als je tevreden bent met de prestatie van het algoritme, is de volgende stap het toepassen van dit algoritme om voorspellingen te maken voor de tweeduizend klanten in het huidige klantenbestand van de telecomprovider. In JASP kun je dit doen door het getrainde algoritme op te slaan via de optie 'Getraind model opslaan'. Het huidige klantenbestand kun je daarna inladen in een nieuwe sessie.

Allereerst navigeer je naar de optie 'Voorspellen' in het machine learning-menu en laadt daar het opgeslagen model in. De kenmerken van de klanten in het huidige klantenbestand sleep je dan naar het daarvoor bestemde veld. Vervolgens klik je onder in de interface op 'Voorspellingen toevoegen aan gegevens'. Ten slotte kun je naar 'Beschrijvende statistiek' gaan om frequentietabellen van de voorspellingen te genereren.

Deze tabel, die hieronder is weergegeven, toont aan dat voor 120 van de tweeduizend huidige klanten, oftewel 6 procent van het huidige klantenbestand, is voorspeld dat ze het contract komend jaar zullen opzeggen. Je kunt deze voorspellingen verder verfijnen door de onzekerheid uit de testset in overweging te nemen, of door de onzekerheid in de individuele klantvoorspellingen te incorporeren. Voor het gemak wordt het verfijnen van de voorspellingen in deze column overgeslagen.

KoenDerks5_900x590.jpg

Acties

Op basis van het voorspelde klantverloop kun je acties ondernemen om de risico's voor de continuïteit in te schatten. Met 6 procent van de huidige klanten die naar verwachting het contract komend jaar zullen opzeggen, kan er bijvoorbeeld een aanzienlijk risico op inkomstenderving zijn, als dit niet wordt gecompenseerd met een vergelijkbaar percentage nieuwe klanten. Mocht dat inderdaad niet het geval zijn, dan kun je op basis van deze resultaten aanbevelen om preventieve maatregelen te nemen, zoals het verbeteren van de klantenservice, het aanbieden van loyaliteitsprogramma's of het herzien van de prijsstelling.

Daarnaast kun je een diepgaande analyse uitvoeren van de klanten die waarschijnlijk het contract zullen opzeggen om gemeenschappelijke kenmerken te identificeren. JASP kan namelijk de kenmerken identificeren die het meest bijdragen aan de voorspelling. Deze kenmerken kun je vervolgens als basis gebruiken voor je aanbevelingen. In dit geval zijn dat bijvoorbeeld de duur van de klantrelatie, het type contract (éénjarig, tweejarig of maandelijks opzegbaar), en het gebruik van technische ondersteuning door de klant. Deze informatie kan de telecomprovider vervolgens gebruiken om gerichte retentiestrategieën te ontwikkelen en zo het risico op klantverloop te verminderen.

Natuurlijk kun je deze workflow in JASP ook gebruiken om een classificatiealgoritme te trainen voor andere auditdoeleinden. Als je deze technieken zelf wil toepassen, dan kun je JASP gratis downloaden en installeren via www.jasp-stats.org.

Voetnoten
* De originele dataset is te vinden op https://www.kaggle.com/datasets/blastchar/telco-customer-churn.
** De gebruikte voorbeeldgegevens zijn te vinden op https://www.statisticalauditing.com/files/resources/data_churn_traintest.csv.
*** Deze data zijn te vinden op https://www.statisticalauditing.com/files/resources/data_churn_prediction.csv.
**** In dit voorbeeld wordt de trainingsfase gebruikt om de beste waarde voor 'K' te bepalen. Echter, in JASP heb je de mogelijkheid om zelf een waarde van 'K' in te voeren door onder 'Aantal Dichtste Buren' de optie 'Vast' te selecteren en de gewenste waarde van 'K' in te voeren in het bijbehorende veld. In dat geval is er geen sprake van een trainingsfase.
Referenties
- JASP Team. (2024). JASP (Versie 0.18.3) [Computer software].
- James, G., Witten, D., Hastie, T., Tibshirani, R., & Taylor, J. (2023). An Introduction to Statistical Learning with Applications in Python. Springer. https://hastie.su.domains/ISLP/ISLP_website.pdf.download.html

Gerelateerd

6 reacties

Pieter de Kok

Ha Hans

Ik refereer nog regelmatig naar dat artikel en jouw opmerkingen in 1993 (weet je nog?j bij EY, “Pieter over een paar jaar zijn we vervangen door neurale netwerken “, we hadden het toen over EDI en standaard berichten en communicatie tussen computers. Prachtig.

nu 30 jaar verder heeft iedereen tot vervelends toe over AI, (ze bedoelen #GenAI), maar neurale netwerken , met eg voorspellingen, in een audit dossier heb ik nog steeds niet gezien.

Ook niet in het buitenland, dat betreft is er nog een wereld te winnen met eenvoudige ML gebaseerde werkstappen obv getrainde modellen..maar vrees dat we nog 15 jaar nodig hebben.

De klassieke data-analyse of process mining reis is nog niet afgerond, data kwaliteit, legacy systemen, dezelfde bottlenecks still here.

Groeten!

Hans Verkruijsse

Beste Koen, leuk te lezen dat nu eindelijk een doorbraak schijnt te zijn voor de toepassing van machine learning in de audit. We schrijven 1989 toen ik voor het eerst in het toenmalige MAB een artikel plaatste onder de titel 'Expert systemen betrouwbaar? Een nieuwe uitdaging voor auditors'. Dit artikel was mede ontstaan vanuit unsupervised learning machine learning systemen die we ontwikkelde binnen Moret & Limperg en die gepresenteerd werden op de internationale conferentie van het NIVRA in 1988. Die systemen waren gebaseerd op theorieën vanuit de cognitieve psychologie in plaats van de harde IT en eveneens classificatie en clustering als basis hadden. Doordat het inherent is dat systemen gebaseerd op unsupervised learning fouten maken werd deze systemen en ook de informatie die het opleverde door accountants niet geaccepteerd. Waarschijnlijk liepen we toen 35 voor op de troepen. Toch fijn dat we eindelijk die kant op gaan. Hopelijk dat ook de toezichthouders zich erbij aansluiten.

Alexander Vissers

Voor Madoff Parmalat Wirecard etc. was geen AI of zelfs maar intelligentie nodig, gewoon een kritische blik zonder oogkleppen en "zongen de mussen het al van de daken" voordat de accountant het ontdekte.. De jaarverslaggeving was op eerste gezicht onlogisch.
En stop de obsessie met continuïteit! Lees gewoon art. 25bis Richtlijn 2006/43/EG zoals ingevoerd door Richtlijn 2014/56/EU: continuïteit maakt geen deel uit van de wettelijke controle van de jaarrekening, de accountant mag zich er niet mee bemoeien! Er geldt een wettelijke continuïteitsveronderstelling voor opname en waardering die dwingend is voor de rechtspersoon. Dwingend zoals het college van beroep voor het bedrijfsleven in de Imtech klacht nog maar eens heeft onderstreept! Nederland moet gewoon in de pas lopen, de EU wetten gelden ook voor de lagere wetgever in casu de NBA. Een bij de controle gebleken ernstige bedreiging van de continuïteit moet de accountant rapporteren, hij gaat er niet naar op zoek, en dat is het wel zo een beetje. Verder is die continuïteitsobsessie materieel ongegrond zoals het onderzoek van Tjibbe Bosman overtuigend heeft aangetoond. Verder is discontinuïteit en faillissement het zelfreinigende mechanisme van de markteconomie, kleurloos zoals de juristen zeggen. Een innovatieve en concurrerende economie heeft veel discontinuïteit.

Pieter de Kok

Alles kan, voorspelling obv machine learning kan ook, kan ook zonder machine learning, classic statistiek, al heel lang (eg in R).

Ik begrijp uit gesprekken met mijn team dat als het allemaal zo makkelijk en waardevol was, we al veel verder waren met Machine Learning in de audit.

Of dit bijvoorbeeld échte controle informatie oplevert , of alleen leuke teamdiscussies, is voor mij ook nog steeds een vraag. Overigens niets mis met leuke discussies.

De themas continuiteit, fraude, churn zijn al jaren hetzelfde, of ML daar nu echt de nieuwe oplossing is om beter inzicht te krijgen, betwijfel ik.

Benieuwd hoeveel accountants na lezen deze blog denken: dat klinkt goed, morgen gelijk inzetten.

Goed om eens te kijken hoe concreet het komende 2-3 jaar onderdeel gaat worden van audit evidence, leuk om keer ervaringen te delen tussen kantoren die ML echt inzetten en uitkomsten meenemen in controle dossiers

In ieder geval, leuk dat JASP er is en we over inzet Machine Learning nadenken als beroep, top!

Ron Heinen

Aansluitend op mijn reactie (zie hieronder) kreeg ik de vraag waar het statistiek boek, de datasets en de R-code van het statistiek boek zijn te vinden.

Het op nederlandse universiteiten gebruikte boek "An Introduction to Mathematical Statistics" is te vinden op:

https://www.ndax.eu/LB1FM9qpcWqVLCcrYhi5.pdf

De R-code en datasets van het boek zijn te vinden op:

https://www.epsilon-uitgaven.nl/uploads/docs/datasets-20-06-22_11-37-35.zip

Ron Heinen

Dank voor deze interessante bijdrage in Statistical Auditing.

Machine Learning maakt een model van de data met statistiek.

Het model kan daarbij met machine Learning automatisch bepaald worden.

Voor de geinteresseerden welke wel kunnen en willen programmeren is een voorbeeld te vinden op

https://www.ndax.eu/2zI92RVPNxFwai7O7h+j.R

In dit programma zijn verschillende Machine Learning methoden met elkaar vergeleken om het beste model te vinden.

Het voorbeeld is te vinden in het boek "Inleiding in de statistiek" door Fetsje Bijma et.all dat gebruikt wordt op Nederlandse Universiteiten.

Zoals uit het programma geconcludeerd kan worden verslaat het "Random Forest" model het beste statistische model in het boek.

Dit is vrijwel altijd het geval.

Een bijkomend voordeel van het "Random Forest" model is dat "oversampling" onmogelijk is.

Dus het gegenereerde "RandomForest" model is betrouwbaar.

Reageren op een artikel kan tot drie maanden na plaatsing. Reageren op dit artikel is daarom niet meer mogelijk.

Aanmelden nieuwsbrief

Ontvang elke werkdag (maandag t/m vrijdag) de laatste nieuwsberichten, opinies en artikelen in uw mailbox.

Bent u NBA-lid? Dan kunt u zich ook aanmelden via uw ledenprofiel op MijnNBA.nl.