Video: Selecting the best model in scikit-learn using cross-validation 2024
Door een machine-leerhypothese te valideren, kunt u uw gekozen algoritme verder optimaliseren. Het algoritme biedt de meeste voorspellende prestaties op uw gegevens, gezien het vermogen ervan om signalen uit gegevens te detecteren en in de ware functionele vorm van de voorspellende functie te passen zonder teveel te overschrijden en veel variantie van de schattingen te genereren. Niet elk algoritme voor machinaal leren past het beste bij uw gegevens en geen enkel algoritme is geschikt voor elk probleem. Het is aan jou om de juiste te vinden voor een specifiek probleem.
Een tweede bron van voorspellende prestaties zijn de gegevens zelf wanneer ze op de juiste wijze worden getransformeerd en geselecteerd om de leermogelijkheden van het gekozen algoritme te verbeteren.
De laatste bron van prestaties is afkomstig van het afstemmen van de hyperparameters van het algoritme, die de parameters zijn die u beslist voordat het leren gebeurt en die niet uit gegevens worden geleerd. Hun rol ligt in het definiëren van a priori een hypothese, terwijl andere parameters het a posteriori, specificeren nadat het algoritme een interactie aangaat met de gegevens en, door gebruik te maken van een optimalisatieproces, vindt dat bepaalde parameterwaarden werk beter bij het verkrijgen van goede voorspellingen.
Niet alle algoritmen voor machinaal leren vereisen veel hyperparameterafstemming, maar enkele van de meest complexe, en hoewel dergelijke algoritmen nog steeds uit de doos werken, kan het trekken van de juiste hendels een groot verschil maken in de juistheid van de voorspellingen. Zelfs als de hyperparameters niet uit gegevens worden geleerd, moet u rekening houden met de gegevens waaraan u werkt bij het bepalen van hyperparameters, en u moet de keuze maken op basis van kruisvalidatie en zorgvuldige evaluatie van de mogelijkheden.
Complexe machine learning algoritmen, degene die het meest blootgesteld zijn aan variantie van schattingen, presenteren veel keuzes uitgedrukt in een groot aantal parameters. Twiddling met hen maakt ze zich min of meer aanpassen aan de gegevens waarvan ze leren. Soms kan te veel hyperparameter twiddling het algoritme zelfs in staat stellen valse signalen van de gegevens te detecteren. Dat maakt hyperparameters zelf een niet-gedetecteerde bron van variantie als je ze te veel begint te manipuleren op basis van een vaste referentie zoals een testset of een herhaald schema voor cross-validatie.
Zowel R en Python bieden slicing-functionaliteiten die uw inputmatrix in trein-, test- en validatiedelen snijden. Met name voor complexere testprocedures, zoals cross-validatie of bootstrapping, biedt het pakket Scikit-learn een volledige module en heeft R een gespecialiseerd pakket met functies voor gegevenssplitsing, voorverwerking en testen.Dit pakket wordt 'caret' genoemd.
De mogelijke combinaties van waarden die hyperparameters kunnen vormen, maken het moeilijk om te bepalen waar optimalisaties moeten worden gezocht. Zoals beschreven bij het bespreken van gradiëntdaling, kan een optimalisatieruimte waardecombinaties bevatten die beter of slechter presteren. Zelfs nadat u een goede combinatie hebt gevonden, bent u er niet van verzekerd dat dit de beste optie is. (Dit is het probleem van vastlopen in lokale minima bij het minimaliseren van de fout.)
Als een praktische manier om dit probleem op te lossen, is de beste manier om hyperparameters voor een algoritme dat op specifieke gegevens wordt toegepast, te testen door ze allemaal te testen op kruisvalidatie en om de beste combinatie te kiezen. Deze eenvoudige benadering, grid-search genaamd, biedt onbetwistbare voordelen doordat u het bereik van mogelijke waarden kunt samplen om systematisch in het algoritme in te voeren en te herkennen wanneer het algemene minimum optreedt.
Aan de andere kant heeft raster zoeken ook ernstige nadelen, omdat het rekenintensief is (je kunt deze taak eenvoudig parallel uitvoeren op moderne multicore-computers) en vrij tijdrovend bent. Bovendien vergroten systematische en intensieve tests de mogelijkheid van fouten, omdat sommige goede, maar valse validatieresultaten kunnen worden veroorzaakt door ruis in de dataset.
Er zijn enkele alternatieven voor zoeken op het raster beschikbaar. In plaats van alles te testen, kunt u proberen de ruimte te verkennen van mogelijke hyperparameterwaarden die worden begeleid door rekenkundig zware en wiskundig complexe niet-lineaire optimalisatietechnieken (zoals de Nelder-Mead-methode), met behulp van een Bayesiaanse benadering (waarbij het aantal tests wordt geminimaliseerd door voordeel van eerdere resultaten) of met willekeurig zoeken.
Verrassend genoeg werkt willekeurige zoekopdracht ongelooflijk goed, is eenvoudig te begrijpen en is niet alleen gebaseerd op blind geluk, hoewel dat in eerste instantie lijkt te zijn. Het belangrijkste punt van de techniek is dat als je genoeg willekeurige tests kiest, je eigenlijk genoeg mogelijkheden hebt om de juiste parameters te vinden zonder energie te verspillen aan het testen van enigszins verschillende combinaties van vergelijkbare combinaties.
De grafische weergave hieronder legt uit waarom random search prima werkt. Een systematische verkenning, hoewel nuttig, heeft de neiging om elke combinatie te testen, die verspilt aan energie als sommige parameters het resultaat niet beïnvloeden. Een willekeurige zoekopdracht test eigenlijk minder combinaties, maar meer binnen het bereik van elke hyperparameter, een strategie die het winnen bewijst als, zoals vaak gebeurt, bepaalde parameters belangrijker zijn dan andere.
Vergelijking van rastering met willekeurig zoeken.Voor gerandomiseerde zoekopdrachten om goed te presteren, moet u van 15 tot maximaal 60 tests maken. Het is zinvol om willekeurig te zoeken als een raster-zoekopdracht een groter aantal experimenten vereist.