Random Forest is een van de meest populaire en krachtige machinale leeralgoritmen. Het is een soort van ensemble machine leeralgoritme genaamd Bootstrap Aggregation of bagging.

In deze post ontdek je het Bagging ensemble algoritme en daarmee het Random Forest algoritme voor voorspellende modellering. Na het lezen van dit bericht weet je het:

De bootstrap methode voor het schatten van statistische hoeveelheden uit monsters.

Het Bootstrap Aggregatie algoritme voor het maken van meerdere verschillende modellen uit één trainingsdataset.

Het Random Forest algoritme dat een kleine aanpassing aan Bagging maakt en leidt tot een zeer krachtige classifier.

Deze post is geschreven voor ontwikkelaars en gaat uit van geen enkele achtergrond in statistiek of wiskunde. De post richt zich op hoe het algoritme werkt en de manier waarop het gebruikt kan worden voor voorspellende modelleringsproblemen.

Als je vragen hebt, laat dan een reactie achter en ik zal mijn best doen om die te beantwoorden.

Ontdek hoe algoritmes voor machinaal leren werken, zoals kNN, beslisbomen, naïeve baaien, SVM, ensembles en nog veel meer in mijn nieuwe boek, met 22 tutorials en voorbeelden in excel.

Laten we beginnen.

Bootstrap Methode

Voordat we naar Bagging gaan, laten we een snelle check out maken van een cruciale funderingstechniek genaamd de bootstrap.

De bootstrap kan een krachtige statistische procedure zijn voor het schatten van een hoeveelheid uit een kennismonster. Dit is vaak het gemakkelijkst om te weten of het getal een beschrijvende statistiek is, zoals een gemiddelde of een typische afwijking.

Laten we aannemen dat we een steekproef van 100 waarden (x) hebben en dat we een schatting van het gemiddelde van de steekproef willen krijgen.

We kunnen het gemiddelde direct uit de steekproef berekenen als:

gemiddelde(x) = 1/100 * som(x)

We weten dat ons monster weinig is waar ons gemiddelde een fout in heeft. We zullen de schatting van ons gemiddelde verbeteren met behulp van de bootstrap procedure:

Maak veel (bijv. 1000) willekeurige sub-samples van onze dataset met vervanging (wat betekent dat we meerdere malen een equivalente waarde zullen selecteren).

Bereken het gemiddelde van elke sub-sample.

Bereken het typische van al onze verzamelde middelen en gebruik dat als ons geschatte gemiddelde voor de info.

Laten we bijvoorbeeld zeggen dat we 3 resamples hebben gebruikt en de gemiddelde waarden 2.3, 4.5 en 3.3 hebben gekregen. Als we het gemiddelde van deze waarden nemen, kunnen we het geschatte gemiddelde van de informatie op 3,367 stellen.

Dit proces is vaak niet bedoeld om andere grootheden te schatten, zoals de variantie en zelfs de grootheden die gebruikt worden in algoritmen voor machinaal leren, zoals de geleerde coëfficiënten.

Bootstrap Aggregatie (Bagging)

Bootstrap Aggregation (of kortweg Bagging), kan een eenvoudige en zeer krachtige ensemblemethode zijn.

Een ensemblemethode kan een techniek zijn die de voorspellingen van meerdere machinale leeralgoritmen samenvoegt om nauwkeurigere voorspellingen te vormen dan een persoonsmodel.

Bootstrap Aggregation kan een algemene procedure zijn die de variantie voor dat algoritme dat een hoge variantie heeft, niet zal verminderen. Een algoritme met een hoge variantie zijn beslissingsbomen, zoals classificatie- en regressiebomen (CART).

Beslissingsbomen zijn gevoelig voor de precieze gegevens waarop ze worden getraind. Als de trainingsgegevens worden aangepast (bv. een boom wordt getraind op een deelverzameling van de trainingsgegevens) is de resulterende beslisboom vaak heel anders en zijn de voorspellingen vaak heel anders.

De toepassing van de Bootstrap-procedure op een hoog variabel machinaal leeralgoritme, meestal beslisbomen, is een zakje.

Laten we aannemen dat we een voorbeelddataset van 1000 instanties (x) hebben en dat we het CART-algoritme gebruiken. Het CART-algoritme zou als volgt werken.

Maak veel (bijv. 100) willekeurige sub-samples van onze dataset met vervanging.

Train een CART-model op elk monster.

Bereken met een vervangende dataset de typische voorspelling van elk model.

Bijvoorbeeld, als we 5 zakken met beslissingsbomen hadden die de volgende klasse-voorspellingen voor een ingangssteekproef maakten: blauw, blauw, rood, blauw en rood, dan zouden we de meest frequente klasse kunnen nemen en blauw voorspellen.

