決定木について

コンピュータの基礎知識
この記事を書いた人
井上 周

WEBのバックエンドエンジニア。金沢大学大学院→株式会社マイベスト。
最も得意な言語はRuby(Rails)。その他、GoやPython、TypeScriptsを使った開発を行っています。

井上 周をフォローする

ご覧いただきありがとうございます!
こんにちは!!金沢で学生をしています、あまね(@isaka122)です!

今日は、機械学習にも使われている「決定木」というものについて勉強したことをまとめてみました!

決定木とは

決定木とは「木構造を用いて分類や回帰を表現するもの」です。

「木構造」「分類」「回帰」の意味は、それぞれ

木構造・・・根から葉というノードへ向かって一方向にエッジが伸びている型のグラフのこと。

分類・・・入力されたデータセットがどの種類になるのか判別すること

回帰・・・入力データセットと出力データセットの関係性を数式で表すことです。

決定木の仕組み

では、どのように木構造を使って回帰や分析を行うのでしょうか?

まず行うのは、データに対して条件を定義し、その定義に沿って分類することです。

例えば、「ある生物」というデータが与えられたときに、

・哺乳類かどうか?
・四足で歩くか?
・日本にも生息しているか?
・我々に身近であるか?

このような条件にしたがって入力を分類していくことで、その生物が何であるか決定できます。

決定木の長所・短所

決定木の長所・短所をまとめてみます。

決定木の長所

決定木の長所は、以下のものがあります。

  • 可読性が高い(どうしてその決定がされたか見える)
  • たくさんのデータを扱える
  • 外れ値に対しても強い

可読性が高いとは、なぜその判断をしたのか、その過程が見えることです。
決定木は条件に応じて分類されるため、なぜその判断になったかわかります。

決定木の欠点

一方で欠点は、

  • 分類性能は低い
  • 過学習を起こしやすい
  • 線形性のデータには適さない
  • 多変数は考慮できない

このようなものが考えれられます。

決定木の学習アルゴリズム

さて、次に問題になるのは、どうやって条件を決定するかということです。

例えば、先程の例を見てみます。

・哺乳類かどうか?
・四足で歩くか?
・日本にも生息しているか?
・我々に身近であるか?

これだと、どれでもYESにしたところで、「犬」でも「猫」でもOKですよね。
正確な決定ができたとは言えません。

では、どういう方針で学習させるかというと、

ノードに入る要素の不純度を減らすような素性と閾値を決める

という方針を使います。

ここで、

不純度・・・ノード内のサンプルがどれだけ同じクラスに属するか

つまり、「猫」のなかに「犬」や「ハムスター」が入らないかということです。

この不純度計算するためにはエントロピーとジニ係数を使います。

エントロピーを用いるためには、アルゴリズムC4.5などがあります。

ジニー係数を用いるためには、アルゴリズムCARTがあります。

まとめ

以上、決定木についてまとめてみました。

 

タイトルとURLをコピーしました