Ontwikkeling van en door R&D.

Vertrouwen vergroten door middel van Explainable Artificial Intelligence (XAI)

Om een master af te ronden moet je een scriptie schrijven. Niet helemaal mijn ding, heel veel lezen, heel veel schrijven maar gelukkig bestaat er ook de optie om voor een afstudeerstage te kiezen. Nog steeds een scriptie schijven maar dan in samenwerking met een bedrijf over een fenomeen dat niet alleen maar theoretisch van toepassing is. Met mijn interesse in artificial intelligence (AI) en explainable artificial intelligence (XAI) ben ik dus opzoek gegaan naar een bedrijf om een afstudeerstage bij te doen.

Dave Emons

Tot mijn geluk reageerde een oud-student en data scientist van Shintō Labs op mijn oproep op LinkedIn. Hij vertelde me over Shintō Labs die data gedreven oplossingen ontwikkelen voor de overheid. En over een AI toepassing op het gebied van document classificatie waar de eindgebruikers een enigszins sceptische houding tegenover hadden aangenomen. Dat klinkt als de ideale casus: vergroot het vertrouwen door met XAI inzicht te bieden in de redenering van de document classificatie AI. Bij de eerste kennismaking kon ik al proven van de sfeer en mentaliteit van Shintō Labs, veel autonomie, no-nonsense en een drive om door te blijven groeien. Alles leek eigenlijk te mooi om waar te zijn. Gek genoeg was het allemaal gewoon waar.

Vakken volgen aan de universiteit vond ik eigenlijk maar saai. Het verliep allemaal soepel en ik kwam gewoon opdagen maar ik verveelde me vooral. Mijn afstudeeropdracht bood hierin de uitkomst. Hier had ik zelf de touwtjes in handen en kon ik mijn ei helemaal in kwijt. De wekelijkse meetings met data scientist Wesley hielpen mij enorm om niet te hard van stapel te lopen, een planning te maken en bij te sturen waar nodig. Naast een hoop gezelligheid had ik ook genoeg sparring partners en was er ook de ruimte om zelf ideeën aan te dragen. Tot mijn verbazing werd ik zelfs meegenomen in de werking van heel het bedrijf met de maandelijkse Shinteam meetings en voelde ik me echt onderdeel van het team. Zo kon ik ook nog een beetje proeven van wat me te wachten stond na de universiteit wat alleen maar motiveerde. Al met al, voor mij de ideale plek voor een afstudeerstage.

In dit blog vertel ik graag meer over mijn onderzoek, wat ik geleerd heb en wat de resultaten zijn. Of check de video waarin ik erover vertel.

De casus

Toen ik net begon werd mij verteld dat de AI een ‘multiclass large-scale natural language processing text classification probleem oplost met een multilayer perceptron gebaseerd op word count’. Een hoop gegoogle en een afstudeer project verder, weet ik inmiddels wel wat dit allemaal betekent maar zal ik pogen het hier simpeler uit te leggen.

Sommige gemeentes krijgen meer dan 10,000 documenten binnen per maand. Deze documenten krijgen allemaal een zaaktype toegewezen zoals “kapvergunning”, “aangifte” of “informatieverzoek”. Voorheen werd dit met de hand gedaan door gemeente medewerkers. De AI ontwikkeld door Shintō Labs scant een document en telt hoe vaak ieder woord voorkomt. Dit wordt vergeleken met voorgaande documenten en zo wordt een van de 243 zaaktypes gesuggereerd. Nu hoeft de gemeentemedewerker enkel nog de AI te controleren aangezien zij verantwoordelijk blijven voor het eindresultaat.

 

multi layer perceptron

Figuur 1: Illustratie van een MLP architectuur (Rodriquez, 2020)

In deze situatie werken de medewerker en de AI als het ware samen in een team. Hoe goed dit team fungeert hangt voornamelijk af van hoe goed de medewerker is in het accepteren van correcte suggesties van de AI en het corrigeren van foutieve suggesties. De belangrijkste factor in dit team is een gekalibreerd vertrouwen in de AI. Mocht de medewerker te veel vertrouwen hebben in de AI dan worden te veel foutieve suggesties geaccepteerd zonder kritisch na te denken. Mocht er te weinig vertrouwen zijn dan worden te veel correcte suggesties genegeerd.

