概要
アンサンブル学習とは、「(決定木等の)モデルを複数作成(学習)すること」です。
※「アンサンブル」は「ensemble」(合唱)を意味しています。
モデルは決定木に限らず、あくまで “複数のモデル(※1)を作って総合的に予測を出す” モデル(※2)の学習方法を指します。
※上記で「モデル」が(※1)と(※2)で2回出てややこしいと思います。(※2)が我々から見た視点での「モデル」であり、(※1)は、(※2)の内部の話であり「弱学習器」と呼びます。
つまり、アンサンブル学習のモデルは、”内部で弱学習器を複数作って出来上がる“一つのモデルのイメージになります。
アンサンブル学習では、よく知られているものとして、「バギング」と「ブースティング」という種類があり、今回はそれらの概要を下記で説明していきます。
アンサンブル学習の種類 (バギング / ブースティング)
前提知識
アンサンブル学習の各種に関わる重要な指標があるので、先にそれを説明します。
バイアス / バリアンス
バイアスとバリアンスは、両方とも「予測精度を評価する指標」です。
ここでいう上記用語の意味ですが、バイアス(Bias=偏り)は「予測値と真値の差」であり、バリアンス(Variance=分散)は「予測値の分散」を指します。
下図は「Bias Variance Tradeoff」と呼ばれるグラフです。
モデルの複雑度合いを横軸として、上記2つと予測誤差(誤差和)の”3種の指標”の関係を表現したグラフです。
縦軸は、”上記指標それぞれの大きさ”と考えてください。
上図の通り、傾向として、モデルが単純すぎると、学習データに対する予測が真値に合わず (バイアスが大きい)予測誤差が大きくなります。
逆に、モデルを複雑にすると、学習データに対しする予測は真値に合うようになるが、汎化性能が落ち (バリアンスが大きい)予測誤差が大きくなります。
つまり、バイアスとバリアンスは、片方の下げようと試みると他方が上がるというトレードオフの関係になっています。
そして、(下記で詳細を説明しますが、)予測誤差はバイアス / バリアンスの大きさに対応して大きくなります。
モデルを複雑にすれば良い、モデルを単純にすれば良い、という話でなく、上記よりバランスを踏まえてモデルを作ることが大事です。
予測誤差とバイアス / バリアンス
上記の説明にある、「予測誤差はバイアス / バリアンスの大きさに対応して大きくなる」について説明します。
予測誤差としてよく使われるMSE(平均二乗誤差)を分解すると下式の通りになります。
我々は予測対象Yの分散を操作できないことを踏まえると、予測誤差MSEは、バイアスとバリアンスを操作することで改善できる形と分かります。
学習データセット(説明変数,目的変数)を\\\\ 確率変数Dとする。\\\\ また、予測対象の説明変数をX , 目的変数をYとする。\\\\ ※但し、Yは確率変数であるが、\\\\ Xは所与であり確率変数でないものとする。\\\\ \\\\ そして、学習データDで作成したモデルをg(・;D)とする。\\\\ つまり、データXの予測値をg(X;D)と表記する。\\\\ \\\\ この時、MSEは下記の通りに分解できる。\\\\ \\\\ MSE = E_{D|X}[ E_{Y|X}[\{Y-g(X;D)\}^2] ]\\\\ = V_{X|Y}[Y]+\{E_{Y|X}[Y]-E_{D|X}[g(X;D)]\}^2+V_{D|X}[g(X;D)]\\\\ =[Yの分散]+[バイアス]^2+[バリアンス]
バギング
「バギング」は「複数の弱学習器を並列に作成する」学習方法です。
並列とは、それぞれの弱学習器は独立に作成される意味であり、下記で説明する「ブースティング」と比較する表現になります。
バギングは、特にバイアスを下げる効果が期待できます。
また、バギングは、「ブーストラップ・アグリゲーティング」(“B” oostrap “Agg” regat “ing”)の略称であり、「ブーストラップ」というサンプリング手法を用いています。
「ブーストラップサンプリング」とは、学習データ全体から復元抽出でサンプリングすることです。
つまり、バギングの各弱学習器は、学習データ全てを使うのでなく、サンプリングしたデータを使います。
なので、それぞれの弱学習器は(復元抽出なので同じデータも存在するが、)異なるデータセットを学習に用いる形になります。
バギングのモデルとしては、「ランダムフォレスト」等があります。
ブースティング
ブースティングは「複数の弱学習器を直列に作成する」学習方法です。
直列とは、「”初めに弱学習器1つを作成し、その予測結果(誤差)を反映して2つ目の弱学習器を作る“という形であり、つまり、”後者に前者の予測結果を反映させ、一連となったモデルを作成すること“」を意味します。
ブースティングは、特にバリアンスを下げる効果が期待できます。
ブースティングのモデルとしては、「Adaboost」(アダブースト)や「LightGBM」等があります。