Förhindra Överanpassning i Beslutsträd
Innan vi går vidare till att implementera ett beslutsträd med Python, finns det ett viktigt ämne att diskutera: överanpassning – den främsta utmaningen med beslutsträd.
Nedan visas ett exempel på hur beslutsträdet anpassar sig till datamängden. Observera hur modellen anpassar sig till träningsdatan och fångar dess mönster och detaljer:
Även om modellen perfekt anpassar sig till träningsmängden utan att felklassificera några exempel, är problemet att beslutsgränserna är för komplexa. Därför kommer noggrannheten på testdata (eller vid korsvalidering) att vara avsevärt lägre än på träningsdatan, vilket indikerar att modellen överanpassar.
Anledningen till detta är att modellen kommer att göra så många uppdelningar som krävs för att passa träningsdatan perfekt.
Lyckligtvis är beslutsträdet mycket konfigurerbart, så vi kan justera dess hyperparametrar för att minimera överanpassning.
Maximal trädjup
Djup för en nod är avståndet (vertikalt) från noden till rot-noden.
Vi kan begränsa maximalt djup för ett beslutsträd, vilket gör det mindre och minskar risken för överanpassning. För att göra detta omvandlas beslutsnoder på maximalt djup till bladnoder.
Här finns även en gif som visar hur beslutsgränsen förändras med olika värden på maximalt djup:
Minsta antal prover
Ett annat sätt att begränsa trädet är att ange minsta antal prover på bladnoderna. Detta gör modellen enklare och mer robust mot avvikare.
Det går att se hur denna hyperparameter påverkar beslutsgränsen:
Båda dessa hyperparametrar finns tillgängliga i scikit-learns Decision Tree-implementation.
Som standard är trädet obegränsat: max_depth
är satt till None
, vilket innebär att det inte finns någon gräns för djupet, och min_samples_leaf
är satt till 1
.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 4.17
Förhindra Överanpassning i Beslutsträd
Svep för att visa menyn
Innan vi går vidare till att implementera ett beslutsträd med Python, finns det ett viktigt ämne att diskutera: överanpassning – den främsta utmaningen med beslutsträd.
Nedan visas ett exempel på hur beslutsträdet anpassar sig till datamängden. Observera hur modellen anpassar sig till träningsdatan och fångar dess mönster och detaljer:
Även om modellen perfekt anpassar sig till träningsmängden utan att felklassificera några exempel, är problemet att beslutsgränserna är för komplexa. Därför kommer noggrannheten på testdata (eller vid korsvalidering) att vara avsevärt lägre än på träningsdatan, vilket indikerar att modellen överanpassar.
Anledningen till detta är att modellen kommer att göra så många uppdelningar som krävs för att passa träningsdatan perfekt.
Lyckligtvis är beslutsträdet mycket konfigurerbart, så vi kan justera dess hyperparametrar för att minimera överanpassning.
Maximal trädjup
Djup för en nod är avståndet (vertikalt) från noden till rot-noden.
Vi kan begränsa maximalt djup för ett beslutsträd, vilket gör det mindre och minskar risken för överanpassning. För att göra detta omvandlas beslutsnoder på maximalt djup till bladnoder.
Här finns även en gif som visar hur beslutsgränsen förändras med olika värden på maximalt djup:
Minsta antal prover
Ett annat sätt att begränsa trädet är att ange minsta antal prover på bladnoderna. Detta gör modellen enklare och mer robust mot avvikare.
Det går att se hur denna hyperparameter påverkar beslutsgränsen:
Båda dessa hyperparametrar finns tillgängliga i scikit-learns Decision Tree-implementation.
Som standard är trädet obegränsat: max_depth
är satt till None
, vilket innebär att det inte finns någon gräns för djupet, och min_samples_leaf
är satt till 1
.
Tack för dina kommentarer!