Ik ben aan het leren over beslissingsbomen, en tot nu toe heb ik het gevoel dat ik ze en de wiskunde erachter heb begrepen vrij goed behalve één ding: de gain-ratio.
Zoals ik begrijp, wordt de gain-ratio geïmplementeerd om te straffen voor functies die VEEL mogelijke waarden kunnen aannemen.
Als een kenmerk veel mogelijke waarden aanneemt, wordt het aannemelijk dat als we op dat kenmerk splitsen, er waarden zijn die slechts naar een enkele klasse verwijzen, maar simpelweg omdat er maar 1 of 2 gegevens zijn punten met die waarde voor dat kenmerk toch.
Met andere woorden, de enige reden dat we een lage entropie zouden krijgen voor het splitsen op dat kenmerk, is omdat het kenmerk veel waarden kan aannemen, en daarom wezen veel van die waarden specifiek naar een enkel label . Dus ons beslissingsboom-algoritme zou eindigen op zoiets als “ID #”, en ten onrechte berekenen dat we zojuist een ENORME informatiewinst hadden.
Dit lijkt echter alleen een probleem omdat “ID #” een functie is die we in het begin niet zouden moeten splitsen. Ik bedoel, als we een andere functie hadden die ook veel mogelijk waarden, maar elk van die waarden impliceerde eigenlijk een label voor dat datapunt, zou het toepassen van de versterkingsverhouding dan niet betekenen dat we onze beslissingsboom in de war sturen door te straffen wat eigenlijk een heel goede splitsing was met tonnen informatiewinst?
Is het niet beter om gewoon te identificeren welke functie niets te maken heeft met onze labeling VOORDAT we de trainingsgegevens aan het algoritme invoeren?
IDK, ik wil het gewoon niet zie waarom de gain-ratio echt nuttig zou zijn …
Answer
Ik had dezelfde twijfel toen ik mijn Master deed s Degree. Ten eerste: je neemt niet zoiets willekeurigs op als IDs . Hier komt de voorverwerking van gegevens om de hoek kijken. Laten we een dataset nemen met gebruikers en hun voorkeuren voor filmgenre op basis van variabelen zoals geslacht, leeftijdsgroep, beoordeling, bla, bla. Met behulp van informatieverwerving splitst u zich op bij Geslacht “(ervan uitgaande dat het de hoogste informatiewinst heeft) en nu kunnen de variabelen” Leeftijdgroep “en” Beoordeling “even belangrijk zijn en met behulp van de versterkingsratio zal het een variabele bestraffen met meer verschillende waarden die ons zullen helpen beslissen over de splitsen op het volgende niveau.
Reacties
- OKaaaay, geweldig! Dus we gebruiken alleen de versterkingsverhouding als we tussen de splitsing in zitten op twee verschillende mogelijke functies ! Is het in de juiste volgorde om degene te kiezen waarvan de kans groter is dat de testgegevens een eerder geziene waarde hebben, want dat is de sfeer die ik kreeg van het ID-voorbeeld, de reden dat het een slechte splitsing is, het had zon grote kans om te nemen op verschillende waarden (in dit geval heeft geen enkele andere persoon dezelfde ID).
- Dat is VEEL logischerElke uitleg die ik ' heb gelezen, maakt gebruik van IDs en het blijft me aan het denken zetten waarom iemand dat in de eerste plaats in een dataset heeft? !!!! Bedankt Danny! Ik ' vind je bericht leuk, maar ik heb ' nog niet genoeg reputatie.
Answer
Informatiewinst is een van de heuristieken die helpt bij het selecteren van de attributen voor selectie.
Zoals je weet beslissingsbomen is een geconstrueerde top -down recursieve verdeel-en-heers manier. Voorbeelden worden recursief geportioneerd op basis van geselecteerde attributen.
In ID3-algoritmen gebruiken we de attributen met de grootste informatiewinst.
Laat $ p_i $ de kans zijn dat een willekeurig tupel in $ D $ behoort tot klasse $ C_i $ . Dus $ p_i = | C_ {i, d} | / | D | $ Verwachte informatie (entropie) die nodig is om een tuple te classificeren in $ D $ $$ Info (D) = – \ sum_ {i = 1} ^ {m} {p_i * \ log (p_i)} $$
Informatie die nodig is (na gebruik van A om D in v delen te splitsen) om D te classificeren: $$ Info_A (D) = – \ sum_ {j = 1} ^ {v} {D_j / D * Info_j (D)} $$
Informatie verkregen door vertakking op attribuut A
$$ Gain (A) = Info (D) – Info_A (D) $$
In het algoritme C4.5 moeten we het informatieverschil delen door $ SplitInfo (A) $
$$ Gain (A) = (Info (D) – Info_A (D)) / SplitInfo (A) $$