0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

アンサンブルの基本理解

Posted at

アンサンブル

弱学習器を複数作成して、それらの出力の多数決や平均を取る方法。
例えば大数の法則のように、たくさんのサンプルの平均を取るとそのバラつきは$\frac{1}{\sqrt{n}}$になる、というようなイメージを応用したと考えれば良い。
弱学習器たちの性能が悪くても、それらを平均すると低バリアンスな結果を得られる。
かつ、弱学習器なので過学習していない。
なお、弱学習器の間で同じような誤差を持つと、結局みんな同じような出力になるので、これを避けるように各学習器で使用するデータ(またはデータ重み)は異なるものにするという工夫を行っている(これがアンサンブル手法の肝だと思っている)

バギングはデータ多様性を与えた弱学習器群にて、バリアンス対策が主目的。
ブースティングは間違えたデータを修正していく形なので、バイアス対策が主目的。

バギングとブースティング

アンサンブル手法の「バギング」と「ブースティング」の違いについて整理する。

バギング

学習用データセットの選択方法。
重複を許して取り出し、データサブセットを用意する。
元のデータセットと同じサンプルサイズになるまで復元抽出。
こうしたデータサブセットの作成方法を「ブートストラップ」と呼ぶ。
ブートストラップで作成したデータサブセット群を用いてそれぞれ学習器(モデル)を作成、それらの予測値を統合することを、「バギング」と呼ぶ。

決定木は過学習しやすいが、複数のデータサブセットを用いて多数決(平均化)することで、過学習対策となる。

元のデータセットを確率分布(母集団の近似)とみなして、そこからサンプリングしてデータセットを作る、というイメージ。

確率的に、データの63%が使用され、37%は使用されない。
この使用されない37%を、「Out-of-Bag」と呼ぶ。

63%のデータを使うことになる?

ブートストラップは復元抽出である為。
あるサンプルデータ$x_i$が選択されない確率は、$1-\frac{1}{n}$。
サンプル数nのデータサブセットを作る間に選択されない確率は、上記サンプリングをn回繰り返すので、$(1-\frac{1}{n})^n$。
nを大きくしていくと...

\lim_{n \to \infty}\left(1-\frac{1}{n}\right)^n 

ネイピア数の定義:

\lim_{n \to \infty}\left(1+\frac{1}{n}\right)^n = e

ネイピア数の一般化式

\lim_{n \to \infty}\left(1+\frac{x}{n}\right)^n = e^x

よって、n回のサンプリングで$x_i$が選ばれない確率について$n \to \infty$にすると、

\begin{align}
\lim_{n \to \infty}\left(1-\frac{1}{n}\right)^n &= \lim_{n \to \infty}\left(1+\frac{-1}{n}\right)^n \\
&=e^{-1} \\
e &= 2.71828...\\
e^{-1} & = 0.36788...
\end{align}

選ばれない確率が約37%。
よって、使用されるデータは全体の63%程度に収束していく。

実は、「生起確率1%の事象について、100回サンプリング中で選ばれる確率は、、、」という命題も同じ式に帰着できて、「63%」になる。
(n=100, 1/n = 0.01 = 1% なので$(1-\frac{1}{100})^{100}$の形になる)

ブースティング

学習用データセットは固定で、モデルの学習順序に意味がある。
前のモデルが間違えた部分(誤差)を、次のモデルが補正するように学習する。
(AdaBoost と Gradient Boosting とではこの誤差に対する補正方法が異なる)
弱い学習機(浅い決定木など)を逐次的に積み重ねて、誤差を減らしていく。
各モデルの予測結果を重み付きで統合し、最終的な予測を行う。
これにより、高精度な予測モデルが構築できる。

AdaBoostでは、誤差のデータのい重みを付けて次のモデルを学習させる。
Gradient Boostingでは、残差を目的関数として次のモデルを学習させる。

アンサンブル手法例:決定木

  • RandomForest:バギング
  • AdaBoost:ブースティング
  • XGBoost:ブースティング
  • LightGBM:ブースティング

Adaboostはブースティングの基本概念理解に重要だが、実運用さえっる機械は減っており最近はLightBGMが人気の模様(特にKaggleでよく使われる)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?