In de vorige blog hebben we voor het eerst kennis gemaakt met de principes van Machine Learning en de data-preparatie stappen die voor de data-analyse plaatsvinden. Nu duiken we dieper in wat we noemen “supervised Machine Learning (ML)”, en meer specifiek; Classificatie en Regressie. Met ML krijgen we krachtige inzichten uit een dataset, we kunnen de computer vragen om onze data in hapklare, begrijpelijke stukken te presenteren. Machine Learning maakt het mogelijk om automatisch te leren, om voorspellingen te doen op basis van het verleden. Maar waarom zouden we een computer vertrouwen om de toekomst te voorspellen, en niet onszelf? Kan een machine echt leren? En waarom maken we gebruik van Machine Learning?
Simpelweg omdat in de meeste gevallen, aangezien we het over data hebben, ML veel accurater is dan menselijk-ontwikkelde regels. Omdat het een automatische methode is om vanuit data patronen en trends te identificeren en op zoek te gaan naar hypotheses die de data verklaren.
Hoewel mensen vaak niet in staat zijn om heel snel calculaties te maken of heel erg precies te werk te gaan (in ieder geval niet zo snel en precies als een computer), zijn “wij” wel goed in staat om gemakkelijk voorbeelden te classificeren. Maar wanneer we een enorme hoeveelheid data tot onze beschikking hebben, hebben we ML nodig.
Terug naar de klas(ificatie...)
Met classificatie gebruiken we Machine Learning om data te categoriseren. Zo kan bijvoorbeeld een beeldherkenningsalgoritme classificeren of er een afbeelding van een hond of een kat getoond wordt.
Net als regressie, waar we het zo over gaan hebben, is classificatie een vorm van machine learning dat we “supervised” noemen. Supervised leren, waarin we gebruik maken van wiskunde, betekent dat je een algoritme leert hoe het “input” moet omzetten naar “output”. We hebben een groep van variabelen X als input en een variabele Y als output. De functie zou zijn Y=f(X). Simpel gezegd proberen we de mapping functie zo goed als mogelijk te schatten zodat wanneer er nieuwe input is, we de output kunnen voorspellen. We noemen dit supervised (vrij vertaald; onder toezicht) omdat dit proces van leren vergelijkbaar kan zijn aan een leraar die onder toezicht zijn of haar klas kennis overbrengt. We weten al wat de correcte uitkomst is (output Y), het algoritme blijft nieuwe output genereren totdat de gewenste resultaten worden bereikt. Dan zit het leren er op en is de kennis overgebracht.
Samenvattend; supervised machine learning betekent dat al onze data gelabeled is.Het algoritme leert voorspellingen te doen gebaseerd op de input.
Terug naar het voorbeeld van het classificeren van een afbeelding van een kat of een hond. We moeten een keuze maken welk algoritme onze data het best beschrijft. Door verschillende algoritmes te proberen komen we er achter welke het beste past bij de dataset. ML kijkt naar fracties van data. Elke fractie heeft een aantal eigenschappen. Classificatie plaats een onbekend deel van de data in een bekende categorie. Een onbekende afbeelding van een dier moet dus worden geplaatst in een bekende categorie; een hond of een kat.
De eerste stappen naar het bouwen en leren van je machine
Om een voorspellend model te ontwikkelen aan de hand van ML moeten we onze data in twee sets verdelen. Een trainingset en een scoringset. De trainingset is de set met afbeeldingen van honden en katten welke we al gelabeld hebben. We weten de output dus al en gebruiken dit om ons algoritme te leren hoe het de afbeeldingen moet verdelen in de twee categorieën. De scoringset gebruiken we om te kijken hoe ons algoritme zich staande houdt, oftewel; hoe accuraat het is.
Om het nog iets duidelijker te maken geef ik nog een voorbeeld met honden en katten. De afbeelding hieronder is onze training set. De plusjes zijn de honden, de minnetjes de katten.
Het idee is om de optimale manier van het classificeren van onze data te vinden. Het optimale algoritme dat in staat is om honden en katten van elkaar te scheiden. Het algoritme is als het ware de lijn die de plusjes van de minnetjes scheidt. Maar hoe tekenen we die lijn? Welke criteria nemen we in overweging?
Onderstaande afbeeldingen laten drie verschillende manieren zien om de data te scheiden. Oftewel; drie verschillende algoritmes.
Links zien we een lage “training error” en een simpel classificatiemodel. Het is simpel omdat het gemakkelijk is om output Y te destilleren uit input X, een lineaire functie Y= aX + b. De foutmarge is heel laag, omdat er maar één kat als hond is aangemerkt.
De middelste afbeelding laat wederom een simpel classificatiemodel zien, het is weer een rechte lijn, maar onze training error is te hoog. We zijn niet in staat om de data op een correcte wijze in twee groepen te verdelen, zeker als je dit vergelijkt met het eerste algoritme.
De rechter afbeelding laat precies 0 fouten zien, maar een wel te gecompliceerd algoritme. De grafiek van een eerste graads polynoom is een rechte lijn; Y = aX +b. De grafiek van een tweede graads polynoom is een eenvoudige curve, met de functie Y= aX² +bX + c. Met dit in je achterhoofd… stel je even voor hoe complex de functie is van de afbeelding links…
Het komt er op neer dat we op zoek zijn naar goede data, een lage (acceptabele) foutmarge en een ongecompliceerde classificatiemodel.
Is je machine de beste leerling van de klas?
Na het kiezen van het meest geschikte algoritme zijn we klaar om onze data te gaan scoren. Dit doen we op basis van de training die we in de vorige stappen hebben gedaan. De machine heeft geleerd van die training en is klaar voor het echte werk.
Dit betekent dat we de resultaten kunnen gaan evalueren. Hoe accuraat of precies was het algoritme…?
Accuratesse en precisie zijn twee verschillende dingen. Accuratesse is de hoeveelheid van correct geclassificeerde fracties van data. Precisie is hoe dicht de waardes bij elkaar liggen.
Terug naar onze case; accuratesse is meestal de eerste factor waar we naar kijken wanneer we de classificator evalueren. Maar wanneer de test data ongebalanceerd is, of wanneer er meer interesse is in de performance, is accuratesse niet de beste factor om de effectiviteit van de classificator te bepalen. Om die reden kijken we dus ook naar additionele factoren.
Wanneer we algoritmes evalueren zijn er vier mogelijke uitkomsten. Het antwoord op dit soort problemen is óf Positive, óf Negative. Dus of we hebben voorspeld dat de uitkomst Positive was en dat hebben we goed of fout (twee mogelijke scenario’s) of we hebben voorspeld dat iets Negative was en ook dat kunnen we weer goed of fout hebben (en ook dat zijn dus weer twee mogelijke uitkomsten).
Dus in totaal; vier mogelijke uitkomsten. True Positive (TP), False Positive (FP), True Negative (TN) en False Negative (FN). Op basis van deze resultaten kunnen we de accuratesse en de foutmarge meten, de precisie en recall, squared error etc. Maar daar ga ik nu niet dieper op in.
Nu we alles hebben berekend kunnen we het optimale algoritme bepalen. Of beter gezegd; we kiezen het algoritme dat het best in staat is de data te beschrijven. De keuze in optimalisatietechnieken is key voor de efficiëntie van de analist en helpt ook om de classificatiemodel te bepalen in het geval dat de evaluatie functie meer dan één optimum heeft. Maar pas op voor valse hoop! Een slim algoritme is geen garantie voor het beste resultaat. Betere data verslaat een goed algoritme iedere dag van de week!
Voorspel je nummers zonder dat je er spijt van krijgt
Een andere vorm van supervised learning is regressie, de voorspelling van een numerieke waarde. We proberen echte waardes te schatten op basis van continue variabelen. Het zelfde concept als bij classificatie; we hebben een trainingset en een scoringset. Wat het model leert van de trainingset wordt toegepast op de scoringset.
Het verschil hier is dat het algoritme niet komt met “het is een hond of kat” maar met een numerieke waarde. Het evaluatieproces is iets anders dan bij classificatie, omdat we dus op zoek zijn naar een numerieke waarde. Om te checken of het algoritme goed genoeg is moeten we weten hoe “ver” onze voorspelde waarde af ligt van de daadwerkelijke waarde. Dit meten we door gebruik te maken van de “Mean Absolute Error”, “Mean Squared Error” en de “Root Mean Squared Error”.
Om het concept van regressie beter te begrijpen heb ik deze afbeelding gevonden:
Zie regressie als de trendlijn die is toegevoegd aan de rechterzijde. De trendlijn is als het ware ons algoritme. In dit specifieke voorbeeld kunnen we, omdat het algoritme een rechte lijn is, met nieuwe input X output Y voorspellen door gebruik te maken van de functie van een rechte lijn; Y = aX + b.
De hoeveelheid data neemt toe; de modellen moeten meegroeien!
Machine Learning wordt al gebruikt in ons dagelijks leven, zonder dat we het misschien doorhebben. Online shopping, “anderen bekeken ook dit”, Google Adwords, de suggesties die Netflix geeft en nog veel meer. Wat dacht je van shoppen op Amazon? Als je ergens naar zoekt zorgt het algoritme ervoor dat je meteen suggesties krijgt voor relevante producten. Het algoritme leert van de zoekopdrachten.
Hoewel de hoeveelheid data die we op ons afkrijgen niet zal afnemen, zullen we in toenemende mate in staat zijn om fatsoenlijk om te gaan met deze data en zal het een essentiele eigenschap worden voor mensen die in een data gedreven industrie werkzaam zijn om voorspellend te kunnen zijn.
Met machine learning kijken we naar fracties van data. Elke fractie is samengesteld op basis van een aantal eigenschappen. Door deze eigenschappen te koken zijn we in staat een vleugje van de toekomst te zien. Door het juiste algoritme te kiezen, dat het best past bij onze data, zorgen we er voor dat onze resultaten behulpzaam zijn en zorgen voor ongekende inzichten. Maar vergeet niet dat een “middelmatig” algoritme met veel data áltijd zal winnen van een perfect algoritme met weinig data. Het gaat dus niet alleen om het beste algoritme maar ook om de kwaliteit en het volume van de data!
Tot snel!
Nu we bijna een compleet beeld hebben van data analyse en hoe je een fatsoenlijk voorspellend model kunt bouwen, wordt het tijd om het een en ander te gaan visualiseren. Hou m’n blog in de gaten voor de volgend editie waarin we dieper ingaan op de kunst van het visualiseren!
In de tussentijd ben ik benieuwd wat jouw beeld is van Machine Learning en het creëren van algoritmes. Ik lees het graag in de comments!
Deze post maakt onderdeel uit van onze Data Analytics practice.