Entspricht max_depth in scikit dem Beschneiden von Entscheidungsbäumen?

10

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)
Suhail Gupta
quelle
Es ist mir gelungen, das Bereinigen der Kostenkomplexität nach dem Modell von Sklearn zu implementieren. Hier ist der Link: github.com/appleyuchi/Decision_Tree_Prune, der Ihnen vielleicht gefällt.
Appleyuchi
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - Aus der Überprüfung
oW_

Antworten:

9

Entspricht dies dem Beschneiden eines Entscheidungsbaums?

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.

Wenn nicht, wie könnte ich einen Entscheidungsbaum mit Scikit beschneiden?

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.

Djib2011
quelle