機械学習 ランダムフォレスト 決定木 回帰木 Python 特徴 分類の仕方

機械学習

【機械学習】ランダムフォレストとは【特徴の解説から実装まで】

2019年8月7日

機械学習のアルゴリズム(予測モデル)にはいくつか種類があります。例えば、線形回帰や回帰木、決定木、ランダムフォレストなどがあります。

 

機械学習アルゴリズムのうち、ランダムフォレストは教師あり学習の分類に属します。

 

教師あり学習の分類のアルゴリズムには他に、ロジスティック回帰サポートベクターマシーン(SVM)がありました。

 

今回は回帰木・決定木を応用したランダムフォレストを用いた予測モデルの作成方法について、具体的な例を用いつつランダムフォレストの特徴〜実装方法まで解説していきます。

 

決定木、回帰木による機械学習アルゴリズム(予測モデル)の作成方法については以下の記事を参照してください。

関連記事
AI 機械学習 決定木 回帰木 実装 python 手順
【機械学習】回帰木・決定木で予測モデルを作成する【手順あり】

続きを見る

では早速、みていきましょう。

ランダムフォレストとは

機械学習 ランダムフォレスト 決定木 回帰木 Python 特徴 分類の仕方

ランダムフォレストの特徴

決定木モデルは以下の図の様にデータを線で分割していく動作になります。

» 【機械学習】回帰木・決定木で予測モデルを作成する【手順ありで解説】
AI 機械学習 決定木 回帰木 実装 python 手順
この決定木を用いた予測モデルの作成方法は、過学習がおきやすいアルゴリズムです。

 

この過学習の問題をクリアにするために使用されるのが今回解説する「ランダムフォレスト」の方法です。

 

ランダムフォレストは、多様な決定木を多く作り、各々の決定木のアウトプットの多数決を取るアルゴリズムです。

 

「ランダムフォレスト」の「フォレスト」由来は「森」であり、このアルゴリズムのポイントはいかにして、多数の決定木を重ね合わせて作るか、ということになります。決定木を多く集めることで、ある分類問題をとく方法になります。ランダムフォレストを作る際のポイントは以下の通りです。

 

  ランダムフォレスト作成の際のポイント

  • 多様の決定木モデルを用意する。
  • 多数の決定木モデルを用意する。
  • 同じデータで決定木を多数作成しても、同じ木がたくさんできてしまう。
    → オリジナルのデータセット(訓練データ)から重複を許してランダムにサンプリングする。
    → 同時に列もランダムにサンプリングしたものを作成する。
    → この様にすることで、決定木に多様性が生まれる。(決定木により訓練データに偏りが出る)

  • 決定木を作る際に学習データとして扱われないデータのことを「アウト・オブ・バッグ(Out-Of-Bag, OOB)」と呼ぶ。
    アウト・オブ・バッグのデータは特徴量の重要度の確認や、精度の確認用に使われる。

 

ランダムフォレストの具体的なイメージ図は以下の様になります。

機械学習 ランダムフォレスト 決定木 回帰木 Python 特徴 分類の仕方

 

機械学習 ランダムフォレスト 決定木 回帰木 Python 特徴 分類の仕方


ランダムフォレストの要点

機械学習アルゴリズムを理解する上では(特に教師あり学習のアルゴリズム)、以下の5つのポイントがあります。

 

 教師あり学習を理解する上での5つのポイント

  1. 予測したい対象の変数(ターゲット変数):連続値やフラグ
  2. 目的関数
  3. 関数の形状
  4. ハイパーパラメーター
  5. モデルの解釈可能性と予測性能(精度)

 

この5つのポイントについて、ランダムフォレストでは以下の様に表現する事ができます。

 

 ランダムフォレストでの解釈

  1. 予測したい対象の変数(ターゲット変数):フラグでも連続変数でもok(※ フラグの場合には決定木、連続限数の場合には回帰木)
  2. 目的関数:ツリーによって様々
  3. 関数の形状:ツリーによる多数決が行われる。
    すなわち、予測には、各決定木の予測結果の「多数決」が用いられる。
    それぞれの決定木が返す結果のうち、最も予測の多かった予測結果のカテゴリが返される。
  4. ハイパーパラメーター:木(tree)の深さ、木の数、サンプリングする列の数など
  5. モデルの解釈可能性と予測性能(精度):決定木、回帰木よりも解釈の可能性や予測性能は高い

ランダムフォレストの実装【scikit-learnを利用する方法】

機械学習 ランダムフォレスト 決定木 回帰木 Python 特徴 分類の仕方

ランダムフォレストは scikit-learn を利用する事で簡単に操作する事ができます。

 

scikit-learn のうち sklearn.ensemble.RandomForestClassifier が用意されていますので、これを利用しましょう。


» sklearn.ensemble.RandomForestClassifier

In[] ①

In[] ②

Out[]②

 

まとめ|ランダムフォレストの特徴から実装方法まで

機械学習の教師あり学習のアルゴリズム(予測モデル)にはランダムフォレストの他にも、ロジスティック回帰、線形回帰や回帰木、決定木サポートベクターマシーンがあります。

 

今回はランダムフォレストの特徴や概念から実装方法までを解説しました。

 

今回は以上となります。


-機械学習
-, , , , ,

Copyright© Tommy blog  , 2020 All Rights Reserved.