50 uur Kaggle ervaring in 5 minuten

Gegroet Dataridder,

Deze week heb ik mijn eerste Kaggle wedstrijd afgerond. De opdracht was om een zo goed mogelijk model te trainen voor het detecteren van online fraude.

Ik heb er in totaal meer dan 50 uur aan besteed en het is me uiteindelijk gelukt om in de top 50 procent van het Leaderboard te komen. In dit bericht ga ik jou in vogelvlucht wat vertellen over wat ik daar bij heb geleerd. Hopelijk zal het je helpen bij je eigen projecten en wedstrijden.

Laten we beginnen.

 

1. Het is niet zo makkelijk als het lijkt

“Wat? Hoezo makkelijk?!”, denk je misschien.

Tja, toen ik met machine learning leek het me dan ook alles behalve makkelijk. Maar, op een bepaald punt had ik genoeg geleerd dat ik dacht dat het allemaal best simpel was en dat ik deze wedstrijd wel eens even zou gaan laten zien wie de baas was. Immers, alle informatie die ik verder nodig had om te winnen was te vinden, inclusief legio aan voorbeeld kernels van mede-Kagglers.

Viel toch tegen.

Zoals ik al zei was er meer dan genoeg informatie te vinden. Maar, dat was dan ook precies het probleem: teveel informatie is bijna net zo erg als geen informatie. Waar begin je? Wat negeer je? Wat is belangrijk? Wat is minder belangrijk?

Er is gewoon niet genoeg tijd om het allemaal te bestuderen. En tegelijkertijd is er ook een heleboel wat er komt kijken bij het maken van een winnend model, heb ik gemerkt. Om zoveel informatie te verwerken tijdens een wedstrijd en dan ook nog die informatie allemaal foutloos toe te passen, dat valt niet mee.

2. Het is ook niet zo moeilijk als het leek

Het is niet onmogelijk. Stapje voor stapje kan je er komen.

Het is waar: Er is een heleboel informatie. Het is niet allemaal even belangrijk, maar er is toch een heleboel te leren.

Desalniettemin IS het allemaal best te doen. Een universitaire opleiding bevat nog veel meer informatie, en toch zijn er mensen die hun diploma halen, met voldoende tijd en inzet. Zo ook is de informatie voor het maken van een winnend model uiteindelijk gewoon te overwinnen.

De individuele onderdelen van een winnend model zijn soms op het eerste gezicht ingewikkeld, maar uiteindelijk valt dit best mee, heb ik gemerkt. Je leert ze gewoon een voor een, en langzaam maar zeker begint het dan allemaal wel in elkaar te passen. Er is nog een hoop te doen, maar er is ook al een hele hoop gedaan.

Stukje bij beetje. Dat is hoe je vooruitgang maakt.

 

3. Een EDA lijkt misschien nutteloos maar is dat zeker niet

In mijn eerste 3 Kaggle projecten deed ik alles vrij snel. Gewoon een werkend model krijgen in zo min mogelijk tijd.

Soms deed ik daarbij ook wat Exploratory Data Analysis (EDA), maar ik had dan altijd het idee dat dit niet echt veel uithaalde. Uiteindelijk ik gewoon alles in het machine learning algoritmen en kwamen er gewoon goede resultaten uit.

De informatie die ik dan tijdens mijn EDA had verzameld was misschien wel interessant, ik deed er uiteindelijk niets mee in mijn model. Daarom bleef ik ook niet al te lang hangen in de EDA tijdens deze Kaggle wedstrijd.

Dat was een fout.

Het is niet de schuld van de EDA wanneer je er geen nuttige informatie uit haalt. Het is een gebrek aan ervaring met het stellen van de juiste vragen en het herkennen van nuttige informatie. Mijn EDA’s waren tot dan toe nutteloos omdat ik gewoon nog geen benul had van wat je allemaal kan leren van een goede EDA. Nu ben ik begonnen daar een idee van te krijgen.  En wou ik dat ik in het begin de dingen had geweten die ik later met EDA en het lezen van de analyses van andere Kagglers had uitgevonden.

