Deze post behandelt een aantal basisconcepten in machine learning, van lineaire algebra tot evaluatiemetrieken. Het dient als een mooie gids voor nieuwelingen die het veld willen betreden.

Lineralgebra

Lineaire algebra is de belangrijkste pijler op het gebied van machine learning. Waarom? Machine learning-algoritmen worden in boeken, papers en op websites beschreven met vector- en matrixnotatie. Lineaire algebra is de wiskunde van data en de notatie laat je toe om operaties op data precies te beschrijven met specifieke operatoren. De 2 belangrijkste concepten in lineaire algebra waarmee je vertrouwd moet zijn, zijn vectoren en matrices.

1 – Vectoren

Een vector is een tupel van een of meer waarden die bekend staan als scalars. Het is gebruikelijk vectoren te introduceren met behulp van een meetkundige definitie, waarin een vector een punt of coördinaat in een hoog-dimensionale ruimte voorstelt. De belangrijkste rekenkundige bewerkingen van vectoren zijn optellen, aftrekken, vermenigvuldigen, delen, scalair product en scalaire vermenigvuldiging.

  • Twee vectoren van gelijke lengte kunnen bij elkaar worden opgeteld om een nieuwe derde vector te maken.
  • Een vector kan worden afgetrokken van een andere vector van gelijke lengte om een nieuwe derde vector te maken.
  • Twee vectoren van gelijke lengte kunnen met elkaar worden vermenigvuldigd.
  • Twee vectoren van gelijke lengte kunnen worden gedeeld.
  • Het scalair product is de som van de vermenigvuldigde elementen van twee vectoren van dezelfde lengte om een scalair te geven.
  • Een vector kan met een scalair worden vermenigvuldigd om de grootte van de vector te schalen.

Er zijn veel toepassingen van vectoren. Zo kunnen vectoren een verschuiving in de 2D- of 3D-ruimte voorstellen. Punten zijn gewoon vectoren vanuit de oorsprong. Gegevens (pixels, kleurverlopen in een beeldpunt, enz.) kunnen ook als vectoren worden behandeld.

2 – Matrices

Een matrix is een tweedimensionale matrix van scalars met een of meer kolommen en een of meer rijen. Als de matrix hetzelfde aantal rijen en kolommen heeft, dan is het een vierkante matrix. Een eenheidsmatrix is een vierkante matrix met 1’en op de diagonaal en 0’en overal elders. De diagonaalmatrix is een vierkante matrix met getallen op de diagonaal en 0-en elders. Een kolomvector is gewoon een matrix met één rij, terwijl een rijvector gewoon een matrix is met één kolom.

De basisbewerkingen van een matrix zijn optellen, schalen, dotproduct, vectorvermenigvuldiging, scalaire vermenigvuldiging, transponeren, inverteren, en determinant/spoor.

  • Twee matrices met dezelfde afmetingen kunnen bij elkaar worden opgeteld om een nieuwe derde matrix te maken.
  • Op dezelfde manier kan een matrix worden afgetrokken van een andere matrix met dezelfde afmetingen.
  • Twee matrices met dezelfde afmetingen kunnen met elkaar worden vermenigvuldigd, en dit wordt vaak element-wise matrixvermenigvuldiging genoemd.
  • Een matrix kan worden gedeeld door een andere matrix met dezelfde afmetingen.
  • Matrix-dotproduct heeft als doel de ingangen van 2 vectoren met elkaar te vermenigvuldigen en het resultaat op te tellen.
  • Een matrix en een vector kunnen met elkaar worden vermenigvuldigd zolang de regel van matrixvermenigvuldiging in acht wordt genomen.
  • Een matrix kan worden vermenigvuldigd met een scalair. Het resultaat is een matrix van dezelfde grootte als de moedermatrix, waarbij elk element van de matrix met de scalaire waarde wordt vermenigvuldigd.
  • Matrix transponeren is de kolommen en rijen van een matrix omdraaien, zodat rij 1 nu kolom 1 is, enzovoort.
  • Geeft men een matrix A, dan is zijn inverse A^(-1) een matrix zo dat A x A^(-1) = I. Als A^(-1) bestaat, dan is A inverteerbaar of niet-singulier. Anders is hij singulier.

Machine-leren

1 – Belangrijkste benaderingen

De 3 belangrijkste benaderingen van machine-leren zijn:

  • Onbegeleid leren, dat veel wordt gebruikt in computervisie. Voorbeelden zijn k-means, ICA, PCA, Gaussian Mixture Models, en deep auto-encoders.
  • Supervised Learning, dat ook veel wordt gebruikt in computervisie. Voorbeelden zijn diepe supervised neural networks.
  • Reinforcement Learning, dat vooral wordt gebruikt voor robotica en besturingsproblemen. Voorbeelden zijn deep Q-learning en policy gradient methoden.

