3 Lessen uit 3 Kaggle projecten

Gegroet Dataridders,

In dit artikel zal ik de 3 lessen delen die ik geleerd heb bij het uitvoeren van de 3 actieve Getting Started wedstrijden/projecten op Kaggle. In volgorde van uitvoeren:

  1. Titanic: Machine Learning from Disaster

  2. Digit Recognizer

  3. House Prices: Advanced Regression Techniques

Let’s get started!

 

Les 1: Als je er een kan, dan kan je ze allemaal.

Mijn machine learning cursus eindproject heeft mij wekenlang zoet gehouden. Maar, mijn eerste Kaggle project was al klaar binnen een aantal uurtjes. De volgende twee projecten waren ook klaar binnen een dagje of twee.

Daarmee heb ik dan op Kaggle een project gedaan met classificatie, een met image recognition en een met regressie voor een dataset met 80 variabelen. Het proces was vrij vergelijkbaar voor alle drie. Verrassend vergelijkbaar.

Waren er uitdagingen? Ja. Was het moeilijk? Niet echt. Tuurlijk, er waren obstakels, maar het was slechts een kwestie van trial, error en Google search en de oplossingen waren redelijk snel gevonden.

Natuurlijk wil ik niet beweren dat alle machine learning technieken makkelijk zijn. Maar volgens mij zit de moeilijkheid niet zozeer in het maken van een model, maar in het maken van een optimaal model.

 

Les 2: Goede scores halen hoeft niet veel tijd te kosten.

Zoals ik al zei had ik er niet lang over gedaan om mijn projecten op Kaggle af te ronden. Waarom? Ik probeerde geen topscores te behalen. Het was slechts mijn doel om EEN score te halen. En dus trainde ik gewoon mijn modellen met zo weinig mogelijk data cleaning en feature engineering.

Het resultaat?

Verrassend goed! Oke, ik heb geen topscores behaald. Bij mijn eerste wedstrijd haalde ik de top 80 procent en de overige twee zat ik net onder de top 50 procent.

Dat klinkt vrij niet al te indrukwekkend, maar de modelprestaties van die modellen lagen allemaal vrij dicht bij de topscores. Mijn Titanic model haalde 75 procent accuraatheid, terwijl de hoogste realistische score zo’n 80 procent zou bedragen volgens de discussie pagina’s. Mijn image recognition model haalde 98 procent.

Een minimale inzet model doet dus niet veel onder voor een top tier model. Dit komt omdat de algoritmes het meeste werk al voor je doen. Lekker makkelijk!

 

Les 3: Kaggle succes kan misleidend zijn.

Bij elke van de 3 leaderboards zijn er mensen die een accuraatheid van 100 procent of een foutpercentage van (bijna) 0 procent gehaald hebben. Echter, dit zijn geen realistische scores voor een voorspellend model.

Hoe kan dit dan?

Vals spelen. Deze mensen hebben hun model simpelweg getraind op de gehele dataset en het vervolgens ook nog eens drastisch overfit. Vergelijk het met het uit je hoofd leren van de antwoorden voor een meerkeuzevraag proefwerk zonder de theorie te leren. Maar gelukkig is dit niet mogelijk bij de normale Kaggle wedstrijden waarbij de test data niet simpelweg van het internet af te halen is.

Ik ontdekte echter nog een vreemd fenomeen bij het opsturen van mijn antwoorden voor de House Prices wedstrijd. Ik had 3 verschillende lineaire regressie modellen getraind op de trainingsdata. Deze modellen presteerden ongeveer allemaal even goed op de testset die ik van de trainingsdata had achtergehouden. Er was echter een groot verschil met hoe twee van deze modellen scoorden op het leaderboard.

Mijn eerste submissie leverde mij een plek in de buurt van de bodem op met een Root-Mean-Squared-Error (RMSE) van 0.45. Mijn tweede submissie, een model dat vrijwel hetzelfde score op de testfractie van de trainingsdata,  plaatste mij in de buurt van de top 60 procent met een RMSE van 0.15! Een drastische verbetering!

Misschien dat ik iets gemist heb maar volgens mij is de enige verklaring voor dit verschil toeval. Met meer data was dit volgens mij dan ook nooit het geval geweest.

 

Samenvatting

Als je er een kan kan je ze allemaal, goede scores vergen weinig inzet en Kaggle scores zijn soms misleidend. Dat zijn de lessen die ik geleerd heb.

Misschien dat ik er met meer ervaringsdata achter kom dat mijn conclusiepatronen moeten worden bijgesteld, maar voor nu is dit mijn model van de Kaggle en Machine Learning wereld.

Dat is alles voor nu.

 

Tot de volgende keer!

Riddercode

Data Science is een gereedschap.

Stel je een applicatie voor. Een applicatie die op basis van informatie verzameld over een mensenleven precies weet wat die persoon zal doen in reactie op een situatie naar keuze.

Stel je voor dat persoon X deze applicatie en de benodigde gegevens over de gehele wereldbevolking bezit. Stel je voor dat persoon X deze gereedschappen gebruikt om de perfecte indoctrinatie te ontwikkelen voor elke mens op aarde. Stel je voor dat persoon X op deze manier de heerser wordt van de planeet. Zo’n applicatie zou nooit ontwikkeld mogen worden, nietwaar?

Stel je nu voor dat deze applicatie in het bezit is van elke persoon op aarde. Stel je voor dat deze applicatie iedereen in staat zou stellen om te weten hoe ze zich zouden gedragen in een bepaalde situatie. Stel je voor dat ze deze informatie zouden gebruiken om te begrijpen wie ze zijn en hun leven te verbeteren. Zo’n applicatie zou wel eens de meest waardevolle uitvinding aller tijden kunnen zijn, nietwaar?

Data Science is een gereedschap.

Of een applicatie als deze ooit zal bestaan is onzeker. Misschien ben je wel van mening dat zo’n gereedschap helemaal nooit zou mogen bestaan. Is de wereld er bijvoorbeeld wel echt beter van geworden nu we staal hebben uitgevonden? Verbranding? Kernsplitsing? En misschien heb je daar gelijk in.

Maar, kernsplitsing is uitgevonden. Waarom? Omdat de voordelen van kernsplitsing te groot waren om te negeren voor de mensen die het ontwikkelden. Mensen met, in ieder geval in hun eigen ogen, goede bedoelingen. En zo is het geweest met alle uitvindingen.

Is het mogelijk om dit eeuwenoude proces van innovatie stop te zetten nu we weten wat de risico’s zijn? Misschien, maar makkelijk zou dat niet zijn, als het al mogelijk is. En wat zou de prijs zijn om dit te verzekeren? Zou deze prijs het wel echt waard zijn? Of zou het ons meer kosten dan datgene wat we ermee proberen te voorkomen? En laten we ook vooral niet vergeten dat innovatie onze levens wel degelijk verbeterd heeft.

Kunnen we ons misschien niet beter afvragen wat we wel kunnen doen? Wat we kunnen doen om er voor te zorgen dat deze gereedschappen uitgevonden worden onder de juiste omstandigheden? Ons afvragen hoe we er voor kunnen zorgen dat ze gebruikt worden voor de juiste redenen? Is dat niet de taak waar we als mens altijd al mee belast zijn geweest?

De applicatie die ik beschreven heb zal misschien nooit ontwikkeld worden, maar wat zullen de consequenties zijn van de applicaties wij wel ontwikkelen? Data Science is een gereedschap.

Hoe wil jij dat het gebruikt wordt?

 

Python Power!

Hallo wereld,

Zoals ik al had aangekondigd in mijn vorige bericht ben ik de laatste dagen vooral bezig geweest met de Machine Learning Accelerator van EliteDataScience. En inmiddels heb ik al aardig wat geleerd over het gebruik van Python voor Data Science.

En ik ben onder de indruk.

Eerder had ik bijvoorbeeld al geleerd om data te analyseren met Excel. Niets bijzonders, gewoon de basics. Ik had een Youtube kanaal gevonden dat uitstekende tutorials had voor het gebruik van deze software. En ik was onder de indruk van wat je er allemaal mee kon doen en hoe gemakkelijk het allemaal was.

Maar de kracht van Excel komt niet eens in de buurt van de kracht van Python.

