本のプログラミングコレクティブインテリジェンスの決定ツリーに関する質問

datascience.stackexchange https://datascience.stackexchange.com/questions/5606

  •  16-10-2019
  •  | 
  •  

質問

私は現在、本「プログラミングコレクティブインテリジェンス」の第7章(「意思決定ツリーを使用したモデリング」)を勉強しています。

関数の出力を見つけます mdclassify() p.157混乱。この関数は、欠落データを扱います。提供されている説明は次のとおりです。

私が理解していることから、インスタンスはブランチ間で分割されます。

したがって、私は単に私たちがどのように取得できるか理解していません:

{'None': 0.125, 'Premium': 2.25, 'Basic': 0.125}

なので 0.125+0.125+2.25 1も整数も合計しません。新しい観測はどのように分割されましたか?

コードはこちらです:

https://github.com/arthur-e/programming-collective-intelligence/blob/master/chapter7/treepredict.py

元のデータセットを使用して、ここに示すツリーを取得します。

screenshot

誰かが私に正確に何を意味するのか、そしてそれらが正確にどのように得られたのかを正確に説明してもらえますか?

PS:本の最初の例は、彼らのerrataページで説明されているように間違っていますが、2番目の例(上記)を説明するだけでいいでしょう。

役に立ちましたか?

解決

4つの機能があります。

  • 参照者、
  • 位置、
  • よくある質問、
  • ページ。

あなたの場合、あなたはどこでインスタンスを分類しようとしています FAQpages 不明: mdclassify(['google','France',None,None], tree).

最初の既知の属性はあるので google, 、あなたの決定ツリーでは、あなたは出てくるエッジにのみ興味があります google 右側のノード。

5つのインスタンスがあります。3つのラベルが付けられています Premium, 、ラベルが付けられています Basic そして1つはラベル付けされています None.

ラベル付きのインスタンス BasicNone に分割します FAQ 属性。それらの2つがあるので、それらの両方の重量は 0.5.

今、私たちはそれに分割します pages 属性。 3つのインスタンスがあります pages 値が20を超え、2つが大きくなります pages 値は20以下です。

ここにトリックがあります:これらの2つの重みがから変更されたことはすでに知っています 10.5 各。そのため、3つのインスタンスが重み付けされています 1 それぞれ、2つのインスタンスが重み付けされています 0.5 各。したがって、合計値はです 4.

これで、重みを数えることができます pages 属性:

  • pages_larger_than_20 = 3/4
  • pages_not_larger_than_20 = 1/4#1 is:0.5 + 0.5

すべての重みが帰属します。これで、重みにインスタンスの「周波数」を掛けることができます(それを思い出してください BasicNone 「頻度」は今です 0.5):

  • Premium: 3 * 3/4 = 2.25 #3つあるからです Premium インスタンス、各重み付け 0.75;
  • Basic: 0.5 * 1/4 = 0.125 # なぜなら Basic 今です 0.5, 、そして分割pages_not_larger_than_201/4
  • None: 0.5 * 1/4 = 0.125 #同様に

それは少なくとも数字がどこから来たのかです。このメトリックの最大値と、それが1に合計すべきかどうかについてのあなたの疑問を共有しますが、これらの数字がどこから来るのかがわかったので、それらを正常化する方法を考えることができます。

ライセンス: CC-BY-SA帰属
所属していません datascience.stackexchange
scroll top