4. Leren vs resultaten vs gewerkte uren

Het maakt niet uit hoe lang je ergens mee bezig bent of hoe ingewikkeld het is. Althans, niet voor je Leaderboard score.

Je kan uren bezig zijn met het puzzelen met Principal Component Analysis, geheugen vermindering, herstructureren van je code en noem het maar. En deze dingen zijn zeker belangrijk. Maar, je score gaat er niet per se van omhoog. Zelfs Feature Engineering kan verspilde tijd zijn als je geen goede features weet te vinden.

Tegelijkertijd kunnen een paar minuten handmatig uitproberen van verschillende hyperparameters voor je model je 100 plekken omhoog brengen op het Leaderboard.

Mijn eerste score op het Leaderboard bracht mij al bijna in de top 50 procent waar ik uiteindelijk geëindigd was. En het enige wat ik gedaan had was een simpele kernel kopiëren die de data in gooide XGBoost zonder enige analyse of feature engineering. Vervolgens ben ik WEKEN bezig geweest met het proberen van allerlei technieken om mijn score te verbeteren, zonder enige verbetering van mijn score.

Waren deze weken verspilde tijd? Nee, dat zeker niet. Ik heb mijn score wellicht niet verbeterd, maar ik heb een hele hoop geleerd. Ook had ik een gevonden om het model sneller te laten uitrekenen. Deze zaken kwamen echter niet tot uiting op het Leaderboard.

Uiteindelijk behaalde ik mijn eerste verbetering in mijn score gewoon door domweg wat andere hyperparameters in te voeren in het bare bones model. Daarna pas begon het geleerde te klikken en verbeterde ik mijn score nog verder met Feature Engineering.

Ik had mijn score misschien nog sneller kunnen verbeteren als ik een beetje rond gekeken had voor kernels met betere scores en deze gewoon gekopieerd had.

Maar dan had ik natuurlijk niets geleerd.

 

5. Kaggle is een geweldige leerbron, maar…

Er valt ECHT een hele hoop te leren over machine learning op Kaggle, daar ben ik inmiddels wel achter. Maar deze kennis is niet allemaal direct toe te passen in de echte wereld.

Voor de beginnende Data Scientist die nog weinig ervaring met het trainen van modellen heeft en zijn PCA nog moet leren onderscheiden van zijn EDA is Kaggle geweldig. Zelfs voor de verder gevorderde Data Scientist is er nog een hoop te leren. Maar, er zijn grenzen aan wat je kan bereiken met het doen van Kaggle wedstrijden.

Want, een Kaggle probleem is niet een bedrijfsprobleem, en een Kaggle score is geen complete representatie van de kwaliteit van een machine learning oplossing.

Een model dat 20 verschillende algoritmes combineert om met behulp van honderden uren rekentijd de hoogst mogelijke accuraatheid te behalen is misschien geweldig voor Kaggle. Maar, niet zo geweldig voor een bedrijf dat voorspellingen wil maken over de vraag naar hun product voor morgen en inzicht wil krijgen in de belangrijkste factoren die deze vraag bepalen.

En hoe denk je dat die data die jouw Kaggle model gebruikt in de eerste instantie bij elkaar verzameld is? Denk je misschien dat die data zomaar uit de lucht is komen vallen? Of dat er uren aan research, brainstormen en verzamelwerk aan vooraf is gegaan?

Kortom, Kaggle is een geweldige leerbron, maar perfecte Kaggle skills maken nog geen perfecte Data Scientist.

 

Natuurlijk is dit lang niet het enige wat ik geleerd heb tijdens deze wedstrijd. Ik wou dat het mogelijk was om dit allemaal in een bericht van 5 minuten aan jullie te leren. Als dat namelijk het geval was dan had ik zelf zo’n bericht gelezen en had dit bericht 5 minuten Kaggle leeservaring in 5 minuten kunnen heten.

Helaas.

Wees niet getreurd. Er komen nog meer berichten. Maar, dat is alles voor nu.

 

Tot de volgende keer!

 

 

Relevante links

Waarom je aarzelt en waarom het niet nodig is

Waarom?

Waarom is het dat je op sommige dagen moeiteloos door kunt gaan met leren en op andere dagen jezelf moet dwingen om het ook maar een enkel uurtje vol te houden?

En waar is al dat enthousiasme gebleven waarmee je deze reis begonnen was?!

  • Is het dat je op sommige dagen meer zin hebt dan op andere?
  • Is het dat je er meer plezier in hebt wanneer het goed gaat?
  • Is het dat je liefde voor het onderwerp over de tijd heen is uitgedoofd?

Dat speelt er misschien allemaal een rol bij, maar er is meer aan de hand. En als jij dit inziet dan kun je ophouden jezelf tegen te houden en eindelijk op volle toeren op je doel afvliegen!

Jij bent begonnen met leren omdat jij een passie hebt voor het werk waar jij voor aan het leren bent. Die passie was misschien wat sterker in het begin, toen alles nog nieuw en opwindend was, maar zelfs nu merk jij op sommige dagen dat die passie er nog steeds is. Waarom is het dan op die andere dagen zo moeilijk om jezelf op gang te laten komen en door te zetten?

Zoals ik al zei is een deel ervan dat dingen leuker zijn wanneer ze goed gaan. Maar, tegelijkertijd zijn dingen ook weer leuker als ze uitdagend zijn. Dus waarom zou je ontmoedigd moeten raken als iets uitdagend is? Je zou toch juist enthousiast moeten worden? En op sommige dagen is dat ook zo, maar op andere dagen niet. Hoe komt dit nou?

Onzekerheid.

De reden waarom jij het werk ontwijkt waar jij zoveel plezier in hebt is NIET dat dat plezier vervaagd is. Integendeel. Nee, de reden is dat jij twijfelt. Jij twijfelt of je wel de capaciteiten bezit om het te maken. Om je doel te bereiken. Om de prijs te veroveren waarvoor je dit allemaal begonnen bent: het werk doen waar jij van houdt.

En omdat jij twijfelt voel jij je ongemakkelijk wanneer je bezig bent met het werk. Omdat jij twijfelt voel jij je moedeloos. Je voelt je onzeker. Je schaamt je. Je bent bang voor de toekomst.

  • “Waar ben ik mee bezig?”
  • “Het gaat me nooit lukken.”
  • “Dit is onmogelijk.”
  • “Hoe ga ik mijn brood verdienen als dit het niet wordt?”
  • “Wat zullen ze wel niet van me denken?”

Dat zijn de gedachten die jou tegenhouden. Dat zijn de gedachten die door jou hoofd spoken wanneer jij aan het leren bent voor het beroep waar jij van houdt. En de gevoelens die deze gedachten opwekken zijn de reden waarom jij het plezier op deze dagen niet kan vinden en het tempo niet kan vol houden.

Wat is nu de oplossing? Nou, ik heb hem tijdens dit artikel al meerdere keren genoemd.

Dit is het werk waar jij van houdt.

En de kans is groot dat dit niet alleen het werk is waar jij van houdt, maar dat het ook het werk is waarvoor jij een natuurlijke aanleg hebt.

Maar, zelfs al zou dit niet het geval zijn dan is dat geen probleem. Want de belangrijkste sleutel tot succes is niet talent, maar consistente inzet. En wat is nou een groter voordeel in het leveren van die consistente inzet dan pure passie voor het leerproces zelf?!

Jij houdt namelijk niet alleen van het het werk dat jij mag gaan doen zodra je je baan hebt veroverd. Jij houdt van het werk dat jij moet doen om de baan in de eerste instantie te krijgen! En niets is zo krachtig voor het behalen van jouw doel.

Dus jij hoeft niet onzeker te zijn. Jij bent hiervoor gemaakt. En het enige wat je hoeft doen is het werk waar jij van houdt, totdat en lang nadat jij je baan veroverd hebt.

Dat is alles voor nu,

 

Tot de volgende keer!

IKKE NIE SNAP NIE…

Gegroet Dataridders,

In dit bericht ga ik je drie praktische tips geven om om te gaan met het gevoel dat je een idioot bent tijdens het bestuderen van Data Science.

Of wat dan ook eigenlijk. Maar ik denk dat deze tips vooral erg nuttig zijn voor de aspirant Dataridder, omdat deze vaak niet alleen met hele complexe theorie in aanraking komt, maar dat vaak ook in isolatie doet van zijn mede idioten…

 

Tip nummer 1: Iedereen is een idioot

Wij mensen geloven graag dat we heel erg slim zijn. We kijken naar uitvindingen zoals de space shuttle, nano-technologie en Jersey Shore en kunnen ons superioriteitsgevoel over het dierenrijkdom niet bedwingen. Maar, de bittere waarheid is dat wij mensen als individu niet zo veel slimmer zijn dan de gemiddelde chimpansee als we graag willen geloven.

Tuurlijk, als soort als geheel kunnen wij een hele hoop indrukwekkende dingen bereiken maar als individu zijn we eigenlijk niet echt zo slim. Er zijn uitzonderingen geweest zoals Einstein en Mozart, maar zelfs deze geweldige brainiacs bouwden voort op de gezamenlijke intellectuele inspanningen van alle idioten die voor hen kwamen.

Iedereen kan een briljant idee hebben, maar niemand kan altijd briljant zijn, en dingen niet snappen is een state of life. Zelfs Einstein heeft nooit uitgevogeld hoe hij nu die muur moest bouwen.

Dus als jij een tutorial serie over Deep Learning aan het kijken bent en af en toe geen idee hebt waar meneer de Data Scientist het allemaal over heeft hoef je je echt niet te schamen of ontmoedigd te raken. De kans is groot dat hij het zelf ook niet altijd weet, en de student achter de laptop in het huis aan de overkant weet het al helemaal niet.

 

Tip nummer 2: De aanhouder wint, meestal…

Oke, misschien dat je het de eerste keer allemaal maar half begrijpt en je hoofd inmiddels op springen staat, maar morgen is er weer een nieuwe dag. Zie het leren als het drinken van een grote emmer vol water, bier, thee, of wat je vloeistof naar keuze ook mag zijn.

Het punt is, er is maar zoveel nieuwe informatie die je op een dag kan verwerken. Maar, morgen is er weer een nieuwe dag, is je hoofd weer uitgerust en kan je de informatie weer opnieuw aanvallen.

Grote kans dat je het deze keer beter begrijpt dan de vorige keer!

Herhaal dit proces vaak genoeg en op een gegeven moment zul je de informatie meestal voldoende geadsorbeerd hebben.

Meestal. Geen garanties echter. Soms is de informatie gewoon geschreven in het Chinees en is het beter om een andere leerbron te vinden of door te gaan naar de volgende les. Of om eerst Chinees te leren.

Maar dat je iets niet meteen snapt hoeft niet te betekenen dat je het met wat herhaling niet kan ontcijferen. Zelfs een chimpansee kan een paar woordjes Chinees leren met voldoende doorzettingsvermogen.

 

Tip nummer 3: Je hoeft het niet allemaal te snappen!

Dit is misschien nog wel het allerbelangrijkste om je te realiseren. Zoals ik al zei kan je als je iets niet snapt af en toe het beste gewoon door gaan naar de volgende les. Maar, de beste manier om uit te vinden of je moet weten om iets te doen is door het gewoon te doen.

Blijf niet hangen in de theorie, probeer gewoon dat model te trainen. Kom je er dan niet uit dan weet je vaak wel wat je moet herhalen om er uit te komen. Zo niet, dan wordt het tijd om daar achter te komen.

Zelfs als je 80 procent van de theorie niet begrijpt kun je soms nog steeds prima de opgaves maken. Als je altijd alles probeert te snappen dan kom je nooit aan uitvoeren toe en leer je uiteindelijk niets praktisch.

Dat is alles voor nu,

 

Tot de volgende keer!