Site Overlay

Een zachte introductie tot Random Forests, Ensembles en Performance Metrics in een commercieel systeem

Dit is de eerste in een reeks berichten die illustreren wat ons data team van plan is, experimenteren met, en het bouwen van ‘under the hood’ bij Citizenennet.Dr. Arshavir Blackwell is de resident Data Scientist van CitizenNet. Hij is al meer dan 10 jaar betrokken bij machine learning op webschaal en het ophalen van informatie.

Hot tip: klik op de afbeeldingen voor een grotere weergave.,

een van de eerste berichten die we publiceerden sprak op een hoog niveau over het technische probleem dat CitizenNet probeert op te lossen. In wezen proberen we te voorspellen welke combinaties van demografische en interessedoelen geïnteresseerd zullen zijn in een stukje inhoud.

op het CitizenNet-platform zou een gebruiker een project maken dat (in grote lijnen) de doelgroep, de stukjes Facebook-inhoud die hij wil promoten, en andere campagne-en financiële informatie zou definiëren.

Achter de schermen bouwt een robuust voorspellingssysteem de targets voor het project., Dit voorspellingssysteem wordt getraind op gedrag uit het verleden, dat het vervolgens gebruikt om te voorspellen hoe een toekomstig (onbekend) project het best kan worden gericht. Een van de componenten van het voorspellingssysteem is een classifier, die momenteel een ensemble is van zowel neurale netwerken als Random Forest classifiers. Deze blogpost is bedoeld om de basisprincipes van deze methoden te illustreren.

neuraal netwerk

neurale netwerken worden al lang gebruikt bij problemen zoals deze, met veel gegevens, veel variabelen en de mogelijkheid van ruis in de gegevens.

elk invoerpunt is een hoogdimensionale vector., Het neurale netwerk is georganiseerd in een reeks lagen (zie figuur), waar de invoervector binnenkomt aan de linkerkant van het netwerk, die vervolgens wordt geprojecteerd op een “verborgen laag.”Elke eenheid in de verborgen laag is een gewogen som van de waarden in de eerste laag. Deze laag projecteert vervolgens naar een uitvoerlaag, waar het gewenste antwoord verschijnt.

het netwerk wordt getraind met de input en de gewenste output, wat in ons geval is of het punt een lage click-through-rate (CTR) of hoge CTR sleutelwoord vertegenwoordigt., Dan vindt training plaats: gewichten op zowel de verborgen als de outputlagen worden zo ingesteld dat de werkelijke output overeenkomt met de gewenste output. Eenmaal getraind, moet het neurale netwerk een nieuw gegevenspunt nemen en een nul (lage CTR) of een (hoge CTR) uitvoeren. Als de classifier onzeker is, zal het ergens daartussen een waarde produceren.

sterke en zwakke punten. Neurale netwerken hebben nogal wat voordelen., Als we veel input-en outputgegevens moeten leren, maar geen idee hebben wat de functie is die de twee samen in kaart brengt, kan het netwerk Deze functie leren zonder dat we het expliciet hoeven te verstrekken. Neurale netwerken zijn ook goed met datasets die luidruchtig zijn of waar sommige ingangen ontbrekende variabelen hebben., Neurale netwerken hebben echter ook een belangrijk nadeel van vele andere benaderingen: het antwoord dat naar voren komt uit de gewichten van een neuraal netwerk kan moeilijk te begrijpen zijn (het kan werken, maar we weten niet hoe), en de training van het netwerk kan langer duren dan bepaalde andere methoden van machine learning, zoals random forests, waar we nu naar toe.

Random Forests, een Ensemblemethode

Het random forest (Breiman, 2001) is een ensemblebenadering die ook kan worden gezien als een vorm van een nabije buur voorspeller.

Ensembles zijn een verdeel-en-heers benadering die wordt gebruikt om de prestaties te verbeteren., Het belangrijkste principe achter ensemble methoden is dat een groep van “zwakke leerlingen” kunnen samenkomen om een “sterke leerling”te vormen. De onderstaande figuur (vanaf hier genomen) geeft een voorbeeld. Elke classifier is individueel een “zwakke leerling”, terwijl alle classifiers samen een”sterke leerling” zijn.

de te modelleren gegevens zijn de blauwe cirkels. We gaan ervan uit dat ze een onderliggende functie plus ruis vertegenwoordigen. Elke individuele leerling wordt weergegeven als een grijze curve. Elke grijze curve (een zwakke leerling) is een eerlijke benadering van de onderliggende gegevens., De rode curve (het ensemble “strong learner”) kan worden gezien als een veel betere benadering van de onderliggende gegevens.

