Tech talk: automatische foutdetectie in documenten bij terugbetalingsaanvragen

Fouten in documenten opsporen om fouten en manueel werk te verminderen
Als u klanten een sjabloondocument laat invullen, kan de aangeleverde informatie fouten bevatten. U moet dan manueel controleren op fouten voordat u het document goedkeurt. Dat is een duur proces waarvoor veel medewerkers nodig zijn om elk document na te kijken.
Een verzekeraar nam contact met ons op omdat hij jaarlijks meer dan 100.000 facturen van klanten ontvangt voor medische terugbetalingen. Het project voor foutdetectie bestond erin facturen in twee categorieën in te delen: 1) het document moet worden aangepast of 2) niet. De inputdata bevatten 117.000 facturen en 312 kenmerken. Die kenmerken vallen uiteen in:
Indicatoren die aangeven of een bepaalde coderegel in de factuur voorkomt
Bedragen op de factuur: terugbetalingsbedrag, supplementen en totaalbedrag
Type ziekenhuis, kamers en facturen
Metadata over de factuur, zoals het aantal vermeldingen en datums
De meeste fouten ontstaan door een verkeerde code voor de ziekenhuisdiensten. Andere fouten zijn een onjuiste datum op de factuur of een verkeerd bedrag.
Data voorbewerken voor foutdetectie in documenten
Voordat we de data naar het foutdetectiemodel sturen, bewerken we ze best voor. Door nieuwe variabelen te maken, kunnen we betere prestaties bereiken. Dat heet feature engineering. We moeten continue variabelen in intervallen indelen. Vervolgens zetten we categorische variabelen om in numerieke variabelen, zodat het model ze kan verwerken.

Feature engineering voor foutdetectie in documenten
Daarvoor gebruiken we de cobra-bibliotheek, die verschillende functies voor datavoorbewerking bevat. Cobra is handig omdat u verschillende voorbewerkingsfuncties met één preprocessorobject kunt toepassen en verfijnen.
Feature engineering
Door nieuwe variabelen te maken, kunnen we het model helpen nieuwe patronen in de data te ontdekken. Die variabelen kunnen ontstaan uit de wisselwerking tussen bestaande variabelen. Zo maken we het terugbetalingsaandeel door het terugbetalingsbedrag te delen door het totaalbedrag.
We kunnen ook patronen doorheen de tijd zoeken. Een datumvariabele kan bijvoorbeeld dienen om variabelen voor maand, weekdag en seizoen te maken. Het model kan verborgen cycli ontdekken die per maand, weekdag of seizoen terugkeren.
Kbins Discretizer
Kbins Discretizer deelt continue data in intervallen van een vooraf bepaalde grootte in. Dat is interessant omdat het niet-lineariteit in het model kan introduceren. U kunt het aantal intervallen en de strategie om ze te maken instellen. KBinsDiscretizer heeft drie strategieën:
Uniform: de intervalbreedte is constant in elke dimensie.
Quantile: elk interval bevat evenveel waarnemingen.
Kmeans: de discretisatie is gebaseerd op de centroïden van een KMeans-clusteringprocedure.[1]
Voorbewerking van categorische data
De categorische datavoorbewerker van Cobra groepeert de categorieën van categorische variabelen opnieuw op basis van hun significantie ten opzichte van de doelvariabele. Een chi-kwadraattoets bepaalt of een categorie voor het classificatiemodel significant verschilt van de overige categorieën, gegeven de doelvariabele.
We kunnen de p-waardedrempel instellen om te bepalen vanaf welke p-waarde categorieën significant zijn. Is een categorie niet significant, dan wordt ze ondergebracht in de categorie "Others".
We kunnen ook een minimale categoriegrootte instellen om een categorie afzonderlijk te behouden. Een categorie wordt ondergebracht in "Others" als ze kleiner is dan dat minimum.
Er is ook een optie om ontbrekende waarden te vervangen door de extra categorie "Missing".
Met deze module behouden we alleen relevante categorieën en verminderen we het aantal geïsoleerde waarnemingen in de dimensieruimte.
Target encoding
Target encoding, ook mean encoding genoemd, berekent het aandeel positieve uitkomsten in de doelvariabele voor elk kenmerk. Het is een manier om categorische waarden om te zetten in numerieke waarden.

De target-encodingmethode voor foutdetectie in documenten
We verkiezen target encoding boven traditionele one-hot encoding omdat er geen extra kolommen bijkomen. One-hot encoding zou veel dimensies toevoegen aan onze ruimte, die al 300 kenmerken telt. Een hoogdimensionale ruimte heeft twee nadelen:
Ze vraagt meer geheugen en rekenwerk.
Ze vergroot het vermogen van het model om de data te overfitten.
Target encoding verlaagt dus het geheugen- en rekengebruik en beperkt overfitting.
Toch kan target encoding nog steeds overfitting veroorzaken, omdat de verhoudingen berekend worden op basis van de aangeleverde trainingswaarnemingen. Die verhoudingen zijn in de teststeekproef mogelijk anders. Zo kan "Small rooms" daar een verhouding van 0,75 hebben in plaats van 0,5. We kunnen dat probleem beperken met additive smoothing. Cobra past die techniek toe in zijn target-encodingklasse. Bij het berekenen van het aandeel positieve uitkomsten per categorische waarde voegt het ook het globale aandeel positieve uitkomsten van de doelvariabele toe, volgens een gewicht. Max Halford legt dit uitvoerig uit in zijn artikel.
Model en resultaten voor foutdetectie in documenten
Op basis van de klantbehoefte is de Area Under the Curve (AUC) de geschikte maatstaf.
We selecteren de kenmerken die de AUC substantieel verhogen. Om te veel dimensies en het risico op overfitting te vermijden, behielden we alleen kenmerken die de AUC duidelijk verbeterden. Met andere woorden: we voerden een forward selection uit.
Het beste model is een gradientboostingboommodel. We gebruiken de XGBoost-bibliotheek, een geoptimaliseerde, gedistribueerde gradientboostingbibliotheek die efficiënt, flexibel en overdraagbaar is ontworpen. Ze gebruikt early stopping om overfitting op de trainingsdata te vermijden. U kunt ook andere parameters instellen, zoals de maximale diepte van elke boom of de minimale som van waarnemingsgewichten voor een kindknoop. Alle beschikbare parameters vindt u hier.
We bereikten een AUC van 86,3%.