pythonでできる!万能手法である決定木分析の見方と解説!

こんにちは!
IT企業に勤めて、約2年間でデータサイエンティストになったごぼちゃん(@XB37q)です!

このコラムでは、決定木分析という非常に万能な分析手法を紹介します。

決定木は視覚的に理解しやすいため、何をやっているかはすごく分かりやすい分析手法です。
そのため、ビジネスでもよく使われており、分析手法の中では1番万能だと思います!

決定木分析のイメージをつかむ

簡単に理解できる決定木分析のイメージ
簡単に理解できる決定木分析のイメージ

決定木分析とは、木構造と呼ばれるツリーのような考え方を用いて、データの分類を行う分析手法です。

上の図は、工場で生産された生産物のデータに対して、決定木分析を使った例です。
この生産物に存在する正常品と不良品を、生産物の質量と高さを用いて分類を行うときに決定木分析を使うことが考えられます。

実際に決定木分析をこのデータに使ってみると、木構造と呼ばれるツリーの図が出力されます。
決定木分析は、データからツリーを構築する分析手法とも言えるでしょう。

構築したツリーでは、データの中で似たような傾向ごとにデータを分割するためのルールをツリーで表しています。
つまり、ここでは不良品×の特徴として、「質量が10より高く、高さが7より高い」という特徴を簡単に把握することができます。

決定木分析は、人間が見て視覚的に結果を解釈しやすいことから、決定木分析は万能だと言われています。
また、このようにデータの特徴をつかむことによって、不良品を減らすための改善策を考えることが可能になります。

決定木分析で出来ることを知る

決定木分析ができることは大きく2つあります。

  • ある対象を分類する(影響を与えている要素やその条件を探る)
  • ある対象を予測する(新しいデータに対して予測する)

先ほど生産物のデータに対して決定木分析を行ったことで、不良品になる条件が分かりました。
そのため、新しい生産物に対して、この決定木分析のツリーを使用することで、その生産物が正常品なのか不良品なのかを分類することができます。

先ほどはある対象を分類する例をあげましたが、ある対象を予測することもできます。
ツリーの横軸と縦軸を過去の情報に変更したらどうなるでしょうか?
1個前の生産物のデータなどを使えば、次の生産物が不良品になるかどうかを予測することができるようになります。

このように決定木分析は2通りの使われ方が可能です。
また、ここでは決定木分析に使用する説明変数を2種類にしていますが、決定木分析は説明変数が何種類存在しても問題がありません。
分析の対象についても、正常品か不良品かの2種類にしていますが、決定木分析は目的変数が何種類存在しても問題がなく、身長や売上といった連続値も対象にすることができます。

このような利点からも非常に万能な手法です。

決定木分析の使われ方を知る

それでは実際にどのような時に使われているのでしょうか?
使われ方としては回帰分析と少し似ている場面も多いですが、下記のような使われ方が可能です。

  • コンビニ売上に影響を与えている要素を調べ新店舗の売上高を予測する
  • ビールの販売量を気温や景気指数などから予測し需要予測に役立てる
  • 天気予報のデータから、ソフトクリームの販売量を予測する
  • 数学の成績がいい人は、5科目全体の成績が上がっている

決定木分析をpythonで使用する

決定木分析はpythonに存在する「sklearn」というパッケージを使用することにより、簡単に構築することが出来ます!
他の方のサイトでもよく紹介されているため、このコラムでは詳細を割愛します。

出力結果としては、下記のようなイメージでツリーが出力されます。

pythonを用いた決定木分析
pythonを用いた決定木分析

決定木分析の考え方を知る

簡単に理解できる決定木分析の考え方
簡単に理解できる決定木分析の考え方

左図のツリーが、決定木分析を使ってデータから求めたツリーです。
この章では、どのようにツリーを構築していくかを説明します。

ツリーを構築する場合、それぞれのデータの件数をもとに構築をしています。
左側の「高さ<=7」では、正常品●のデータが900件、不良品×のデータが100件です。
右側の「高さ>7」は正常品●のデータが100件、不良品×のデータが400件です。
どちらも正常品●と不良品×のデータが偏って存在するようにツリーを構築しています。

つまり、下のような状況になります。

  • 左側の「高さ<=7」は正常品●のデータが多く、不良品×のデータが少ない
  • 右側の「高さ>7」は正常品●のデータが少なく、不良品×のデータが多い

このデータが多いか少ないかを「統計学」を使って判断をしています。
例えば、CHAIDと呼ばれるアルゴリズムは、「F検定」を使って分岐を行っています。
F検定については、他コラム「分散分析と呼ばれるF検定!t検定との違いも解説!」で紹介しているため、良ければご覧ください。

データを完璧に分割できなかった場合、つまり左側の「高さ<=7」は正常品●と判断していますが、不良品×100件が誤差となります。
誤差についての捉え方は、「絶対誤差(MSE)と相対誤差(MRE)?AIモデルの精度とその求め方」で紹介しています。

また、決定木分析の中にも複数の種類が存在しています。
より詳しく学びたい方は、他コラム「決定木のアルゴリズム!CHAIDとCARTとC5.0」で紹介しています。

決定木分析のメリットとデメリットを知る

メリットとデメリット
メリットとデメリット

ここまで決定木分析はとても万能な手法だと説明してきました。
しかし、どんな手法にもメリットとデメリットは存在します。
万能な決定木分析というのは、それほど致命的ではないデメリットと比較して、メリットが多い手法だと言えます。

メリット

  • 木構造(ツリー)で『もし~なら~になる』といったルールで解釈できるため、分析対象に対して、どのような情報がどのような条件で影響しているのかを視覚的に判断しやすい
  • 直線で分割できないデータも分割可能
  • 目的変数、説明変数の種類と数に制限がない

『もし~なら~になる』というのは、上の例の場合だと質量が10以下の時は正常品●になりやすいといったルールのことです。
決定木分析ではこのルールを視覚的に解釈ができるため、AIに詳しくない人でも結果が分かりやすいというメリットがあります。

また、回帰分析では直線でのみデータを分割できませんが、決定木分析ではいくつものルールを組み合わせることができるため、1つの直線ではなく、複数の直線でデータを分割できることもメリットの1つです。

デメリット

  • パラメータ(分岐数、ツリーの高さ)の決め方が難しい
  • 解釈は簡単だが精度面の限界あり 

1つ目のデメリットはパラメータの決め方が難しいというデメリットです。
パラメータというのは、分析手法に存在する設定のようなものです。
決定木分析ではツリーを何種類に枝分かれさせるかといった分岐数や、どこまでツリーを深く構築するかといったツリーの高さといったパラメータが存在します。
どの手法でもこのデメリットはありますが、1番最適なパラメータはデータによっても変わったりしてしまうため、見つけることは簡単ではありません。
パラメータの設定については、他コラム「精度を追求!ハイパーパラメータの調整方法を紹介!」で紹介しています。

2つ目のデメリットは精度がそれほど高くならない場合があるということです。
一般によく聞くディープラーニングなどの分析手法や直近開発されているであろう最新の分析手法と比較すると、精度はよくありません。
精度というのは、どれだけ正常品●と不良品×のデータをきれいに分割できるかといった意味合いになります。
データ分析ではこの精度を向上させるために、様々な手法が検討されたりしています。

このように、決定木分析には精度面で限界があるというデメリットがあります。
この精度面のデメリットを克服するため、複数の決定木分析を組み合わせるといったアンサンブル学習という分析手法が発展していきました。
アンサンブル学習については、他コラム「Kaggleでも使われる!弱学習器を組み合わせるアンサンブル学習」で紹介しています。

決定木分析のアルゴリズムを知る

アルゴリズムCARTCHAIDC5.0
分岐2分岐多分岐多分岐
目的変数質的・量的変数質的・量的変数質的変数
説明変数質的・量的変数質的変数
※量的変数はカテゴリ化して使用
質的・量的変数
分岐の指標Gini係数カイ2乗統計量情報エントロピー
決定木分析のアルゴリズム

最後にはおまけとして決定木分析の様々なアルゴリズムを簡単に紹介します。
アルゴリズムにはそれぞれ特徴があり、分析対象を選べるアルゴリズムであったり、選べないアルゴリズムなどが存在します。
どれが1番良いアルゴリズムなのかはデータや使う場面によるため、一概には言えません。
そのため、より試行錯誤する人は、複数のアルゴリズムを使ってみるのも1つの手だと思います。

アルゴリズムの詳細については、他コラム「決定木のアルゴリズム!CHAIDとCARTとC5.0」で紹介しています。

まとめ

  • 決定木
    • 木構造と呼ばれるツリーのような考え方を用いて、データの分類を行う分析手法
    • データの中で似たような傾向ごとにデータを分割するためのルールを算出する
  • メリット
    • 木構造(ツリー)で『もし~なら~になる』といったルールで解釈できるため、分析対象に対して、どのような情報がどのような条件で影響しているのかを視覚的に判断しやすい
    • 直線で分割できないデータも分割可能
  • デメリット
    • パラメータ(分岐数、ツリーの高さ)の決め方が難しい
    • 解釈は簡単だが精度面の限界あり 
  • 複数のアルゴリズム
    • アルゴリズムにはそれぞれ特徴があり、分析対象を選べるアルゴリズムであったり、選べないアルゴリズムなどが存在
    • どれが1番良いアルゴリズムなのかはデータや使う場面による

参考図書