Hem Personliga finanser Optimering av korrigeringsval i maskinlärande - dummies

Optimering av korrigeringsval i maskinlärande - dummies

Video: S1 - #6-4 - Lineær optimering 2024

Video: S1 - #6-4 - Lineær optimering 2024
Anonim

Att kunna validera en maskininlärningssituation möjliggör ytterligare optimering av din valda algoritm. Algoritmen ger det mesta av den prediktiva prestandan på dina data, med tanke på dess förmåga att detektera signaler från data och passar den sanna funktionella formen av den prediktiva funktionen utan övermontering och genererar stor variation av uppskattningarna. Inte alla maskininlärningsalgoritmer passar bäst för dina data, och ingen enskild algoritm passar alla problem. Det är upp till dig att hitta den rätta för ett specifikt problem.

En andra källa till prediktiv prestanda är själva dataen när den är lämpligt transformerad och vald för att förbättra inlärningsförmågan hos den valda algoritmen.

Den slutliga källan till prestanda härstammar från finjustering av algoritmens hyperparametrar, vilka parametrar du bestämmer innan du lär dig händer och som inte lärs ut från data. Deras roll är att definiera a priori en hypotes, medan andra parametrar anger det a posteriori, efter att algoritmen interagerar med data och, genom att använda en optimeringsprocess, finner att vissa parametervärden arbeta bättre för att få bra förutsägelser.

Inte alla maskininlärningsalgoritmer kräver mycket inställning av hyperparametrar, men några av de mest komplexa gör det, och även om sådana algoritmer fortfarande fungerar ut ur lådan, kan dra av de högra spakarna göra stor skillnad i förutsägelsens korrekthet. Även om hyperparametrarna inte lärs ut från data, bör du överväga de data du arbetar med när du bestämmer hyperparametrar, och du bör göra valet baserat på korsvalidering och noggrann utvärdering av möjligheter.

Komplexa maskininlärningsalgoritmer, de som är mest utsatta för variationer av uppskattningar, presenterar många val uttryckta i ett stort antal parametrar. Twiddling med dem gör att de anpassar mer eller mindre till de data de lär sig från. Ibland kan för mycket hyperparameter twiddling till och med göra algoritmen detektera falska signaler från data. Det gör hyperparametrarna till sig själv som en oupptäckt variantkälla om du börjar manipulera dem för mycket baserat på en viss fast referens som en testuppsättning eller ett upprepat korsvalideringsschema.

Både R och Python erbjuder skivfunktioner som skär din ingående matris i tåg-, test- och valideringsdelar. Speciellt, för mer komplicerade testprocedurer, såsom kryssvalidering eller bootstrapping, erbjuder Scikit-learn-paketet en hel modul och R har en specialiserad paket, som erbjuder funktioner för datasplittning, förbehandling och testning.Detta paket heter caret.

De möjliga kombinationerna av värden som hyperparametrar kan bilda bestämmer var man ska leta efter optimeringar hårt. Som beskrivs när man diskuterar gradient nedstigning kan ett optimeringsutrymme innehålla värdekombinationer som fungerar bättre eller sämre. Även efter att du har hittat en bra kombination, är du inte säker på att det är det bästa alternativet. (Detta är problemet att fastna i lokala minima vid minimering av felet.)

Som ett praktiskt sätt att lösa detta problem är det bästa sättet att verifiera hyperparametrar för en algoritm som tillämpas på specifika data att testa dem alla av kryssvalidering och att välja den bästa kombinationen. Detta enkla tillvägagångssätt, som kallas grid-sökning, erbjuder obestridliga fördelar genom att du kan prova utbudet av möjliga värden för att systematiskt mata in i algoritmen och att upptäcka när det allmänna miniminivået händer.

Å andra sidan har grid-sökning också allvarliga nackdelar eftersom det är beräkningsintensivt (du kan enkelt utföra denna uppgift parallellt på moderna multicore-datorer) och ganska tidskrävande. Dessutom förbättrar systematiska och intensiva tester möjligheten att påverka fel eftersom vissa bra men falska valideringsresultat kan orsakas av brus närvarande i datasetet.

Några alternativ till grid-sökning finns tillgängliga. I stället för att testa allt kan du försöka utforska utrymmet för möjliga hyperparametervärden som styrs av beräkningsmässigt tunga och matematiskt komplexa olinjära optimeringstekniker (som Nelder-Mead-metoden), med hjälp av en Bayesian-metod (där antalet test minimeras genom att ta fördel av tidigare resultat) eller med hjälp av slumpmässig sökning.

Det är överraskande att slumpmässig sökning fungerar otroligt bra, är lätt att förstå, och bygger inte bara på blind luck, men det kan i första hand tyckas vara. Faktum är att huvudpunkten i tekniken är att om du väljer tillräckligt slumpmässiga tester, har du faktiskt tillräckligt med möjligheter att upptäcka rätt parametrar utan att slösa på energi när du testar lite olika kombinationer av liknande utförande kombinationer.

Den grafiska representationen nedan förklarar varför slumpmässig sökning fungerar bra. En systematisk utforskning, men användbar, tenderar att testa varje kombination, vilket förvandlas till slöseri med energi om vissa parametrar inte påverkar resultatet. En slumpmässig sökning testar faktiskt färre kombinationer men mer inom varje hyperparameter, en strategi som visar sig vinna om det, som ofta händer, vissa parametrar är viktigare än andra.

Jämförelse av nätverkssökning med slumpmässig sökning.

För att randomiserad sökning ska fungera bra bör du göra från 15 till högst 60 test. Det är vettigt att tillgripa slumpmässig sökning om en gridsökning kräver ett större antal experiment.

Optimering av korrigeringsval i maskinlärande - dummies

Redaktörens val

Hur man lägger till text i en sätter () Funktion i C Programmering

Hur man lägger till text i en sätter () Funktion i C Programmering

När du behöver visa en annan textrad, använd C-programmeringsfärdigheterna för att skapa en annan puts () -funktion i källkoden, som visas i Visa två textlinjer. VISA TILL TEXTFINER # inkludera int main () {sätter ("Hickory, Dickory, Dock,"); sätter ("musen sprang klockan."); returnera (0);} Den andra ...

Förklarar variabler i C-dummies

Förklarar variabler i C-dummies

Variabler är det som gör dina program zooma. Programmering kan bara inte bli gjort utan dem. Så om du inte har introducerats till variabler än, här går du. Valerie Variable är en numerisk variabel. Hon älskar att hålla nummer - vilket nummer som helst; det spelar ingen roll. När hon ser ett lika tecken tar hon ett värde och ...

Redaktörens val

Gör rädsla för din vän - dummies

Gör rädsla för din vän - dummies

Rädsla är lika verklig som mod. Även om värdet av rädsla inte är lika uppenbart som modets värde, har det dess fördelar. Rädsla är din instinkt som säger att du är obehaglig - även om situationen inte kommer att skada dig. Alla har haft den känslan när man hellre drar locket ...

Hur man ökar din självmedvetenhet - dummies

Hur man ökar din självmedvetenhet - dummies

Du kommer att vara med dig själv under en livstid. Ingenting kommer att förändra det faktum. Att lära känna, som att lyssna på och uppskatta själv är avgörande för din sanity. Kanske kommer du till att älska, acceptera och omfamna alla du är, är svår för dig att föreställa dig just nu, men du kan göra ...

Hur man ökar din mentala flexibilitet - dummies

Hur man ökar din mentala flexibilitet - dummies

ÄR flexibel i arbete och relationer är ett tecken på en högpresterande. Medan perfektionister är styva och obehagliga i sitt arbete och hur de interagerar med andra, är högpresterande mer öppna och tillmötesgående. Att vara mer flexibel på jobbet gav Ralph aldrig förslag under brainstorming vid gruppmöten. Han kände att hans lag ...

Redaktörens val

Nätverksadministration: Linux-installation och virtuella konsoler - dummies

Nätverksadministration: Linux-installation och virtuella konsoler - dummies

Linux är i sig ett kommandoradsorienterat operativsystem. Grafiska användargränssnitt - inklusive installationsprogrammets GUI - tillhandahålls av en valfri komponent som heter X Window System. Men medan du arbetar med det grafiska användargränssnittet för installationsprogrammet, håller Linux flera ytterligare kommandorads-konsoler öppna. Normalt behöver du inte ...

Nätverksadministration: Linux-loggning, logg och systemavstängning - dummies

Nätverksadministration: Linux-loggning, logg och systemavstängning - dummies

Alla användare som åtkomst ett Linux-system, lokalt eller över ett nätverk, måste verifieras av ett giltigt användarkonto på systemet. I det följande får du veta hur du loggar in och ut på ett Linux-system och hur du stänger av systemet. Logga in När Linux startar upp visas det ...

Nätverksadministration: Licensserver - Dummies

Nätverksadministration: Licensserver - Dummies

I vissa program kan du köpa nätverkslicenser som gör att du kan installera programvaran på många datorer som du vill, men reglera antalet personer som kan använda programvaran vid en viss tidpunkt. För att styra hur många som använder programvaran, är en särskild licensserver inrättad. När en användare börjar ...