Machine Learning

Gegroet Dataridder,

In een eerder bericht had ik je al uitgelegd wat Datamining is. Dit keer ga ik het hebben over Machine Learning.

Misschien dat je je nu afvraagt wat het verschil is. Zelf was ik namelijk ook even in de war. Datamining en Machine Learning gaan toch immers allebei om het vinden van patronen in data? Om het omzetten van ruwe data naar nuttige informatie?

En dat is ook zo, maar bij Machine Learning gaat het erom om COMPUTERS te leren om nuttige informatie uit data te halen. Datamining zelf is een algemenere term, en hierbij kan het dus bijvoorbeeld ook gaan om het maken van grafieken en het interpreteren daarvan.

Maar, bij Machine Learning programmeer je de computer om zelf data om te zetten in nuttige informatie. Hierbij wordt dan gebruik gemaakt van de zogenaamde machine learning algoritmes (zoals bijvoorbeeld het random forest algoritme). Met behulp van deze algoritmes kan de computer leren van data, en op basis van het geleerde beslissingen en voorspellingen leren te maken.

Dit is een krachtig concept. Het stelt ons in staat om beslissingen en voorspellingen te automatiseren. Dat konden wij al eerder natuurlijk, dankzij computers over het algemeen, maar die moesten wij daarvoor expliciet programmeren. Maar met machine learning hoeft dat dus niet meer. De computer leert zelf om data gedreven beslissingen te maken.

Het is de techniek die centraal staat in de vierde industriële revolutie. Dankzij de eerste drie leven we nu in een tijd waarin we van de luxe kunnen genieten van geautomatiseerde spierkracht. Ook hebben we toegang tot een hele hoop informatie dankzij het internet. Maar nu gaan we dus een stap verder met geautomatiseerde denkkracht. Het is misschien wel het begin van de laatste uitvinding die we ooit hoeven te maken.

Hoe dan ook, de computer leert bij machine learning in principe om zelf een model te vormen. Een representatie/simplificatie van de werkelijkheid die gebruikt kan worden voor het maken van beslissingen en voorspellingen.

Er zijn nu al een heleboel nuttige toepassingen van machine learning. In onder andere dit artikel had ik er al een aantal genoemd. Maar, om er nog een paar te herhalen, denk bijvoorbeeld aan gepersonaliseerde reclames, spraakherkenning en zelfrijdende auto’s. Dit is echter slechts het begin, wie weet wat er nog meer mogelijk is?

Machine learning algoritmes kunnen vrij moeilijk zijn om te begrijpen. Mijn missie om mijn random forest algoritme te programmeren bleek een heel karwei, en dat was misschien nog een van de simpelere algoritmes. En bij de werking van neurale netwerken komt ook heel wat wiskunde kijken. Maar, natuurlijk is het erg belangrijk om deze algoritmes te begrijpen. Als je er een proefwerk over krijgt.

Grapje.

Deze algoritmes komen natuurlijk niet uit de lucht vallen en iemand moet ze bedenken en verbeteren. Leren hoe ze werken is dus zeker nuttig. Maar, wil je leren om zelf machine learning toe te passen dan is het vooral belangrijk dat je leert hoe je ze moet gebruiken. Moet je weten hoe een computer werkt om een blog artikel te lezen?

Natuurlijk niet.

Je moet alleen weten wat alle knoppen doen. En zo is het ook met machine learning. Je moet leren werken met de tools.  Leer gewoon programmeren met de machine learning libraries en je kunt aan de slag. Je hoeft ze niet helemaal van binnen en buiten te kennen om ze te gebruiken, en waarschijnlijk heb je daar ook de tijd niet voor want er zijn er een hele boel en er komt een hele boel wiskunde bij kijken.

Maar, het mag wel.

Persoonlijk vindt ik het heel leuk om te weten hoe dingen werken en ze zelf na te maken. Daarom heb ik ook mijn eigen versies gemaakt van een random forest en neuraal netwerk. En als jij dat ook leuk vindt, laat je dan zeker niet tegen houden om hetzelfde te doen. Op deze manier leer je jezelf tegelijkertijd programmeren aan en leer je wat over de werking van machine learning algoritmes. Een veel leukere manier van leren dan neuzen door een stapel stoffige tekstboeken, als je het mij vraagt.

