Towards Automatically Inferring Constraints to Identify Implicit Assumptions in Data Analysis
Dit artikel stelt een verenigd perspectief en een proof-of-concept implementatie voor met behulp van statische analyse om impliciete aannames in data-analysescripts automatisch af te leiden en expliciet weer te geven als code-constraints, waardoor reproduceerbaarheid, runtime-verificatie en codebegrip worden verbeterd.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je voor dat je een recept probeert te volgen om een cake te bakken, maar de het recept is geschreven door een vriend die een paar cruciale details is vergeten op te schrijven. Ze hebben niet vermeld dat je een specifiek type oven nodig hebt, of dat de bloem eerst gezeefd moet worden voordat je de eieren toevoegt, of dat het recept alleen werkt als je een specifiek merk bakpoeder hebt.
Als je probeert de cake te bakken met je eigen apparatuur en ingrediënten, kan het mislukken, of kan het totaal anders smaken. In de wereld van data science schrijven wetenschappers "recepten" (scripts) om data te analyseren. Het probleem is dat deze recepten vol zitten met verborgen aannames—dingen die de auteur als vanzelfsprekend beschouwde maar nooit opschreef.
Dit artikel, geschreven door onderzoekers van de Universiteit van Ulm, stelt een nieuwe manier voor om deze verborgen aannames te vinden en ze om te zetten in duidelijke, geschreven regels.
Het Probleem: Het "Magische" Recept
Data scientists gebruiken talen zoals R of Python om data te analyseren. Vaak werken ze in interactieve notebooks waar ze code typen, een resultaat zien, meer code typen en weer een resultaat zien.
Het probleem is dat deze scripts vaak leunen op "magie" die niet is opgeschreven:
- De Juiste Tools: "Ik gebruikte een specifieke versie van een softwaretool die ik niet voor jou heb geïnstalleerd."
- De Volgorde van Handelingen: "Ik voerde deze stap uit vóór die andere, maar ik heb je niet verteld dat je die volgorde moest aanhouden."
- De Vorm van de Data: "Ik ging ervan uit dat je data een kolom genaamd 'Age' had, maar die van jou heet 'Years'."
Wanneer iemand anders de code probeert uit te voeren, loopt het vaak vast of worden er foutieve antwoorden gegeven omdat deze verborgen regels zijn geschonden. Studies tonen aan dat een enorm percentage van deze data-scripts simpelweg niet draait voor iemand anders dan de oorspronkelijke auteur.
De Oplossing: De "Detective"-aanpak
De auteurs stellen een techniek voor die Statische Analyse wordt genoemd. Denk hierbij aan een super slimme detective die de code leest zonder deze daadwerkelijk uit te voeren.
In plaats van alleen naar de woorden te kijken, kijkt de detective naar de logica om vragen te stellen als:
- "Welke versie van de software moet hier aanwezig zijn om deze regel te laten werken?"
- "Hoe moet dit databestand eruitzien zodat deze berekening zinvol is?"
- "Was dit script afhankelijk van een vorige stap die niet is opgenomen?"
De detective schrijft vervolgens al deze verborgen regels op als constraints (beperkingen). Het is alsof je dat vage recept neemt en er een checklist bovenaan toevoegt: "Moet Oven Model X gebruiken," "Bloem moet gezeefd zijn," "Eieren moeten op kamertemperatuur zijn."
Hoe het werkt (De drie belangrijkste aanwijzingen)
De paper verdeelt deze verborgen aannames in drie hoofdcategorieën:
De Gereedschapskist (Package Versies):
- De Aanname: "Ik gebruikte een nieuwe functie in mijn software die jij nog niet hebt."
- De Oplossing: De detective bekijkt de code en zegt: "Dit script gebruikt een specifieke tekenmodule die pas in 2022 is uitgevonden. Je hebt softwareversie 2.0 of hoger nodig."
De Kettingreactie (Script Afhankelijkheden):
- De Aanname: "Ik gebruik een variabele genaamd
groupeddie ik in een ander bestand heb gemaakt, maar ik heb je niet verteld dat je dat andere bestand eerst moet laden." - De Oplossing: De detective volgt de verbindingen. Het realiseert zich: "Hé, dit script mist een stukje van de puzzel. Het moet na dat andere script worden uitgevoerd om de data te krijgen die het nodig heeft." Het maakt een kaart die de juiste volgorde laat zien om alles uit te voeren.
- De Aanname: "Ik gebruik een variabele genaamd
De Vorm van de Data (Data Verwachtingen):
- De Aanname: "Ik ga ervan uit dat de data een kolom voor 'Score' heeft en dat de getallen gehele integers zijn."
- De Oplossing: De detective analyseert de wiskunde. Het voegt een veiligheidscontrole toe: "Controleer voordat we beginnen of de data daadwerkelijk een 'Score' kolom bevat. Zo niet, stop dan en informeer de gebruiker."
Het Doel: Wetenschap Reproduceerbaar Maken
Het uiteindelijke doel is niet alleen om één script te repareren; het is om wetenschap betrouwbaarder te maken.
- Voor de Oorspronkelijke Auteur: Het helpt hen om betere, zelf-controlerende code te schrijven.
- Voor de Gebruiker: Het dient als een duidelijke instructiehandleiding. Als je het script probeert te gebruiken met de verkeerde data of tools, stopt het script en zegt: "Hé, je komt een vereiste tekort," in plaats van stilzwijgend vast te lopen of een foutief antwoord te geven.
De Huidige Status
De onderzoekers hebben een "proof-of-concept" (een werkend prototype) gebouwd met behulp van een tool genaamd flowR om R-code te analyseren. Ze hebben dit getest op duizenden echte projecten en ontdekten dat veel van deze projecten inderdaad dergelijke verborgen afhankelijkheden hebben.
Ze geven toe dat dit geen toverstaf is die alles oplost (sommige aannames zijn te complex voor een computer om perfect te raden), maar ze geloven dat het simpelweg vinden en lijsten van deze verborgen aannames een enorme stap voorwaarts is. Het verandert een kapot, verwarrend recept in een duidelijke, bruikbare gids voor iedereen.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.