Random Forest är en maskininlärnings-teknik som ordagrant betyder slumpmässig skog. Låt mig ta dig med på en promenad genom den slumpmässiga skogen och visa att dess promenadstigar inte är så snirkliga som man först kan tro. Hur fungerar Random forest?

Det är mycket snack om AI nu för tiden, framför allt för att man kan göra så otroligt mycket med det. Bildigenkänning, Färglägga bilder, deep fake-filmer och så vidare. De flesta av teknikerna där ute bygger på deep learning, alltså jättestora samlingar med neuroner i olika lager som samarbetar för att få fram ett resultat. Att träna ett sådant stort nätverk tar lång tid, det kan faktiskt ta flera månader!

Har man ett litet problem som ska lösas med lite mindre data, så är oftast inte deep learning rätt väg att gå. Faktum är att algoritmen Random Forest oftast gör ett minst lika bra jobb som deep learning på mindre uppgifter. Det är snabbt att träna, och dessutom kan man själv läsa ut hur besluten togs och tolka det i efterhand som människa.

Slumpmässig skog

Det första vi måste gå till botten med är såklart det märkliga namnet. Slumpmässig skog. Vad handlar det om?

En Random Forest består av en samling Decision Trees, alltså beslutsträd. Flera träd blir… En skog! (Det är den sortens torra skämt som akademiker uppskattar.)

Så, om vi ska gå till botten med vår slumpmässiga skog måste vi alltså börja med beslutsträden. Annars är risken att vi inte ser skogen för alla träd. (Det här är den sortens torra skämt som jag uppskattar.)

Beslutsträd

Hur fungerar Decision Trees, eller beslutsträd? Om du har lekt leken 20 frågor någon gång så vet du exakt hur det fungerar. Leken går ut på att en person tänker på någonting, precis vad som helst, och de andra har 20 ja/nej-frågor på sig att lista ut vad personen tänker på.

Ett exempel:

  • Är du en plats? Nej
  • Är du ett djur? Nej
  • Är du en person? Ja
  • Är du en känd person? Ja
  • Bor du i Europa? Nej
  • Bor du i USA? Ja
  • Är du Elvis? Nej
  • Lever du nu? Ja
  • Har du lustigt hår? Ja
  • Är du Donald Trump? Ja!

På samma sätt kan ett beslutsträd få fram en sanning utifrån ja/nej-frågor.

(Delar av) kungahuset i ett beslutsträd

Om du inte går igång på 20 frågor-analogin kan vi försöka från ett annat håll. Jag är lite sugen på att impulsköpa en cabriolet. Jag är ju runt 40, och man kan ju inte bli gubbe utan en cab! Men jag har en snusförnuftig kompis som heter Träd som alltid ställer en massa frågor. Och lustigt nog ställer hon alltid frågorna i ja/nej form.

Får barnen plats där bak?, frågar Träd. Ska du verkligen ha en röd? Du som är så lång, sticker inte huvudet ut där uppe? Har du verkligen råd med den där? Vilken gammal bil, kostar det inte en förmögenhet att byta kamremmen?

Med hjälp av alla dessa (irriterande) frågor hjälper Träd mig att hitta en bil som passar mig.

Automatisera

Var kommer AI’n in i allt detta då? Jo, säg att du har gjort en sökning på Blocket efter Cabbar. Du får idag fram 3’173 träffar. Det är många fler än du orkar gå igenom. Då kan du göra såhär: Välj ut 50 cabbar ur listan i en slumpvis ordning, till exempel de 50 senaste i listan. Gå sedan igenom var och en och fundera om du skulle kunna tänka dig att köpa den. Är priset rätt, är växellådan rätt, är färgen rätt, är årsmodellen rätt, är miltalet rätt och så vidare. Märk sedan upp var och en av annonserna med en etikett, ”intresserad” eller ”ointresserad”.

Sedan kan du mata in ditt urval av 50 annonser i din algoritm. Algoritmen kommer då att fundera ut, precis som Träd gjorde, vilka de förnuftiga frågorna du bör ställa dig är för att annonserna ska delas upp på just det sättet. Ska vi kalla algoritmen för Träds digitala tvilling? Det är ju ett populärt modeord.

Träds digitala tvilling heter AI-Träd. Trevligt att träffas.

Att välja cab

AI-Träd går igenom all information om bilarna och ser vad som skiljer dem åt. AI-Träd väljer sedan ut en av dessa detaljerna som kallas för Attribut. Är AI-träd listig så blir det attributet som klarast delar upp annonserna i ”intresserad” och ”ointresserad”. Till exempel om alla bilar du har valt ut kostar mindre än 50’000 är Pris ett ytterst lämpligt attribut eftersom det tydligt delar annonserna.

Den av er som är en van Blocket-besökare kan nu komma med invändningen att det finns en alldeles utmärkt filter-funktion på sajten. AI-Träds tjänster kanske inte behövs?

Ja, men nu är det ju så att du har valt några bilar som kostar mer än 50’000 också. Den där snabba Porschen. För att plocka med den behöver AI-träd göra ytterligare val på den sidan trädet, fler attribut i flera nivåer. Samma sak med de billiga bilarna. Du skulle väl aldrig köpa en högerstyrd cabb bara för att den kostade under 50’000? Om det inte är en riktigt gammal fin engelsk sportbil, förstås.

