Skogens Slumpmässighet
Svep för att visa menyn
Random Forest bygger ett stort antal beslutsträd – vanligtvis runt 100 eller ännu fler. Att skapa så många olika träd är inte enkelt bara genom att justera inställningar, så slumpmässighet införs för att hjälpa till. Lyckligtvis är beslutsträd mycket känsliga för små förändringar i data och inställningar, vilket naturligt leder till en stor variation av träd i skogen.
Det finns två källor till slumpmässighet i en Random Forest:
- Ursampling av data för varje träd;
- Ursampling av egenskaper vid varje beslutsnod i varje träd.
Ursampling av data
För att skapa ett unikt träningsset för varje beslutsträd i en skog används bootstrap-metoden (även kallad bagging). Idén är att ur varje träd, med återläggning, skapa ett dataset av samma storlek.
Som standard matchar storleken på varje träds dataset storleken på det ursprungliga datasetet. Ursampling med återläggning kan liknas vid att slumpmässigt välja en datapunkt från träningsmängden – likt att dra ett kort från en kortlek. Till skillnad från vanlig kortdragning tas dock inte varje vald datapunkt bort, så samma datapunkt kan väljas flera gånger.
Varje träd tränas på en annan delmängd av datan, vilket redan bidrar till att göra träden olika. För att lägga till ännu mer slumpmässighet och snabba upp träningen kan vi även begränsa antalet variabler som varje träd beaktar vid uppdelningar.
Urval av variabler
I ett vanligt beslutsträd undersöker varje nod alla tillgängliga variabler för att hitta den bästa uppdelningen – vanligtvis genom att beräkna mått som Gini impurity. Denna process är beräkningsmässigt kostsam.
I en Random Forest beaktas endast en slumpmässig delmängd av variabler vid varje nod. Detta snabbar upp träningen och tillför slumpmässighet, vilket bidrar till att göra träden mer olika. Ett vanligt tillvägagångssätt är att använda kvadratroten av det totala antalet variabler. Till exempel, om det finns 9 variabler kan 3 slumpmässigt väljas vid varje nod; om det finns 10,000 variabler kan cirka 100 väljas.
Variablerna väljs utan återläggning, så samma variabel förekommer inte mer än en gång vid en enskild nod. Antalet variabler som ska beaktas kan justeras beroende på användningsområde.
Du kan styra hur många funktioner som beaktas vid varje beslutspunkt med parametern max_features i scikit-learns implementation. Här är några populära alternativ:
max_features='sqrt': använder kvadratroten av det totala antalet funktioner. Detta är en vanlig standard som balanserar noggrannhet och effektivitet;max_features='log2': använder bas-2-logaritmen av det totala antalet funktioner, vilket ger ännu mer slumpmässighet;max_features=0.1: använder 10% av funktionerna, där värdet behandlas som en andel.
Du kan också ange max_features till en valfri andel mellan 0 och 1 (t.ex. max_features=0.1 använder 10% av funktionerna).
Sammanfattningsvis är en Random Forest utformad så att varje träd tränas på ett annat urval av data, och varje beslutspunkt inom dessa träd beaktar ett annat slumpmässigt urval av funktioner. Denna inbyggda slumpmässighet leder till en varierad samling träd, vilket i slutändan förbättrar modellens totala prestanda.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal