Voorlopige eerste positie in Kaggle datascience competitie

Voorlopige eerste positie in Kaggle datascience competitie

Mee doen in een datascience competitie helpt om je skillset up-to-date te houden. Na 2 weken gewerkt te hebben aan de ‘New York Taxi Fare Prediction’ challenge van Google en Coursera heb ik een voorlopige eerste positie bereikt!

Kaggle is een datascience competitie website. Bedrijven en organisaties kunnen hier datasets publiceren en competities uitschrijven. Er zijn twee soorten competities: kennis en prijzengeld competities. Bij de eerste gaat het om het ontwikkelen en delen van datascience kennis. Bij de tweede soort gaat het om het winnen van geld. Dit soort competities worden uitgeschreven door bedrijven die op zoek zijn naar een oplossing of om de interne datascience competentie te benchmarken.

New York Taxi Fare Prediction challenge

De New York Taxi Fare Prediction challenge is een competitie gestart door Google en Coursera waarbij het gaat om het delen van kennis. De dataset bestaat uit 55 miljoen datapunten met informatie over taxiritten in New York. Elk datapunt bevat informatie zoals begin- en eindpunt, aantal passagiers en de ritprijs. Het doel is om een model te maken dat de prijs van een taxirit voorspelt.

Mijn uitgangspunt bij het maken van een goed machine learning model is dat je eerst de data en het probleemdomein moet begrijpen. Ik begin daarom altijd met een ‘data exploration’. Het visualiseren van data is een belangrijk element hierbij. Maar ook een statistische analyse en het valideren van inzichten en hypotheses met externe data bronnen. Mijn volledige data exploration heb ik gepubliceerd op Kaggle.

 

Technische uitdaging

De belangrijkste technische uitdaging van deze challenge is de grootte van de dataset. Omgaan met 55 miljoen datapunten in een laptop + python omgeving levert problemen op. Doordat je veel extra data genereert vanwege het toevoegen van nieuwe informatie (‘features’) past de totale dataset al snel niet meer in het RAM geheugen. Dit betekent dat je de hele machine learning pipeline op een andere manier moet opzetten. Data moet in delen (‘batches’) verwerkt worden. Dit heeft ook weer consequenties voor de machine learning algoritmes die je kunt gebruiken. Niet elk machine learning algoritme kan efficient met grote hoeveelheden data omgaan of ondersteunt trainen in batches.

Als de dataset te groot wordt om in het RAM geheugen van je computer te passen en de algoritmes die je gebruikt steeds geavanceerder worden, dan neemt ook de rekentijd toe! Een experiment waarbij je een model traint kan dan al snel minuten tot uren duren. Nu is het training van een goed model niet na 1 experiment gebeurd. Je moet vaak veel experimenten doen. Inzichten die je hebt verkregen bij vorige experimenten gebruik je om het volgende experiment bij te sturen. Om de doorlooptijd van de experimenten te verkorten heb je meer rekenkracht nodig. Gelukkig hoef je hiervoor tegenwoordig niet zelf meer in hardware te investeren. Er zijn veel online diensten beschikbaar waar je tegen betaling gebruik kan maken van servers. Naast de grote namen zoals Amazon, Google en Microsoft zijn er ook nieuwe spelers die deze dienst aanbieden zoals Floydhub.

Succesfactoren

Op dit moment heeft mijn model een voorlopige eerste positie op Kaggle. Dit zal natuurlijk andere deelnemers uitdagen om een model te ontwikkelen met een betere score. Uiteindelijk motiveert dit mij weer om mijn model te verbeteren.Tijdens dit proces leer je veel en ontwikkel je goede datascience vaardigheden.

Mijn ervaring is dat de volgende succesfactoren nodig zijn om een winnend model te maken:

  • analytische vaardigheden en begrip van het probleemdomein
  • brede kennis van de machine learning algoritmen en hun toepasbaarheid
  • inhoudelijke (theoretische) kennis van de algoritmen
  • praktische implementatie vaardigheden (‘full-stack’)
  • creativiteit en vindingrijkheid om telkens oplossingen te vinden voor nieuwe uitdagingen
  • doorzettingsvermogen

 

Update 9 Augustus 2018

Nog geen dag nadat ik dit artikel geschreven heb sta ik al niet meer op de eerste plaats bij Kaggle. Dit daagt weer uit om verder te denken over een beter model! Hopelijk binnenkort weer terug op plek #1!!

Geef een reactie