Jag lär mig om beslutsträd, och jag känner att jag hittills har förstått dem och matematiken bakom dem ganska bra förutom en sak: förstärkningsförhållandet.

Som jag förstår implementeras förstärkningsförhållandet för att straffa för funktioner som kan ta MångA möjliga värden.

Om en funktion tar upp många möjliga värden blir det troligt att om vi delar på den funktionen kan det finnas värden som bara pekar på en enda klass, men helt enkelt för att det bara finns 1 eller 2 data poäng med det värdet för den funktionen hur som helst.

Med andra ord, den enda anledningen till att vi skulle få låg entropi för att dela på den funktionen är att funktionen kan ta många värden, och därför pekade många av dessa värden specifikt på en enda etikett . Så vår beslutsträdalgoritm skulle sluta dela på något som ”ID #” och felaktigt beräkna att vi bara hade en STOR informationsvinster.

Detta verkar dock bara som ett problem eftersom ”ID #” är en funktion som vi inte bör dela på till att börja med. Jag menar, om vi hade en annan funktion som också tog på sig mycket möjligt värden, men vart och ett av dessa värden innebar faktiskt någon märkning för den datapunkten, skulle inte tillämpningen av förstärkningsförhållandet innebära att vi faktiskt förstörde vårt beslutsträd genom att straffa vad som egentligen var en mycket bra split med massor av informationsvinster?

Är det inte bättre att bara identifiera vilken funktion som inte har något att göra med vår märkning INNAN vi matar in träningsdata till algoritmen?

IDK, jag bara inte se varför förstärkningsförhållandet verkligen skulle vara användbart …

Svar

Jag tvivlade när jag gjorde min Master ”Grad. Först och främst tar du inte med något så slumpmässigt som” ID ”. Det är här databehandlingen kommer in. Låt oss ta en datauppsättning som har användare och deras filmgenrepreferenser baserat på variabler som kön, åldersgrupp, betyg, bla, bla. Med hjälp av informationsfördelning delar du på ”Kön ”(förutsatt att den har den högsta informationsförstärkningen) och nu kan variablerna” Age of Age ”och” Rating ”vara lika viktiga och med hjälp av förstärkningsgraden kommer det att bestraffa en variabel med mer distinkta värden som hjälper oss att bestämma dela på nästa nivå.

Kommentarer

  • OKaaaay, Awesome! Så vi använder förstärkningsförhållande bara när vi är mellan att dela på två olika möjliga funktioner ! Är det för att välja den som är mer sannolikt för testdata att ha ett tidigare sett värde för, för det är den atmosfär jag fick från ID-exemplet, anledningen till att det var en dålig delning att den hade så stor chans att ta på olika värden (i det här fallet kommer ingen annan person att ha samma ID).
  • Det är mycket vettigare . Varje förklaring jag ' har läst använder ID: n och det fortsätter att få mig att tänka på varför någon har det i en dataset i första hand? !!!! Tack Danny! Jag ' gillar ditt inlägg men jag ' har inte tillräckligt med rykte än.

Svar

Informationsvinsten är en av heuristiken som hjälper till att välja attribut för val.

Som ni vet är beslutsträd en konstruerad topp -down rekursivt dela-och-erövra sätt. Exempel delas rekursivt baserat på valda attribut.

I ID3-algoritmer använder vi markera attributen med den högsta informationsförstärkningen.

Låt $ p_i $ vara sannolikheten att en godtycklig tuple i $ D $ tillhör klass $ C_i $ . Så $ p_i = | C_ {i, d} | / | D | $ Förväntad information (entropi) som behövs för att klassificera en tuple i $ D $ $$ Info (D) = – \ sum_ {i = 1} ^ {m} {p_i * \ log (p_i)} $$

Information som behövs (efter att ha använt A för att dela D i v-delar) för att klassificera D: $$ Info_A (D) = – \ sum_ {j = 1} ^ {v} {D_j / D * Info_j (D)} $$

Information erhållen genom förgrening på attribut A

$$ Gain (A) = Info (D) – Info_A (D) $$

I C4.5-algoritmen måste vi dela informationsskillnaden med $ SplitInfo (A) $

$$ Gain (A) = (Info (D) – Info_A (D)) / SplitInfo (A) $$

ange bildbeskrivning här

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *