分類アルゴリズム~決定木①~
こんにちは!EMです^^
さっそく今日も分類アルゴリズムシリーズをはじめていきたいと思います。
今日のテーマは「決定木」です!
決定木(Decision Trees)
決定木はイメージしやすいかもしれません。
例えば、10個ほどの質問をして、答えにたどり着くタイプの質問がよく
身近に目にするかと思います。
例えば、回答者は人や物や場所などについて考え、yesまたはnoで答えていきます。
そしてその導かれる答えによって、最終的な回答を予想していきます。
問題を進めていくほど、その回答によって考えられうる解決策を
狭めていく事ができます。
例をいうと「これは動物ですか?」という質問に「はい」と答え
「4本の足がありますか?」の答えが「いいえ」だった場合。
これは明らかに豚、羊、牛、犬などの4足歩行の動物は削除する事が出来ますよね。
この様に、最終的にはうまく答えにたどり着くという流れです。
決定木の木はノード(◇の結び目の部分)で構成され
一番上のノードをルートノード(根っこのノード)と言います。
各ノードは属性のテストを表します。
例えば、「色は『赤』」や「重量は『10kg未満』ですか?」などの質問が
各ノードに入ります。
さらに決定木は、階層モデルの例です。
木がもつ各ノードは、情報を蓄積しており、上からの情報を下に流しています。
一番下の先のないノードの事をリーフノード(木の葉っぱのイメージ)と言います。
リーフノードにたどり着くと、私たちは決定を下したり、結果を得る事が出来ます。
最終的にたどり着いたリーフノードは、その中から一番可能性の高い決定・結果を
表しています。
一般的に、決定木は元の特徴(feature)タイプに影響されません。
継続的な特徴である場合、自由に値を分割できます。
もし独立変数が連続的な特徴値 Xi を持っている場合、分割は値 V で行うことができ
Xi≤V が左の枝になり、すべての値Xi≥Vが右側の枝になります。
分離した特徴には、クラス値で分割できます。
tree
パッケージを使用して、決定木を構築してみましょう。
2つの特徴の境界プロット(上の図)から見ての通り、決定木は過学習をする傾向があります。
ここでも、私たちが作ったデータと同じもので仮説を検証するべきではないので
テスト/トレーニングデータを使用してみましょう。
精度が一気に低くなった事に気づきましたでしょうか。
どのように決定木を改善していくのかを見ていこうと思います!