Niet wanneer het gaat om Data Science. En het is niet alleen dat Python je in staat stelt om machine learning toe te passen, hoewel dat er zeker een hoop mee te maken heeft. Het is ook niet dat je met Python (eventueel in combinatie met relationele databases en SQL), veel meer data kunt verwerken. Nee, de ECHTE kracht van Python, en programmeren over het algemeen, is dat er bijna geen grenzen zijn aan de mogelijkheden.

Python kan dankzij de Pandas, Matplotlib en Seaborn libraries in principe alles wat Excel ook kan, maar beter.

Wil je een staafdiagram voor inzicht in je gegevens maken? Laad de libraries, laad de data, schrijf twee regels code en voilà, staafdiagram voor een categorische variabele naar keuze. Liever categorieën vergelijken op basis van een bepaalde andere variabele? Ook zo gedaan. Het is echt belachelijk makkelijk. Wil je alle rijen die (niet) aan een bepaalde voorwaarde voldoen eruit filteren?

Kinderspel!

Dankzij libraries en de compacte, elegante syntax van Python kun je heel snel hele complexe en nuttige dingen doen met je data. Dingen die met Excel een stuk langer zouden duren. Maar, de echte kracht zit verschuild in hoe gemakkelijk het is om op die mogelijkheden verder te bouwen. Je hebt een pakket vol met nuttige analyses aan je vingertippen, ja. Net zo gemakkelijk echter kun je zelf een nieuw pakket samen stellen om nog betere en/of snellere analyses uit te voeren, en deze te automatiseren. Schrijf gewoon een nieuwe methode, en wie weet, kan je daar gewoon een nieuwe library van maken ook, zodat iedereen hem kan gebruiken!

Dat is de kracht van Python voor Data Science. En Excel, hoewel een geweldige tool voor de simpelere doeleinden, kan daar gewoon niet aan meten, lijkt mij. Maar ja, wat weet ik ervan?

Dat is alles voor nu,

Tot de volgende keer!

Khan Academy

Hallo wereld,

Hebben jullie al een account op Khan Academy? Ik wel namelijk en het is echt een geweldige website. Khan Academy is een non-profitorganisatie gecreëerd door Salman Khan die een innovatief leerplatform vrij ter beschikking stelt op het internet. De website beschikt over een gratis onlineverzameling van meer dan 3000 les-fragmenten die met video bijeen zijn gebracht op YouTube. De originele website is in het Engels, maar er is eventueel ook een Nederlandse pagina en de video’s hebben daarbij Nederlandse ondertitelingen.

Op het moment ben ik Khan aan het gebruiken voor het leren van Statistiek, Calculus en binnenkort ook Lineaire Algebra. De wiskundige disciplines die op mijn toekomstige CV staan. Nu heb ik deze vakken al op de universiteit geleerd, herhaling kan ik altijd gebruiken, vooral in het geval van Statistiek, de kern van Data Science.

Er is echter een heleboel informatie beschikbaar op Khan Academy. En, hoewel het een optie is om gewoon bij het begin van elk vak te beginnen en alle video’s en opgaven een voor een te volgen, lijkt me dat zeker niet de meest efficiënte methode.

Het geweldige aan Khan Academy is namelijk dat je meteen al een test kan afleggen van 30 tot 45 minuten (of langer, afhankelijk van hoe lang je er over doet). Dit stelt je in staat om meteen te zien waar je sterke en zwakke kanten liggen, en je te focussen op wat je nog niet weet. Dit is niet alleen (maar zeker) slim om te doen om tijd te besparen, het zorgt er ook voor dat je de lessen kunt kijken met specifieke vragen in je achterhoofd. Dit zorgt ervoor dat je een stuk sneller (en leuker) leert dan wanneer je gewoon video voor video gaat kijken, zonder specifieke vragen.

Khan Academy heeft niet alleen uitstekende pakketten voor het leren van Statistiek, Calculus en Lineaire Algebra, maar nog veel meer! Onder andere een hoop meer Wiskunde, van tot tien tellen tot Multivariabele Calculus. Maar ook Ondernemen, Economie, Computer Science, Natuurkunde, noem het maar!

En dankzij het systeem met mastery points en levels voelt het leren bijna aan alsof je een computer spel aan het spelen bent. Je kunt ook badges verdienen en hulp krijgen en bieden op de community pagina. Een echte aanrader dus voor iedereen die geïnteresseerd is in leren, en het niet erg vindt om dat gratis, samen en op een leuke manier te doen. Maar dat is alles voor nu.

Tot de volgende keer!

AlphaStar

Update: Nog een geweldige analyse van de prestatie van AlphaStar kun je hier vinden. Misschien is deze AI nog geweldiger dan ik al dacht!

Hallo wereld,

Vandaag ga ik het hebben over de nieuwste creatie van Google’s DeepMind: AlphaStar. AlphaStar is een AI die afgelopen maand 2 professionele StarCraft II spelers elk met 5-0 heeft verslagen. Echter, na een kleine aanpassing in het programma wist de laatste van de twee spelers, MaNa, nog een wedstrijd terug te winnen. Desalniettemin was de prestatie van AlphaStar indrukwekkend.

DeepMind had al eerder professionele spelers verslagen in strategische spellen. AlphaGo had de topspelers van het bordspel Go al verslagen, en ook de schaak- en shogi-wereld konden niet op tegen DeepMind’s AlphaZero. OpenAI, een non-profit opgericht door Elon Musk en Sam Altman, versloeg in 2017 al een professionele speler in het real-time actie spel Dota 2 in een 1vs1 wedstrijd.

AlphaStar is echter de eerste AI die het voor elkaar heeft gekregen om een professionele speler te verslaan in een spel zo complex als StarCraft II. Een real-time-strategy game (RTS) met eindeloos veel manieren om het te spelen, waarvan slechts een zeer beperkt aantal effectief zijn. Het team van AlphaStar beweert op de blog-pagina dat AlphaStar won omdat het superieur was in zowel kleinschalig (micro) als grootschalig (macro) strategisch beslissing maken. Echter, na het zien van de demonstratie en een aantal analyses van de herhalingen ben ik het daar niet helemaal mee eens.

Persoonlijk ben ik van mening dat hoewel de macro van AlphaStar zeker indrukwekkend is, de micro de reden is waarom het in staat is om te winnen van een profspeler zoals MaNa. Dat is goed te zien in deze analyse van de video. Wel moet ik toegeven dat AlphaStar zijn macro strategie goed aanpast aan zijn superieure micro vaardigheden, door middel van bijvoorbeeld het kiezen van de meest geschikte units om mee te manoeuvreren, Stalkers en Phoenixs.

Wie ben ik om daar een uitspraken over te doen? Ik ben geen AI-expert, ik ben niet eens een StarCraft II speler. Maar, ik ben een mens met een brein, en af en toe gebruik ik het ook. Ik heb ook een heleboel casts gezien van professionele StarCraft II wedstrijden (vraag me niet waarom), en natuurlijk de demonstratie en een aantal analyses van de wedstrijden van AlphaStar zelf. Ook weet ik op basis van eigen onderzoek en experimentatie wel het een en ander over AI af. Ik verzoek je echter om mijn uitspraken op hun inhoud te beoordelen, niet op mijn achtergrond. Mocht je op basis van die inhoud concluderen dat deze uitspraken idioot (of geniaal) zijn dan hoor ik het graag.

Maar, de reden dat ik dit bericht schrijf is niet om te oordelen of AlphaStar zijn wedstrijden tegen MaNa eerlijk won. Ik denk dat een eerlijkere versie van AlphaStar zeker interessant zou zijn voor StarCraft spelers, maar niet per se voor de mogelijkheden van AI. Wat echt interessant is om hier op te merken is dat AlphaStar, zelfs met de beperkingen die het opgelegd gekregen had om het eerlijk te maken, in staat was om professionele spelers te verslaan! Nu al! Een spel met zoveel complexiteit dat het onmogelijk is om alle verschillende strategieën in alle verschillende situaties uit te rekenen.

Hoe heeft DeepMind dat gedaan? Door een combinatie van supervised learning (onder toezicht leren) en een speciale implementatie van reinforcement learning (leren door beloningen) genaamd de AlphaStar league.