Wil je echter leren machine learning modellen en applicaties te maken dan zul je toch echt aan de slag moeten gaan met de bestaande tools. Zelf ben ik inmiddels weer ver gevorderd met de Machine Learning Accelerator van EliteDataScience. Een prima keuze om machine learning met Python te leren, ben ik nog steeds van mening. Er zijn echter meer dan genoeg cursussen beschikbaar dus kijk ook zeker verder.

Maar ja, dat is alles voor nu.

Tot de volgende keer!

 

 

 

Data Science Build

Een van mijn favoriete bezigheden in het verleden was het spelen van Skyrim. In dit spel kun je je character build compleet zelf bepalen. Je kan spelen als een mage, warrior, thief of hybrid en zelfs daarbij kun je nog oneindig veel variëren met de skills waar je je op focust.

Echter, wil je in Skyrim succes hebben dan is het niet zo’n goed idee om alles tegelijk te doen. Tuurlijk, de sterkste Dragonborn is de Dragonborn die het allemaal kan, maar met zoveel verschillende skills duurt het helaas veel te lang als je alles tegelijk doet.

Niet alleen dat, de vijanden schalen met je level. Dus, als jij je levels te dun spreidt over alle verschillende vaardigheden dan eindig je uiteindelijk met met een Dragonborn die nergens goed in is en compleet ingemaakt wordt door alles wat hij tegenkomt.

De andere kant die je op kunt gaan is het jezelf specialiseren in slechts een enkele skill. Dit werkt al een stuk beter dan wanneer je alles tegelijk probeert te doen, zolang je je maar specialiseert op een skill waarmee je daadwerkelijk kunt winnen, oftewel damage doen. En het is waar, een pure Destruction mage met stagger lock is een gevaarlijke tegenstander waar veel vijanden in Skyrim lastig mee om kunnen gaan.

Een puur offensieve two handed warrior is ook een gevaarlijke tegenstander, maar raakt al gauw in de problemen omdat hij in de buurt moet komen van de tegenstander om damage te doen. Hierdoor krijgt hij ofwel zelf al snel teveel damage om te overleven, of kan hij niet eens damage doen omdat zijn tegenstander vliegt en hem van een afstand tot een hoopje as reduceert.

Maar, ook de Destruction mage raakt in de problemen wanneer hij in een gevecht terecht komt met meerdere boogschutters die allemaal in staat zijn om hem met een pijl uit te schakelen aangezien hij totaal geen armor heeft.

De volgende logische stap is dan ook om ervoor te zorgen dat je ook defensieve kwaliteiten hebt. Als je dood bent houdt het immers allemaal op, en meer verdediging geeft meer tijd om damage te doen en te reageren op lastige situaties. Een build met slechts een offensieve en een defensieve kwaliteit is al een stuk robuuster en doet het bijzonder goed in de meeste situaties.

Maar, zelfs zo’n build komt nog steeds situaties tegen waar hij niet goed mee om kan gaan, en waar de toevoeging van slechts een enkele skill al een wereld van verschil had kunnen maken! Echter, wat je ook toe voegt, er zullen altijd gaten blijven bestaan. Tenzij je alles toe voegt, in welk geval je weer overal slecht in bent.

Wat heeft dit nu allemaal te maken met Data Science?

Nou, Data Science is net zoals Skyrim: er zijn teveel vaardigheden om allemaal in een keer te leren. Er is te weinig tijd om het allemaal te leren, en je concurrentie zal je voorbij schieten als je het probeert.

De enige manier om een kans te maken is door jezelf te specialiseren!

Het is waar, door jezelf te specialiseren zul je jezelf automatisch diskwalificeren voor een groot aantal Data Science vacatures. Maar, je zult jezelf ook bijzonder geschikt maken voor het vervullen van een klein maar fijn aantal vacatures en projecten die precies de vaardigheid vereisen die jij bezit.

Dit is natuurlijk voorwaardelijk aan het kiezen van een specialiteit die daadwerkelijk het gewenste resultaat behaald. In de echte wereld ben je echter altijd op de een of andere manier onderdeel van een team. Als jij het juiste team kan vinden dan maakt het niet uit hoe klein jouw specialisme is op zichzelf. Als het een waardevol onderdeel is van het gehele proces, dan is het een nuttig specialisme.

Dat heet teamwork.

Kun jij bijvoorbeeld alleen data vanuit een database met SQL verzamelen in een csv bestand, dan is dat mogelijk een heel nuttige vaardigheid. Echter, de kans is groot dat je het moeilijk zult vinden om een team te vinden dat op zoek is naar een specialisme dat zo specifiek is. Al is het niet onmogelijk als jij jezelf genoeg kan onderscheiden van de concurrentie door er absurd goed in te zijn.

“I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times.” – Bruce Lee

Echter, het is waarschijnlijk praktischer als jij wat excellentie op geeft in het maken van csv bestanden en je bijvoorbeeld specialiseert in het maken van machine learning modellen.

Natuurlijk komt er een stuk meer kijken bij een succesvol machine learning project en het bereiken van een data driven bedrijf. Wat is het waard om te modelleren? Waar haal je de data vandaan? Hoe breng je het in de praktijk? Dat zijn allemaal vragen die ook belangrijk zijn en een hoop aandacht en expertise vragen. Bovendien zijn er nog veel meer dingen belangrijk bij het realiseren van een data driven bedrijf, zoals bijvoorbeeld A/B testing.

Maar, deze vaardigheid kan zeker een waardevolle toevoeging zijn voor veel bedrijven. En dit is natuurlijk slechts één voorbeeld van de vele mogelijke builds die je je maar kunt bedenken! Maar, wat je ook doet, probeer niet alles tegelijk te doen, of je zult nooit resultaten behalen.

Het is beter om slechts een skill te trainen dan na te denken over hoe je hem het beste kan aanvullen dan om alle skills tegelijk te oefenen en compleet ingemaakt te worden door elke mudcrab die je tegen komt.

Bedenk een build voor jezelf.

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!

Accelerator

Hallo wereld,

Vorige week ben ik dan toch eindelijk over de streep getrokken; ik heb geld geïnvesteerd in mijn educatie! Tot nu toe had ik, zoals ik al zei op de Over Dataridder pagina, alles gewoon gratis en voor niets van het internet af gevist. Maar, na het volgen van een webinar van EliteDataScience was ik dan toch verkocht; ik heb de Machine Learning Accelerator cursus aangeschaft.

Sindsdien heb ik hem tijdens bijna al mijn zelfstudie sessies tot dusver helemaal verslonden. En tot nu toe ben ik zeer positief, want deze cursus lijkt echt te doen wat hij belooft.

En wat belooft hij dan?

Nou, het is een cursus gericht op beginnende tot ‘intermediate’ Data Scientists die hun leerproces willen versnellen. Het is volgens EliteDataScience (net zoals volgens mij, overigens) heel goed mogelijk om alles zelf te leren. Maar, het nadeel daarvan is vooral dat het een langzaam en moeizaam proces kan zijn, zoals ik zelf ook al gemerkt heb. Het is niet zozeer dat de informatie niet te vinden is, maar vooral juist dat er TEVEEL informatie te vinden is! Hierdoor zie je al snel door de bomen het bos niet meer.

Deze cursus richt zich echter op het aanleren van de fundamentele vaardigheden voor de Data Scientist, met behulp van een van de meest gebruikte professionele Data Science tools: Jupyter Notebook, met Python.

De FUNDAMENTELE vaardigheden.

Dat is heel belangrijk, want hierdoor raak je niet afgeleid en leer je de kern van het Data Science proces aan, waardoor je de gereedschappen hebt die je bij vrijwel elk project nodig zal hebben. Maar, het is zeker niet zo dat het zo erg versimpeld is dat je zelf van alles er bij moet leren om er iets mee te kunnen doen. Je leert echt alles wat je nodig hebt voor je eerste projecten. En je leert het beste in context, door het doen van projecten, en deze cursus brengt je op een goed niveau om daar mee te beginnen.

Althans, dat is de belofte.

Natuurlijk heb ik deze cursus pas een week gevolgd en ben ik nog niet eens op de helft. Maar, ik heb al wel een aardig overzicht van wat ik in dit programma allemaal ga leren. Ik heb nu de eerste module (‘Cornerstone’) afgerond en ben nu een kei met Jupyter Notebook, maar dat is slechts het begin.

Het beste van dit programma is wel dat er een grote nadruk ligt op het uitvoeren van oefeningen. Hierdoor leer je je de vaardigheden echt aan, in plaats dat je ze alleen aan kijkt. En je wordt ook gestimuleerd om zelf met de principes te experimenteren en er over na te denken. Ik kreeg er via het webinar ook gratis het certificatie pakket bij. Mooi voor op je CV. Tot slot is er ook nog de mogelijkheid om vragen te stellen als je er niet uit komt.

Wel zijn er best een aantal kleine foutjes in de cursus. Maar die vallen toch in het niet bij de waarde die dit programma in mijn ogen heeft. Het heeft mijn leerproces in ieder geval al een stuk versneld. Ik zou hem aanraden.

Maar, dat is alles voor nu.

Tot de volgende keer!

 

Eindeloos

Hallo wereld,

Vandaag ga ik het hebben over een aantal toepassingen van Data Science. Ik had het al eerder gehad over voorbeelden als Target, zelf rijdende auto’s, AlphaStar en een algoritme dat kanker kan classificeren aan de hand van medische foto’s. Maar, dat waren slechts een paar van de toepassingen die Data Science vandaag de dag al kent. In dit bericht ga ik er zoveel mogelijk noemen om jullie een idee te geven van wat er allemaal mogelijk is. Wie weet dat jullie er zelf nog meer ideeën van krijgen. De mogelijkheden zijn eindeloos.

Photo by Philipp Birmes from Pexels
SciSports

SciSports is een sport analyse bedrijf dat voornamelijk actief is in de voetbalwereld. Het ontwikkelt data analyse systemen die coaches in staat om spelers te selecteren op basis van analyses en voorspellingen aan de hand van prestatiegegevens. Een beetje verouderd maar nog steeds interessant artikel over SciSports kun je hier vinden.

CAS

Het Criminaliteits Anticipatie Systeem stelt de politie in staat om hun mankrachten strategischer in te zetten aan de hand van geografische voorspellingen over criminaliteit. Het systeem werkt het beste voor de kleinere, vaker voorkomende misdaden zoals woninginbraak. Het heeft met succes de criminaliteitscijfers in een aantal Nederlandse steden significant weten te verminderen. En predictive policing (voorspellend politiewerk) is slechts een van de manieren waarop data science toegepast wordt in steden.

Claims Management Systeem

Het Claims Management Systeem en FuN (Fraude en Naselectie) systeem stellen verzekeraars in staat om automatisch claims te inspecteren op visluchtjes. Wees gewaarschuwd.

Real Time Analytics

Ben je ook altijd zo over de zeik over de vertraging bij de NS? Nou, met behulp van Real Time Analytics proberen zij dit te beperken en de reizigerservaring zoveel mogelijk te verbeteren. Aan de hand van (real time) gegevens analyse proberen zij hun middelen zo strategisch mogelijk in te zetten en nieuwe oplossingen te bedenken.

Dynamic Pricing

Als webwinkel automatisch je prijzen laten aanpassen aan de hand van informatie verzameld over het web? Als supermarkt automatisch je prijzen laten aanpassen aan vraag en aanbod? Het kan allemaal.

Algemeen
  • (Google) Internet Search
  • Spraakherkenning
  • Beeldherkenning
  • Gericht adverteren
  • Gamen
  • Business Intelligence
  • Logistiek
  • Etc.
Meer leren

Dat is alles voor nu.

 

Tot de volgende keer!

Run Forest Run!

Hallo wereld,

Vandaag kan ik met trots aankondigen dat mijn Random Forest applicatie af is! Ik moet toegeven, ik begon te twijfelen of deze dag ooit nog zou komen. Maar, de aanhouder wint.

Het was echter niet de bedoeling om alleen een Random Forest te maken. De bedoeling was om hem te vergelijken met die van de scikit-learn library. In het bijzonder de applicatie van de EliteDataScience tutorial. Om dat te kunnen doen moest ik nog wat extra aanpassingen maken. Ten eerste moest de data verdeeld worden in een training- en testset. Vervolgens moest alle data gestandaardiseerd worden. Daarnaast moesten er ook nog wat statistische gegevens berekend worden om de prestatie van het algoritme te peilen.

Dit heb ik dan (onder andere) gedaan voor een random forest met 50 bomen met maximale diepte van 20 en een sample grootte van 100. Dat wil zeggen, er zijn 50 beslissingsbomen gemaakt met maximaal 20 lagen van vertakkingen, die gegroeid zijn op basis van 100 willekeurig geselecteerde gegevensrijen uit de trainingset. Daarnaast werden dan ook nog voor elk van die bomen slechts willekeurig 3 kwart van de kolommen geselecteerd. Dit zorgt voor extra variatie tussen de bomen. Deze bomen doen dan elk hun voorspelling en de voorspelling met de meeste stemmen wint.

Het resultaat is een model dat met succes de data van de rode wijn laadt en modelleert, met een r2-score van 0.31 (vs 0.47) en een mean-squared-error van 0.5 (vs 0.33). Ter herhaling, de r2 score geeft aan hoe goed de fit van het model is. De mean-squared-error geeft aan hoe nauwkeurig het model is. Oftewel, mijn model is een slechtere fit en minder nauwkeurig. Dit was echter te verwachten, aangezien mijn model niet automatisch getuned wordt en ik de hyperparameters willekeurig gekozen heb.

Daarnaast heb ik ook de nauwkeurigheid van het model laten uitrekenen, welke 0.67 was. Niet al te slecht dus, het raadt het 2 van de 3 keer goed. Voor het sk-learn model is dit echter niet direct uit te rekenen aangezien deze in tegenstelling tot mijn model geen categorische maar numerieke voorspellingen maakt. Hierdoor zijn alle voorspellingen automatisch niet exact juist, en moet ik dus de afgeronde waardes gebruiken. Als ik dat doe, krijg ik verrassend genoeg een nauwkeurigheid van slechts 0.69. Slechts 2 procent nauwkeuriger dan mijn eigen model!

Hoe dan ook is mijn missie geslaagd. Ik heb mijn eigen Random Forest algoritme gemaakt, en het vergeleken met het model van de EliteDataScience tutorial. Hiermee heb ik niet alleen veel geleerd over de werking van het Random Forest algoritme, ik heb ook mijn vaardigheid met Python enorm verbeterd!

De code kun je hier vinden. Ook heb ik de winesnobloader aangepast om de nauwkeurigheid uit te rekenen. In de toekomst zal ik misschien wat dieper ingaan op de werking en/of wat tutorials geven voor het maken van deze en mijn andere applicaties. Op het moment heb ik echter een probleem met mijn geluidsopname-kwaliteit, dus hoe ik dat ga doen weet ik nog niet. Maar, dat is alles voor nu.

Tot de volgende keer!

 

Worstelen met bomen

Hallo wereld,

Mijn missie om een random forest te maken met Python bleek een stuk lastiger dan ik aanvankelijk had gedacht. Maar, ik heb het nog niet op gegeven. En, hoewel ik er de afgelopen maand een beetje teveel omheen heb gedraaid ben ik er nog steeds mee bezig geweest. En vooral de afgelopen week heb ik weer wat vooruitgang gemaakt.

Na het maken van mijn eerste versie voor een beslissingsboom algoritme had ik namelijk een video met een link naar de voorbeeldcode gevonden op Youtube. In dit voorbeeld wordt ook een beslissingsboom met Python gemaakt, maar de programmeur pakt het toch allemaal net wat beter aan dan ik zelf deed. Het belangrijkste verschil is dat hij gebruikt maakte van recursie, dus ik besloot opnieuw te beginnen en ook een beslissingsboom met recursie te maken. Ik had hierbij het voornemen om alleen de informatie in de video te gebruiken en de voorbeeldcode te negeren.

En, dit was me redelijk goed gelukt, maar toen ik de beslissingsboom net zoals in mijn vorige applicatie probeerde te tekenen raakte ik in de problemen. De bomen werden succesvol gemaakt, wat ik kon zien door het resultaat in tekst te printen, maar om hem (recursief) te tekenen, dat wilde me maar niet lukken. Ondanks mijn vele pogingen.

Als je zelf ervaring hebt met het werken met grote lappen code dan weet je misschien wel hoe moeilijk het kan zijn om een groot project weer op te pakken nadat je er een tijd niet aan gewerkt hebt. Je bent vergeten wat alles ook alweer precies doet, en wat je precies nog allemaal moest doen. Als je dan niet de tijd neemt om je code weer grondig te bestuderen alsof je hem voor het eerst ziet dan kan je veel tijd verspillen. Niets wil werken, je snapt niet waarom, en je staart met frustratie en wanhoop naar je grote lap met code en vraagt je af of je niet beter opnieuw kan beginnen.

Uiteindelijk heb ik dan toch maar de moeite genomen om mijn code weer opnieuw te bestuderen. Regel voor regel. Functie voor functie. En bij al deze functies erbij gezet wat ze ook alweer precies deden. Hierdoor had ik eindelijk weer een goed begrip van hoe alles precies ook alweer werkte en was de code niet zo intimiderend meer.

En toen heb ik toch ook maar de voorbeeldcode erbij gepakt en kwam ik erachter dat daarbij niet eens de moeite werd gedaan om de boom te tekenen. In plaats daarvan werd de boom wel heel netjes met recursie geprint en gebruikt voor het maken van voorspellingen. Deze methodes heb ik dan maar aangepast en aan mijn programma toegevoegd.

Het resultaat is een efficiënte, overzichtelijke en werkende applicatie voor het maken van classificatie (maar geen regressie) bomen. Mocht je vergeten zijn wat dat betekent, het houdt in dat de boom in staat is om data in categorieën te plaatsen, maar nog niet in staat is om (exacte) numerieke voorspellingen te doen.

Aanvankelijk dacht ik regressie nodig zou hebben voor de wijndata, maar nadat ik de moeite had genomen om de data te onderzoeken kwam ik erachter dat er maar vijf verschillende cijfers voor de wijnkwaliteit waren in de gehele dataset: 3 tot en met 8. Dus, het enige wat nu nog te doen staat is het implementeren van deze beslissingsboom in een random forest algoritme. En de resultaten te vergelijken met die van de Random Forest Wijnproever zoals die op EliteDataScience geïmplementeerd was. Zou moeten lukken.

Hoe dan ook ben ik al ver gekomen tijdens het werken aan deze beslissingsboom. Mijn aanvankelijke doel voor dit project was het leren begrijpen en maken van random forests. Tot mijn eigen verbazing las ik zelf in mijn eerste bericht bij dit project terug dat ik nog niet eens van plan was om een Data Scientist te worden op dit punt. Maar, uiteindelijk verschoof het hoofddoel van dit project naar het leren programmeren met Python voor Data Science.

En, ik heb een hele hoop over Python geleerd tijdens het maken van deze beslissingsboom. Het zelf kunnen maken van een random forest is echter niet meer mijn belangrijkste leerdoel, het is slechts een project voor het oefenen met Python. Uiteindelijk is het belangrijker dat ik leer te werken met de libraries van Python voor het analyseren van data en het trainen van machine learning algoritmes. En daar zal ik dan ook na dit project mee verder gaan.

Maar, 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