bomen en bossen. Het random forest begint met een standaard machine learning techniek genaamd een “decision tree” die, in ensemble termen, overeenkomt met onze zwakke leerling. In een beslissingsboom wordt bovenaan een invoer ingevoerd en als deze naar beneden loopt, worden de gegevens in steeds kleinere sets gebufferd. Voor details zie hier, waaruit de onderstaande figuur is genomen.

in dit voorbeeld adviseert de boom ons, op basis van de weersomstandigheden, of we moeten spelen., Bijvoorbeeld, als de outlook is zonnig en de luchtvochtigheid is minder dan of gelijk aan 70, dan is het waarschijnlijk OK om te spelen.

het willekeurige forest (zie figuur hieronder) brengt deze notie naar het volgende niveau door bomen te combineren met de notie van een ensemble. Dus, in ensemble termen, de bomen zijn zwakke leerlingen en het willekeurige bos is een sterke leerling.

Hier is hoe een dergelijk systeem wordt getraind; voor een aantal bomen T:

  1. steekproef N gevallen willekeurig met vervanging om een subset van de gegevens te maken (zie bovenste laag van figuur hierboven). De deelverzameling moet ongeveer 66% van de totale verzameling zijn.,
  2. op elk knooppunt:
    1. voor een bepaald getal m (zie hieronder) worden M-voorspellende variabelen willekeurig geselecteerd uit alle voorspellende variabelen.
    2. de voorspellende variabele die volgens een objectieve functie de beste splitsing biedt, wordt gebruikt om een binaire splitsing op dat knooppunt uit te voeren.
    3. kies op het volgende knooppunt willekeurig een andere M-variabelen uit alle voorspellende variabelen en doe hetzelfde.,

afhankelijk van de waarde van m zijn er drie enigszins verschillende Systemen:

  • willekeurige splitter selectie: M =1
  • Breiman ‘ s bagger: m = totaal aantal voorspellende variabelen
  • willekeurig forest: m <<aantal van voorspellende variabelen. Brieman stelt drie mogelijke waarden voor m voor: ½ √m, √m en 2√m

in een willekeurig Forest. Wanneer een nieuwe invoer in het systeem wordt ingevoerd, wordt deze alle bomen afgevoerd., Het resultaat kan een gemiddelde of gewogen gemiddelde zijn van alle terminalknooppunten die worden bereikt, of, in het geval van categorische variabelen, een meerderheid van stemmen.

merk op dat:

  • bij een groot aantal voorspellers zal de in aanmerking komende voorspellingsset van knoop tot knoop heel verschillend zijn.
  • hoe groter de correlatie tussen de bomen, hoe groter het percentage willekeurige forest-fouten, dus één druk op het model is om de bomen zo ongecorreleerd mogelijk te houden.
  • naarmate m daalt, dalen zowel de correlatie tussen de bomen als de sterkte van de afzonderlijke bomen., Er moet dus een optimale waarde van m worden ontdekt.

sterke en zwakke punten. Random forest runtimes zijn vrij snel, en ze zijn in staat om te gaan met onevenwichtige en ontbrekende gegevens. Random Forest zwakke punten zijn dat wanneer gebruikt voor regressie ze niet kunnen voorspellen buiten het bereik in de training gegevens, en dat ze kunnen over-fit datasets die zijn bijzonder luidruchtig. Natuurlijk, de beste test van een algoritme is hoe goed het werkt op uw eigen dataset.,

testen van onze Classifiers

om te begrijpen hoe we de classifier testen, moeten we verschillende concepten uitleggen:

  • kruisvalidatie
  • drempelwaarden
  • gemiddelde precisie
  • precisie boven kans

kruisvalidatie

onze classifiertest moet ecologisch geldig zijn. Het moet onze classificeerder bewijzen onder omstandigheden die zo dicht mogelijk bij de productieomgeving liggen.,

in productie wordt de classifier getraind op veel projecten waar we de CTRs kennen, maar eigenlijk zouden we graag willen weten hoe de classifier CTRs voorspelt voor een nieuw project dat het nog nooit eerder heeft gezien.

we testen onze classifier met behulp van een techniek genaamd “cross-validation”: train de classifier op alle projecten behalve één. Natuurlijk, we weten ook de juiste CTRs voor dit gehouden-out project, zodat we kunnen zien hoe goed de classifier doet op het, zonder valsspelen door het trainen van de classifier op de hold-out. We doen dit beurtelings met elk project. Zie figuur hieronder.,

laten we zeggen dat we projecten A tot en met F. We trainen een classifier op projecten A tot en met E, en testen op F. dan trainen we op A en C tot en met F, en testen op B. We doen dit op zijn beurt, het houden van elk project, totdat we trainen op A tot en met E en testen op F. elk project is een onderwerp in ons experiment, met onderwerpen A tot en met F (zie figuur hieronder).

ten slotte verzamelen we de resultaten van elke cross-validatie run voor statistische analyse. De experimentele vraag die we willen beantwoorden: geeft de classifier ons meer informatie over de CTR dan alleen maar gissen?,

drempels

de classifier voorspelt of de invoervector zou resulteren in een lage of hoge CTR. De output van de classifier is een getal van nul tot één, ongeveer. Een nul voorspelt lage CTR, een één voorspelt hoge CTR. Maar wat doen we als de classifier een waarde tussen, Laten we zeggen een 0.4 of een 0.6 geeft? We moeten een drempel kiezen. Boven deze waarde behandelen we de classifier output als het voorspellen van hoge CTR. Onder deze waarde behandelen we de classifier output als het voorspellen van lage CTR.

de classifier is niet perfect, dus soms zal het fouten maken., Soms voorspelt de classifier ten onrechte dat een hoog CTR-item laag is (een “miss”), en soms voorspelt de classifier ten onrechte dat een laag CTR-item hoog is (een “vals alarm”).

de volgende cijfers tonen een frequentieverdeling voor de classificatieoutput voor zowel lage als hoge CTR-items. Hoge CTR items, in het groen, hebben de neiging om te resulteren in een classifier output naar 1. Lage CTR items, in rood, hebben de neiging om te resulteren in classifier output naar 0. Merk op dat in alle drie de figuren de afstand tussen de twee curven onveranderd blijft. Het enige dat verandert is de drempel.,

stel dat we in totaal 1.000 datapunten hebben, gelijkmatig verdeeld tussen lage en hoge CTR. In de bovenstaande figuur is onze drempel vrij hoog (zeg, 0,85). Dit resulteert in een relatief lage vals alarm rate (slechts 50 items in totaal zijn vals alarm), en een vrij hoge miss rate (100 items die in waarheid hoog CTR worden gemist).

in de onderstaande figuur, bij de laagste drempel (laten we zeggen, 0,40), gaat ons percentage vals alarm omhoog naar 100, en ons percentage missers daalt naar 75. Dus als we onze drempel verlagen, stijgt ons percentage vals alarm van 50 naar 75 naar 100, terwijl ons percentage missers daalt van 100 naar 90 naar 75.,

we tekenen de drempel op basis van welk type fout we meer, misses of valse alarmen willen vermijden. Een hogere drempel betekent meer missers en minder vals alarm. Een lagere drempel betekent het tegenovergestelde. Het veranderen van de drempel verandert niet de onderliggende nauwkeurigheid van de classifier, het verplaatst alleen de fout rond.

gemiddelde precisie

de effectiviteit van de classificeerder is de afstand tussen de twee gemiddelden, die niet varieert als drempelwijzigingen. Een manier om de effectiviteit van de classifier te meten is de “precisie”., Precisie is het aantal echt correcte items (“hits”) gedeeld door het aantal items dat de classifier zegt correct te zijn (hits + valse alarmen).

in ons voorbeeld hierboven hebben we 1.000 datapunten, waarvan 500 hoog CTR zijn. Onze classifier vangt correct 400 hoge CTRs. De classifier geeft een extra 50 punten zijn hoge CTRs, terwijl in feite zijn ze lage CTRs. Dit betekent dat we 50 valse alarmen hebben. Dit resulteert in een precisie van 400/450 = 88,88% items die volgens de classifier correct zijn (hits + valse alarmen).,

“Mean precision” houdt rekening met de problemen bij het kiezen van een drempel, zoals hierboven vermeld, door deze berekening uit te voeren bij een bereik van drempels en het gemiddelde te nemen.

verbetering boven toeval

helaas is het in werkelijkheid niet zo eenvoudig als dit: projecten variëren sterk in het aantal hoge CTR-trefwoorden. Sommige projecten bevatten slechts 15% hoge CTR, terwijl andere zelfs 80% of 90% bedragen. De financiële sector, als voorbeeld, zal altijd een lagere gemiddelde CTR dan een populaire Facebook-game. We hebben meer dan een gemiddelde precisie nodig om de prestaties van de classifier te meten.,

stel je voor dat onze classifier een gemiddelde precisie heeft van 95%. Hoewel dit klinkt goed, als het project is 95% hoog CTR, het is minder indrukwekkend. In dit geval, als we altijd geraden dat iets was hoog CTR, zouden we net zo goed doen als de classifier! Dus moeten we de gemiddelde precisie rapporteren na het aftrekken van het werkelijke percentage hoge CTR-items voor dat project. We noemen dit”mean precision above chance”. In onze rapporten betekent een gemiddelde precisie van 10% dat de classifier een 10-punts hogere precisie heeft dan alleen gissen.,

resultaten

in onze testset werden projecten met een echt hoge CTR-waarde van 1 (Alle hoge CTR) of Van minder dan 0,05 (minder dan 5% hoge CTR) verwijderd, wat resulteerde in 72 projecten voor verdere analyse. Vergeet niet dat elk project tientallen targeting combinaties kan bevatten, en elke targeting combinatie kan honderden trefwoorden bevatten.

voor het neurale netwerk was de gemiddelde verbetering voor de classifier 0,15 (zie onderstaande tabel). Een gepaarde t-test op de resultaten toonde t(71) = 7,72, p < 0,0001 (een p-waarde van minder dan 0.,05 wordt traditioneel als statistisch significant beschouwd, wat betekent dat de kans dat dit effect te wijten is aan toeval 1 op 20 of minder is). Dit betekent dat de neurale netwerk classifier een statistisch significante verbetering in het ontdekken van hoge CTR punten in vergelijking met kans toonde.

voor het Random forest was de gemiddelde verbetering voor de classifier 0,06 (zie onderstaande tabel). Een gepaarde t-test op de resultaten toonde t(71) = 3,17, p < 0,003., Dit betekent dat de random forest classifier een statistisch significante verbetering liet zien in het detecteren van hoge CTR-items in vergelijking met toeval.

bij het vergelijken van de gemiddelde verbetering tussen de twee classifiers was het verschil 0,09, in het voordeel van het neurale netwerk. Een gepaarde t-test op de resultaten toonde t(71) = 3,63, p < 0,0006. Dit betekent dat de neural network classifier een statistisch significante verbetering vertoonde in het detecteren van hoge CTR-items in vergelijking met de random forest classifier.

beide classifiers werken., Het neurale netwerk is significant beter dan het willekeurige forest door 0.09.

gemiddelde hoge CTR gemiddelde precisie van classifier gemiddelde verbetering
neuraal netwerk 0,44 0,59 0,15
willekeurig Forest 0,44 0,50 0.,06

Frequentie Histogrammen

Deze afbeelding toont een frequentie-histogram van de gemiddelde precisie verbetering ten opzichte van de kans voor de 72 projecten voor het neurale netwerk:

Deze afbeelding toont een frequentie-histogram van de gemiddelde precisie verbetering ten opzichte van de kans voor de 72 projecten voor het random forest:

Neurale Netwerk vs Random Forest

De onderstaande grafiek vergelijkt de resultaten van de vier neurale netwerken met drie willekeurige bossen., Het laat ons zien dat er veel variabiliteit is in precisie tussen projecten en dat elke methode de neiging heeft om de andere te volgen, met een correlatie van 0,8677.

geen van beide methoden kan in alle gevallen beter zijn dan de andere. Het valt nog te bezien of er enige systematiek is over waarom en waar de ene methode beter is dan de andere.

zoals de volgende twee figuren laten zien, vertonen zowel neurale netwerken als random forests in de meeste maar niet alle gevallen een geringe variabiliteit over onze gegevens: dat wil zeggen dat het meerdere keren opnieuw uitvoeren van de classifier voor de meeste projecten meestal ongeveer dezelfde precisie oplevert., In de volgende twee figuren, de verschillende projecten, in volgorde van toenemende precisie in elk geval, zijn op de x-as en de precisie is op de y-as.

in de volgende grafiek hebben we de precisie van neurale netwerk runs afgetrokken van de precisie van willekeurige forest runs, voor hetzelfde project, van een totaal van 123 projecten. In deze volgende figuur, de verschillende projecten, in volgorde van toenemende precisie, zijn op de x-as en precisie is op de y-as.

wat deze afbeelding ons vertelt is dat, in zo ‘ n gecompliceerde ruimte, er gebieden zullen zijn die moeilijk te modelleren zullen zijn met slechts één leermethode., We weten intuïtief dat neurale netwerken en Random Forests voldoende verschillende algoritmen zijn, maar dit is het bewijs dat de projecten aan de linkerkant van de S-curve meer te winnen zijn met de Random Forest-methode. Dergelijke ensemble benaderingen zijn soms de enige manier om moeilijk te bereiken winsten te verkrijgen (de winnaars van de Netflix Prize had een groot voorbeeld van een-ze zelfs hun team naar genoemd!)

deze resultaten zijn slechts voorlopige, hoewel, dus blijf op de hoogte om te zien wat verdere tweaking biedt! Neem vandaag nog contact met ons op voor meer informatie.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *