2016-08-13 6 views
1

Sklearnの文書hereから、または私の実験からわかるように、DecisionTreeClassifierのすべてのツリー構造はバイナリツリーです。基準がジニまたはエントロピーのいずれかである場合、各DecisionTreeClassifierノードは0または1または2の子ノードしか持てません。DecisionTreeClassifierはなぜ意思決定ツリー構造が二分木であるのですか?

しかし、決定木の紹介slide(3ページ)から、理論決定木の各ノードは3つ以上の子ノードを持つことができます。

私の疑問は、意思決定ツリー構造がバイナリツリー(各DecisionTreeClassifierノードは1または2の子ノードしか持てません)です。Sklearn DecisionTreeClassifier? DecisionTreeClassifierの子ノードが2つ以上あるツリー構造を取得できますか?

答えて

2

sklearnのアプローチは、あなたが数値的な特徴を持っている場合、必要とされるしきい値の任意の数を(持つことができる素敵な分割ルールを構築することは比較的困難で、数値機能、ないカテゴリで動作するからです2人以上の子供を生み出す)。一方、カテゴリフィーチャ(提供されたスライドで使用される)では、可能な限り多くの子を持つことも可能です。どちらのアプローチも独自の問題を抱えています(カテゴリアプローチは、可能な値が豊富な場合にはほとんど不可解になります)。数値には特定の機能エンコーディングが必要です(カテゴリにはホットです。効率的に、同じツリーを表現することができます。 3つの子供(犬、猫、人間)を持つ「種」の場合、あなたは決定で深い木を持つでしょう:[犬、犬ではなく、犬ではなく、犬ではなく、人間である]

短い答えは,です。この実装では2人以上の子供を育てることはできませんが、これは本当に一般的な制限ではありません。

+0

ありがとうございます。私は古典的なID3のアルゴリズム(情報の利得による)が各木ノードの分類閾値を見つけることはできないと思います。しかし、スクリーナの量。 sklearnによって各ツリーノードの分類しきい値を見つけるためにどのアルゴリズムを使用できるか知っていますか? – ybdesire

+0

@ybdesire一般的にこのような場合は別の質問をする方がよいので、同じ問題がある場合は他の人がこの回答を見つけることができます。 Scikit-learnはその決定木にCARTを使用します。 ID3は数値的(非カテゴリー的)な特徴を扱うことができません。 – lejlot

+0

それを得ました。ありがとう@lejlot。 – ybdesire

関連する問題