Dit e-boek is voorzien van een verborgen, persoonlijk watermerk. Het verspreiden of openbaar maken van dit e-boek is niet toegestaan.

This e-book contains a hidden and personal watermark. Distribution is prohibited.

Inhoud in vogelvlucht

Inleiding

1 Inleiding in machine learning

Hoofdstuk 1: De waarheid over AI

Hoofdstuk 2: Leren in het tijdperk van big data

Hoofdstuk 3: Een blik op de toekomst

2 Gereedschap voor machine learning

Hoofdstuk 4: Een R-distributie installeren

Hoofdstuk 5: Met RStudio in R coderen

Hoofdstuk 6: Een Python-distributie installeren

Hoofdstuk 7: Coderen in Python met Anaconda

Hoofdstuk 8 : Andere hulpmiddelen voor machine learning

3 Aan de slag met wiskundige beginselen

Hoofdstuk 9: De wiskunde achter machine learning doorgronden

Hoofdstuk 10: De juiste curve zoeken

Hoofdstuk 11: Machine learning valideren

Hoofdstuk 12: Eenvoudige algoritmen

4 Slimme gegevens en big data inzetten

Hoofdstuk 13: Gegevens voorbereiden

Hoofdstuk 14: Gebruikmaken van gelijkenissen

Hoofdstuk 15: Op eenvoudige wijze met lineaire modellen werken

Hoofdstuk 16: De complexiteit van neurale netwerken

Hoofdstuk 17: Een stap verder met Support Vector Machines

Hoofdstuk 18: Ensembles van zelflerende algoritmen

5 Machine learning op echte problemen toepassen

Hoofdstuk 19: Afbeeldingen classificeren

Hoofdstuk 20: Meningen en gevoelens classificeren

Hoofdstuk 21: Producten en films aanbevelen

6 Het deel van de tientallen

Hoofdstuk 22: Tien pakketten voor machine learning

Hoofdstuk 23 : Tien manieren om modellen voor machine learning te verbeteren

Inhoud

Inleiding

DEEL 1 INLEIDING IN MACHINE LEARNING

HOOFDSTUK 1: De waarheid over AI

Verder kijken dan de hype

Dromen van elektrische schapen

De geschiedenis van AI en machine learning

Verkennen wat machine learning voor AI kan betekenen

De doelen van machine learning

Machine learning op de gebruikte hardware afstemmen

Fantasieën over AI herkennen

Populaire toepassingen van AI en machine learning

Praktische toepassingen van AI en machine learning

Nuttig en alledaags zijn

De relatie tussen AI en machine learning

De specificaties van AI en machine learning

Onderscheid maken tussen creativiteit en techniek

HOOFDSTUK 2: Leren in het tijdperk van big data

Een definitie van big data

Bronnen met big data

Een nieuwe gegevensbron bouwen

Bestaande gegevensbronnen gebruiken

Bronnen met testgegevens zoeken

De rol van statistiek bij machine learning

De rol van algoritmen begrijpen

Definiëren wat algoritmen doen

De vijf belangrijkste technieken

De rol van training

HOOFDSTUK 3: Een blik op de toekomst

Nuttige technieken voor de toekomst

De rol van machine learning in robots

Machine learning in de gezondheidszorg

Slimme systemen voor verschillende behoeften

Machine learning in een industriële omgeving

De rol van nieuwe processors en andere hardware

Nieuwe werkmogelijkheden met machine learning ontdekken

Voor een machine werken

Met machines werken

Machines repareren

Nieuwe taken voor machine learning verzinnen

Nieuwe omgevingen voor machine learning ontwikkelen

Potentiële problemen van toekomstige technieken vermijden

DEEL 2 GEREEDSCHAP VOOR MACHINE LEARNING

HOOFDSTUK 4: Een R-distributie installeren

Een R-distributie die geschikt is voor machine learning

R bij Windows installeren

R bij Linux installeren

R bij Mac OS X installeren

De datasets en voorbeeldcode downloaden

De datasets die bij dit boek worden gebruikt

Het codearchief

HOOFDSTUK 5: Met RStudio in R coderen

Algemene gegevenstypen

Met vectoren werken

Gegevens in lijsten ordenen

Met matrices werken

Een eenvoudige matrix maken

De vectorrangschikking wijzigen

Toegang tot individuele elementen

Rijen en kolommen benoemen

Meerdere dimensies gebruiken met arrays

Een eenvoudige array maken

Rijen en kolommen een naam geven

Een dataframe maken

Factoren begrijpen

Een eenvoudig dataframe maken

Interactie met dataframes

Een dataframe uitbreiden

Eenvoudige statistische taken

Beslissingen nemen

Met lussen werken

Lustaken uitvoeren zonder lussen

Met functies werken

Het gemiddelde en de mediaan bepalen

Gegevens in een grafiek zetten

HOOFDSTUK 6: Een Python-distributie installeren

Een Python-distributie voor machine learning kiezen

Anaconda ophalen

Enthought Canopy

Pythonxy

WinPython

Python bij Linux installeren

Python bij Mac OS X installeren

Python bij Windows installeren

De datasets en voorbeeldcode downloaden

Jupyter Notebook

Het codearchief

De datasets die bij dit boek worden gebruikt

HOOFDSTUK 7: Coderen in Python met Anaconda

Met getallen en logica werken

Variabelen toekennen

Rekenen

Gegevens met Booleaanse expressies vergelijken

Strings maken en gebruiken

Interactie met datums

Functies maken en gebruiken

Herbruikbare functies maken

Functies aanroepen

Met globale en lokale variabelen werken

Conditionele en lusopdrachten

Beslissingen nemen met de opdracht if

Uit meerdere opties kiezen met geneste beslissingen

Met for herhaalde taken uitvoeren

De opdracht while

Gegevens opslaan met sets, lijsten en tupels

Sets maken

Bewerkingen op sets uitvoeren

Lijsten maken

Tupels maken en gebruiken

Nuttige iterators definiëren

Gegevens met woordenboeken indexeren

Code in modules opslaan

Hoofdstuk 8 : Andere hulpmiddelen voor machine learning

De voorlopers SAS, Stata en SPSS

Terug naar school met Weka

Toegang tot complexe algoritmen met LIBSVM

Sneller dan snelst met Vowpal Wabbit

Visualisatie met Knime en RapidMiner

Big data inzetten met Spark

DEEL 3 AAN DE SLAG MET WISKUNDIGE BEGINSELEN

HOOFDSTUK 9: De wiskunde achter machine learning doorgronden

Met gegevens werken

Een matrix maken

Basisbewerkingen begrijpen

Matrixvermenigvuldiging uitvoeren

Een blik op geavanceerde matrixbewerkingen

Lineaire transformatie effectief gebruiken

Waarschijnlijkheden verkennen

Met waarschijnlijkheden werken

Voorwaardelijke waarschijnlijkheid en de stelling van Bayes

Het belang van statistiek

HOOFDSTUK 10: De juiste curve zoeken

Leren als optimalisatie beschouwen

Leren onder toezicht

Leren zonder toezicht

Ondersteund leren

Het leerproces

Kostenfuncties verkennen

Gradient descent

Updaten door minibatch en online

HOOFDSTUK 11: Machine learning valideren

Gegevens binnen en buiten de steekproef gebruiken

Generalisatie zoeken

De grenzen van vertekening

Rekening houden met de modelcomplexiteit

Oplossingen in balans houden

Leercurven weergeven

Trainen, valideren en testen

Gebruikmaken van cross-validation

Andere vormen van validatie

Cross-validation optimaliseren

Hyperparameters verkennen

Selectiebias en lekkage van gegevens vermijden

Pas op voor snooping

HOOFDSTUK 12: Eenvoudige algoritmen

De ongelofelijke perceptron ontdekken

De werking van de perceptron

De beperkingen van onscheidbaarheid leren kennen

Gulzige classificatiebomen

Resultaten voorspellen door gegevens te splitsen

Overwoekerde bomen snoeien

Een probabilistische aanpak

Naive Bayes doorgronden

De respons schatten met Naive Bayes

DEEL 4 SLIMME GEGEVENS EN BIG DATA INZETTEN

HOOFDSTUK 13: Gegevens voorbereiden

Gegevens verzamelen en opschonen

Ontbrekende gegevens repareren

Ontbrekende gegevens identificeren

De juiste vervangingsstrategie kiezen

Distributies transformeren

Zelf kenmerken maken

De noodzaak voor het maken van kenmerken begrijpen

Kenmerken automatisch laten maken

Gegevens comprimeren

Anomale gegevens beperken

HOOFDSTUK 14: Gebruikmaken van gelijkenissen

Gelijkenissen bij vectoren meten

Gelijkenis begrijpen

Afstanden berekenen voor het leren

Afstanden gebruiken om clusters te zoeken

Aannamen en verwachtingen controleren

De werking van het algoritme

Het algoritme K-Means tunen

De betrouwbaarheid van K-means testen

Met de convergentie van zwaartepunten experimenteren

Classificatie met KNN

De juiste k-parameter gebruiken

De k-parameter begrijpen

Met een flexibel algoritme experimenteren

HOOFDSTUK 15: Op eenvoudige wijze met lineaire modellen werken

Beginnen met het combineren van variabelen

Verschillende soorten variabelen combineren

Op waarschijnlijkheden overschakelen

Een binaire respons specificeren

Meerdere klassen verwerken

De juiste kenmerken raden

De uitkomst van kenmerken definiëren die niet samenwerken

Met selectie overfitting oplossen

Voorbeeld na voorbeeld leren

Gradient descent gebruiken

De verschillen van SGD

HOOFDSTUK 16: De complexiteit van neurale netwerken

De natuur imiteren en ervan leren

Vooruit met voorwaartskoppeling

Nog dieper het konijnenhol ingaan

Terugkeren met backpropagation

Met overfitting worstelen

Het probleem begrijpen

De zwarte doos openen

Inleiding in deep learning

HOOFDSTUK 17: Een stap verder met Support Vector Machines

Het scheidingsprobleem: een nieuwe aanpak

Uitleg over het algoritme

De wiskunde achter SVM’s

De problemen van niet-scheidbaarheid vermijden

Non-lineariteit toepassen

Een voorbeeld van de kerneltruc

De verschillende kernels ontdekken

Een voorbeeld van hyperparameters

Classificeren en schatten met SVM

HOOFDSTUK 18: Ensembles van zelflerende algoritmen

Beslisbomen gebruiken

Een bos met bomen samenstellen

De mate van belang begrijpen

Met bijna willekeurige schattingen werken

Adaboost bij predictors gebruiken

Gradient boosting machines

Hernieuwde kennismaking met gradient descent

Het gemiddelde van verschillende predictors gebruiken

DEEL 5 MACHINE LEARNING OP ECHTE PROBLEMEN TOEPASSEN

HOOFDSTUK 19: Afbeeldingen classificeren

Met een reeks afbeeldingen werken

Visuele kenmerken ophalen

Gezichten herkennen met Eigenfaces

Afbeeldingen classificeren

HOOFDSTUK 20: Meningen en gevoelens classificeren

Inleiding in natuurlijke taalverwerking

Begrijpen hoe computers lezen

Tekst verwerken en verbeteren

Basisverwerkingen

Tekstuele datasets van het web halen

Problemen met onbewerkte tekst oplossen

Classificatie gebruiken

Indelingstaken uitvoeren

Beoordelingen van e-commerce analyseren

HOOFDSTUK 21: Producten en films aanbevelen

De revolutie op het gebied van aanbevelingen

Beoordelingsgegevens downloaden

De dataset MovieLens doornemen

Door anonieme webgegevens navigeren

De beperkingen van beoordelingsgegevens beseffen

SVD inzetten

De oorsprong van SVD

Het nut van SVD begrijpen

SVD in actie

DEEL 6 HET DEEL VAN DE TIENTALLEN

HOOFDSTUK 22: Tien pakketten voor machine learning

Cloudera Oryx

CUDA-Convnet

ConvNetJS

e1071

GBM

Gensim

glmnet

randomForest

SciPy

XGBoost

Hoofdstuk 23 : Tien manieren om modellen voor machine learning te verbeteren

Leercurven bestuderen

Cross-validation correct gebruiken

De juiste foutmeting gebruiken

De beste hyperparameters zoeken

Meerdere modellen testen

Het gemiddelde van modellen

Modellen stapelen

Zelf kenmerken maken

Kenmerken en voorbeelden selecteren

Op zoek naar meer gegevens

Over de auteurs

John Mueller is freelanceschrijver en technisch redacteur. Het schrijven zit hem in het bloed, iets wat wordt aangetoond door de meer dan 100 boeken en 600 artikelen die hij tot nu toe heeft geschreven. De onderwerpen variëren van netwerken tot kunstmatige intelligentie en van databasebeheer tot ‘heads-down’ programmeren. Actuele titels gaan over Python voor beginners, Python voor datawetenschappers en over MATLAB. Zijn vaardigheden als technisch redacteur hebben meer dan 63 auteurs geholpen om de inhoud van hun manuscripten te verbeteren. John heeft in die hoedanigheid voor meerdere tijdschriften gewerkt, aan consulting gedaan en certificatie-examens opgesteld. Lees zijn blog op http://blog.johnmuellerbooks.com/.

Als John niet achter een computer zit, is hij in de tuin te vinden, waar hij houthakt of gewoon van het buitenleven geniet. John maakt wijn, bakt koekjes en houdt van breien. Als hij niets anders om handen heeft, maakt hij zeep en kaarsen die hij graag cadeau geeft. Je kunt John bereiken via John@JohnMuellerBooks.com. Hij heeft ook een website op http://www.johnmuellerbooks.com/. Neem er eens een kijkje en laat weten wat je ervan vindt.

Luca Massaron is datawetenschapper en marktonderzoeker die gespecialiseerd is in multivariate statistiek, machinaal leren en klantinzichten, met meer dan tien jaar ervaring in het oplossen van praktische problemen en het genereren van waarde voor belanghebbenden door het toepassen van logica, statistiek, gegevensanalyse en algoritmen. Hij is gepassioneerd over alles wat met gegevens en analyse te maken heeft en over het demonstreren van de potentie van datagestuurde kennisontdekking voor experts en leken. Luca is samen met John Mueller de schrijver van Kunstmatige intelligentie voor Dummies, Python for Data Science For Dummies en Algorithms For Dummies. Hij verkiest eenvoud boven onnodige duurdoenerij en is ervan overtuigd dat er bij machinaal leren veel kan worden bereikt door naar de basis terug te keren.

Johns opdracht

Dit boek is opgedragen aan Kevin en Claudia Smith, twee mensen die hun uiterste best hebben gedaan mij te steunen bij het schrijven en bij mijn pogingen zelfstandig te worden. Ze waren er altijd als ik ze nodig had.

Luca’s opdracht

Ik draag dit boek op aan mijn dochter Amelia, die deel uitmaakt van een generatie die het verschijnen van kunstmatige intelligentie gaat meemaken. Terwijl je opgroeit, hoop ik dat je in staat zult zijn je eigen leven vorm te geven en gelukkig zult zijn in deze verrassend aanpasbare wereld. Besef altijd dat zij die weet, haar eigen toekomst in handen heeft en doe altijd je uiterste best nog hoger te vliegen.

Johns dankwoord

Dank aan mijn vrouw Rebecca. Hoewel ze er niet meer is, begeleidt haar geest me bij elk boek dat ik schrijf en elk woord dat ik op papier zet. Zij geloofde in mij toen niemand anders dat deed.

Russ Mullen verdient dank voor zijn technische redactie van dit boek. Hij heeft veel bijgedragen aan de accuratesse en diepgang van het materiaal. Russ heeft heel veel aan de research voor dit boek bijgedragen door obscure webadressen op te sporen en nieuwe producten en ideeën aan te dragen.

Mijn agent Matt Wagner verdient lof omdat hij mij aan deze opdracht heeft geholpen en zorg draagt voor alle details waar schrijvers geen aandacht voor hebben. Ik ben dankbaar voor zijn assistentie. Het is goed om te weten dat er altijd hulp in de buurt is.

Een aantal mensen heeft dit boek helemaal of ten dele gelezen om me te helpen bij mijn benadering, de codevoorbeelden getest en mij in het algemeen van welkom commentaar voorzien. Deze onbetaalde vrijwilligers hebben mij op talloze manieren geholpen. Ik waardeer met name de inspanningen van Eva Beattie, Glenn A. Russell, Alberto Boschetti, Cristian Mastrofrancesco en David Wind, die mij van commentaar voorzagen, het hele boek hebben gelezen en zich onzelfzuchtig aan dit project hebben gewijd.

Tot slot wil ik mijn dank overbrengen aan Katie Mohr, Susan Christophersen en de rest van de redactie- en productiestaf voor hun onmisbare steun tijdens het schrijven.

Luca’s dankwoord

Allereerst veel dank aan mijn familie, Yukiko en Amelia, voor hun steun, opoffering en engelengeduld tijdens de lange dagen, weken en maanden dat ik in beslag werd genomen door het werken aan dit boek.

Ik bedank al mijn collega-datawetenschappers voor hun hulp en voortdurende uitwisseling van ideeën en meningen. Mijn dank gaat met name uit naar Alberto Boschetti, Giuliano Janson, Bastiaan Sjardin, Zacharias Voulgaris, Cristian Mastrofrancesco, Dario Solari, Michele Usuelli, David Kofoed Wind, Kai Londenberg en Abhishek Thakur.

Ten slotte nog dank aan de hele redactie- en productiestaf bij Wiley voor hun geweldige professionalisme en de steun tijdens alle fasen van het schrijven van dit boek.

Inleiding

Het begrip machine learning heeft tegenwoordig allerlei verschillende betekenissen, vooral nadat het witte doek in beeld is gekomen. Films als Ex Machina hebben de verbeelding van bioscoopbezoekers over de hele wereld geprikkeld en machine learning afgeschilderd als iets wat het eigenlijk niet is. Natuurlijk leven de meesten van ons in de werkelijkheid, waar machine learning echt ongelooflijke taken uitvoert die niets te maken hebben met androïden die de Turingtest kunnen doorstaan (waarbij ze zich als mensen moeten voordoen). Machine learning voor Dummies biedt je een beeld van machine learning in de praktijk en laat je kennismaken met de verbluffende prestaties die je met deze technologie echt kunt bereiken. De taken die je met machine learning gaat uitvoeren, lijken misschien een beetje alledaags in vergelijking met de filmversie, maar tegen de tijd dat je dit boek hebt gelezen, besef je dat deze huis-tuin-en-keukentaken van invloed kunnen zijn op bijna elk aspect van het dagelijks leven van alle mensen op deze planeet. Kortom, machine learning is een ongelooflijke technologie, maar niet op de manier die sommige mensen zich hadden voorgesteld.

Over dit boek

Het belangrijkste doel van Machine learning voor Dummies is om je te laten weten wat machine learning nu voor je kan betekenen en wat je er in de toekomst van kunt verwachten. Je hoeft geen computerwetenschapper te zijn om dit boek te gebruiken, ook al bevat het veel codevoorbeelden. Je kunt elke willekeurige achtergrond hebben waarbij de nadruk op wiskunde ligt, want dat is de manier waarop machine learning in dit boek wordt benaderd. Je krijgt concrete resultaten te zien van het gebruiken van specifieke algoritmen die met big data werken om tot nuttige oplossingen van problemen te komen. De nadruk ligt hierbij op nuttig, want machine learning biedt het vermogen om op een compleet nieuwe manier een breed scala aan taken uit te voeren.

In dit boek wordt het belang van het gebruiken van de juiste hulpmiddelen benadrukt. Hierbij worden zowel Python als R voor verschillende taken ingezet. Deze twee talen hebben speciale voorzieningen die ze erg nuttig maken voor machine learning. Met Python heb je bijvoorbeeld toegang tot een enorme reeks bibliotheken die je alles laten doen wat je maar kunt verzinnen en zelfs enkele dingen die het voorstellingsvermogen te boven gaan. R biedt een gebruiksgemak dat maar weinig talen kunnen evenaren. In Machine learning voor Dummies lees je dat beide talen hun eigen, specifieke toepassingen hebben en maak je kennis met voorbeelden die laten zien waarom je een van beide talen beter voor een specifieke toepassing kunt gebruiken dan de ander.

Je ontdekt ook enkele interessante technieken in dit boek. Het belangrijkste is dat je niet alleen de algoritmen te zien krijgt die de taken uitvoeren; je krijgt ook uitleg over de manier waarop ze werken. In tegenstelling tot veel andere boeken stelt Machine learning voor Dummies je in staat om te begrijpen wat je doet, maar dan zonder noodzaak eerst in de wiskunde te promoveren. Nadat je dit boek hebt gelezen, heb je een degelijke basiskennis over machine learning waarop je je kennis kunt uitbreiden met taken op jouw specifieke gebied.

Misschien maak je je zorgen over de keuze van een programmeeromgeving, maar ook hierover vind je informatie in dit boek. Je krijgt uitgebreide installatie-instructies voor zowel RStudio als Anaconda, de IDE’s (Integrated Development Environments) die in dit boek worden gebruikt. Bovendien krijg je een overzicht van de beginselen van het programmeren in R en Python (met referenties). De bedoeling hiervan is dat je zo snel mogelijk aan de slag kunt en dat de voorbeelden eenvoudig genoeg zijn, zodat de code geen struikelblok voor het leren vormt.

In dit boek wordt gebruikgemaakt van de volgende conventies:

Tekst die je moet typen, wordt in monospace weergegeven.

Woorden om in te voeren die ook cursief zijn, worden gebruikt als tijdelijke aanduidingen en moeten vervangen worden door iets wat bij jou van toepassing is. Bij Typ je naam en druk op Enter, vervang je je naam dus door je eigen naam.

Termen die in de tekst gedefinieerd worden, zijn ook cursief weergegeven. Dit houdt in dat je geen andere bronnen nodig hebt voor de benodigde definitie.

Een reeks opdrachten die je moet volgen, zijn gescheiden door een speciale pijl, zoals bij Bestand ➪ Nieuw bestand, waarbij je eerst op Bestand klikt en vervolgens de optie Nieuw bestand kiest.

Wie ben jij?

Misschien kun je je niet voorstellen dat we iets over je hebben aangenomen, want we hebben elkaar immers nog nooit ontmoet! Het blijft natuurlijk gokken, maar we hebben enkele veronderstellingen gedaan als uitgangspunt voor dit boek.

De eerste veronderstelling is dat je ervaring hebt met het platform dat je wilt gebruiken, want dit boek biedt geen uitleg over de verschillende besturingssystemen voor computers. In hoofdstuk 4 vind je wel installatie-instructies voor RStudio en in hoofdstuk 6 lees je hoe je Anaconda installeert. Om zo veel mogelijk informatie over R en Python met betrekking tot machine learning te kunnen bieden, worden in dit boek geen platformspecifieke problemen besproken. Je moet echt weten hoe je apps installeert en gebruikt en hoe het besturingssysteem van je computer werkt als je met dit boek aan de slag gaat.

Dit boek biedt geen opfriscursus wiskunde. Je krijgt inderdaad veel voorbeelden van complexe wiskunde, maar de nadruk ligt op het gebruiken van R en Python bij machine learning om analysetaken uit te voeren. Je krijgt wel veel uitleg over verschillende algoritmen, zodat je hun werking kunt doorgronden. In de hoofdstukken 1 en 2 wordt uitgelegd wat je precies moet weten om dit boek succesvol te gebruiken.

In dit boek gaan we er ook van uit dat je toegang hebt tot internet. Je vindt talloze verwijzingen naar online materiaal dat je helpt de verschillende onderwerpen beter te begrijpen. Maar deze extra bronnen zijn natuurlijk alleen nuttig als je er daadwerkelijk toegang toe hebt.

De pictogrammen in dit boek

Tijdens het lezen van dit boek stuit je op pictogrammen in de kantlijn die interessant materiaal markeren (of je juist ergens voor waarschuwen). Dit is wat de pictogrammen betekenen:

De tips in dit boek zijn tijdbesparende technieken of verwijzingen naar bronnen om uit te proberen, zodat je maximaal profijt van R of Python hebt of taken voor machine learning efficiënter uitvoert.

Het is niet onze bedoeling op overbezorgde ouders te lijken, maar toch is het belangrijk om zaken te vermijden die met dit pictogram zijn gemarkeerd. Doe je dit niet, dan werkt je app misschien niet zoals bedoeld, krijg je verkeerde antwoorden bij schijnbaar waterdichte vergelijkingen, of (in het slechtste geval) verlies je gegevens.

Zie je dit pictogram, denk dan aan een geavanceerde tip of techniek. Misschien vind je deze weetjes te saai voor woorden, maar ze kunnen wel de oplossing zijn om een programma draaiend te houden. Maar je mag deze informatie overslaan als je wilt.

Ook als je niets uit een bepaald hoofdstuk of gedeelte haalt, is het verstandig om het materiaal dat met dit pictogram is gemarkeerd te onthouden. Deze tekst bevat meestal een essentieel proces of informatie die je nodig hebt om met R of Python te kunnen werken, of om een specifieke taak succesvol uit te voeren.

RStudio en Anaconda zijn geschikt om een breed scala aan algemene taken uit te voeren. Maar bij machine learning moet je ook specifieke taken uitvoeren, waarvoor je extra materiaal van internet moet downloaden. Dit pictogram geeft aan dat de volgende tekst een verwijzing bevat naar een online bron waarvan je op de hoogte moet zijn of die je moet installeren om de voorbeelden te laten werken.

Bij dit boek

Dit boek is niet het eindpunt voor je kennismaking met R, Python en machine learning; het is nog maar het begin. We bieden ook online inhoud om dit boek flexibeler te maken en beter aan je behoeften te laten voldoen. Hierdoor kunnen we jouw vragen beantwoorden en je laten weten welke invloed updates van R, Python of de bijbehorende invoegtoepassingen op de inhoud van dit boek hebben. Je krijgt toegang tot de volgende extra’s:

Updates. Alles is voortdurend aan verandering onderhevig. Tijdens het schrijven hebben we geen glazen bol kunnen gebruiken om de toekomst te voorspellen. Vroeger betekende dit dat het boek dan verouderde informatie bevatte en minder nuttig werd, maar nu vind je updates bij dit boek op www.dummies.nl/downloads.

Naast deze updates vind je blogberichten met antwoorden op lezersvragen en demonstraties van nuttige boekgerelateerde technieken op http://blog.johnmuellerbooks.com/.

De bestanden bij dit boek. Er zijn niet veel mensen die code graag handmatig invoeren als het niet nodig is. De meeste lezers besteden hun tijd liever aan het werken met R, Python en het bestuderen van machine learning. Gelukkig kun je de voorbeelden in dit boek ook van internet downloaden, zodat jij je volledig op het lezen van dit boek kunt richten. Je vindt deze bestanden op www.dummies.nl/downloads.

Wat nu?

Het is tijd om aan je avontuur met machine learning te beginnen! Als machine learning compleet nieuw voor je is, begin je gewoon bij hoofdstuk 1 en doorloop je het boek in een tempo dat jou in staat stelt zo veel mogelijk van het materiaal in je op te nemen. Lees zowel over R als over Python, want dit boek gebruikt beide talen bij de voorbeelden.

Als je een beginner bent die zo snel mogelijk met machine learning aan de slag gaat, begin je bij hoofdstuk 4 in de wetenschap dat sommige onderwerpen misschien niet helemaal duidelijk zullen zijn. Heb je RStudio al geïnstalleerd, dan blader je hoofdstuk 4 alleen door. Als je Anaconda al hebt geïnstalleerd, kun je hetzelfde doen bij hoofdstuk 6. Om dit boek te gebruiken, moet je versie 3.5.x van R installeren. De in dit boek gebruikte Python-versie is 2.7.15. De voorbeelden werken hoogstwaarschijnlijk niet met versie 3.x van Python, want die biedt geen ondersteuning voor sommige bibliotheken die we gebruiken.

Lezers die al enige ervaring met R en Python hebben en de juiste versies al op hun computer hebben staan, kunnen leestijd besparen door rechtstreeks naar hoofdstuk 8 te gaan. Je kunt altijd nog naar eerdere hoofdstukken terugbladeren als je vragen hebt. Maar je moet wel begrijpen hoe elke techniek werkt voordat je met de volgende verdergaat. Elke techniek, elk codevoorbeeld en elke procedure biedt een belangrijke les; de kans bestaat dat je essentiële kennis mist als je te veel informatie overslaat.

1
Inleiding in machine learning

IN DIT DEEL . . .

Ontdek je hoe AI echt werkt en wat het voor je kan betekenen.

Leer je de betekenis kennen van de term big data.

Lees je over de rol van statistiek bij machine learning.

Ontdek je wat machine learning in de toekomst gaat brengen.

IN DIT HOOFDSTUK

De AI-hype met een korrel zout nemen

De droom van AI definiëren

AI en machine learning met elkaar vergelijken

Beseffen waar de techniek stopt en creativiteit begint

Hoofdstuk 1:
De waarheid over AI

Kunstmatige intelligentie, oftewel Artificial Intelligence (AI), speelt in het dagelijks leven een steeds belangrijkere rol door het succes van technologieën als Siri (https://www.apple.com/ios/siri). Zoek je in de stad naar het beste sushirestaurant of de kortste route naar het concertgebouw, dan is het zowel leuk als nuttig om tegen je smartphone te praten. Terwijl jij aan het praten bent, leert je smartphone meer over jouw unieke manier van spreken en begrijpt hij je verzoeken steeds beter. Het vermogen van een smartphone om jouw manier van spreken te leren kennen en te interpreteren is een voorbeeld van AI. Machine learning vormt een deel van de technologie die wordt gebruikt om dit mogelijk te maken. Je maakt tegenwoordig waarschijnlijk al beperkt gebruik van machine learning en AI zonder erover na te denken of het zelfs in de gaten te hebben. De mogelijkheid om met apparaten te communiceren en ervoor te zorgen dat ze daadwerkelijk doen wat je van plan bent, is een praktijkvoorbeeld van machine learning. Aanbevelingssystemen, bijvoorbeeld die van Amazon, tonen producten aan de hand van criteria zoals eerdere aankopen of producten die bij je huidige keuze aansluiten. Het gebruik van zowel AI als machine learning neemt in de toekomst alleen maar toe.

In dit hoofdstuk verdiep je je in AI en ontdek je wat het betekent vanuit verschillende perspectieven, inclusief hoe het je beïnvloedt als consument, wetenschapper of technicus. Je leest ook dat AI niet hetzelfde is als machine learning, al worden die twee in de media vaak door elkaar gehaald. Machine learning is echt wat anders dan AI, ook al zijn beide verwant.

Verder kijken dan de hype

Als een technologie belangrijker wordt, neemt ook de hype toe en AI kan zeker niet klagen over een tekort aan media-aandacht. Sommige mensen kijken niet alleen naar de wetenschappelijk aspecten, maar spelen ook op angstgevoelens in. Killerrobots, zoals in de film The Terminator, worden binnenkort echt niet populair. Je eerste echte ontmoeting met een AI-robot komt waarschijnlijker in de gezondheidszorg (https://magazine.good.is/articles/robots-elder-care-pepper-exoskeletons-japan) of als collega (https://www.computerworld.com/article/2990849/robotics/meet-the-virtual-woman-who-may-take-your-job.html). In werkelijkheid heb je al op een zeer alledaagse manier met kunstmatige intelligentie en machine learning te maken. Een van de redenen om dit hoofdstuk te lezen, is de hype als zodanig te herkennen en te ontdekken wat AI voor jou kan betekenen.

Misschien is het je weleens opgevallen dat de termen machine learning en AI, oftewel kunstmatige intelligentie, door elkaar worden gebruikt. Machine learning is een onderdeel van kunstmatige intelligentie, maar geen synoniem ervan. In dit hoofdstuk lees je wat de relatie tussen machine learning en AI is, zodat je beter begrijpt hoe je met dit boek deel gaat uitmaken van een technologie die vroeger alleen in sciencefiction voorkwam.

Zowel machine learning als AI hebben belangrijke technische componenten. Dit betekent dat je beide technologieën op basis van theorie (onderbouwde en geteste uitleg) kunt kwantificeren in plaats van alleen maar aan de hand van een hypothese (een voorgestelde verklaring voor een fenomeen). Bovendien hebben beide sterke wetenschappelijke componenten, die mensen in staat stellen concepten te testen en nieuwe ideeën te creëren over de manier waarop het denkproces tot uitdrukking kan worden gebracht. Ten slotte heeft machine learning ook een artistieke component, die een getalenteerde wetenschapper de gelegenheid biedt om uit te blinken. In sommige gevallen lijken AI en machine learning alle logica te tarten, waardoor alleen een echte artiest ze zoals verwacht laat functioneren.

INDERDAAD, VOLLEDIG AUTONOME WAPENS BESTAAN

We haasten ons om te melden dat er door duistere personen inderdaad volledig autonome wapens worden ontwikkeld, voordat lezers op het idee komen ons hier dissertaties over te sturen. Er staan uitweidingen over de ethische kant van AI in dit boek, maar we richten ons voornamelijk op de positieve, nuttige aspecten van AI die mensen helpen in plaats van ze te doden. Het meeste onderzoek naar kunstmatige intelligentie richt zich op positieve aspecten. Je vindt online meerdere bronnen over de voor- en nadelen van AI, zoals het volgende artikel in de Guardian: https://www.theguardian.com/technology/2015/jul/27/musk-wozniak-hawking-ban-ai-autonomous-weapons. Besef wel dat deze mensen ook niet zeker weten wat de toekomst van AI is.

Ook als je jezelf bang wilt maken, is er meer dan genoeg te lezen, bijvoorbeeld op de site http://www.reachingcriticalwill.org/resources/fact-sheets/critical-issues/7972-fully-autonomous-weapons, waar diepgaand op autonome wapens wordt ingegaan. Een website als Campaign to Stop Killer Robots (https://www.stopkillerrobots.org/) biedt extra informatie. We raden je aan de petitie tegen autonome wapens te tekenen op de site http://futureoflife.org/open-letter-autonomous-weapons/, want we hebben zulke wapens echt niet nodig.

Het is wel belangrijk om te beseffen dat er een verbod bestaat op ruimtewapens, chemische wapens en sommige laserwapens. De meeste landen beseffen dat ze niets oplossen. De kans is groot dat overheden volledig autonome wapens gaan verbieden omdat de bevolking moordende robots niet accepteert. Het komt erop neer dat in dit boek vooral aandacht wordt besteed aan de positieve aspecten van machine learning.

Dromen van elektrische schapen

Androïden (speciale robots die er menselijk uitzien en zich menselijk gedragen, zoals Data in Star Trek) en sommige soorten humanoïde robots (robots met menselijke eigenschappen die makkelijk van een mens te onderscheiden zijn, zoals C-3PO in Star Wars) zijn uithangborden voor AI geworden. Ze presenteren computers in een antropomorfe vorm die mensen kunnen begrijpen. Het is zelfs heel goed mogelijk dat je het verschil tussen menselijk en kunstmatig leven op een dag niet makkelijk meer ziet. Sciencefictionschrijvers als Philip K. Dick hebben dit lang geleden voorspeld en het lijkt nu mogelijk te worden. Het verhaal ‘Dromen androïden van elektrische schapen?’ gaat over het concept echter dan echt, een idee dat gebruikt wordt in de film Blade Runner (https://www.warnerbros.com/blade-runner). In de volgende paragraaf lees je hoe dicht moderne technologie in de buurt komt van de idealen van sciencefictionschrijvers en speelfilms.

Momenteel zijn robots levensecht, al heb je snel door dat je met een androïde te maken hebt. Video’s op internet laten zien dat het nog wel even zal duren voordat androïden niet meer van echte mensen te onderscheiden zijn. Kijk maar eens naar de Japanse robots op https://www.youtube.com/watch?v=MaTfzYDZG8c, https://www.youtube.com/watch?v=MaTfzYDZG8c en https://www.nbcnews.com/tech/innovation/humanoid-robot-starts-work-japanese-department-store-n345526. Een van de overtuigendste voorbeelden is Amelia (https://vimeo.com/154631312). Haar verhaal wordt door ComputerWorld verteld op http://www.computerworld.com/article/2990849/robotics/meet-the-virtual-woman-who-may-take-your-job.html. Het komt erop neer dat het waarschijnlijk technisch mogelijk is levensechte robots en androïden te maken, maar dat die nu nog niet bestaan.

De geschiedenis van AI en machine learning

Er zijn niet alleen antropomorfe redenen dat mensen de ultieme AI als een soort androïde zien. Als sinds de oude Grieken hebben mensen het over de mogelijkheid om een brein in een mechanisch lichaam te plaatsen. Een bekende mythe is de mechanische man Talos (http://www.ancient-wisdom.com/greekautomata.htm). Het feit dat de oude Grieken gecompliceerde mechanische apparaten hadden, waarvan er nog maar één bestaat (het Antikythera-mechanisme: http://www.ancient-wisdom.com/antikythera.htm), wijst erop dat hun dromen waarschijnlijk op meer dan alleen fantasie berustten. In de loop van de eeuwen hebben verschillende mensen het gehad over mechanische personen die tot denken in staat waren (zoals de Golem van Rabbi Judah Loew, https://www.nytimes.com/2009/05/11/world/europe/11golem.html).

AI is ontstaan uit de hypothese dat het mogelijk is om het denken te mechaniseren. Tijdens het eerste millennium werkten Griekse, Indiase en Chinese filosofen allemaal aan manieren om deze taak uit te voeren. Al in de zeventiende eeuw bespraken Gottfried Leibniz, Thomas Hobbes en René Descartes het potentieel om alle gedachten te rationaliseren als eenvoudige wiskundige symbolen. Ze kregen natuurlijk geen vat op de complexiteit van het probleem (en dit ontglipt ons tegenwoordig nog steeds, ondanks de vooruitgang waarover je in deel 3 van dit boek leest). Het idee van AI bestaat al heel lang, maar de implementatie ervan is relatief nieuw.

De moderne vorm van AI begon met Alan Turings publicatie van ‘Computing Machinery and Intelligence’ uit 1950. In dit artikel onderzoekt Turing hoe je kunt bepalen of machines in staat zijn tot denken. Dit artikel leidde tot het imitatiespel met drie spelers. Speler A is een computer en speler B is een mens. Beide proberen Speler C (een mens die Speler A noch Speler B kan zien) ervan te overtuigen dat ze een mens zijn. Kan Speler C niet consistent bepalen wie menselijk is en wie niet, dan wint de computer.

Een van de problemen van AI is te veel optimisme. Het probleem dat wetenschappers met AI proberen op te lossen, is waanzinnig ingewikkeld. In de jaren vijftig en zestig van de vorige eeuw waren wetenschappers er bijvoorbeeld van overtuigd dat er binnen 20 jaar intelligente apparaten zouden zijn. Machines deden immers allerlei ongelofelijke dingen, zoals het spelen van gecompliceerde spellen. AI boekt momenteel de grootste successen op gebieden als logistiek, datamining en medische diagnoses.

Verkennen wat machine learning voor AI kan betekenen

Machine learning maakt gebruik van algoritmen om enorme datasets te analyseren. Maar machine learning is nu nog niet in staat om het soort AI te bieden dat je in speelfilms ziet. Zelfs de beste algoritmen kunnen niet nadenken, zelfinzicht tonen of een eigen mening uiten. Machine learning is wel veel sneller in het uitvoeren van voorspellende analyses, waardoor mensen een stuk efficiënter kunnen werken. Momenteel voert AI dus analyses uit, maar moeten mensen hierna nog morele en ethische beslissingen nemen. In de paragraaf ‘De relatie tussen AI en machine learning’ verderop in dit hoofdstuk lees je meer over de manier waarop machine learning aan AI bijdraagt. Het komt erop neer dat machine learning het leerproces van AI voor zijn rekening neemt en dat komt natuurlijk niet in de buurt van de kunstmatige intelligentie die je in films te zien krijgt.

De belangrijkste reden dat sommige mensen leren en intelligentie door elkaar halen, is dat ze ervan uitgaan dat een apparaat dat beter in iets wordt (en dus leert) ook zelfbewust wordt (en intelligent). Maar deze zienswijze over machine learning is nergens op gebaseerd. Je ziet hetzelfde fenomeen als mensen denken dat een computer bewust problemen voor ze veroorzaakt. Maar een computer kent geen emoties en reageert dus alleen op de invoer die hij ontvangt en de instructies die een programma geeft om deze invoer te verwerken. Echte AI zal ooit ontstaan als computers eindelijk in staat zijn de slimme combinatie uit de natuur na te bootsen:

Genetica. Langzaam leren van generatie op generatie.

Onderwijs. Snel leren van georganiseerde bronnen.

Verkenning. Spontaan leren door middel van media en interactie met anderen.

De doelen van machine learning

Momenteel is AI op machine learning gebaseerd en verschilt machine learning wezenlijk van statistiek. Machine learning heeft natuurlijk een statistische basis, maar maakt andere aannamen dan statistiek doordat hun doelen verschillen. In tabel 1.1 vind je een vergelijking tussen machine learning en statistiek.

TABEL 1.1 Vergelijking tussen machine learning en statistiek

Machine learning op de gebruikte hardware afstemmen

Enorme datasets vergen enorme hoeveelheden geheugen. Helaas blijft het hier niet bij. Bij grote hoeveelheden gegevens en geheugen heb je ook processors met meerdere kernen en hoge snelheden nodig. Een van de problemen die wetenschappers proberen op te lossen, is bestaande hardware efficiënter te gebruiken. In sommige gevallen is het niet mogelijk om dagen te wachten op een resultaat van machine learning. Wetenschappers hebben soms snel antwoorden nodig, zelfs als het resultaat niet helemaal correct is. Maar investeringen in betere hardware vergen ook investeringen in betere wetenschap. In dit boek maak je kennis met de volgende aandachtspunten om je ervaringen met machine learning te verbeteren:

Een nuttig resultaat behalen. Je ontdekt dat je eerst een bruikbaar resultaat nodig hebt voordat je het kunt verfijnen. Bovendien kan het verbeteren van een algoritme te ver worden doorgevoerd, waardoor het resultaat erg kwetsbaar wordt (en misschien wel onbruikbaar buiten een specifieke dataset).

De juiste vraag stellen. Veel mensen ontvangen van machine learning niet de gewenste antwoorden omdat ze bij het verfijnen van hun algoritme vergeten om andere vragen te stellen. Bij een efficiënt gebruik van hardware is het soms nuttig om een stapje terug te doen en de vraag die je stelt onder de loep te nemen. Misschien stel je de verkeerde vraag; in zo’n geval kan zelfs de beste hardware het juiste antwoord niet geven.

Te veel waarde aan intuïtie hechten. Alle vragen voor machine learning beginnen als hypothese. Een wetenschapper gebruikt zijn intuïtie als uitgangspunt bij het ontdekken van het antwoord op een vraag. Mislukkingen komen meer voor dan succes tijdens het werken met machine learning. Je intuïtie voegt creativiteit aan machine learning toe, maar soms klopt je intuïtie niet en moet je je aannamen herzien.

Besef je eenmaal het belang van de omgeving op machine learning, dan ben je ook in staat om het belang in te zien van de juiste hardware en van de juiste balans om het gewenste resultaat te bereiken. Moderne systemen maken bij machine learning gebruik van GPU’s (Graphical Processing Units). GPU’s zorgen ervoor dat het proces een stuk sneller gaat. Het past niet in dit boek om gedetailleerd op GPU’s in te gaan; je leest er meer over op https://devblogs.nvidia.com/parallelforall/bidmach-machine-learning-limit-gpus/.

Fantasieën over AI herkennen

Net als bij veel andere technologieën zijn er zowel bij AI als machine learning speelse en fantasierijke toepassingen. Sommige mensen gebruiken machine learning bijvoorbeeld om foto’s in Picasso-achtige kunst om te toveren. Je leest hier meer over op https://www.washingtonpost.com/news/innovations/wp/2015/08/31/this-algorithm-can-create-a-new-van-gogh-or-picasso-in-just-an-hour/. Hier valt natuurlijk wel het een en ander op aan te merken. Ten eerste is het twijfelachtig of mensen dit soort kunstuitingen serieus nemen, want kunst bestaat niet alleen uit het maken van een interessante interpretatie van een bestaande voorstelling, maar meer uit de interpretatie van de kunstenaar zelf. Aan het eind van het artikel wordt erop gewezen dat de computer op dit punt alleen nog maar een bestaande stijl kan interpreteren en dus niet in staat is om zelf een nieuwe stijl te ontwikkelen. In de volgende paragrafen lees je meer over verschillende fantasieën over AI en machine learning.

Populaire toepassingen van AI en machine learning

AI leidt tot een tijdperk van innovatie dat vroeger alleen in sciencefiction voorkwam. Maar het is soms moeilijk om te bepalen of een specifieke AI-toepassing echt is of alleen maar een droom van een vastberaden wetenschapper. De man van zes miljoen (https://nl.wikipedia.org/wiki/Man_van_Zes_Miljoen) is een televisieprogramma dat ooit futuristisch leek. Toen het werd uitgezonden, dacht niemand dat er ooit gebruik van bionica zou worden gemaakt. Maar Hugh Herr heeft andere plannen: bionische benen zijn tegenwoordig echt mogelijk (https://www.smithsonianmag.com/innovation/future-robotic-legs-180953040/). Ze zijn natuurlijk nog niet voor iedereen beschikbaar; de gebruikte technologie wordt nu pas nuttig. Een andere tv-serie maakt het nog ingewikkelder: The Six Billion Dollar Man (https://www.cinemablend.com/new/Mark-Wahlberg-Six-Billion-Dollar-Man-Just-Made-Big-Change-91947.html). Het is duidelijk dat AI en machine learning de weg bereiden voor ongelofelijke technologieën waar nu al aan wordt gewerkt, al moet je wat je erover leest wel met een korreltje zout nemen.

Om het toekomstige gebruik van AI en machine learning te laten overeenkomen met de concepten die sciencefiction in de loop van de jaren heeft gepresenteerd, moeten programmeurs, datawetenschappers en andere belanghebbenden hulpmiddelen ontwikkelen. In hoofdstuk 8 lees je meer over enkele nieuwe tools voor het werken met AI en machine learning, al zijn deze hulpmiddelen nog erg beperkt. Er komt geen magie bij kijken, al kan iets op tovenarij lijken als je niet weet wat er achter de schermen gebeurt. Om ervoor te zorgen dat speelse toepassingen van AI en machine learning echt nuttige toepassingen worden, moeten ontwikkelaars, wetenschappers en anderen doorgaan met het bouwen van nuttige hulpmiddelen die op dit moment misschien moeilijk voorstelbaar zijn.

Praktische toepassingen van AI en machine learning

AI en machine learning maken tegenwoordig deel uit van een groot aantal toepassingen. Het enige probleem is dat de technologie zo goed werkt dat je niet eens doorhebt dat ze worden gebruikt. Misschien komt het als een verrassing dat veel apparaten in je huis al gebruikmaken van beide technologieën. Ze worden ook in je auto en op kantoor gebruikt. Er zijn al miljoenen toepassingen voor zowel AI als machine learning, al blijven die meestal veilig uit het zicht, zelfs als ze behoorlijk spectaculair van aard zijn. Hier volgen slechts enkele manieren waarop je AI kunt gebruiken:

Fraudedetectie. Je ontvangt een telefoontje van de bank met de vraag of je een specifieke aankoop hebt gedaan. De bank is niet nieuwsgierig, maar wijst je alleen op de mogelijkheid dat iemand anders misschien je creditcard heeft gebruikt. De AI die deel uitmaakt van de code van de bank detecteerde een onbekend uitgavenpatroon en gaf hierover een waarschuwing.

Resourceplanning. Veel organisaties moeten het inzetten van de beschikbare bronnen efficiënt plannen. Een ziekenhuis kan bijvoorbeeld aan de hand van de behoeften van een patiënt, de beschikbaarheid van specialisten en de hoeveelheid tijd die de patiënt verwacht wordt te blijven, vaststellen waar die patiënt terecht moet komen.

Complexe analyse. Mensen hebben bij complexe analyses vaak hulp nodig omdat er letterlijk te veel factoren zijn om rekening mee te houden. Dezelfde verzameling symptomen kan bijvoorbeeld bij meerdere problemen horen. Een arts of andere expert heeft bij het tijdig stellen van een diagnose soms hulp nodig als hij het leven van een patiënt wil redden.

Automatisering. Elke vorm van automatisering heeft baat bij AI om onverwachte veranderingen of gebeurtenissen te verwerken. Een probleem met sommige moderne vormen van automatisering is dat een onverwachte gebeurtenis, zoals een object dat zich op de verkeerde plaats bevindt, het automatiseringsproces kan laten stoppen. Door er AI aan toe te voegen, kan de automatisering onverwachte gebeurtenissen afhandelen en doorgaan alsof er niets is gebeurd.

Klantenservice. Als je tegenwoordig de klantenservice belt, krijg je misschien niet eens een mens aan de lijn. De automatisering ervan is zo goed dat de gebruikte scripts en bronnen de overgrote meerderheid van je vragen kan beantwoorden. Met de juiste intonatie (die AI ook levert) heb je misschien niet eens door dat je met een computer praat.

Veiligheidssystemen. Veel veiligheidssystemen in moderne apparaten vertrouwen op AI om in noodsituaties de bediening over te nemen. Automatische remsystemen gebruiken tegenwoordig bijvoorbeeld vaak AI om de auto te stoppen aan de hand van gegevens die het voertuig biedt, zoals de richting van een slip.

Machine-efficiëntie. AI kan bij de besturing van een machine voor optimale efficiëntie zorgen. Dankzij de kunstmatige intelligentie worden bronnen zo ingezet dat het systeem de snelheid of andere doelen niet overschrijdt. Elk beetje vermogen wordt precies zo gebruikt als nodig is om de gewenste diensten te leveren.

Deze lijst is niet meer dan het begin van de mogelijkheden. Kunstmatige intelligentie wordt ook op veel andere manieren gebruikt. Maar het kan ook geen kwaad om toepassingen van machine learning te bekijken die buiten het normale bereik vallen van wat velen als het domein van AI beschouwen. De volgende toepassingen van machine learning associeer je misschien niet met AI:

Toegangscontrole. In veel gevallen is toegangscontrole een kwestie van ja of nee. De smartcard van een werknemer geeft op een vergelijkbare manier toegang tot een bron als de manier waarop mensen al eeuwen sleutels gebruiken. Sommige sloten bieden de mogelijkheid om tijden en datums in te stellen waarop de toegang mogelijk is, maar eenvoudig toegangsbeheer is niet voor alle doeleinden geschikt. Met machine learning kun je aan de hand van de functie en behoefte van een werknemer vaststellen of hij toegang tot een bron moet krijgen. Een werknemer krijgt dan bijvoorbeeld toegang tot een trainingsruimte als de training bij zijn functie past.

Dierenbescherming. Oceanen lijken groot genoeg om dieren en schepen probleemloos te laten samenzijn. Toch worden jaarlijks nog veel dieren door schepen aangevaren. Een algoritme voor machine learning kan schepen leren dieren te vermijden aan de hand van de kenmerken en geluiden van zowel dieren als schepen.

Wachttijden voorspellen. De meeste mensen hebben er een hekel aan te wachten als ze geen flauw idee hebben hoelang dit gaat duren. Met machine learning kan een toepassing de wachttijd bepalen aan de hand van het aantal beschikbare werknemers, hun hoeveelheid werk, de complexiteit van de problemen die ze proberen op te lossen, de beschikbaarheid van bronnen enzovoort.

Nuttig en alledaags zijn

In een speelfilm krijg je al snel het idee dat AI een enorme impact gaat maken en er zijn in het echt inderdaad enkele ongelofelijke toepassingen van AI, maar over het algemeen zijn de meeste toepassingen ervan nogal alledaags, om niet te zeggen ronduit saai. In een recent artikel wordt bijvoorbeeld beschreven hoe Verizon de taal R (zie hoofdstukken 4 en 5 voor meer informatie over R) gebruikt om gegevens over beveiligingslekken te analyseren (https://www.computerworld.com/article/3001832/data-analytics/how-verizon-analyzes-security-breach-data-with-r.html). In deel 5 lees je meer over praktische toepassingen van dit soort analyses. Het uitvoeren van deze analyses is nogal saai als je het vergelijkt met andere mogelijkheden die AI te bieden heeft, maar het voordeel ervan is dat Verizon geld bespaart met de analyse in R en dat de resultaten ervan bovendien beter zijn.

Python-ontwikkelaars (zie hoofdstukken 6 en 7 voor meer informatie over de taal Python) hebben een enorme hoeveelheid bibliotheken tot hun beschikking die machine learning vereenvoudigen. De website Kaggle (https://www.kaggle.com/competitions) organiseert wedstrijden voor Python-ontwikkelaars en gebruikers van R om hun vaardigheden op het gebied van machine learning in te zetten bij het maken van praktische toepassingen. Het resultaat van deze wedstrijden kom je achteraf vaak tegen in producten die mensen daadwerkelijk gebruiken. R kan nog niet zonder ondersteuning van wetenschappers met statistische kennis, maar softwareontwikkelaars zijn al druk bezig voor Python nieuwe bibliotheken te maken die het werken met complexe gegevens en machine learning vereenvoudigen (zie http://www.kdnuggets.com/2015/06/top-20-python-machine-learning-open-source-projects.html voor de top 20 met Python-bibliotheken).

De relatie tussen AI en machine learning

Machine learning is slechts een van de vereisten om een AI-systeem te worden. Het onderdeel machine learning stelt een apparaat met AI in staat om de volgende taken uit te voeren:

zich aanpassen aan nieuwe omstandigheden die de oorspronkelijke ontwerper niet heeft voorzien;

patronen in allerlei gegevensbronnen detecteren;

nieuw gedrag creëren aan de hand van herkende patronen;

beslissingen nemen aan de hand van het succes of falen van dit gedrag.

Algoritmen die gegevens manipuleren vormen de kern van machine learning. Bij machine learning moet een geschikt algoritme worden gebruikt om het gewenste resultaat te bereiken. Bovendien moeten de gegevens geschikt zijn voor analyse met het gewenste algoritme, dat anders zorgvuldig door een wetenschapper moet worden voorbereid.

AI omvat veel andere disciplines om het denkproces met succes te simuleren. Naast machine learning maakt AI over het algemeen ook gebruik van:

Verwerking natuurlijke taal. Het toestaan van taalinvoer en het omzetten in een formaat dat bruikbaar is voor een computer.

Begrip natuurlijke taal. Het ontcijferen van de taal zodat er op de geboden betekenis kan worden gereageerd.

Kennisrepresentatie. Het vermogen om informatie zo op te slaan dat snelle toegang mogelijk is.

Planning (in de vorm van doel zoeken). Het vermogen om aan de hand van opgeslagen informatie bijna onmiddellijk conclusies te trekken (dus met een korte onderbreking, die mensen niet opmerken, maar een computer wel).

Robotica. De mogelijkheid om in een fysieke vorm op verzoeken van een gebruiker te reageren.

Het zal je waarschijnlijk verbazen hoeveel disciplines er nodig zijn om een AI-systeem tot stand te brengen. Om die reden lees je in dit boek slechts over een deel van wat een AI-systeem bevat. Maar ook het onderdeel machine learning kan heel ingewikkeld worden, want het is een complexe taak om de wereld via de gegevensinvoer van een computer te leren kennen. Denk maar aan alle beslissingen die je voortdurend neemt zonder erover na te denken. Alleen al het concept van iets zien en weten of je er succesvol mee kunt communiceren, wordt een complexe taak.

De specificaties van AI en machine learning

Terwijl wetenschappers blijven werken aan een technologie en hypothesen in theorieën omzetten, wordt de technologie meer techniek (waarbij theorieën worden geïmplementeerd) dan wetenschap (waarbij theorieën worden gemaakt). Naarmate de regels voor een technologie duidelijker worden, werken groepen deskundigen samen om deze regels schriftelijk te definiëren. Het resultaat hiervan zijn specificaties (een groep regels waar iedereen het over eens is).

Vervolgens worden implementaties van deze specificaties tot norm of standaard die beheerd worden door een bestuursorgaan, zoals de IEEE (Institute of Electrical and Electronics Engineers) of een combinatie van de ISO/IEC (International Organization for Standardization/International Electrotechnical Commission). AI en machine learning bestaan allebei lang genoeg voor het opstellen van specificaties, al zijn er momenteel nog geen standaarden voor beide technologieën ontwikkeld.

De basis voor machine learning is wiskunde. Algoritmen bepalen hoe big data op specifieke manieren moeten worden geïnterpreteerd. In deel 3 van dit boek lees je meer over de wiskundige basis voor machine learning. Je ontdekt dat algoritmen invoergegevens op specifieke manieren verwerken en voorspelbare uitvoer leveren aan de hand van gegevenspatronen. Alleen de gegevens zelf zijn niet voorspelbaar. Je hebt AI en machine learning nodig om de gegevens op zo’n manier te ontcijferen dat je de patronen erin kunt zien en ze kunt begrijpen.

In deel 4 vind je meer informatie over de specificaties in de vorm van algoritmen die specifieke taken uitvoeren. Heb je eenmaal deel 5 bereikt, dan snap je de reden dat iedereen instemt met specifieke sets regels voor het gebruiken van algoritmen om bepaalde taken uit te voeren. Het gaat erom dat je een algoritme gebruikt dat het best past bij je gegevens om de specifieke doelen te bereiken die je hebt opgesteld. Professionals implementeren algoritmen met behulp van talen die het best bij een specifieke taak passen. Machine learning maakt gebruik van Python en R, en tot op zekere hoogte ook van Matlab, Java, Julia en C++. (Meer hierover lees je op https://www.quora.com/What-is-the-best-language-to-use-while-learning-machine-learning-for-the-first-time.)

Onderscheid maken tussen creativiteit en techniek

De reden dat AI en machine learning allebei tot de wetenschap in plaats van de techniek worden gerekend, is dat er een zekere mate van creativiteit is vereist om goede resultaten te bereiken. Het artistieke element van machine learning uit zich in verschillende vormen. Je moet er bijvoorbeeld rekening mee houden hoe de gegevens worden gebruikt. Sommige gegevens fungeren als referentie om een algoritme zo te trainen dat specifieke resultaten worden bereikt. De overige gegevens bieden de uitvoer die wordt gebruikt om de onderliggende patronen te begrijpen. Er zijn geen specifieke regels voor het wegen van gegevens; wetenschappers die met de gegevens werken, moeten zelf bepalen of een specifieke verhouding optimale uitvoer produceert.

Het opschonen van gegevens geeft ook een zekere artistieke kwaliteit aan het resultaat. De manier waarop een wetenschapper de gegevens voor gebruik voorbereidt, is ook belangrijk. Sommige taken komen regelmatig voor, zoals het verwijderen van dubbele records. Een wetenschapper kan er ook voor kiezen om gegevens op een bepaalde manier te filteren of alleen naar een deel van de gegevens te kijken. Hierdoor kan de opgeschoonde dataset voor machine learning van de ene wetenschapper afwijken van de opgeschoonde dataset van een andere wetenschapper.

Je kunt de algoritmen ook op verschillende manieren afstellen of de werking ervan verfijnen. Het gaat erom dat er uitvoer wordt geproduceerd die de gewenste patronen onthult, zodat je de gegevens kunt begrijpen. Wordt er bijvoorbeeld een afbeelding bekeken, dan moet een robot bepalen met welke elementen van de afbeelding hij wel en niet kan communiceren. Het antwoord op deze vraag is belangrijk als de robot bepaalde elementen moet vermijden om op schema te blijven of om specifieke doelen te bereiken.

Bij het werken in een omgeving voor machine learning moet je ook rekening houden met invoergegevens. De microfoon in een smartphone van merk A produceert bijvoorbeeld niet precies dezelfde invoergegevens als de microfoon in een smartphone van merk B. De kenmerken van de microfoons verschillen, maar het interpreteren van de stemopdrachten van de gebruiker moeten wel hetzelfde resultaat geven. Omgevingsgeluiden veranderen de invoerkwaliteit van de gesproken opdracht en de smartphone kan ook te maken hebben met bepaalde vormen van elektromagnetische interferentie. Je begrijpt dat de variabelen waarmee een ontwerper bij het creëren van een omgeving voor machine learning geconfronteerd wordt zowel groot als complex zijn.

De kunst achter de techniek is een onmisbaar onderdeel van machine learning. De ervaring die een wetenschapper bij het werken met gegevensproblemen opdoet, is essentieel omdat het hem de mogelijkheid biedt om waarden toe te voegen die het algoritme beter laten werken. Een nauwkeurig afgestemd algoritme kan het verschil betekenen tussen een robot die met succes een pad langs obstakels neemt en een robot die ze allemaal raakt.

IN DIT HOOFDSTUK

De beginselen van big data begrijpen

Bronnen met big data zoeken

De samenwerking van statistiek en big data

De rol van algoritmen bij machine learning

Hoe je algoritmen traint

Hoofdstuk 2:
Leren in het tijdperk van big data

Computers beheren gegevens met behulp van programma’s of apps die verschillende soorten algoritmen gebruiken om taken uit te voeren. Een eenvoudige definitie van algoritme is een systematische verzameling bewerkingen die op een gegeven dataset moet worden uitgevoerd, zeg maar een procedure. Er zijn vier algemene gegevensbewerkingen: maken, lezen, bijwerken en verwijderen, die in het Engels worden aangeduid met CRUD (Create, Read, Update en Delete). Deze bewerkingen lijken misschien niet gecompliceerd, maar ze vormen wel de basis van alles wat je met een computer kunt doen. Bij steeds groter wordende datasets kan de computer de algoritmen van een programma gebruiken om meer werk te verrichten. Bij gigantische datasets, vaak aangeduid als big data, kan een computer op een niet-deterministische manier werk uitvoeren aan de hand van patroonherkenning. Voor een computersysteem dat kan leren, heb je een dataset nodig die groot genoeg is om de algoritmen in staat te stellen met patroonherkenning te werken; deze patroonherkenning moet gebruikmaken van een eenvoudige subset om voorspellingen te doen (statistische analyse) over de volledige dataset.

Big data kom je tegenwoordig op veel plaatsen tegen. Voor de hand liggende bronnen zijn online databases, bijvoorbeeld die van leveranciers om aankopen van consumenten bij te houden. Er zijn echter ook veel gegevensbronnen die niet voor de hand liggen, maar die wel uitstekende bronnen zijn om iets interessants mee te doen. Geschikte bronnen met big data opsporen stelt je in staat scenario’s voor machine learning te creëren waarin een computer op een specifieke manier kan leren om een gewenst resultaat te produceren.

Statistiek, een van de methoden van machine learning die in dit boek wordt gebruikt, beschrijft problemen met behulp van wiskunde. Door big data met statistiek te combineren, maak je een omgeving voor machine learning waarin de machine de waarschijnlijkheid van een bepaalde gebeurtenis beoordeelt. Maar statistiek is natuurlijk niet de enige methode voor machine learning. In dit hoofdstuk lees je ook over andere vormen van machine learning die tegenwoordig worden gebruikt.

Algoritmen bepalen hoe een apparaat of computer big data interpreteert. Het algoritme dat voor machine learning wordt gebruikt, heeft invloed op de uitkomst van het leerproces en dus op de resultaten die je ontvangt. In dit hoofdstuk maak je kennis met de vijf belangrijkste technieken voor het gebruiken van algoritmen bij machine learning.

Om een algoritme voor machine learning geschikt te maken, moet je het trainen. Tijdens het trainingsproces wordt de manier ingesteld waarop het algoritme naar big data kijkt. In de laatste paragraaf van dit hoofdstuk kom je erachter dat bij training een subset van de gegevens wordt gebruikt om patronen te ontwikkelen die het algoritme nodig heeft om specifieke gevallen te herkennen te midden van de algemene gegevens die je als onderdeel van de training levert.

Een definitie van big data

Big data is veel meer dan alleen een erg grote database. Natuurlijk impliceert big data veel gegevens, maar de term omvat ook het idee van complexiteit en diepgang. Een grote gegevensbron beschrijft iets in voldoende detail om met die gegevens aan de slag te kunnen gaan en problemen op te lossen waarbij gewone programmering niet voldoet. Denk bijvoorbeeld eens aan zelfrijdende auto’s. Zo’n auto moet niet alleen rekening houden met de gebruikte hardware en de huidige positie op de weg, maar ook met de gevolgen van menselijke beslissingen, wegomstandigheden, omgevingscondities en de overige voertuigen op de weg. De gegevensbron bevat veel variabelen die allemaal op de een of andere manier van invloed zijn op de zelfrijdende auto. Traditionele programmering is misschien in staat om alle berekeningen uit te voeren, maar niet in realtime. Je wilt voorkomen dat de auto eerst tegen een muur botst en dat de computer uiteindelijk vijf minuten later waarschuwt dat de auto tegen een muur gaat rijden. De verwerking moet op tijd worden uitgevoerd, zodat de auto de muur kan ontwijken.

MAAR HOE GROOT IS GROOT?

Big data kan echt heel groot worden. Stel bijvoorbeeld dat een zelfrijdende auto verschillende hd-camera’s en een paar honderd sensoren heeft die honderd keer per seconde gegevens doorsturen. Je hebt dan al snel een onbewerkte dataset met invoer van meer dan 100 Mbps. Het is ongelofelijk moeilijk zo veel gegevens te verwerken.

Een van de problemen waar we tegenwoordig mee te maken hebben, is bepalen hoe big data moeten worden verwerkt. Momenteel worden pogingen ondernomen alles vast te leggen, waardoor een gigantische, gedetailleerde dataset ontstaat. Zo’n dataset is echter niet goed ingedeeld, waardoor hij zeer moeilijk te gebruiken is. Verderop in dit boek lees je over technieken om de omvang en indeling van big data binnen de perken te houden, zodat de gegevens bruikbaar blijven voor het doen van voorspellingen.

Het kan ook erg lastig zijn om aan big data te komen. Niet alleen is de enorme omvang van de dataset een probleem, maar het is ook essentieel om te overwegen hoe de dataset wordt opgeslagen en verstuurd, zodat het systeem ermee kan werken. In de meeste gevallen proberen ontwikkelaars de dataset in het geheugen op te slaan voor een snelle verwerking. De gegevens op een harde schijf opslaan kost te veel verwerkingstijd.

Heb je het over big data, dan moet je ook rekening houden met anonimiteit. Big data geeft privacyproblemen. Maar door de manier waarop machine learning werkt, zijn gedetailleerde persoonsgegevens niet echt nuttig. Machine learning gaat over het herkennen van patronen; trainingsgegevens worden zo geanalyseerd dat het getrainde algoritme taken kan uitvoeren waarvoor de ontwikkelaar het oorspronkelijk niet heeft geprogrammeerd. Persoonlijke gegevens horen niet thuis in zo’n omgeving.

Ten slotte is big data zo omvangrijk dat mensen het redelijkerwijs niet zonder hulp kunnen visualiseren. Een deel van wat big data zo groot maakt, is het feit dat een mens er iets van kan leren, maar de enorme omvang van de dataset maakt het herkennen van patronen onmogelijk (of dit zou heel lang duren). Machine learning helpt mensen om big data te begrijpen en te gebruiken.

Bronnen met big data

Voordat je big data bij machine learning gaat gebruiken, heb je natuurlijk een bron met big data nodig. Het eerste waar de meeste ontwikkelaars dan aan denken, is een enorme database van een groot bedrijf. Dit kan interessante informatie opleveren, al is het slechts één bron. De kans bestaat zelfs dat zo’n bedrijfsdatabase helemaal geen nuttige gegevens bevat voor de taak die jij voor ogen hebt. In de volgende paragrafen lees je meer over verschillende bronnen met big data.

Een nieuwe gegevensbron bouwen

Om geschikte bronnen met big data voor specifieke behoeften te bemachtigen, moet je misschien zelf gegevens verzamelen. Ontwikkelaars bouwen in veel gevallen bestaande gegevensbronnen rond de behoeften van de client-serverarchitectuur; deze bronnen zijn vaak niet geschikt voor machine learning omdat ze de vereiste diepte missen (optimalisatie om ruimte op harde schijven te besparen heeft nadelen). Bovendien ga je met het toenemen van je kennis over machine learning vragen stellen die gewone bedrijfsdatabases niet kunnen beantwoorden. In de volgende paragrafen lees je meer over deze kwesties bij de beschrijving van enkele interessante nieuwe bronnen voor big data.

Gegevens uit openbare bronnen ophalen

Overheden, universiteiten, non-profitorganisaties en andere instellingen beschikken vaak over openbare databases die je apart of in combinatie met andere databases kunt gebruiken om big data voor machine learning te maken. Je kunt bijvoorbeeld verschillende geografische informatiesystemen (GIS) combineren om de big data te maken die je nodig hebt voor beslissingen, bijvoorbeeld over geschikte locaties voor nieuwe winkels of fabrieken. Het algoritme voor machine learning kan rekening houden met verschillende soorten informatie: van de hoeveelheid belasting die je moet betalen tot de hoogte van de locatie (waardoor je winkel beter zichtbaar is).

Het grote voordeel van openbare gegevens is dat ze meestal gratis zijn, vaak zelfs voor commercieel gebruik (of je betaalt er een schijntje voor). Bovendien onderhouden veel organisaties deze bronnen zeer zorgvuldig, bijvoorbeeld omdat dit bij wet verplicht is, omdat de gegevens een inkomstenbron zijn of omdat ze intern onmisbaar zijn. Bij het verzamelen van openbare brongegevens moet je met een aantal zaken rekening houden om ervoor te zorgen dat je daadwerkelijk iets nuttigs krijgt. Let op de volgende criteria:

de kosten van de gegevensbron, indien van toepassing;

de opmaak van de gegevensbron;

toegang tot de gegevensbron (je moet over de juiste infrastructuur beschikken, bijvoorbeeld een internetverbinding voor Twitter-feeds);

toestemming om de gegevensbron te gebruiken (op sommige bronnen rust copyright);

mogelijke problemen bij het opschonen van gegevens om ze geschikt te maken voor machine learning.

Gegevens uit privébronnen

Het is ook mogelijk om gegevens te krijgen van privéorganisaties, zoals Amazon en Google, die beide over enorme databases met allerlei nuttige informatie beschikken. In zo’n geval is de kans groot dat je moet betalen voor toegang tot de gegevens, vooral als ze voor commerciële doeleinden worden gebruikt. Soms is het niet toegestaan de gegevens naar persoonlijke servers te downloaden, iets wat van invloed kan zijn op de manier waarop je de gegevens voor machine learning gebruikt. Sommige algoritmen werken bijvoorbeeld trager met gegevens die slechts in kleine stukjes toegankelijk zijn.

Het grootste voordeel van gegevens van privéorganisaties is de uitstekende consistentie. De gegevens zijn vaak beter opgeschoond dan de gegevens uit openbare bronnen. Bovendien heb je meestal toegang tot een omvangrijke database met een grotere verscheidenheid aan gegevenstypen. Al blijft dit natuurlijk afhankelijk van de bron van de gegevens.

Nieuwe gegevens uit bestaande gegevens maken

De gegevens die je zelf hebt, zijn misschien niet optimaal voor machine learning, maar dat hoeft je niet te weerhouden om er een nieuwe gegevensbron van te maken met de oude gegevens als uitgangspunt. Je hebt bijvoorbeeld een klantendatabase met alle bestellingen, maar de gegevens zijn niet nuttig voor machine learning omdat er geen tags in staan waarmee de gegevens in specifieke typen kunnen worden gesorteerd. Een nieuwe soort baan die in de toekomst gecreëerd kan worden, is deze gegevens masseren om ze geschikter te maken voor machine learning, waaronder het toevoegen van specifieke informatietypen, zoals tags.

Machine learning gaat een grote invloed op je bedrijf hebben. Het artikel op https://www.computerworld.com/article/3007053/big-data/how-machine-learning-will-affect-your-business.html beschrijft verschillende manieren waarop machine learning je manier van zakendoen kan veranderen. Een van de punten die in het artikel wordt gemaakt, is dat machine learning meestal op 80 procent van de gegevens werkt. In 20 procent van de gevallen ben je nog steeds afhankelijk van menselijke beslissingen over de gegevens. Het komt erop neer dat machine learning je geld bespaart door het uit handen nemen van repetitieve taken die mensen sowieso niet graag doen (waardoor ze inefficiënt worden). Met machine learning blijft de vraag naar mensen bestaan; het creëert zelfs nieuwe banen die interessanter zijn dan de banen die door computers zijn overgenomen. Het is ook belangrijk om te beseffen dat je aan het begin meer mensen nodig hebt totdat hun aanpassingen het algoritme zo hebben getraind dat het weet welk soort wijzigingen in de gegevens moeten worden aangebracht.

Bestaande gegevensbronnen gebruiken

In jouw organisatie zijn op allerlei plaatsen gegevens verborgen. Het probleem is ze als gegevens te herkennen. Een fabriek kan bijvoorbeeld bij een assemblagelijn sensoren hebben die bijhouden hoe producten het proces doorlopen en ervoor zorgen dat de assemblagelijn efficiënt blijft. Deze sensoren kunnen misschien gegevens voor machine learning leveren omdat ze mogelijk inzicht bieden in de manier waarop productbewegingen van invloed zijn op de klanttevredenheid of de prijs die je voor verzending betaalt. Het is de bedoeling dat je erachter komt hoe je mashups kunt maken, waarbij bestaande gegevens tot iets nieuws worden gecombineerd om je organisatie beter te laten functioneren.

Big data kunnen overal vandaan komen, zelfs uit je e-mail. In een recent artikel wordt beschreven hoe Google je e-mailberichten gebruikt voor het maken van een lijst met mogelijke reacties op nieuwe e-mailberichten. (https://www.semrush.com/blog/deep-learning-an-upcoming-gmail-feature-that-will-answer-your-emails-for-you/) In plaats van persoonlijk op elk e-mailbericht te reageren, selecteer je gewoon een ingeblikt antwoord onder aan de pagina. Dit soort automatisering is niet mogelijk zonder de oorspronkelijke bron van de e-mailgegevens. Door op vaste plekken naar big data te zoeken, zie je mogelijk big data over het hoofd die zich schuilhouden op doodgewone plekken die de meeste mensen niet als gegevensbronnen beschouwen. Toekomstige apps gaan gebruikmaken van deze alternatieve gegevensbronnen, maar om zulke apps te maken, moet je eerst de gegevens herkennen die onder je neus verborgen zijn.

Sommige van deze apps bestaan al zonder dat je het in de gaten hebt. De video op https://research.microsoft.com/apps/video/default.aspx?id=256288 verduidelijkt de aanwezigheid van dit soort apps. Na het bekijken van deze video besef je dat veel toepassingen voor machine learning al gebruikt worden, maar dat gebruikers ze vanzelfsprekend vinden (of niet eens doorhebben dat de app aanwezig is).

Bronnen met testgegevens zoeken

Tijdens het lezen van dit boek ontdek je dat je het gebruikte algoritme moet leren hoe het verschillende soorten gegevens herkent en er vervolgens iets interessants mee doet. Maak je geen zorgen over specifieke algoritmen, verderop in dit boek kom je er verschillende tegen. Dit trainingsproces zorgt ervoor dat het algoritme correct reageert op de gegevens die het na de training ontvangt. Natuurlijk moet je het algoritme ook testen om te bepalen of de training een succes was. In veel gevallen helpt dit boek je bij het ontdekken van manieren om een gegevensbron op te delen in trainingscomponenten en testcomponenten om het gewenste resultaat te bereiken. Na het trainen en testen kan het algoritme in realtime met nieuwe gegevens werken om de taken uit te voeren die het aankan.

Soms heb je misschien niet voldoende gegevens voor zowel de training (de essentiële eerste test) als voor het testen. In zo’n geval moet je wellicht een testopstelling maken om meer gegevens te genereren, gebruikmaken van gegevens die in realtime worden gegenereerd of een kunstmatige bron van testgegevens maken. Je kunt ook soortgelijke gegevens uit bestaande bronnen gebruiken, zoals een openbare of privédatabase. Het gaat erom dat je zowel trainings- als testgegevens nodig hebt die een bekend resultaat opleveren voordat je je algoritme loslaat in de dagelijkse praktijk van het werken met onzekere gegevens.

De rol van statistiek bij machine learning

Op internet vind je sites die stellen dat statistiek en machine learning twee compleet verschillende disciplines zijn. Lees je bijvoorbeeld Statistics vs. Machine Learning, fight! (http://brenocon.com/blog/2008/12/statistics-vs-machine-learning-fight/), dan krijg je niet alleen het idee dat beide onderwerpen verschillend zijn, maar zelfs vijandig ten opzichte van elkaar. Maar in werkelijkheid zijn er veel overeenkomsten tussen statistiek en machine learning; statistiek is een van de pijlers van de vijf stromingen of tribes die machine learning mogelijk maken. Deze vijf stromingen zijn:

Symbolisten. De oorsprong van deze stroming ligt in de logica en filosofie. Deze groep maakt gebruik van inverse deductie om problemen op te lossen.

Connectionisten. De oorsprong van deze stroming ligt in de neurowetenschappen. Deze groep maakt gebruik van neurale netwerken om problemen op te lossen.

Evolutionisten. De oorsprong van deze stroming ligt in de evolutiebiologie. Deze groep maakt gebruik van genetisch programmeren om problemen op te lossen.

Bayesianen. De oorsprong van deze stroming ligt in de statistiek. Deze groep maakt gebruik van probabilistische inferentie om problemen op te lossen.

Analogisten. De oorsprong van deze stroming ligt in de psychologie. Deze groep maakt gebruik van kernelmethoden om problemen op te lossen. (Een kernel of core is in de informatica het centrale deel van een besturingssysteem).

Het ultieme doel van machine learning is om de technieken en strategieën van deze vijf stromingen te combineren in één algoritme (het master-algoritme) dat alles kan leren. Maar de verwezenlijking van dit doel staat nog ver van ons af. Toch zijn er wetenschappers die aan dit doel werken, zoals Pedro Domingos (https://homes.cs.washington.edu/~pedrod/).

In dit boek wordt grotendeels de Bayesiaanse strategie gevolgd omdat je de meeste problemen oplost met behulp van een of andere vorm van statistische analyse. Er worden ook strategieën toegepast van andere stromingen, maar de belangrijkste reden om met statistiek te beginnen, is dat deze techniek al goed is ingeburgerd en begrepen. Veel elementen van de statistiek horen meer bij de techniek (waarin theorieën worden geïmplementeerd) dan bij de wetenschap (waarin theorieën worden gemaakt). In de volgende paragraaf gaan we dieper in op de vijf stromingen door te kijken naar de soorten algoritmen die elke tribe gebruikt. Het is essentieel om de rol van algoritmen in machine learning te begrijpen als je wilt weten hoe machine learning werkt.

De rol van algoritmen begrijpen

Bij machine learning draait alles om algoritmen. Een algoritme is een procedure of formule om een probleem op te lossen. Het soort probleem is van invloed op het soort algoritme dat je nodig hebt, maar het uitgangspunt is altijd hetzelfde: een of ander probleem oplossen, zoals een auto besturen of domino spelen. In het eerste geval zijn de problemen complex en in groten getale aanwezig, al kun je het uiteindelijke probleem terugbrengen naar het van A naar B vervoeren van een passagier zonder te verongelukken. Het doel van een spelletje domino is om te winnen. In de volgende paragrafen maak je uitgebreid kennis met algoritmen.

Definiëren wat algoritmen doen

Een algoritme is een soort opslagplaats. Zie het als een verpakking van een methode om een specifiek soort probleem op te lossen. Algoritmen verwerken gegevens via een reeks goed gedefinieerde toestanden. Deze toestanden hoeven niet deterministisch te zijn, maar ze zijn wel gedefinieerd. Het doel is voor uitvoer te zorgen die een probleem oplost. In sommige gevallen ontvangt het algoritme invoer die helpt bij het definiëren van de uitvoer, maar de focus ligt altijd op de uitvoer.

Algoritmen moeten de overgangen tussen de verschillende toestanden uitdrukken met behulp van een goed gedefinieerde en formele taal die de computer kan begrijpen. Tijdens het verwerken van de gegevens en het oplossen van het probleem definieert en verfijnt het algoritme een functie en voert haar uit. De functie is altijd gemaakt voor het soort probleem dat door het algoritme wordt aangepakt.

De vijf belangrijkste technieken

In de vorige paragraaf heb je gelezen dat elk van de vijf stromingen een andere techniek en strategie heeft voor het oplossen van problemen; hierdoor ontstaan unieke algoritmen. Het combineren van deze algoritmen moet uiteindelijk leiden tot het master-algoritme dat elk probleem kan oplossen. In de volgende paragrafen lees je meer over de vijf belangrijkste algoritmische technieken.

Symbolisch redeneren

De term ‘inverse deductie’ wordt gewoonlijk met ‘inductie’ aangeduid. Bij symbolisch redeneren breidt deductie de hoeveelheid menselijke kennis uit, terwijl inductie het niveau van menselijke kennis verhoogt. Inductie opent vaak nieuwe gebieden van onderzoek, terwijl deductie deze velden onderzoekt. Maar de belangrijkste overweging is dat inductie het wetenschappelijke deel is van dit soort redeneringen, terwijl deductie de technische kant is. Beide strategieën werken nauw samen bij het oplossen van problemen door eerst een gebied voor potentiële verkenning te openen om het probleem op te lossen en vervolgens dat gebied te verkennen om vast te stellen of het probleem daadwerkelijk is opgelost.

Als voorbeeld van deze strategie zou deductie stellen dat als een boom groen is en als groene bomen levend zijn, dan moet de boom levend zijn. Bij inductie stel je dat de boom groen is en dat de boom ook levend is, dus zijn groene bomen levend. Inductie biedt het antwoord op de kennis die ontbreekt bij bekende invoer en uitvoer.

Op de neuronen van de hersenen gemodelleerde verbindingen

De connectionisten zijn misschien wel de beroemdste van de vijf tribes. Deze stroming streeft ernaar de functies van de hersenen te reproduceren met behulp van silicium in plaats van neuronen. Het komt erop neer dat elk van de neuronen (in de vorm van een algoritme dat het nabootst) een klein deel van het probleem oplost. Gelijktijdig veel neuronen gebruiken, lost het probleem als geheel op.

Het gebruik van backpropagation, of achterwaartse verspreiding van fouten, probeert de omstandigheden vast te stellen waaronder fouten worden verwijderd uit netwerken die zijn gebouwd om op menselijke neuronen te lijken. Hierbij worden de wegingen (hoeveel specifieke invoer tot het resultaat bijdraagt) en de vertekening of bias (de geselecteerde kenmerken) van het netwerk veranderd. Het is de bedoeling om deze wegingen en vertekening te blijven wijzigen totdat de werkelijke uitvoer overeenkomt met de doeluitvoer. Op dat moment stuurt het kunstmatige neuron zijn oplossing door aan het volgende neuron in de rij. De oplossing van één neuron is slechts een deel van de complete oplossing. Elk neuron geeft informatie door aan het volgende neuron totdat de groep neuronen een uiteindelijke uitvoer heeft gemaakt.

Evolutionaire algoritmen die variatie testen

De evolutionisten vertrouwen op de principes van de evolutie om problemen op te lossen. Deze strategie is dus gebaseerd op het overleven van de best aangepaste (survival of the fittest, oplossingen die niet met de gewenste uitvoer overeenkomen, worden verwijderd). Een aparte geschiktheidsfunctie bepaalt de levensvatbaarheid van elke functie bij het oplossen van een probleem.

Met behulp van een boomstructuur zoekt de oplossingsmethode aan de hand van de functie-uitvoer naar de beste oplossing. De winnaar van elk evolutieniveau bouwt vervolgens de volgende functies. De achterliggende gedachte is dat het volgende niveau dichter bij het oplossen van het probleem komt maar het misschien niet volledig oplost, waardoor nog een niveau nodig is. Deze stroming is sterk afhankelijk van recursie en talen die recursie goed ondersteunen om problemen op te lossen. Een interessante uitvoer van deze strategie waren algoritmen die evolueerden: één generatie algoritmen bouwt in feite de volgende generatie.

Bayesiaanse inferentie

Bayesianen gebruiken verschillende statistische methoden om problemen op te lossen. Aangezien je met statistische methoden meer dan één waarschijnlijk juiste oplossing kunt bereiken, moet worden bepaald welke functie de grootste kans van slagen heeft. Bij deze technieken kun je bijvoorbeeld een reeks symptomen als invoer accepteren en de kans dat een bepaalde ziekte het gevolg is van de symptomen als uitvoer beschouwen. Aangezien meerdere ziekten dezelfde symptomen hebben, is deze kans of waarschijnlijkheid van belang, want een gebruiker krijgt er enkele te zien waarbij een lager waarschijnlijkheidsresultaat in werkelijkheid de juiste uitvoer is in een gegeven situatie.

Deze stroming vertrouwt nooit volledig op een hypothese (een resultaat dat iemand je heeft gegeven) zonder het bewijs ervoor te zien (de invoer die een ander gebruikte om de hypothese te maken). Het analyseren van het bewijs bevestigt of weerlegt de hypothese die erdoor wordt ondersteund. Het is dus niet mogelijk om te bepalen welke ziekte iemand heeft totdat alle symptomen zijn getest. Een van de bekendste resultaten van deze stroming is het spamfilter.

Systemen die door analogie leren

De analogisten gebruiken kernelcomputers om patronen in gegevens te herkennen. Door het patroon van één invoerset te herkennen en met het patroon van bekende uitvoer te vergelijken, kun je een probleemoplossing creëren. Het doel is om vergelijkbaarheid te gebruiken om de beste oplossing voor een probleem te bepalen. Deze methode gaat uit van de vaststelling dat een specifieke oplossing bij gegeven omstandigheden op enig moment in het verleden heeft gewerkt; daarom zou het gebruiken van deze oplossing voor een vergelijkbare set omstandigheden eveneens moeten werken. Een van de bekendste producten van deze denkrichting zijn aanbevelingssystemen. Koop je bijvoorbeeld een product op Amazon, dan laat het aanbevelingssysteem andere, verwante producten zien die je wellicht ook wilt kopen.

De rol van training

Veel mensen zijn eraan gewend dat apps of programma’s met een functie beginnen, gegevens als invoer accepteren en vervolgens een resultaat bieden. Een programmeur kan bijvoorbeeld de functie Add() maken die twee waarden als invoer accepteert, zoals 1 en 2. Het resultaat van Add() is dan 3. De uitvoer van dit proces is een waarde. In het verleden betekende het schrijven van een programma dat je de functie moest begrijpen die gegevens manipuleert om een vast resultaat met specifieke invoer te leveren.

Bij machine learning wordt dit proces omgedraaid. In dit geval weet je dat je twee invoerwaarden hebt, zoals 1 en 2. Je weet ook dat het gewenste resultaat 3 is. Maar je weet niet welke functie je moet toepassen om dit gewenste resultaat te bereiken. Training biedt een zelflerend algoritme allerlei voorbeelden van gewenste invoer en de resultaten die van deze invoer worden verwacht. Aan de hand van deze invoer wordt een functie gemaakt. Training is dus het proces waarbij het zelflerende algoritme aan de hand van gegevens een flexibele functie samenstelt. De uitvoer is over het algemeen de waarschijnlijkheid van een specifieke klasse of een numerieke waarde.

Eén algoritme kan veel verschillende dingen leren, al is niet elk algoritme voor alle taken geschikt. Sommige algoritmen zijn algemeen genoeg om te schaken, om gezichten op Facebook te herkennen en bij mensen kanker vast te stellen. Een zelflerend algoritme maakt in alle gevallen aan de hand van gegevensinvoer en de verwachte resultaten van deze invoer een functie, al hoort deze functie bij het soort taak dat het algoritme moet uitvoeren.

Het geheim van machine learning is generalisatie. Het doel is de uitvoerfunctie zo algemeen te maken dat ze ook met gegevens buiten de trainingsset werkt. Als voorbeeld nemen we een spamfilter. Een woordenboek bevat bijvoorbeeld 100.000 woorden (en is dus klein). Een beperkte dataset voor training met 4000 of 5000 woordcombinaties moet een algemene functie maken die in staat is spam te vinden in de 2100.000 combinaties die de functie te zien krijgt tijdens het werken met echte gegevens.