Auteur: AskAnna

Waarom gebruiken we geen templates voor Data Science projecten?

Al zolang ik me kan herinneren maken mensen voor basis acties gebruik van templates en sjablonen. Als ik een nieuw Word document aanmaak, kan ik kiezen uit vele templates die ik als basis kan gebruiken. Wil ik een nieuwe site maken, dan biedt WordPress mij diverse templates zonder dat ik een regel HTML geschreven hoef te hebben. Een nieuwe lijst met to do's in Asana, een project in GitLab, een nieuwe server bij Google of een project in Basecamp. Allemaal bieden ze de optie om te starten vanuit een template.

Een vraag die ik mezelf al een poos stel is: waarom maken we binnen data science geen gebruik van templates? Veel van de projecten die we doen, hebben overlap. Niet alleen binnen je eigen organisatie, maar ook als je kijkt naar data science teams wereldwijd. In alle projecten hebben processen om ruwe data te verkennen, deze data geschikt te maken om te modelleren en vervolgens laten we onze modellen los op de geprepareerde data. Het klinkt alsof deze stappen zich goed lenen om te starten vanuit een template.

Laten we daarbij nog een stap verder kijken. Als we een model maken, komen we generieke componenten tegen. De eerste component is dat we onze data goed moeten begrijpen en dit doen we onder andere door de data te verkennen. Vervolgens gaan we aan de slag om een model te ontwikkelen dat ons vraagstuk het beste kan beantwoorden. Hopelijk boeken we succes en vinden we een model dat goed werkt. Vervolgens trainen we het model. De uitkomst van het getrainde model kunnen we daarna gebruiken om resultaten te berekenen. Een model dat voorspellingen maakt, zal op basis van input data een voorspelling berekenen. Bij het herkennen van katten op foto’s, gaat het er dan om dat je een label teruggeeft of er wel of geen kat op de foto staat.

Veel data science projecten zullen bovenstaande componenten bevatten. Steeds vaker zien we daarbij ook het gebruik van Jupyter Notebooks, of er wordt nog gewerkt in losse scripts in bijvoorbeeld Python of R. Kortom, veel data science projecten worden opgebouwd vanuit een vergelijkbare structuur en met min of meer dezelfde tools.

Toch maken de meeste teams nog geen gebruik van standaard templates voor hun projecten. Wel staat het steeds vaker op de agenda. Ook zijn organisaties bezig om hun teams te trainen, zodat het niveau binnen de projecten omhoog gaat. In de praktijk blijkt alleen dat veel van het “echte” data science werk in een project door een individu wordt gedaan. Het gaat dan om bijvoorbeeld het coderen van het algoritme. Omdat veel van deze projecten nog in de innovatie hoek zitten, kan de data scientist volstaan met het leveren van (veelbelovende) uitkomsten. Dat iemand daarbij zijn eigen way of working aanhoudt, is nog geaccepteerd. Ergens is dit ook logisch. Veel bedrijven zijn aan het ontdekken wat ze allemaal met data science kunnen doen. Met bijvoorbeeld het ontwikkelen van een bedrijfsapplicatie hebben bedrijven al veel meer ervaring, fouten gemaakt en daar oplossingen voor bedacht. Voor veel data science teams zijn deze oplossingen nog in ontwikkeling. Het werken vanuit templates is daarbij vaak simpelweg niet aan bod gekomen. 

Kan dit niet anders?

Natuurlijk kan dit anders. Hiervoor hoeven we niet eens tools te ontwikkelen, maar als data scientist kun je al starten om een bepaalde bestandsstructuur altijd aan te houden. Het makkelijkste is natuurlijk als iedereen dezelfde structuur aanhoudt. Daarom stel ik onderstaande als basis voor. Binnenkort deel ik een repository die je kunt gebruiken, en waar je ook verbeteringen kan voorstellen. Laten we samen de juiste basis neerzetten.

In bovenstaande gaat het nog puur om mappen en bestanden. Er is nog geen data bewerking, verkenning of model. Alleen vanuit deze basis kun je al veel projecten aanpakken. Het grote voordeel is dat als iedereen dit doet, het een stuk eenvoudiger wordt om elkaar support te geven binnen een data science project. Als we een stap verder gaan, kun je binnen deze templates ook al herbruikbare componenten plaatsen. Hiermee bedoel ik dat als je bijvoorbeeld vaak projecten ontwikkelt waarbij je iets moet voorspellen, dat je een template kan maken die al basiscode heeft om voorspelmodellen te draaien. Je zou dan bijvoorbeeld al een variatie aan modellen beschikbaar kunnen maken, inclusief validatie welke modellen het goed doen. Als je dan een nieuw project start, dan kun je al snel aan de slag. In een gunstig geval hoef je alleen nog de data te verkennen en prepareren, om vervolgens de voorspelmodellen erop los te laten.

Wat zijn de voordelen?

Als iedereen binnen een organisatie werkt vanuit afgestemde templates, dan is er al snel het voordeel dat je veel makkelijker kunt samenwerken. Bij goede werkafspraken hoef je niet te speuren in elkaars code, maar weet je precies naar welke bestanden je op zoek moet. Alleen dit zou al een reden moeten zijn om direct gebruik te gaan maken van standaard templates. Ook het voordeel van het beschikbaar maken van basiscomponenten voor werk dat vaak voorkomt, zal een serieuze tijdswinst op kunnen leveren. Denk aan het toevoegen van Jupyter Notebooks om data te eenduidig te verkennen. Of niet elke keer weer de voorspelmodellen op te hoeven zoeken en de code hiervan te kopiëren naar je nieuwe project.

Verder wil je natuurlijk dat je data science project in productie wordt genomen, ofwel operationeel wordt ingezet. Door te werken vanuit de voorgestelde structuur, zal het ook een stuk eenvoudiger worden om je model in productie te nemen. Er komen steeds meer tools op de markt waarmee je door het toevoegen van een simpel configuratie bestand al zelf een model in de cloud kan draaien. Via een API kun je vervolgens continue resultaten serveren. Het gebruik van bovenstaande structuur helpt om dit soort projecten eenduidig op te zetten.

Kortom, door te gaan werken vanuit templates kun je eenvoudiger samenwerken, veel sneller resultaten leveren, een betere kwaliteit nastreven en eenvoudig zelf je model in productie plaatsen.

Voor een goede way of working, is het gebruik maken van de templates slechts een startpunt. In andere blogs deel ik graag meer over hoe we de way of working voor data science projecten kunnen professionaliseren.

Reactie toevoegen