Sasaki Peter

pharmaceutical programmer

ランダムフォレストについて

2019-05-07 sasaki peterdata-science

ランダムフォレストとはアンサンブル学習のひとつである。

アンサンブル学習とは

アンサンブル学習とは多数決を取る方法で、個々に別々の学習器として学習させたものを融合させることによって、未学習のデータに対して予測能力を向上させるための学習である。

他の回帰や分類を目的とした機械学習アルゴリズムとは少し異なっている点に注意。

バイアスとバリアンスについて

  • バイアス

    • バイアスが高いとは予測集合が真の値からずれていること
    • 高いと学習できていない
  • バリアンス

    • バリアンスが高いとは予測集合自体に高いばらつきがあること、分散
    • 高いと過学習が起きている。なぜなら、複雑すぎる、すなわち学習データに特化した、オーバーフィットしていることを意味するから。

両者はトレードオフの関係にある。

アンサンブル学習の仕組み

いくつも存在する学習器の予測から、多数決によってもっともらしい予測を選択する。

それぞれの学習器がどれくらい予測に寄与するかによって重みをつける必要がありそうだと感じた。

バギング

バギング(Bgging)とはBootstrap Aggregatingの略らしい。 aggregateとは集約という意味で、隠れ層を構築するということは知っている。

ブートストラップ法とは、統計の用語で、ある標本集団から、母集団の性質を推定する方法で復元抽出法により標本集団から、標本集団と同じ数だけ再度データを取得し、統計値を計算する手法のことを言うらしい。

これは一般的にモデルの予測結果のバリアンスを低くする特徴があるらしい。 バリアンスとは高いと過学習が起こるから、これが低いということは過学習を起こしづらし、すなわち、汎化性能を上げるということか。

このバギングにおいては、それを特徴量の算出に用いるらしい。

訓練データからをランダムに選択した特徴量でモデルを構築する、という作業を何度も繰り返すことで、より多様なモデルが作成されると言う寸法である。

ブースティング

ブースティング(Boosting)とはバイアスを下げる特徴がある。

バッチ学習がまさにこれで、エポックとして繰り返すたびに、同じ標本集団からランダムサンプルしバッチを作成し、平均損失を算出している。

何度も反復して学習させることで、徐々にパラメータを更新しているのが、まさにブースティングである。

バギングは特徴量抽出にブースティング法を活用したもの、ブースティングはバッチ学習としてブースティング法を活用したものと理解した。

スタッキング

スタッキング(Stacking)とはモデルを積み上げていく方法らしい。

これによって、バイアスとバリアンスをバランスよく調整することができるらしい。

最初の段階で、ランダムに抽出した複数の弱学習器から、どの学習器を組み合わせれば良い予測ができるかを学習させると言うことを繰り返すことで、最適な学習器の組み合わせを見つける手法らしい。

以上がアンサンブル学習の概要である。

ランダムフォレストとは

ランダムフォレストは、決定木をアンサンブル学習させた機械学習モデルである。

決定木とは

決定木とは、説明変数の値によって、目的変数がどのように説明できるかを一つ一つの説明変数の値の条件によってツリー状に条件分岐させたものである。

百聞は一見に如かず。

決定木の作り方

  • 訓練データから、サブ訓練データを作成する。
  • そのサブ訓練データごとに決定木を作成する。
  • サブ訓練データは、訓練データから復元抽出によっていくつかの説明変数を取り出すことで作成する。これはブートストラップ法である。

異なる説明変数で決定木を作る

同じ説明変数を抽出しても多様性が増えないのでアンサンブルする意味がないから、異なる説明変数を抽出しないといけない。

データの分割は、訓練データの説明変数のうち、K個をランダムに選び、そのK個の中で最もうまく分割できるような変数で分割する。

と言う方針で行うらしい。

って、これ本当なの?

最初のK個のサンプリングを繰り返すところがブートストラップ法で、その後のK分割はそこからいくつの弱学習器を生成するかと言うパラメータと言うだけ。