Vertrouwen in mens-AI teams ontwikkelt zich ongeveer hetzelfde als vertrouwen tussen mensen. Stel je vraagt een collega om eenmalig een taak van je over te nemen maar je collega verprutst dit, dan ben je minder snel geneigd deze collega in de toekomst wederom een taak toe te vertrouwen. Doet je collega het goed, dan bevestigd dat het vertrouwen dat je in hen plaatst en vraag je ze in de toekomst misschien weer. Op een soortgelijke manier als mensen een AI een fout zien maken daalt hun vertrouwen. Pas na lange periodes dat de AI het goed doet bouwt het vertrouwen langzaam op. Het grootste verschil tussen mens-AI vertrouwen en vertrouwen tussen mensen is dat vertrouwen in AI veel harder daalt wanneer er een fout wordt gemaakt.

Om dit fenomeen tegen te gaan suggereert literatuur om uitleg te bieden naast AI suggesties. Inzicht in hoe een AI anders informatie verwerkt dan mensen (woorden tellen i.p.v. zinnen lezen), de interne werking van een AI en de redenering gebruikt door de AI zijn effectief gebleken in het kalibreren van vertrouwen. Nu is een multilayer perceptron een vorm van een neuraal netwerk, een AI model dat ook beschreven wordt als een black-box model. Hoewel het in theorie mogelijk is alle berekeningen die de AI doet met de hand te doen, wordt je daar niet gelukkig van, dankjewel Business Analytics ☹️, bovendien word je er ook niks wijzer van. Deze laatste eigenschap maakt het een black-box model. Explainable artificial intelligence technieken zijn ontworpen om toch inzicht te krijgen in de werking van black-box modellen.

SHAP en Natural Language Processing

Een computer kan niet lezen, in ieder geval niet op de manier hoe wij mensen dit doen. In plaats daarvan telt de AI hoe vaak ieder woord voorkomt in een document in verhouding tot in hoeveel documenten dit woord ten minste een keer voorkomt. Doet noemt men term-frequency inverse-document-frequency (tf-idf) wat een waarde produceert tussen de 0 en 1 voor ieder woord. Een hoge waarde geeft aan dat dit woord vaak voorkomt in dit document en zelden in andere documenten. Dit geeft een indicatie dat dit woord definiërend is voor dat document. Ieder document wordt gecodeerd als tf-idf waardes voor alle woorden in het vocabulaire van de AI (16,618 woorden). Deze waardes worden vervolgens door de multilayer perceptron (het neuraal netwerk) gebruikt om te berekenen welk van de 243 zaaktypes het meest waarschijnlijk is.

Hoewel tf-idf waardes een indicatie geven welke woorden belangrijk zijn voor een bepaald document, geeft het geen inzicht in welke woorden de AI uiteindelijk gebruikt om tot een suggestie te komen. Om daar achter te komen is SHAP (SHapley Additive exPlanations) toegepast. SHAP is gebaseerd op shapley values, een concept uit speltheorie dat gebruikt wordt om een spelers contributie binnen een team tot een bepaald doel te bepalen. In ons geval berekent SHAP de contributie van ieder woord tot de uiteindelijke suggestie.

Figuur 2 is een voorbeeld van wat SHAP doet. In dit geval is de AI 95.4% zeker dat een document “gemeenteplek peuteropvang aanvraag” betreft. Het woord dat hier het meeste aan bijdraagt is “kdv” (kinderdagverblijf) en is verantwoordelijk voor 9% van de 95.4% zekerheid.

Figuur 2: SHAP simuleert de AI besluitvorming en berekent de bijdrage van ieder woord aan de zekerheidspercentage

De intuïtie is dat gemeentemedewerkers bovenstaande informatie zien en denken “dat klinkt logisch, dit kan ik vertrouwen”. Maar ook wanneer de AI een fout maakt is het op deze manier mogelijk om te zien welke woorden de AI op een dwaalspoor zette. Hier inzicht in krijgen schept hopelijk meer begrip naar de AI en zorgt er voor dat vertrouwen minder hard daalt wanneer het een fout maakt.

De resultaten

Eindgebruikers hebben deelgenomen aan een experiment waarin ze suggesties van de AI te zien krijgen met of zonder SHAP uitleg. Bij iedere suggestie hebben zij de keuze om de suggestie te accepteren of af te wijzen. De helft van de suggesties zijn correct zodat iemand die simpelweg zou gokken 50% correct zou accepteren en afwijzen. Deelnemers met uitleg behalen een score van 52.7% tegenover een score van 45% zonder uitleg. Dit klinkt veelbelovend maar wegens het kleine aantal deelnemers (n=8) is er geen statistisch significant verschil (eenzijdige proportie test, P<0.3).

