Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Skogens Slumpmässighet | Random Forest
Klassificering med Python

bookSkogens Slumpmässighet

Random Forest bygger ett stort antal beslutsträd – vanligtvis omkring 100 eller fler. Att skapa så många olika träd är inte enkelt genom att bara justera inställningar, så slumpmässighet införs för att underlätta. 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:

  1. Ursampling av data för varje träd;
  2. Ursampling av attribut vid varje beslutsnod i varje träd.

Ursampling av data

För att skapa ett annorlunda träningsset för varje beslutsträd i en skog används bootstrap-metoden (även kallad bagging). Idén är att slumpmässigt, med återläggning, välja ett dataset av samma storlek för varje träd.

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 den valda datapunkten bort, så samma datapunkt kan väljas flera gånger.

Varje träd tränas på en olika delmängd av datan, vilket redan bidrar till att göra träden varierade. För att lägga till ännu mer slumpmässighet och snabba upp träningen kan vi också begränsa antalet attribut som varje träd överväger vid uppdelningar.

Urval av funktioner

I ett standardbeslutsträd undersöker varje nod alla tillgängliga funktioner för att hitta den bästa uppdelningen – vanligtvis genom att beräkna mått som Gini-orenhet. Denna process är beräkningsmässigt kostsam.

I en Random Forest beaktas endast ett slumpmässigt delmängd av funktioner vid varje nod. Detta påskyndar träningen och tillför slumpmässighet, vilket bidrar till att göra träden mer varierade. En vanlig metod är att använda kvadratroten av det totala antalet funktioner. Till exempel, om det finns 9 funktioner kan 3 slumpmässigt väljas vid varje nod; om det finns 10,000 funktioner kan cirka 100 väljas.

Funktionerna väljs utan återläggning, så samma funktion förekommer inte mer än en gång vid en enskild nod. Antalet funktioner som 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.
Note
Notera

Du kan även 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 beslutsnod inom dessa träd beaktar en annan slumpmässig delmängd av egenskaper. Denna inbyggda slumpmässighet leder till en mångfald av träd, vilket i slutändan förbättrar modellens totala prestanda.

question mark

Vad hjälper oss att uppnå slumpmässigheten i en Random Forest? Välj alla som gäller.

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 2

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

Can you explain why randomness is important in Random Forests?

How does sampling with replacement differ from sampling without replacement?

What is the effect of changing the max_features parameter?

Awesome!

Completion rate improved to 4.17

bookSkogens Slumpmässighet

Svep för att visa menyn

Random Forest bygger ett stort antal beslutsträd – vanligtvis omkring 100 eller fler. Att skapa så många olika träd är inte enkelt genom att bara justera inställningar, så slumpmässighet införs för att underlätta. 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:

  1. Ursampling av data för varje träd;
  2. Ursampling av attribut vid varje beslutsnod i varje träd.

Ursampling av data

För att skapa ett annorlunda träningsset för varje beslutsträd i en skog används bootstrap-metoden (även kallad bagging). Idén är att slumpmässigt, med återläggning, välja ett dataset av samma storlek för varje träd.

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 den valda datapunkten bort, så samma datapunkt kan väljas flera gånger.

Varje träd tränas på en olika delmängd av datan, vilket redan bidrar till att göra träden varierade. För att lägga till ännu mer slumpmässighet och snabba upp träningen kan vi också begränsa antalet attribut som varje träd överväger vid uppdelningar.

Urval av funktioner

I ett standardbeslutsträd undersöker varje nod alla tillgängliga funktioner för att hitta den bästa uppdelningen – vanligtvis genom att beräkna mått som Gini-orenhet. Denna process är beräkningsmässigt kostsam.

I en Random Forest beaktas endast ett slumpmässigt delmängd av funktioner vid varje nod. Detta påskyndar träningen och tillför slumpmässighet, vilket bidrar till att göra träden mer varierade. En vanlig metod är att använda kvadratroten av det totala antalet funktioner. Till exempel, om det finns 9 funktioner kan 3 slumpmässigt väljas vid varje nod; om det finns 10,000 funktioner kan cirka 100 väljas.

Funktionerna väljs utan återläggning, så samma funktion förekommer inte mer än en gång vid en enskild nod. Antalet funktioner som 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.
Note
Notera

Du kan även 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 beslutsnod inom dessa träd beaktar en annan slumpmässig delmängd av egenskaper. Denna inbyggda slumpmässighet leder till en mångfald av träd, vilket i slutändan förbättrar modellens totala prestanda.

question mark

Vad hjälper oss att uppnå slumpmässigheten i en Random Forest? Välj alla som gäller.

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 2
some-alt