Ich habe den Klassifikator analysiert, der mithilfe eines Entscheidungsbaums erstellt wurde. Im Entscheidungsbaum von scikit gibt es einen Optimierungsparameter namens max_depth . Entspricht dies dem Beschneiden eines Entscheidungsbaums? Wenn nicht, wie könnte ich einen Entscheidungsbaum mit Scikit beschneiden?
dt_ap = tree.DecisionTreeClassifier(random_state=1, max_depth=13)
boosted_dt = AdaBoostClassifier(dt_ap, random_state=1)
boosted_dt.fit(X_train, Y_train)
Antworten:
Obwohl sie ähnliche Ziele verfolgen (dh dem Modell einige Einschränkungen auferlegen, damit es nicht sehr komplex und überanpasst),
max_depth
ist dies nicht gleichbedeutend mit dem Beschneiden. Das Beschneiden funktioniert normalerweise so, dass Sie durch den Baum zurückgehen und Zweige ersetzen, die bei Blattknoten nicht helfen.Sie können nicht durch scikit-learn (ohne den Quellcode zu ändern).
Zitat aus der Decision Tree-Dokumentation : Mechanismen wie Beschneiden (derzeit nicht unterstützt)
Wenn Sie einen Baum nachschneiden möchten, müssen Sie dies selbst tun:
Sie können diesen hervorragenden Beitrag lesen , in dem die Vorgehensweise beschrieben wird.
quelle
Jetzt mit der neuen Version 0.22.1 können Sie! Das Bereinigen basiert auf einem Bereinigen mit minimaler Kostenkomplexität: Der Teilbaum mit der größten Kostenkomplexität, der kleiner als ccp_alpha ist, wird ausgewählt.
https://scikit-learn.org/stable/auto_examples/tree/plot_cost_complexity_pruning.html
quelle