Till slut finns det ett beslutsträd som innehåller alla dina kriterier. Nu kan du använda det beslutsträdet på resten av annonserna och därigenom sortera ut de bilar som är intressanta för dig!

Överträning

Risken är dock att AI-Träd är lite överambitiös. Varje bil kan ju beskrivas ganska tydligt. ”Du vet den där gula Mercedesen från 2001 som hade gått 16’000 mil och kostade 58’000 kronor som hade en liten repa på huven och där stereon var utbytt”. Om du tänker på det så kan du beskriva var och en av de 3’173 cabbarna på Blocket om du använder tillräckligt många termer, tillräckligt många attribut.

Om AI-Träd använder sig av den taktiken så kommer det finnas exakt en cabriolet i varje löv i trädet. När jag säger löv så pratar jag alltså om det som finns längst ut på grenen, det som har etiketten ”intressant” eller ”ointressant”, eller kungen och Silvia i bilden ovan. Då blir det svårt för AI-Träd att generalisera, alltså att klassificera annonser som inte tidigare har setts.

Om vi till exempel slänger in kungens syster, prinsessan Birgitta, i modellen ovan, så kommer den vara säker på att det är drottning Silvia vi pratar om.

Därför bör man sluta att dela upp trädet ytterligare redan innan man har ett enhälligt beslut. Eller så kan man säga att man bara får ställa till exempel tre frågor på varje bil. Då brukar man säga att djupet på trädet får vara max 3.

Hur fungerar Random Forest?

Nu när vi har lite koll på hur ett enkelt beslutsträd fungerar kan vi ge oss in i slumpskogen. Eftersom vi inte kan lita på att AI-Träd gör ett tillräckligt bra jobb på ett enda försök så får vi be någon annan om hjälp. Lyckligtvis har AI-Träd en hel dunge med kompisar som också är villiga att hjälpa till.

En Random Forest består av en samling AI-Träd som alla har försökt att klassificera dina bilar utifrån olika aspekter. En variant av detta är att vart och ett av träden bara får kolla på 25 slumpmässigt utvalda exemplar av dina 50 annonser och utifrån dessa försöka bygga upp en beslutsbas. Eller att de bara får klassificera bilarna efter ett fåtal aspekter.

När det sedan är dags att titta på en ny annons så har AI-träden sammanträde, likt ett Ente Ting i Sagan om ringen. Vart och ett av AI-träden får säga sitt. Är vi intresserade av bilen? Jag kräver omröstning! När AI-träd sedan träder ut ur trädens sammanträde uppträder ett svar på frågan. 80% av oss tycker att det är en bra idé att kolla närmare på den här bilen. Kör på det!

Det lustiga med random forest är att trots att de individuella träden kan så lite, så kommer den sammantagna skogen att bli häpnadsväckande korrekt.

Folkmassans visdom

Har ni hört talas om Folkmassans visdom, eller wisdom of the crowd på engelska? Förr i tiden på gamla marknader så hade man ofta en tävling där man skulle gissa vikten på en ko. Den som kom närmast vann kon. Samma tävling, fast med en lax, har de för övrigt fortfarande på Axmarby midsommarlopp.

Folk gissade hejvilt på vad kossan kunde väga. Vågar du dig själv på en gissning? 500 kilo kanske? Någon som inte kan så mycket om densiteten på nötkreatur föreslår kanske 150 kilo, medan någon annan gissar på 1500. Det kan bli lite vad som helst. Men, det är här det konstiga händer.

Forskare har insett att om man tar genomsnittet på vad folk tror att kossan väger, så blir det nästan exakt det rätta svaret. Det finns en hel del artiklar på detta på nätet. Här är till exempel en engelsk variant.

Beslutsträdens visdom

Samma sak gäller för beslutsträden i en random forest. Jag har skapat upp en bild där olika värden av x och y motsvarar en nivå mellan 0 och 1. Vi skulle kunna säga att det är en karta över ett bergigt landskap. Som ni kan se finns det totalt fyra kullar att upptäcka här. Det ser mysigt ut.

Hur fungerar random forest - originalbild

Nu skickar vi ut våra träd för att lära sig det här landskapet. Problemet är att träden har lite dåligt minne. Vart och ett kan bara lära sig kartan utifrån tre på varandra följande frågor. Är det ett högt berg när Y är större än 68? Kan det vara ett ännu högre berg när Y är större än 119? Är det ett superhögt berg när X är större än 12 och Y är mellan 21 och 68? Nu är minnet fullt. Tack för mig.

Hur fungerar random forest - ett träd

Tre på varandra följande ja/nej-frågor resulterar i totalt 2^3=8 möjliga svar. Ett exempel på hur ett träd skulle kunna rita upp en karta ser ni ovan. Det är ungefär såhär det känns när jag förklarar vägen någonstans för någon.

Den klentrogne kan räkna de färgade fälten i bilen ovan, det är faktiskt 8 fält, med olika färger. Den kartan säger inte mycket om originalbilden!

Men titta vad som händer om 100 stycken kart-analfabeter lär sig 8 saker var om ett landskap och sedan sammanfattar sin visdom. Det är det här som är kraften i random forest!

hur fungerar random forest - folkets visdom

Jämför bilderna. De är inte identiska, men de är nära nog för att ge en ruskigt bra uppskattning av hur kartan ser ut bara genom att 100 träd har fått lära sig 8 saker var om kartan.

Det är så random forest fungerar!