In de supervised learning fase wordt het neurale netwerk getrained door het observeren van herhalingen van spellen tussen menselijke spelers. Dit stelt AlphaStar in staat om in korte tijd een competitief niveau te bereiken. In een spel zoals StarCraft zijn er enorm veel (1026 werd genoemd in een van de analyses) manieren zijn om het spel alleen al te beginnen, laat staan om het van begin tot eind te spelen. Zonder deze instructie zou AlphaStar er waarschijnlijk lang over doen om er achter te komen wat het moet doen om het spel te spelen, laat staan om het te winnen.

Vervolgens wordt het resultaat van deze fase gekopieerd en gemuteerd, en spelen deze verschillende “agents” tegen elkaar in een gesimuleerd toernooi, de AlphaStar league. De winnaars komen steeds verder in dit toernooi en op basis van kleine aanpassingen en de introductie van nieuwe agents worden ze dan stap voor stap verbeterd. Hierbij werden een aantal technieken toegepast om er voor te zorgen dat deze verbetering naar wens plaats kon vinden, maar daar kun je het beste meer over lezen op de blog. Het eindresultaat dat tegen MaNa speelde was een groep van 5 van die agents die elk het equivalent van 200 jaar real-time StarCraft ervaring hadden!

Wat betekent dit nu voor de toepassingen in de echte wereld? Nou, DeepMind heeft hier bewijs gegeven dat de combinatie van supervised en reinforcement learning in staat is om problemen op te lossen met enorme complexiteit. De overwinning over de schaakwereld was een heel ander verhaal, hierbij werd alleen een AI gecreëerd die in principe niets anders was dan een hele sterke schaak rekenmachine. De supervised versie alleen was niets anders dan een copycat van de strategieën die al door mensen toegepast worden.

Maar AlphaStar is meer dan dat, AlphaStar is een methode die gebruikt kan worden om niet alleen de menselijke capaciteit voor het oplossen van complexe problemen te evenaren, maar zelfs te ontstijgen. En hoe sterker de rekenkracht van onze computers zal worden, hoe groter de mogelijkheden van de AI die ermee gecreëerd wordt.

In een van de analyse wordt dan ook de grap gemaakt dat AlphaStar de eerste voorloper is van SkyNet. Nu denk ik zelf niet er ooit iets zo barbaars en inefficiënt in het uitroeien van de mensheid zal ontstaan als SkyNet, maar er zijn zeker risico’s waar we ons van bewust moeten zijn. Maar, er zijn natuurlijk ook een hele hoop positieve toepassingen te bedenken.

Op dit moment hebben we bijvoorbeeld al een begin gemaakt in het creëren van zelf rijdende auto’s. Hoewel die programma’s statistisch gezien al betrouwbaarder zijn dan mensen zelf, maken ze af en toe nog steeds verschrikkelijke fouten wanneer ze gepresenteerd worden met onbekende situaties. Situaties waar mensen zich met gemak aan zouden kunnen aanpassen, maar waar AI met beperkte rekenkracht niet weet hoe het er mee om moet gaan.

Dit is dan ook de reden, of een van de redenen, dat MaNa in staat was om de laatste wedstrijd tegen AlphaStar te winnen. Hij vond een exploit, een tactiek waar AlphaStar niet op voorbereid was, en totaal niet effectief mee wist om te gaan. In de toekomst is het dan ook de zaak om de mogelijkheid van deze exploits uit te sluiten, zeker in de echte wereld. Met meer onderzoek en meer rekenkracht is het waarschijnlijk mogelijk om dit te bereiken. En zelf rijdende auto’s zijn slechts een van de mogelijke toepassingen van AI. Waarom niet een AI die zelf rijdende auto’s ontwerpt, bijvoorbeeld? Waarom niet een AI die het geneesmiddel voor kanker ontdekt? Wie weet wat er mogelijk is met voldoende onderzoek en technologische vooruitgang.

Daar zullen we echter gauw genoeg achter komen denk ik. AI neemt op het moment zijn eerste stapjes, maar het tempo van vooruitgang lijkt eerder exponentieel dan lineair te zijn. Maar, dat is alles voor nu.

Tot de volgende keer!

Bronnen

 

 

De toekomst

Hallo wereld,

In het vorige bericht had ik behandeld wat een Data Scientist precies is. Nou ja, niet precies, want het bleek nogal een vaag begrip te zijn. En om aan de de gangbare omschrijving van Data Scientist te voldoen bleek ook niet al te eenvoudig te zijn. In dit bericht zal ik het dus hebben over waarom je überhaupt een Data Scientist zou willen worden.

Zoals de titel al suggereert ben ik van mening dat Data Science een grote rol gaat spelen in de toekomst. Die mening komt niet zomaar uit de lucht vallen. Ik heb het er al eerder over gehad: we hebben te maken met een overvloed van gegevens. Een groeiende overvloed van gegevens. Gegevens die wij als mens niet in staat zijn om zonder hulp van software te analyseren.

Wat voor software? Nou, tot nu toe moesten we genoegen nemen met programma’s zoals Excel en op basis van visualisaties zelf beslissingen maken. Maar met de vooruitgang van kunstmatige intelligentie worden onze mogelijkheden voor het analyseren van en reageren op data alleen maar groter en groter.

En dat is waar de Data Scientist in het spel komt.

Want, een Data Scientist is hoofdzakelijk een expert in het gebruiken van kunstmatige intelligentie voor het analyseren van data! Hoe meer de mogelijkheden van kunstmatige intelligentie toenemen en hoe meer de overvloed van gegevens toeneemt, hoe meer de behoefte aan Data Scientists toeneemt.

Dat is de theorie. Maar, laten we eens een kijken wat Google Trends denkt. Denkt Google Trends dat Data Science steeds belangrijker wordt? Laten we de ontwikkeling van het relatieve aantal zoekopdrachten over het onderwerp Datawetenschap eens bekijken.

Dit is natuurlijk geen hard bewijs. Dit zijn alleen maar het relatieve aantal zoekopdrachten. En wie weet wat die lijn nog gaat doen? Maar, het geeft toch een sterke indicatie dat Data Science interessant aan het worden is. En als je dat plot naast de trendlijnen van Big Data (onderwerp), kunstmatige intelligentie (onderwerp) en machinaal leren (studierichting, dit was de enige beschikbare optie), dan zou die theorie van mij ook best wel eens kunnen kloppen.

Opnieuw, geen hard bewijs. Maar toch opvallend, nietwaar?

Wat denken anderen erover? Nou…

Inside Big Data – Data Science Job Postings Are Growing Quickly

Forbes – LinkedIn’s Fastest-Growing Jobs Today Are In Data Science And Machine Learning

Op de Facebook-pagina van Data Science 101 vond ik ook een link naar een interessant artikel over de voorspellingen voor 2019. Deze pagina en blog staan vol met interessante links voor Data Scientists, dus ik zou er zeker eens naar kijken. Maar, dat is alles voor nu.

Tot de volgende keer!

Thank you Simple Programmer!

Hello world,

Today I want to give special thanks to Simple Programmer for creating the blogging course that helped me start my own blog. Seriously, I’m not sure when or if I had gotten around to it if it weren’t for this email course. I would seriously recommend it to anyone who wants to start his or her own blog. You can find the course here. Oh, and did I mention it is absolutely FREE?

As you may or may not have noticed already, I am writing this blog post in English. Somehow it just seemed fitting. The blogging course is in English, Simple Programmer is in English as well, and although John Sonmez, the founder of Simple Programmer, is a very smart man, I don’t think he has gotten around to learning Dutch yet.

About the course: This course will help you through the entire process of setting up your blog, from coming up with a theme to writing your first blog post to actually getting people to read it. Along the way you will get valuable advice for what to write about, how to come up with ideas and how to stay consistent.

About Simple Programmer: Well, you can go and look at the about page yourself here. But In short, it is a website dedicated to helping software developers, programmers and other IT professionals improve their careers and live better lives. But in all honesty, this website doesn’t just help programmers and IT professionals, it helps anyone who reads it. I have also followed John Sonmez on Youtube for quite some time now and he gives plenty of good free advice there too. So if you are interested in that, go check by clicking on any one of the previous links I so painstakingly scattered throughout this post for you.

I know I have given you a lot of links and praise now. It is because I really think it is good content, I am not getting paid for this or anything.

I wish!

That is all for now.

Until next time!