Wegens het kleine aantal deelnemers en een grote variatie in ervaring met de AI is het niet mogelijk conclusies te trekken of uitleg ervoor zorgt dat deelnemers vaker de AI vertrouwen of dat het vertrouwen minder daalt wanneer de AI een fout maakt. Het valt wel op dat deelnemers met meer ervaring met de AI het veel minder vertrouwen. Zij accepteren 36.7% van de suggesties tegenover 77.8% van deelnemers met weinig tot geen ervaring met de AI (eenzijdige proportie test, P<0.0005). Deze bevinding is in lijn met bestaande literatuur en de gerapporteerde sceptische houding van de medewerkers.

Het lijkt er dus op dat naarmate mensen meer ervaring hebben in samenwerken met AI ze de AI meer fouten zien maken en steeds minder gaan vertrouwen. Uitleg toevoegen aan AI suggesties lijkt een mogelijke oplossing te zijn maar er is meer data nodig om hier betrouwbare conclusies over te trekken.

De noodzaak om iets te doen aan het dalende vertrouwen binnen mens-AI teams is duidelijk. Zelf denk ik nog steeds dat XAI hier een veelbelovende rol in kan spelen. Het helpt mij als ingenieur in ieder geval om duidelijk te krijgen dat de AI het probleem oplost dat ik wil dat het oplost. Ik verwacht veel van wat ik tijdens dit project geleerd te heb toe te kunnen passen nu ik een carrière in de industrie begin. Verder hoop ik vooral dat Shintō Labs hier ook iets aan hebben en doorgaan met betekenisvolle datagedreven oplossingen maken.

Foto credits: Shahadat Rahman on Unsplash

Onderzoek: hoe geodemografie kan helpen om data ‘eerlijker’ weer te geven

De afgelopen elf maanden ben ik ondergedompeld in de wereld van data. Via de ’track’ Data Science als onderdeel van Information Studies aan de UvA kwam ik in contact met allerlei toffe algoritmes en maakte ik kennis met de problematiek achter de technische hoogstandjes. Een van deze problemen was gericht op ondermijning in Amsterdam en bij het zoeken naar vergelijkbare projecten kom je dan al snel uit bij Shintō Labs.

Met zwetende handjes heb ik een voorzichtig mailtje gestuurd naar het ‘Shinteam’ of ik ‘heel misschien’ en ‘alleen als het uitkomt’  langs mocht komen om de mogelijkheid tot een afstudeerstage te bespreken. Wat ik niet verwachtte is dat de daaropvolgende uitnodiging zo relaxed en soepel verliep dat ik direct verkocht was.  Daar wil ik graag mijn thesis schrijven! Inmiddels zijn we vijf maanden verder en is het papiertje op zak en ik kan wel stellen dat ik geen spijt heb van deze keuze. Natuurlijk was het hard buffelen, maar het waren ook enorm leerzame maanden waarbij ik vanaf dag één door het team ben opgenomen. Ook nam ik deel aan de Design Sprint met het RIEC Rotterdam en Bureau Beke op het thema Risico Radar Ondermijning, waarbij we op basis van open bronnen de mogelijke hotspots inzichtelijk maken. In deze sprint kon ik mijn onderzoek mooi toepassen.

In deze blog beschrijf ik mijn onderzoeksopzet en de eerste resultaten. In de onderstaande video kun je ook de presentatie zelf zien.


 

De casus

De core business van Shintō Labs bestaat uit het maken van datagedreven applicaties voor overheidsinstellingen. Vaak bevat een applicatie een dashboard met een kaart waarop dan data is geplot. In verband met privacy wordt die data vaak gepresenteerd per postcode, buurt of wijk (en dus niet per huis of gebouw).

De keuze voor het type gebiedsindeling kan echter een vertekenend beeld geven van de werkelijkheid. In figuur 1 zie je bijvoorbeeld drie representaties van exact dezelfde data, maar met verschillende gebiedsindelingen. Dit probleem staat in de boeken bekend als MAUP – The Modifiable Area Unit Problem. Dit fenomeen doet zich ook voor wanneer we data presenteren per postcode, buurt of wijk: hoe meer variatie er in zo een gebied plaats vindt, hoe meer informatie wordt weggegooid wanneer de data wordt geaggregeerd.

Figuur 1 Voorbeeld van ‘The Modifiable Area Unit Problem’

Een manier om dit probleem aan te pakken is door gebiedsindelingen datagestuurd te maken. Als we de bestaande wijken/buurten loslaten en kijken naar de achterliggende data, dan kunnen we gebieden creëren die de mensen in het gebied zo veel mogelijk vertegenwoordigen.  Dit doen we door middel van geodemografie;  ‘The study of people by where they live’ (Harris, 2005).

Geodemografie

Zoals de naam al prijs geeft is dit vakgebied een combinatie van geografie en demografie, waarmee de data ook direct complex wordt. In geodemografie word er gezocht naar betekenisvolle bundels om de mensen in een gebied te kunnen beschrijven. Deze bundels worden in de literatuur ook wel micro-communes of urban neighbourhoods genoemd. Door middel van algoritmen worden mensen ingedeeld in clusters, die vervolgens worden geplot op een kaart. In principe volgt iedere geodemografische clustering ruwweg hetzelfde proces van datapreparatie, algoritmeselectie en parameterselectie, maar het probleem ontstaat bij de evaluatie. Want wat zijn betekenisvolle clusters? Dat is een bijna filosofische vraag, die niet zomaar beantwoord kan worden. Voor de fijnproevers raad ik het paper van ‘What are true clusters’ aan van Christian Hennig.

Figuur 2. Voorbeeld van een geodemografische clustering van Eindhoven. Bron: CBS

Geodemografische cluster-evaluatie

In tegenstelling tot standaard ‘gesuperviseerde methoden’ is het valideren van een geodemografische clustering een schemerig gebied tussen kunst en wetenschap, het kwantitatieve en het kwalitatieve, objectiviteit en subjectiviteit (Harris, 2005). Zoals mijn docent het noemt, is cluster-evaluatie in feite een vorm van zwarte magie. 

Binnen de geodemografie is er wel een idee van enkele eigenschappen die een clustering betekenisvol maken, waarvan de belangrijkste eigenschap is, dat de clustering aansluit bij het doel en de context van het clusterprobleem. Om dat doel meetbaar te maken gebruiken we interne en/of externe criteria die helpen bij het maken van de keuze van het algoritme en de parameter instellingen.

De externe criteria bestaan soms uit vergelijkingen met referentieclassificaties of een zogenoemde ground truth. Veel vaker worden subjectieve criteria opgelegd met behulp van experts of de eindgebruikers. De interne evaluatie van een clustering bestaat uit het meten van een bepaalde regel die de data beschrijft zoals ‘hoe compact zijn de clusters?’ of ‘wat is de ratio tussen de gemiddelde inter en intra clusterafstand?’. Hoewel deze regels objectief zijn, is het wel de vraag hoeveel waarde je moet hechten aan de resulterende waarden en hebben deze regels zeker niet altijd toegevoegd nut. Over het algemeen wordt interne evaluatie daarom vooral gebruikt om het cluster proces te sturen en niet te leiden (Alexiou, 2017).

De interne evaluatie regels hebben nog een extra uitdaging, want deze methoden zijn over het algemeen niet aangepast aan geodemografische clustering. De meest gebruikelijke metrieken (zoals de Within-cluster sum-of-squares en de Silhouette index) worden alleen toegepast op de demografische data en niet op de geografische data. Dit terwijl ´echte’ microcommunes samenhang lijken te vertonen in zowel de geografische als demografische ruimte (Wolf et al., 2019).

De kern

In mijn onderzoek heb ik geprobeerd een regel op te stellen die speciaal geadapteerd is voor geodemografische data. Deze regel is gebaseerd op de Silhouette score, maar met een speciale functie die afstand kwantificeert als combinatie van geo- en demografische data. Er zitten aan een dergelijke functie nog flink wat haken en ogen: hoe verhoudt bijvoorbeeld geografie zich tot demografie? Uiteindelijk hebben we als ‘proof of concept’ de aanpak van Wolf et al. overgenomen (inmiddels liep de onderzoeksperiode al tegen het einde).

Uit een kleinschalig experiment komt naar voren dat de geodemografische score wel degelijk wat interessante patronen vertoont. Zeker ten opzichte van de conventionele (non-geografische) Silhouette score lijkt de nieuwe regel een stuk minder triviale patronen weer te geven. Dit bleek ook uit de validatie (feedback van gebruikers) van het prototype van de Risico Radar Ondermijning zoals ik die heb gerealiseerd voor het RIEC Rotterdam.

Lessons learned

Het voorgaande stuk ging vrij snel de diepte in en eindigt tamelijk theoretisch. Maar wat zijn nu de take home wijsheden die we tijdens het onderzoek zijn tegengekomen?

Een van de belangrijkste redenen om interne evaluatie regels te zoeken is om subjectiviteit in geodemografie te verminderen. We willen graag goed gefundeerde keuzes maken tijdens het clusterproces en idealiter is geodemografie zo transparant mogelijk. In de praktijk blijven de objectieve evaluatie technieken slechts een onderdeel van het clusterproces, waar de keuzes voor het algoritme en de parameter instellingen uiteindelijk worden gemaakt door mensen. Het maken van een geodemografische clustering is niet moeilijk, maar een goede geodemografische clustering maken is een flinke uitdaging, die ook afhangt van de context.

Hoe nu verder?

Tot nu toe hebben we een paar keer genoemd dat interne validatie regels vooral ‘betekenis’ krijgen in het kader van een context en met een expert/gebruiker om de context te interpreteren. Hoewel mijn thesis vooral de theorie van geodemografische evaluatie beslaat, zijn we natuurlijk erg benieuwd of de interne regels ook echt hulp bieden tijdens het clusteren. Daarom ben ik met het Shintō Labs team begonnen aan een interactieve module waarmee je je eigen (geodemografische) data kan clusteren. De module geeft adviezen op basis van de interne evaluatie regels, maar uiteindelijk is het aan de gebruiker om de waarde van de clustering in te schatten. Voor nu blijft het dashboard bij een prototype, maar mocht je interesse hebben in deze applicatie, neem dan contact op met het Shintō Labs.

Figuur 3. Prototype van het dashboard

Referenties

  • Alexiou, A. (2017). Putting ’Geo’ into Geodemographics: evaluating the performance of national classification systems within regional contexts. PhD thesis, University of Liverpool.
  • Harris, R., Sleight, P., and Webber, R. Geodemographics, GIS and Neighbourhood Targeting. Wiley, London, UK, 2005
  • Hennig, C. (2015). What are the true clusters?. Pattern Recognition Letters64, 53-62.
  • Wolf, L., Knaap, E., and Rey, S. J. (2019). Geosilhouettes: geographical measures of cluster fit.

Relevante links

Whitepapers

Nieuws

Blogs

Webinars

Praktijkcases

Productinformatie

Research

CSI: Crime Script Investigation – Netwerkanalyse met hulp van G-CORE

Ik was er helemaal klaar voor. Het vooronderzoek was gedaan en in mijn hoofd zat goed en duidelijk wat ik over zes maanden van toen, in augustus, zou presenteren om mijn ingenieur-titel te bemachtigen ter afronding van mijn afstudeeronderzoek bij Shintō Labs en mijn studie Data Science aan de TU/e. Enfin, we zijn nu 3 maanden verder, en in mijn hoofd is een hoop veranderd over wat ik over drie maanden van nu (nog steeds in augustus, dat is niet veranderd) zal gaan presenteren om mijn ingenieur-titel te bemachtigen. Een kleine tijd terug ben ik naar Den Haag afgereisd, om op uitnodiging van het Nederlands Forensisch Instituut op een maandelijks colloquium te presenteren over mijn onderzoek dusver. Een mooi moment om een blog te schrijven over deze ervaring, en daarmee ook over de huidige status van het onderzoek. Tijd voor een update!

Een mede-student van me, Frans, die bij het Nederlands Forensisch Instituut – NFI – zijn stage in mei begint, was ook mee om zijn vooronderzoek te presenteren en stond als eerste op het programma. Zijn afstudeeronderzoek zal voornamelijk gaan over het onderzoeken van het temporale aspect van criminele netwerken. Aangezien criminele netwerken continu veranderen, is een temporaal aspect in het netwerk van significant belang. Bij huidig onderzoek in netwerken wordt dit aspect vaak genegeerd; er wordt als het ware een snapshot van het netwerk onderzocht. Dit betekent dat onderzoek in deze netwerken mogelijk niet meer relevant is. In mijn eigen thesis staat bij de laatste hoofdstukken “Threats to validity” en “Future Research” de aantekening dat het temporale aspect mist, en ook in literatuur die ik tot dusver heb gelezen wordt gepleit voor een mogelijkheid om netwerken “live” te onderzoeken. Interessant werk dus, en heel veel betrekking op mijn eigen project.

CSI: Crime Script Investigation

Na de presentatie van Frans was het mijn beurt. In deze blog zal ik een uiteenzetting geven van mijn presentatie, en daarmee dus ook een update van mijn onderzoek. Mijn standaardtitel en ondertitel zijn inmiddels “CSI: Crime Script Investigation – Using graph databases to fight crime”. Dit was al zo tijdens het onderzoek, en dit is zo gebleven. De vraag die ik wil beantwoorden is dan ook niet veranderd; kan ik als ik een samenleving weergeef in een graaf doormiddel van slimme queries uitvoeren een crimineel netwerk eruit distilleren? De queries schrijf ik aan de hand van een crime script. Een crime script is een recept of een blauwdruk van hoe een misdaad werkt, het laat zien wat er moet gebeuren door wie, wat hier voor nodig is en waar dit moet gebeuren op welk moment. Het laat de gehele situatie zien van de misdaad, ofwel de gehele modus operandi. In literatuur wordt dit daarom ook een Situational Crime Prevention Approach genoemd. Crime scripts zijn opgebouwd in scenes, en in elke scene zit een set aan rollen die nodig is om de scene te voltooien. Dit is zeer vergelijkbaar met een script in het theater.

Figuur 1 – Cannabis-handel netwerk (Duijn, P. A. C. (2016). Detecting and disrupting criminal networks (Doctoral dissertation, PhD thesis.).

Het crime script is ook nog heel flexibel. Aangezien een crime script op meerdere manieren kan worden uitgevoerd, is dit een handige eigenschap. Morselli en Roy beschrijven in hun onderzoek naar criminele netwerken die auto’s stelen en de onderdelen doorverkopen dat de verkoop vaak naar het buitenland gebeurd. Ze beschrijven hoe de netwerken de auto-onderdelen laten verdwijnen in verschillende landen; Rusland, Egypte, Canada, Italië, etc. Elk zo’n optie heet een facet, en elke rol in een crime script kan meerdere facetten hebben. Hoe meer facetten, hoe moeilijker het is om het netwerk te breken. Bijvoorbeeld, als een crimineel netwerk bestaat uit 7 rollen en elke rol heeft 3 manieren om te voltooien (dus 3 facetten), dan zijn er in totaal 3^7 = 2187 verschillende permutaties waarin dit script kan worden voltooid.

Elk type misdaad zijn eigen crime script

Crime scripts kunnen op verschillende niveaus en voor verschillende soorten misdaad worden gemaakt. Elk type misdaad heeft zijn eigen crime script, en aangezien modus operandi verschillen kan er per crime script heel erg worden ingezoomd op een specifieke misdaad. Maar men kan ook de andere kant op en zo generaliseren, een crime script dat kan wordt gebruikt voor alle misdaden. Dit script is het universele script van Cornish, en is sinds 1994 al vaak gebruikt als begin punt voor het opstellen van een crime script.

Figuur 2 – Universeel script van Cornish (Cornish, D. B. (1994). The procedural analysis of offending and its relevance for situational prevention. Crime prevention studies, 3, 151-196).

Crime scripts verschillen ook per methode. Een misdaad die op een individueel niveau afspeelt is meestal een stappenplan; de scenes zijn in volgorde geschreven van uitvoer. In zulke scripts kunnen rollen in meerdere scenes voorkomen, maar met net iets andere vereisten. Dit betekent dat er net iets andere queries moeten worden gebruikt voor dezelfde rol, en dat er dus verschillende mogelijke nodes uit het netwerk rollen die deze rol kunnen vervullen. Welke van deze nodes geschikt is kunnen we oplossen door de rollen in een conjunctive normal form te zetten. De oplossing van deze CNF zijn de nodes die echt interessant zijn.

Crime script en netwerken

Voor netwerken werken crime scripts weer net iets anders. Hierin zijn de scenes niet op volgorde. De scenes spelen zich simultaan af, omdat de hele operatie meerdere taken heeft die niet een voor een worden uitgevoerd maar tegelijkertijd om zo de operatie efficiënt te maken. Een scene is hier dus een deeloperatie; in een crime script voor drugsnetwerken zijn er dus bijvoorbeeld scenes voor de deeloperatie van productie, een voor verkoop, een voor management etc. Elke scene heeft nog steeds rollen gekoppeld, maar naast de wie, wat waar en wanneer in de standaard crime scripts zijn nu ook de connecties belangrijk zodat kan worden gezien hoe dit netwerk wordt gevormd. De topologie wordt is impliciet opgenomen in het script.

Tijdens mijn vooronderzoek wilde ik me concentreren op crime scripts in het algemeen. Echter, aan de hand van verder onderzoek en feedback heb ik besloten me voornamelijk te focussen op netwerk crime scripts. Deze zijn interessanter, en misdaden op individueel niveau worden weliswaar vaak met meerdere personen uitgevoerd, maar hiervan is een netwerk nog steeds niet echt sprake.

Crime scripts zijn een mooi uitgangspunt om dus queries op te stellen. Maar waarop worden de queries überhaupt op losgelaten? We beginnen met een graaf die een deel van de maatschappij toont. Dit kan bijvoorbeeld, in het straatje van Shintō Labs, een graaf van een gemeente zijn. Het kan ook een graaf zijn die uit is gekomen na aanleiding van uitgebreid politieonderzoek. In mijn vooronderzoek had ik beredeneerd dat ik, omdat ik de queries declaratief wilde hebben, ik deze graaf in het property graph model zou zetten en met zou werken. Een property graph is een graaf waarin de nodes en de edges die de nodes verbinden labels en property key-value pairs hebben. Dus een node kan als label Persoon hebben, en als properties leeftijd en geslacht, met een geassocieerde waarde. Cypher is de taal waarmee je deze grafen kan queryen. Hiermee kon je al interessante patronen herkennen in de graaf.

G-CORE: een nieuwe generatie netwerk analyse

Echter, een heel nieuw netwerk opbouwen vanuit het originele netwerk dat een crimineel netwerk representeert , dat gaat niet met Cypher. Tijdens het vooronderzoek werd door mijn begeleider vanuit de TU/e G-CORE aangeraden. Dit zou een oplossing kunnen bieden voor dit probleem, en dit heb ik dus onderzocht. G-CORE is een Graph Query Language (GQL) die werkt volgens het “Graph In, Graph Out” principe. Met als input een graaf, geven de queries dus een nieuwe graaf terug, en dat is inderdaad precies wat we nodig hebben. G-CORE werkt met het Path Property Graph model. Dit is hetzelfde als het property graph model, maar in plaats van alleen nodes en edges die labels en property key-value pairs kunnen hebben, kunnen paden in dit model dat ook. Daarmee kun je dus paden tussen verschillende dingen creëren en zoeken, om zo het gehele netwerk bij elkaar te krijgen. Ook stelt G-CORE je in staat om data te aggregeren, om zo de facetten van het crime script of de verschillende scenes in het netwerk te visualiseren.

Ter illustratie: G-CORE werkt met een “Graph In, Graph” out principe. De query die je gebruikt wordt dus losgelaten op een graaf, en er komt een nieuwe graaf uit die de query beantwoord. Een voorbeeld is te vinden in de afbeeldingen. In de eerste afbeelding is een kleine graaf te zien na aanleiding van de boeken en films van Harry Potter. De graaf toont gedeeltelijk wie een vloek heeft losgelaten op wie. Elke node is een tovenaar of heks, en de edge geeft aan wie een vloek heeft losgelaten op wie. Elke edge heeft een property key-value pair dat laat zien welke vloek er is gebruikt, de values zijn afgebeeld op de edge.

Figuur 3: G-CORE voorbeeld uitgewerkt in de wereld van Harry Potter

Door middel van G-CORE kunnen we een nieuw netwerk maken, dat alle vloeken als node gebruikt, alle tovenaars en heksen als node, en pijlen die laten zien hoe een tovenaar of heks in aanraking is geweest met de vloek. Een groene pijl betekent dat hij of zijn de vloek heeft gebruikt, een zwarte pijl betekent dat hij of zij slachtoffer is geweest van de vloek. Met dit nieuwe overzicht kunnen we dus in een opslag zien wie door de meeste vloeken is geraakt en wie de meeste vloeken kent, iets wat uit de eerste graaf niet direct via een query kon worden opgevraagd.

 

Figuur 4: Detaillering van de vloeken

Dit alles zou in een tool moeten komen, waarin een gebruiker een graaf en een crime script als input geeft, en op verschillende niveaus mogelijke criminele netwerken eruit vist, samen met enkele statistieken die heel handig zijn om dit netwerk snel te analyseren. Deze statistieken zijn eenvoudig via ingebouwde algoritmen met Cypher te verkrijgen. Ook krijgt de gebruiker een visualisatie te zien van het netwerk en een verdeling hoe de rollen in het netwerk zijn verdeeld. Het ontwikkelen van deze tool staat op een lager pitje op dit moment, daar de haalbaarheid van deze tool niet meer zo hoog is als aan het begin van het afstudeerproject. De connectie maken tussen alle verschillende mechanieken die de tool moet kunnen is zacht gezegd te hoog gegrepen om te voltooien in zes maanden, zeker als we bedenken dat G-CORE nog in de kinderschoenen staat en veel zaken nog niet geïmplementeerd zijn die wel nodig zijn voor deze toepassing. Deze gebreken in G-CORE oplossen zijn op het moment de grootste hindernis, en een groot deel van de bezigheden de laatste komende maanden. Voor nu test ik dit op een kleine graaf die ik zelf heb gemaakt met zelf verzonnen data, en een crime script dat lichtelijk is gebaseerd op het crime script over cannabis-netwerken van Duijn. De graaf heb ik gemaakt in Neo4j met Cypher. Echter, G-CORE kan helaas niet rechtreeks zijn graaf inlezen vanuit Cypher, dit moet eerst worden herschreven. Dit houdt in dat ik de afgelopen week alles heb gexporteerd naar een JSON-file, en met een Python script deze JSON file heb omgeschreven naar de bestanden die de G-CORE interpreter die de TU/e heeft gemaakt kan lezen. Dit had een paar pogingen nodig, maar inmiddels is mijn property graph omgezet naar een path property graph. De G-CORE queries die ik al heb gemaakt kunnen nu dus getest worden. Als alles werkt, zal de volgende stap zijn dit toe te passen op “echte” data, data vanuit gemeenten en openbare data, om te zien of daar interessante zaken uitgehaald kunnen worden. De komende maanden zal er op dat gebied dus data worden geworven en een crime script worden ontwikkeld. Qua tool wordt er waarschijnlijk een klein prototype gemaakt zodat er een algemeen beeld is van hoe de tool eruit kan zien en hoe hij gebruikt kan worden. In het vooronderzoek had ik daar al wat schetsen gemaakt, deze moeten lichtelijk veranderd worden en natuurlijk moet er een clickable prototype van worden gemaakt.

Dit sloot mijn presentatie bij het NFI. De aanwezigen waren onder de indruk, en gaven nuttige feedback. Zo waren ze er nog niet helemaal zeker van hoe precies ik het crime script kon toepassen; veel data die ik in mijn voorbeeld had gebruikt was niet zomaar aanwezig. Natuurlijk was mijn voorbeeld ook niet realistisch, maar gebruik ik het enkel om G-CORE queries mee te testen, maar het geeft wel aanzet tot denken dat in echte cases het crime script dus goed moet worden uitgedacht om kans van slagen te hebben. Ondanks dat men bij het NFI niet veel met graph technology doet, vonden ze de toepassing van G-CORE zeer veelbelovend. Het colloquium werd beëindigd door een presentatie van een vrouw die onderzoek doet in criminele organisaties voor de nationale politie. De precieze inhoud was vertrouwelijk, maar de conclusie was dat als men wetenschappelijk onderzoek hard wil maken in rapporten of de rechtbank, dat alle stappen moesten kloppen en duidelijk waren. Er mogen geen shortcuts gebruikt worden, want dan maken advocaten gehakt van je, vertelde ze. Deze boodschap heb ik ook ter harte genomen; de queries die ik had opgeschreven heb ik opgesplitst in delen, zodat bij elke stap duidelijk is wat er gebeurt en waarom.

Van uitwerken naar implementatie

We zitten op de helft, en er is al een hoop gedaan en veranderd. Waarschijnlijk gaat er nog wel wat meer veranderen. Het doel is echter nog steeds hetzelfde, en ik hoop dat in de blog die ik over drie maanden schrijf er ook het nieuws in staat dat ik ben afgestudeerd met dit onderzoek. Waar ik mij op ga richten is het uitwerken van deze concepten in Apache Spark met hulp van Scala. Dat gaan we vervolgens toetsen bij een van de gemeentes om het netwerk daar inzichtelijk te maken. Ondertussen zal ik kleine updates blijven geven over interessante gebeurtenissen tijdens mijn afstuderen.

Bronnen

– Cornish, D. B. (1994). The procedural analysis of offending and its relevance for situational prevention. Crime prevention studies3, 151-196. Bekijk PDF
– Duijn, P. A. C. (2016). Detecting and disrupting criminal networks (Doctoral dissertation, PhD thesis. Retrieved from https://dare. uva. nl/search). Bekijk PDF
– Morselli, C., & Roy, J. (2008). Brokerage qualifications in ringing operations. Criminology46(1), 71-98. Bron
– Angles, R., Arenas, M., Barceló, P., Boncz, P., Fletcher, G., Gutierrez, C., … & van Rest, O. (2018, May). G-CORE: A core for future graph query languages. In Proceedings of the 2018 International Conference on Management of Data (pp. 1421-1432). ACM. Bron

Relevante links

Whitepapers

Nieuws

Blogs

Webinars

Praktijkcases

Productinformatie

Research