Hyperparametrar i klassificering

Slutförd

Du kan se hyperparametrar som inställningar som används för träning. Vi kan till exempel välja att träna långsamt eller snabbt. Hyperparametrar påverkar träningen, så de påverkar den slutliga modellprestandan. Exakt vilka hyperparametrar som är tillgängliga beror på vilken typ av modell vi tränar. Vi experimenterar vanligtvis med hyperparametrar för att optimera modellens prestanda.

Slumpmässiga skogar som exempel

Slumpmässiga skogar har olika typer av tillgängliga hyperparametrar. Med slumpmässiga skogar specifikt kan gränsen mellan arkitekturbeslutshyperparametrar vara suddig. Det beror på att hyperparametrar inte bara påverkar parametrarna i modellen, utan även hur träden och skogen är strukturerade.

Kom ihåg att i början av träningen tillhandahålls varje beslutsträd många prover, till exempel 100 gymnaster, av vilka några vann medaljer. Vi måste bygga ett träd som gradvis delar upp dessa prover i mindre undergrupper av idrottare. Målet är att dessa undergrupper innehåller idrottare som är lika, till exempel i varje undergrupp som alla idrottare vann medaljer, eller alla inte gjorde det. Nu ska vi utforska några hyperparametrar som kan påverka den här träningsprocessen.

Kriterier att dela på

Under träningen måste optimeraren bestämma när en nod ska delas. Det finns olika sätt att fatta beslut som detta och vilken metod som väljs kallas för en hyperparameter. I grund och botten refererar olika metoder till olika sätt att bedöma hur liknande ett exempel är.

Vanliga metoder för att dela noder baseras på informationsteori. Du kan se detta ungefär som att dela upp ett exempel så att de två resulterande delexempelen är "renare" än originalet. De tillgängliga metoderna skiljer sig något åt och kan resultera i små skillnader i det slutliga resulterande trädet, på ungefär samma sätt som kostnadsfunktioner som används för gradient descent kan ge olika slutliga modeller. Vi experimenterar med två kriterier i nästa uppsättning övningar.

Minsta minskning av orenhet

Du kan ytterligare anpassa det kriterium som används för att dela upp noder. Om du till exempel anger minsta renhetsminskning kan en nod bara delas om den förbättrar modellen med en viss mängd eller mer. Det finns flera relaterade hyperparametrar som kan blockera nya noder som skapas, till exempel maximalt djup eller det minsta antalet exempel på en nod.

Anledningen till att vi begränsar ett träd som växer för långt är för att undvika överanpassning. Större träd är bättre på att matcha träningsdatauppsättningen, men de kan bli så anpassade till den här träningsuppsättningen att de slutar fungera för andra data. Med andra ord kan en begränsning av hur komplext ett träd blir minska dess tendens att överanpassas.

Maximalt antal funktioner

När träd i en slumpmässig skog skapas får de en delmängd träningsdata som passar och en lista över funktioner som ska användas. Det är viktigt att varje träd kan ta emot olika samlingar med funktioner. Ett träd kan till exempel använda Vikt och Höjd, medan ett annat använder Höjd och Ålder.

Att öka det maximala antalet funktioner som varje träd kan få kommer sannolikt att förbättra hur väl varje träd kan passa träningsuppsättningen när mer information tillhandahålls. Om detta underlättar eller försämrar dess förmåga på testuppsättningen kan kräva experimentering. Det beror på att det alltid finns många funktioner som kan innebära att träd i skogen blir mer lika varandra, vilket minskar fördelen med en slumpmässig skog jämfört med ett enkelt beslutsträd. Att hitta balansen mellan dessa ytterligheter kräver vanligtvis en del experiment.

Seedning

Modellanpassning förlitar sig vanligtvis någon gång på slumpmässiga tal. Datorer producerar inte riktigt slumpmässiga tal, utan innehåller snarare regler som anger hur du skapar en lista med slumpmässiga tal, givet ett första tal som kallas slumpmässigt frö.

Om vårt seed-värde till exempel var 10 och tar de tre första "slumpmässiga" talen kan datorn producera 0,75, 0,13, 0,68. Även om dessa tal visas slumpmässigt får vi samma uppsättning tal varje gång vi seedar från 10.

I maskininlärning använder vi slumpmässiga tal för att initiera modellens parametrar och/eller för att dela upp datamängder i tränings- och testuppsättningar. Om det slumpmässiga fröet anges kommer de slumpmässiga värden som används under träningsprocessen att vara desamma varje gång vi kör koden igen, vilket innebär att varje gång vi kör koden igen tilldelar vi samma data till test- eller träningsuppsättningar och tränar modeller som har samma initieringstillstånd (initiala parametrar).

Om vi däremot inte ställer in fröet väljer datorn ett för oss (till exempel baserat på tid), vilket innebär att körning av vår träning två gånger kan ge något olika resultat.

Det slumpmässiga fröet är inte bara en hyperparameter, men vi introducerar det här för att markera att den här externa parametern kan spela en roll i träningens effektivitet. Även om detta vanligtvis är mindre, om modellen är mycket komplex och/eller mängden tillgängliga data är liten, kan modellens testuppsättningsprestanda skilja sig markant om två olika frön används. I sådana situationer lönar det sig ofta att köra träning med flera olika frön för att bedöma i vilken grad din modelldesign är tillräcklig, och i vilken grad din prestanda helt enkelt är "blind lycka".