Tweet Share Share

Laatst bijgewerkt op 17 augustus 2020

De prestaties van machine learning-voorspellende modellering zijn slechts zo goed als uw gegevens, en uw gegevens zijn slechts zo goed als de manier waarop u ze voorbereidt voor modellering.

De meest gebruikelijke benadering van gegevensvoorbereiding is om een dataset te bestuderen en de verwachtingen van een machine learning-algoritme te bekijken, en vervolgens zorgvuldig de meest geschikte technieken voor gegevensvoorbereiding te kiezen om de ruwe gegevens te transformeren om zo goed mogelijk aan de verwachtingen van het algoritme te voldoen. Dit is traag, duur, en vereist een enorme hoeveelheid expertise.

Een alternatieve benadering van datavoorbereiding is het rasteren van een reeks veelgebruikte en algemeen bruikbare datavoorbereidingstechnieken op de ruwe gegevens. Dit is een alternatieve filosofie voor datavoorbereiding die datatransformaties behandelt als een andere hyperparameter van de modelleringspijplijn die moet worden doorzocht en afgestemd.

Deze benadering vereist minder expertise dan de traditionele handmatige benadering van datavoorbereiding, hoewel het rekenkundig kostbaar is. Het voordeel is dat het kan helpen bij de ontdekking van niet-intuïtieve oplossingen voor gegevensvoorbereiding die goede of beste prestaties bereiken voor een bepaald voorspellend modelleringsprobleem.

In deze tutorial ontdekt u hoe u de rasterzoekbenadering kunt gebruiken voor gegevensvoorbereiding met gegevens in tabelvorm.

Na het voltooien van deze tutorial weet u:

  • Roosterzoeken biedt een alternatieve benadering van gegevensvoorbereiding voor gegevens in tabelvorm, waarbij transformaties worden geprobeerd als hyperparameters van de modelleerpijplijn.
  • Hoe de rasterzoekmethode voor gegevensvoorbereiding te gebruiken om de modelprestaties te verbeteren ten opzichte van een basislijn voor een standaardclassificatiedataset.
  • Hoe rasterzoekreeksen van gegevensvoorbereidingsmethoden te gebruiken om de modelprestaties verder te verbeteren.

Start uw project met mijn nieuwe boek Data Preparation for Machine Learning, inclusief stapsgewijze tutorials en de Python-broncodebestanden voor alle voorbeelden.

Let’s get started.

How to Grid Search Data Preparation Techniques
Photo by Wall Boat, some rights reserved.

Tutorial Overview

Deze tutorial is onderverdeeld in drie delen; deze zijn:

  1. Grid Search Technique for Data Preparation
  2. Dataset and Performance Baseline
    1. Wine Classification Dataset
    2. Baseline Model Performance
  3. Grid Search Approach to Data Preparation

Grid Search Technique for Data Preparation

Datavoorbereiding kan een uitdaging zijn.

De aanpak die het vaakst wordt voorgeschreven en gevolgd, is het analyseren van de dataset, het beoordelen van de eisen van de algoritmen, en het transformeren van de ruwe gegevens om zo goed mogelijk aan de verwachtingen van de algoritmen te voldoen.

Dit kan effectief zijn, maar is ook traag en kan een diepgaande expertise met gegevensanalyse en machine learning-algoritmen vereisen.

Een alternatieve aanpak is om de voorbereiding van invoervariabelen te behandelen als een hyperparameter van de modelleringspijplijn en deze af te stemmen samen met de keuze van het algoritme en algoritmeconfiguraties.

Dit kan een gegevenstransformatie zijn die “niet zou moeten werken” of “niet geschikt zou moeten zijn voor het algoritme”, maar toch tot goede of geweldige prestaties leidt. Een andere mogelijkheid is het ontbreken van een gegevenstransformatie voor een ingangsvariabele die “absoluut noodzakelijk” wordt geacht en toch goede of geweldige prestaties oplevert.

Dit kan worden bereikt door het ontwerpen van een rasterzoekopdracht van gegevensvoorbereidingstechnieken en/of sequenties van gegevensvoorbereidingstechnieken in pijplijnen. Dit kan inhouden dat elk wordt geëvalueerd op een enkel gekozen machine learning-algoritme, of op een suite van machine learning-algoritmen.

Het voordeel van deze aanpak is dat het altijd resulteert in suggesties van modelleringspijplijnen die goede relatieve resultaten geven. Het belangrijkste is dat het de niet voor de hand liggende en onintuïtieve oplossingen kan blootleggen aan beoefenaars zonder de noodzaak van diepgaande expertise.

We kunnen deze benadering van datavoorbereiding verkennen met een uitgewerkt voorbeeld.

Voordat we in een uitgewerkt voorbeeld duiken, laten we eerst een standaard dataset selecteren en een basislijn in prestaties ontwikkelen.

Wil je aan de slag met datavoorbereiding?

Doe nu mee aan mijn gratis 7-daagse spoedcursus per e-mail (met voorbeeldcode).

Klik om u aan te melden en ontvang tevens een gratis PDF-ebookversie van de cursus.

Download uw gratis minicursus

Dataset en prestatiebasis

In dit gedeelte selecteren we eerst een standaarddataset voor machinaal leren en stellen we een basislijn op voor de prestaties op deze dataset. Dit zal de context bieden voor het verkennen van de rasterzoekmethode voor datavoorbereiding in de volgende sectie.

Wijnclassificatie Dataset

We zullen de wijnclassificatie dataset gebruiken.

Deze dataset heeft 13 invoervariabelen die de chemische samenstelling van wijnmonsters beschrijven en vereist dat de wijn wordt geclassificeerd als een van de drie soorten.

U kunt hier meer over de dataset te weten komen:

  • Wine Dataset (wine.csv)
  • Wine Dataset Beschrijving (wine.names)

U hoeft de dataset niet te downloaden, omdat we deze automatisch downloaden als onderdeel van onze uitgewerkte voorbeelden.

Open de dataset en bekijk de ruwe gegevens. De eerste paar rijen gegevens staan hieronder.

We kunnen zien dat het een multi-class classificatie voorspellend modelleringsprobleem is met numerieke invoervariabelen, die elk verschillende schalen hebben.

Het onderstaande voorbeeld laadt de dataset en splitst deze op in de invoer- en uitvoerkolommen, en vat vervolgens de gegevensarrays samen.

Het voorbeeld uitvoeren, we kunnen zien dat de dataset correct is geladen en dat er 179 rijen gegevens zijn met 13 invoervariabelen en een enkele doelvariabele.

1
(178, 13) (178,)

Laten we nu een model evalueren op deze dataset en een basislijn vaststellen voor de prestaties.

Basislijn modelprestaties

We kunnen een basislijn vaststellen voor de prestaties van de wijnclassificatietaak door een model te evalueren op de ruwe invoergegevens.

In dit geval zullen we een logistisch regressiemodel evalueren.

Eerst kunnen we een functie definiëren om de dataset te laden en enkele minimale gegevensvoorbereidingen uit te voeren om ervoor te zorgen dat de invoer numeriek is en het doel is gecodeerd met labels.

We zullen het model evalueren met behulp van de gouden standaard van herhaalde gelaagde k-voudige kruisvalidatie met 10 vouwen en drie herhalingen.

We kunnen vervolgens de functie aanroepen om de dataset te laden, ons model te definiëren en het vervolgens te evalueren, waarbij we de gemiddelde en standaardafwijkingsnauwkeurigheid rapporteren.

Hierna volgt het volledige voorbeeld van de evaluatie van een logistisch regressiemodel op de ruwe wijnclassificatiedataset.

Het uitvoeren van het voorbeeld evalueert de prestaties van het model en rapporteert de gemiddelde en standaardafwijkingsclassificatienauwkeurigheid.

Noot: Uw resultaten kunnen afwijken door de stochastische aard van het algoritme of de evaluatieprocedure, of door verschillen in numerieke precisie. Overweeg het voorbeeld een paar keer uit te voeren en vergelijk het gemiddelde resultaat.

In dit geval zien we dat het logistische regressiemodel dat op de ruwe invoergegevens is afgestemd, een gemiddelde classificatienauwkeurigheid van ongeveer 95,3 procent heeft bereikt, waarmee een basislijn in prestaties wordt gegeven.

1
Nauwkeurigheid: 0.953 (0.048)

Laten we nu eens onderzoeken of we de prestaties kunnen verbeteren met behulp van de rasterzoekbenadering voor het prepareren van gegevens.

Roosterzoekbenadering voor het prepareren van gegevens

In dit gedeelte kunnen we onderzoeken of we de prestaties kunnen verbeteren met behulp van de rasterzoekbenadering voor het prepareren van gegevens.

De eerste stap is het definiëren van een reeks modelleerpijplijnen om te evalueren, waarbij elke pijplijn een (of meer) gegevensvoorbereidingstechnieken definieert en eindigt met een model dat de getransformeerde gegevens als invoer neemt.

We zullen een functie definiëren om deze pijplijnen te creëren als een lijst met tupels, waarbij elke tupel de korte naam voor de pijplijn en de pijplijn zelf definieert. We evalueren een reeks verschillende methoden voor het schalen van gegevens (bijvoorbeeld MinMaxScaler en StandardScaler), verdelingstransformaties (QuantileTransformer en KBinsDiscretizer), evenals transformaties voor dimensionaliteitsreductie (PCA en SVD).

We kunnen deze functie dan aanroepen om de lijst met transformaties op te halen, ze vervolgens elk op te sommen, ze te evalueren en de prestaties onderweg te rapporteren.

Aan het eind van de run kunnen we een box-and-wisker-plot maken voor elke set scores en de verdelingen van de resultaten visueel vergelijken.

1
2
3
4

# plot het resultaat
pyplot.boxplot(results, labels=names, showmeans=True)
pyplot.show()

Hiernaast volgt een volledig voorbeeld van de technieken voor de voorbereiding van rasterzoeken op de wijnclassificatie-dataset.

Het uitvoeren van het voorbeeld evalueert de prestaties van elke pijplijn en rapporteert de gemiddelde en standaardafwijking van de classificatienauwkeurigheid.

Noot: Uw resultaten kunnen afwijken door de stochastische aard van het algoritme of de evaluatieprocedure, of door verschillen in numerieke precisie. Overweeg het voorbeeld een paar keer uit te voeren en vergelijk de gemiddelde uitkomst.

In dit geval kunnen we zien dat het standaardiseren van de invoervariabelen en het gebruik van een kwantieltransformatie beide het beste resultaat opleveren met een classificatienauwkeurigheid van ongeveer 98.7 procent, een verbetering ten opzichte van de baseline zonder datavoorbereiding die een classificatienauwkeurigheid van 95,3 procent behaalde.

U kunt uw eigen modelleerpijplijnen toevoegen aan de get_pipelines() functie en hun resultaat vergelijken.

Kunt u betere resultaten krijgen?
Laat het me weten in de opmerkingen hieronder.

1
2
3

4

5
6
>norm: 0.976 (0.031)
>std: 0.987 (0.023)
>quan: 0.987 (0.023)
>kbins: 0.968 (0.045)
>pca: 0.963 (0.039)
>svd: 0,953 (0,048)

Er is een figuur gemaakt met box- en whiskerplots die de verdeling van de classificatienauwkeurigheidsscores voor elke techniek van gegevensvoorbereiding samenvatten. We kunnen zien dat de verdeling van de scores voor de standaardisering en de kwantile transformaties compact en zeer vergelijkbaar zijn en een uitschieter hebben. We kunnen zien dat de spreiding van de scores voor de andere transformaties groter is en naar beneden scheef trekt.

De resultaten kunnen suggereren dat het standaardiseren van de dataset waarschijnlijk een belangrijke stap is in de datavoorbereiding en verwante transformaties, zoals de kwantieltransformatie, en misschien kan zelfs de machtstransformatie voordelen bieden als deze wordt gecombineerd met standaardisatie door een of meer invoervariabelen meer Gaussiaans te maken.

Box and Whisker Plot of Classification Accuracy for Different Data Transforms on the Wine Classification Dataset

We kunnen ook sequenties van transformaties onderzoeken om te zien of ze een lift in de prestaties kunnen bieden.

Zo zouden we bijvoorbeeld RFE-eigenschapsselectie willen toepassen na de standaardisatietransformatie om te zien of dezelfde of betere resultaten kunnen worden gebruikt met minder invoervariabelen (d.

We willen misschien ook zien of een machtstransformatie, voorafgegaan door een dataschalingstransformatie, goede prestaties kan leveren op de dataset, zoals we denken dat het zou kunnen gezien het succes van de kwantieltransformatie.

De bijgewerkte get_pipelines()-functie met reeksen transformaties wordt hieronder gegeven.

Hierna volgt het volledige voorbeeld.

Het uitvoeren van het voorbeeld evalueert de prestaties van elke pijplijn en rapporteert de gemiddelde en standaardafwijking classificatienauwkeurigheid.

Note: Uw resultaten kunnen variëren door de stochastische aard van het algoritme of de evaluatieprocedure, of door verschillen in numerieke precisie. Overweeg het voorbeeld een paar keer uit te voeren en vergelijk het gemiddelde resultaat.

In dit geval kunnen we zien dat de standaardisatie met kenmerkselectie een extra verhoging van de nauwkeurigheid biedt van 98,7 procent tot 98,9 procent, hoewel het schalen van de gegevens en de machtstransformatie geen extra voordeel bieden ten opzichte van de kwantaaltransformatie.

1

2

>std: 0.989 (0.022)
>power: 0.987 (0.023)

Er is een figuur gemaakt met box-and-wiskerplots die de verdeling van de classificatienauwkeurigheidsscores voor elke techniek van gegevensvoorbereiding samenvatten.

We kunnen zien dat de verdeling van de resultaten voor beide pijplijnen van transformaties compact is met zeer weinig spreiding, afgezien van uitbijters.

Box and Whisker Plot of Classification Accuracy for Different Sequences of Data Transforms on the Wine Classification Dataset

Further Reading

In dit gedeelte vindt u meer bronnen over dit onderwerp als u meer wilt weten.

Boeken

  • Feature Engineering and Selection, 2019.
  • Feature Engineering for Machine Learning, 2018.

API’s

  • sklearn.pipeline.Pipeline API.

Samenvatting

In deze tutorial hebt u ontdekt hoe u een rasterzoekmethode kunt gebruiken voor gegevensvoorbereiding met gegevens in tabelvorm.

In het bijzonder hebt u geleerd:

  • Rasterzoeken biedt een alternatieve benadering voor gegevensvoorbereiding met gegevens in tabelvorm, waarbij transformaties worden geprobeerd als hyperparameters van de modelleerpijplijn.
  • Hoe de rasterzoekmethode voor gegevensvoorbereiding te gebruiken om de modelprestaties te verbeteren ten opzichte van een basislijn voor een standaardclassificatiedataset.
  • Hoe rasterzoekreeksen van gegevensvoorbereidingsmethoden te gebruiken om de modelprestaties verder te verbeteren.

Heeft u nog vragen?
Stel uw vragen in de opmerkingen hieronder en ik zal mijn best doen om te antwoorden.

Krijg grip op moderne datavoorbereiding!

Voorbereid uw machine learning-data in enkele minuten

…met slechts een paar regels pythoncode

Ontdek hoe in mijn nieuwe Ebook:
Gegevensvoorbereiding voor Machine Learning

Het biedt zelfstudietutorials met volledig werkende code over:
Feature Selection, RFE, Data Cleaning, Data Transforms, Scaling, Dimensionality Reduction, en nog veel meer.

Breng moderne gegevensvoorbereidingstechnieken naar
uw Machine Learning-projecten

Zie wat er in zit

Tweet Share Share

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.