Beslutsträd verkar vara en mycket förståelig metod för maskininlärning. När den skapats kan den enkelt inspekteras av en människa vilket är en stor fördel i vissa applikationer.
Vilka är de praktiska svaga sidorna av beslutsträd?
Beslutsträd verkar vara en mycket förståelig metod för maskininlärning. När den skapats kan den enkelt inspekteras av en människa vilket är en stor fördel i vissa applikationer.
Vilka är de praktiska svaga sidorna av beslutsträd?
Här är ett par som jag kan tänka mig:
Några av dessa är relaterade till problemet med multikollinearitet: när två variabler båda förklarar samma sak, väljer ett beslutsträd girigt det bästa, medan många andra metoder kommer att använda de båda. Ensemblemetoder som slumpmässiga skogar kan förneka detta i viss utsträckning, men du tappar lätt förståelsen.
Men det största problemet, åtminstone från min synvinkel, är bristen på en principiell sannolik ram . Många andra metoder har saker som konfidensintervall, posteriora fördelningar etc., som ger oss en uppfattning om hur bra en modell är. Ett beslutsträd är i slutändan en ad hoc-heuristik, vilket fortfarande kan vara mycket användbart (de är utmärkta för att hitta källor till buggar vid databehandling), men det finns risk för att människor behandlar utdata som "rätt" modell (från min erfarenhet, detta händer mycket i marknadsföring).
En nackdel är att alla termer antas samverka. Det vill säga, du kan inte ha två förklarande variabler som beter sig oberoende. Varje variabel i trädet tvingas interagera med varje variabel längre upp i trädet. Detta är extremt ineffektivt om det finns variabler som inte har några eller svaga interaktioner.
Mitt svar riktar sig till CART (implementeringarna C 4.5 / C 5) men jag tror inte är begränsat till det. Min gissning är att detta är vad OP har i åtanke - det är vanligtvis vad någon menar när de säger "Beslutsträd."
Begränsningar av beslutsträd :
Lågprestanda
Med "prestanda" menar jag inte upplösning, utan körningshastighet . Anledningen till att det är dåligt är att du måste 'rita om trädet' varje gång du vill uppdatera din CART-modell - data klassificerade av ett redan utbildat träd som du sedan vill lägga till i trädet (dvs. använda som en träningsdatapunkt) kräver att du börjar från över - träningsinstanser kan inte läggas till stegvis, som de kan för de flesta andra övervakade inlärningsalgoritmer. Det kanske bästa sättet att säga detta är att beslutsträd inte kan utbildas i online-läge, snarare bara i batch-läge. Uppenbarligen kommer du inte att märka denna begränsning om du inte uppdaterar din klassificerare, men då förväntar jag mig att du ser en nedgång i upplösning.
Detta är betydelsefullt för att till exempel Perceptrons för flera lager, när det väl är tränat, kan det börja klassificera data; att data också kan användas för att "ställa in" den redan utbildade klassificeraren, men med beslutsträd måste du omskola dig med hela datamängden (originaldata som används i träning plus eventuella nya instanser).
Dålig upplösning på data med komplexa förhållanden bland variablerna
Beslutsträd klassificeras genom stegvis bedömning av en datapunkt av okänd klass, en nod i taget, med början vid rotnod och slutar med en terminalnod. Och vid varje nod är det bara två möjligheter som är möjliga (vänster-höger), därför finns det några variabla förhållanden som beslutsträd inte kan lära sig.
Praktiskt taget begränsad till klassificering stark>
Beslutsträd fungerar bäst när de tränas i att tilldela en datapunkt till en klass - helst en av endast några få möjliga klasser. Jag tror inte att jag någonsin har haft någon framgång med att använda ett beslutsträd i regressionsläge (dvs. kontinuerlig produktion, t.ex. pris eller förväntad livstidsintäkt). Detta är inte en formell eller inneboende begränsning utan en praktisk begränsning. Oftast används beslutsträd för att förutsäga faktorer eller diskreta resultat.
Dålig upplösning med kontinuerliga förväntningsvariabler
Återigen är det i princip ok att ha oberoende variabler som "nedladdningstid" eller "antal dagar sedan tidigare online-köp "- ändra bara ditt delningskriterium till varians (det är vanligtvis Information Entropy eller Gini Impurity för diskreta variabler) men enligt min erfarenhet fungerar beslutsträd sällan bra i dessa fall. Undantag är fall som "studentens ålder" som ser kontinuerligt ut men i praktiken är värdena ganska små (särskilt om de rapporteras som heltal).
Det finns bra svar här, men jag är förvånad över att en sak inte har betonats. CART gör inga distributionsantaganden om data, särskilt svarsvariabeln. Däremot gör OLS-regression (för kontinuerliga svarsvariabler) och logistisk regression (för vissa kategoriska svarsvariabler), till exempel do starka antaganden; specifikt antar OLS-regression att svaret är villkorligt normalfördelat, och logistiskt antar att svaret är binomialt eller multinomialt.
CARTs brist på sådana antaganden är ett tveeggat svärd. När dessa antaganden inte är motiverade ger detta tillvägagångssättet en relativ fördel. Å andra sidan, när dessa antaganden håller, kan mer information extraheras från uppgifterna genom att ta hänsyn till dessa fakta. Det vill säga, vanliga regressionsmetoder kan vara mer informativa än CART när antagandena är sanna.