Data Science Build – Deel 2

“I fear the man who has practised one kick 10,000 times, but the man who has practiced 10,000 kicks once scares the shit out of me.

And don’t even get me started on the man who has practiced 10,000 kicks twice!”

– Sam Dee

Gegroet Dataridder,

Zou je niet willen dat alles in het leven zwart of wit zou zijn? Dat er geen tegenstrijdigheden waren en alle vragen één antwoord hadden?

 

Jammer dan.

 

Dit is de echte wereld en in de echte wereld is alles grijs.

Nou ja, figuurlijk gesproken dan.

In mijn eerdere bericht vertelde ik je dat je beste kans om een Data Scientist te worden specialisatie was. In dit bericht ga ik je compleet in de war brengen en alles in dat vorige bericht compleet tegenspreken.

En bevestigen.

Heb je wel eens Skyrim gespeeld? Of een andere RPG misschien? Heb je weleens geprobeerd om een build te maken die slechts een of twee skills gebruikt?

 

Hoe was dat?

 

Effectief. Meestal. Soms. Een beetje.

Ik had het er al over in mijn eerdere bericht. Het is niet altijd handig om een specialist te zijn. In sommige gevallen is jouw specialisme compleet nutteloos. De zwaardvechter die een draak probeert te bestrijden komt er al gauw achter dat zwaarden niet veel schade doen als je tegenstander vliegt. En ze zijn ook niet echt nuttig om drakenvuur van je gezicht af te houden.

 

Maar niet alleen dat. Het was ook nogal saai, nietwaar?

 

Elk gevecht is hetzelfde:

“HAK! HAK! HAK!

– Warrior

 

“POW! POW! POW!”

– Mage

 

“PEW! PEW! PEW!”

– Archer

 

Dat moet toch beter kunnen?

 

En ik heb het niet alleen over mijn geluidseffecten. Waarom geen meer veelzijdige build? Een build die zich kan aanpassen aan elke situatie? Een build waarmee elk gevecht een nieuw avontuur is?

Een GENERALIST.

Zoals ik al zei heeft de generalist echter zijn eigen problemen. Overal slecht in, nergens goed in. Maar het is mogelijk om je build veelzijdiger te maken. Flexibeler te maken. Interessanter te maken. En het is in mijn mening ook zeker aan te raden om dat te doen.

Maar, hoe doe je dat zonder je build compleet waardeloos te maken?

Nou, ten eerste is het van belang om vaardigheden te kiezen die elkaar aanvullen in plaats van vaardigheden die precies hetzelfde doen op een iets andere manier. Ga geen build maken met zowel de two handed als one handed weapon skill.

Logisch.

Maar, one handed en destruction doen in principe ook hetzelfde: schade aanbrengen. Ze doen het echter op verschillende manieren en zijn nuttig in verschillende situaties. Hierdoor word de build opeens een stuk flexibeler.

En dat wil je dus ook doen met Data Science. Je wilt vaardigheden kiezen die elkaar aanvullen. Niet vaardigheden die elkaar in de weg zitten.

Het lijkt dan op het eerste gezicht ook een slecht idee om Data Science te leren en tegelijkertijd ook proberen om een Front-End Web Developer te worden.

Maar, wat als je je specialiseert in A/B testing en ook in staat bent om zelf verschillende webpagina’s te bouwen? Dat zou dan misschien weer WEL nuttig kunnen zijn, maar alleen als je om de een of andere reden niet in staat of bereid bent om iemand anders het bouwen van de webpagina’s voor je te laten doen.

Ingewikkeld allemaal hè?

Nou het wordt nog ingewikkelder. Als mens zijn wij namelijk geëvolueerd als generalisten. Onze grootste kracht en zwakte was ons vermogen om bijna overal slecht in te zijn. We hadden geen warme vacht. We hadden geen scherpe tanden of klauwen. We hadden geen vleugels.

We hadden bijzonder weinig.

Maar, we waren wel nieuwsgierig, slim en creatief. We waren constant op onderzoek, aan het experimenteren en aan het uitvinden. Hierdoor konden wij ons aanpassen aan vrijwel elke situatie.

We hadden geen vacht nodig want we maakten kleren. We hadden geen klauwen nodig want we maakten speren. We hadden geen vleugels nodig want we maakten bogen.

En we waren ook sociaal. Langzaam maar zeker waren wij in staat om samen te werken in steeds grotere aantallen. Maatschappijen ontstonden en groeien nog altijd groter en groter. En in een maatschappij is het mogelijk om jezelf te specialiseren in het maken van kleren en niet om te komen van de honger. Specialisatie werd geboren en verheven.

Maar, diep van binnen zijn wij nog steeds allemaal een stelletje generalisten. Nieuwsgierige kunstenaars die verslaafd zijn aan afwisseling. En als we de hele dag hetzelfde moeten doen, dan worden wij daar bijzonder depressief van. Variatie is daarom niet alleen nuttig voor flexibiliteit, maar ook voor je mentale gezondheid.

Laten we nu even terug gaan naar de man die 10,000 trappen één keer oefende. Heb je wel eens nagedacht over wat nou echt het effect zou zijn van zo’n training? Denk je niet dat deze man niet afschuwelijk sterke en behendige benen zou ontwikkelen? Denk je niet dat hij afschuwelijk onvoorspelbaar en flexibel zou zijn? En denk je niet dat hij een stuk meer plezier heeft gehad in het leven dan de man die een trap 10,000 keer geoefend heeft? En een stuk minder last van RSI?

Het lijkt erop dat ik mijzelf compleet tegen gesproken heb, maar dat is niet zo. Wat ik in mijn eerdere bericht had gezegd was ook allemaal waar. Het is echter allemaal wat ingewikkelder dan het op het eerste gezicht lijkt.

Maar, dat is geen tegenstrijd. Dat is complexiteit. Het lijkt alleen maar tegenstrijdig, omdat we het met ons kleine brein niet allemaal tegelijkertijd kunnen begrijpen.

 

Denk daar maar eens over na.

 

Ik hoop dat ik je niet al te veel in de war heb gebracht. In tegenstelling tot wat ik eerder zei was dat echt niet mijn bedoeling. Maar het leven is nou eenmaal niet altijd zo simpel als we zouden willen.

Is het nu mijn advies om een trap 10,000 keer te oefenen? Nee. 10,000 trappen een keer te oefenen? Ook niet. De beste oplossing zit er waarschijnlijk ergens tussen in.

Specialisatie is een krachtig en noodzakelijk principe. Maar, vergeet niet dat het bijzonder veel makkelijker en leuker is om 10,000 trappen TWEE keer te oefenen dan een trap 20,000 keer, en dat een high kick bijzonder nutteloos is tegen een dwerg met een machinegeweer.

Dat is alles voor nu,

 

Tot de volgende keer!

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!