Bij het verpakken van beslissingsbomen maken we ons minder zorgen over individuele bomen dan over het passen van de trainingsgegevens. Om deze reden en omwille van de efficiëntie worden de individuele beslissingsbomen diep ingekweekt (bv. weinig trainingssamples bij elke bladknoop van de boom) en worden de bomen dus niet gesnoeid. Deze bomen zullen zowel een hoge variantie als een lage bias hebben. Dit zijn belangrijke kenmerken van submodellen bij het combineren van voorspellingen met behulp van bagging.

De enige parameters bij het verpakken van beslissingsbomen is dat het aantal monsters en dus het aantal bomen dat moet worden opgenomen. Dit zal worden gekozen door de hoeveelheid bomen die na de run worden gerund te verhogen totdat de nauwkeurigheid begint te voorkomen dat er verbetering optreedt (bijv. op een kruisvalidatietestharnas). Zeer grote aantallen modellen kunnen een langere tijd nodig hebben om te organiseren, maar zullen de trainingsgegevens niet overbelasten.

Net als de keuzebomen zelf wordt Bagging vaak gebruikt voor classificatie- en regressieproblemen.

Willekeurig bos

Willekeurige bossen zijn een verbetering ten opzichte van de opgezakte beslissingsbomen.

Een probleem met beslisbomen zoals CART is dat ze hebzuchtig zijn. Ze kiezen welke variabele ze willen scheiden bij het gebruik van een hebzuchtig algoritme dat fouten minimaliseert. Als zodanig, zelfs met Bagging, kunnen de keuzebomen tonnen structurele overeenkomsten hebben en hebben ze achtereenvolgens een hoge correlatie in hun voorspellingen.

Het combineren van voorspellingen uit meerdere modellen in ensembles werkt beter als de voorspellingen uit de submodellen niet of nauwelijks gecorreleerd zijn.

Willekeurig bos verandert het algoritme voor de manier waarop de sub-bomen worden geleerd, zodat de resulterende voorspellingen van alle sub-bomen minder correlatie hebben.

Het is een eenvoudige aanpassing. In CART mag het trainingsalgoritme bij het selecteren van een splitsing door alle variabelen en elke variabele waarde heen lijken om het meest optimale splitsingstijdstip te kiezen. Het random forest algoritme verandert deze procedure zodat het trainingsalgoritme beperkt blijft tot een willekeurige steekproef van kenmerken waarvan men kan kijken.

Het aantal kenmerken dat op elk splitsingspunt (m) zal worden gezocht, moet als parameter voor het algoritme worden gespecificeerd. U zult verschillende waarden proberen en het afstemmen met behulp van kruisvalidatie.

Voor de classificatie is een eerlijke standaardwaarde: m = sqrt(p)

Voor regressie is een eerlijke standaardwaarde: m = p/3

Waarbij m is dat het aantal willekeurig gekozen kenmerken dat op een splitsing wordt gezocht en p is dat het aantal invoervariabelen. Als een dataset bijvoorbeeld 25 invoervariabelen had voor een classificatieprobleem, dan?

m = sqrt(25)

m = 5

Geschatte prestaties

Voor elke bootstrap die uit de trainingsgegevens wordt genomen, worden er monsters achtergelaten die niet zijn opgenomen. Deze monsters worden Out-Of-Bag monsters of OOB genoemd.

De prestaties van elk model op zijn over het hoofd geziene monsters wanneer deze gemiddeld genomen worden, kunnen een geschatte nauwkeurigheid van de zakjesmodellen opleveren. Deze geschatte prestatie wordt meestal de OOB-schatting van de prestatie genoemd.

Deze prestatiemetingen zijn betrouwbare testfout-schatting en correleren goed met kruiselingse validatieschattingen.

Variabel belang

Terwijl de Bagged-beslissingsbomen worden geconstrueerd, zullen we berekenen welke verhouding de foutfunctie daalt voor een variabele op elk splitsingspunt.

Bij regressieproblemen kan dit de daling in het kwadraat van de fout zijn en bij de classificatie kan dit de Gini-score zijn.

Deze druppels in de fout worden vaak gemiddeld over alle beslisbomen en de output om een schatting te geven van het belang van elke invoervariabele. Hoe groter de daling bij de keuze van de variabele, hoe groter het belang.

Deze outputs kunnen helpen bij het identificeren van subsets van invoervariabelen die het meest of het minst relevant zijn voor de zaak en suggereren bij mogelijke feature selectie experimenten die je zult uitvoeren waar sommige functies ver weg zijn van de dataset.