Bij Reinforcement Learning zijn de regels van het spel onbekend. Er is geen toezichthouder, alleen een beloningssignaal met vertraagde feedback. De acties van de agent zijn van invloed op de gegevens die hij vervolgens ontvangt.

In Unsupervised Learning willen we structuur en betekenis vinden in gegevens zonder labels. Zoals hierboven vermeld, zijn voorbeeldalgoritmen Principal Component Analysis, k-means, Non-Negative Matrix Factorization, Independent Component Analysis, Gaussian Mixture Models, Latent Dirichlet Allocation, en Auto-Encoders.

In Begeleid Leren is de basisterminologie zodanig dat we een initiële invoerruimte x en een initiële uitvoerruimte y hebben. Nadat we een stel voorbeelden (x, y) hebben gezien, willen we een afbeelding F: x -> y kiezen die het invoer-uitvoerpatroon van de voorbeelden nauwkeurig repliceert. Er zijn veel algoritmen om verschillende modellen van F te vinden uit gelabelde waarnemingen (ground truth). Vaak wordt leren gecategoriseerd volgens hun uitvoerruimte, die discreet of continu kan zijn.

  • De continue uitvoerruimte wordt gebruikt bij regressieproblemen. Bijvoorbeeld, gegeven de input als een afbeelding van een bord met voedsel, willen we de output als het aantal totale calorieën. Of, gegeven de input als het gezicht van een persoon, willen we de output als de leeftijd van die persoon.
  • Met discrete output ruimte, zijn we typisch bouwen classifiers. Bijvoorbeeld, we willen dat de output klasse 1, klasse 2, klasse 3… is, waarbij de getallen een soort betekenisvolle categorie vertegenwoordigen. Wij kunnen deze ook labels of categorieën noemen.

2 – Trainingsgegevens en Testgegevens

Traininggegevens zijn de gegevens die wij tijdens het trainingsproces aan de classificator geven. Dit zijn de gepaarde gegevens voor het leren van f(x) = y, waarbij x de input is (een vector van kenmerken in R^d) en y de output (een label met classificatie). Tijdens de training proberen we een goed model van f(x) te vinden dat de input-output relatie van de gegevens repliceert.

Testgegevens worden gebruikt met een getrainde classificator om deze te beoordelen. We hebben x, maar we kennen y niet. Gewoonlijk doen we in onderzoek alleen alsof we y niet hebben, maar in de echte wereld zul je het echt niet hebben. Het getrainde systeem voorspelt y voor ons, en wij beoordelen hoe goed het systeem werkt.

3 – Waarschijnlijkheden

In plaats van een invoer alleen in te delen in een van K verschillende klassen, willen we misschien de waarschijnlijkheid van elk van die klassen weten. Voor elke mogelijke categorie geeft P(C = k | x) een waarde tussen 0 en 1 terug, waarbij waarden dichter bij 1 betekenen dat de classificator “denkt” dat die klasse waarschijnlijk de categorie van de invoer is. Om te classificeren, willen we de grootste P(C = k | x) kiezen.

4 – Parametrische en niet-parametrische

Parametrische modellen impliceren het aanpassen van parameters. Wij willen bijvoorbeeld goede waarden vinden voor de w-vectoren voor onze lineaire classificator. Parametrische modellen hebben een eindig aantal parameters, waarbij het aantal parameters onafhankelijk is van de trainingsset.

Niet-parametrische modellen houden in dat de gegevens worden opgeslagen en op een of andere manier worden gebruikt. Hier hangt het aantal parameters af van de trainingsverzameling (hoeveel gegevens je opslaat). Meer specifiek groeit het aantal parameters met de grootte van de trainingsset.

Evaluating Machine Learning Classifiers

Na een stel voorbeelden (x, y) te hebben gezien, kiest het model een mapping F: x -> y die het input-outputpatroon van de voorbeelden repliceert. De vraag is hoe goed het model F werkt na de training. We kunnen F evalueren op de trainingsgegevens, maar de prestaties op de trainingsgegevens vertellen ons niet echt hoe goed het model generaliseert naar andere gegevens. Met andere woorden, F zou de trainingsgegevens gewoon kunnen onthouden. We moeten dus evalueren op de testgegevens om een beter idee te krijgen van hoe goed het model werkt.

De eenvoudigste evaluatiemaatstaf voor classificatie is nauwkeurigheid, dat is de fractie van punten die correct zijn geclassificeerd. De nauwkeurigheid kan worden berekend als de som van ware positieven en ware negatieven, gedeeld door alle datapunten. Het foutenpercentage is eenvoudig 1 – Nauwkeurigheid, of de som van vals positieven en vals negatieven, gedeeld door alle datapunten.

Om nauwkeurigheid te implementeren, is de beste manier om uw voorspellingen op te slaan voor elke testvector x_t. Dus als je in totaal T te testen vectoren hebt, heb je een T-dimensionale vector met al je voorspellingen en die vergelijk je dan met de grondwaarheid. U zou de waarschijnlijkheden ook kunnen opslaan om andere metrieken te berekenen, maar dit kan veel geheugen vergen als u veel klassen hebt.

1 – Verwarringsmatrix

Een verwarringsmatrix is een specifieke tabelindeling waarmee de prestaties van een algoritme, meestal een algoritme voor gesuperviseerd leren, kunnen worden gevisualiseerd. Elke rij van de matrix vertegenwoordigt de instanties in een voorspelde klasse, terwijl elke kolom de instanties in een werkelijke klasse vertegenwoordigt. Zo kan je zien welke klassen het meest verward zijn. Een “sterke” diagonaal wijst op een goede prestatie. In een genormaliseerde verwarringsmatrix worden de rijen genormaliseerd om op te tellen tot 1.

2 – Precisie en Recall

Precisie is het aantal correct geclassificeerde positieve voorbeelden gedeeld door het totale aantal voorbeelden dat als positief wordt geclassificeerd. Recall is het aantal juist geclassificeerde positieve voorbeelden gedeeld door het totale aantal werkelijk positieve voorbeelden in de testverzameling. Precisie-Recall is een dominante metriek bij objectdetectie en is vooral nuttig wanneer categorieën onevenwichtig zijn. Hoge precisie betekent dat een algoritme aanzienlijk meer relevante dan irrelevante resultaten heeft teruggegeven, terwijl hoge recall betekent dat een algoritme de meeste relevante resultaten heeft teruggegeven.

3 – Classifier Thresholds

Vaak zal een classifier een vertrouwenswaarde in elke categorie hebben. Deze worden meestal gegenereerd door probabilistische classifiers. Soms wordt een drempelwaarde voor de waarschijnlijkheidswaarden bepaald. In computervisie gebeurt dit veel bij detectie. De optimale drempelwaarde hangt af van de taken. Sommige prestatiemetrieken zijn gevoelig voor de drempelwaarde. Door de waarde van de drempel te veranderen van min naar max (van 0 naar 1), kunnen we een curve tekenen (ROC en Precision-Recall Curves).

Modelvermogen

1 – Overfitting & Underfitting

Van uw classificator F wordt gezegd dat hij de gegevens overfit als de trainingsprestatie veel groter is dan de testprestatie. Anderzijds is er sprake van een underfit van F wanneer deze niet krachtig genoeg is om de input-outputrelatie te modelleren.

2 – Modelcapaciteit

Modelcapaciteit verwijst naar het aantal parameters. Een grotere capaciteit betekent over het algemeen dat u meer trainingsgegevens nodig hebt om het model te trainen, omdat anders het risico op overfitting groot is. Aan de andere kant betekent een lage capaciteit waarschijnlijk dat u de trainingsgegevens aanzienlijk underfit.

Nauwkeuriger gezegd, bij neurale netwerken betekenen meer neuronen meer capaciteit. Een goede analogie is dat lineaire classificator heeft een zeer lage capaciteit en diepe neurale netwerk heeft veel capaciteit. Met meer training data, wint het complexere model. Classifiers met een groter model kunnen complexe beslissingsgrenzen creëren, maar te complex kan een slecht model zijn voor de testgegevens, vooral als de gegevens beperkt zijn.

3 – Samplecomplexiteit

Samplecomplexiteit is het aantal trainingsmonsters dat we aan het leeralgoritme moeten leveren, zodat de door het algoritme geretourneerde functie binnen een willekeurig kleine fout van de best mogelijke functie (train en test) ligt. Algoritmen met een grotere modelcapaciteit hebben meestal een slechtere steekproefcomplexiteit, omdat zij meer parameters moeten aanpassen en de kans lopen te over-fitten met onvoldoende trainingsgegevens. In die gevallen kunnen regularisatietechnieken helpen.

Als je geïnteresseerd bent in dit materiaal, volg dan de publicatie Cracking Data Science Interview om mijn volgende artikelen te ontvangen over hoe je het data science-interviewproces kunt kraken.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *