読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】バギングとブースティング、どっちも木をたくさん作るやつやろ?勾配ブースティングは何を「勾配」してるん【G検定】

10レスカテゴリ:AI・機械学習
1: 名無しさん

バギングとブースティング、どっちも弱いモデルをたくさん組み合わせるアンサンブル学習やろ?
何が違うんか分からん

2: 名無しさん

前提のおさらい。バギングは、ブートストラップサンプリングで作った別々のデータでモデルを学ばせて、多数決や平均でまとめる。ランダムフォレストはその代表

3: 名無しさん

>>1
一番の違いは順番
バギングは、モデルを互いに関係なく作る。だから並べて同時に学習できる
ブースティングは、1つ前までのモデルが間違えたところを、次のモデルが重点的に直す。前の結果を見てから次を作るから、順番に学習するしかない

4: 名無しさん

>>3
効き方も違う。バギングは、ばらつきの大きいモデル(深い決定木など)を平均して、ばらつき(バリアンス)を減らす
ブースティングは、単純すぎて外しがちなモデル(浅い決定木など)を積み重ねて、外れ(バイアス)を減らす

5: 名無しさん

勾配ブースティングは、次のモデルに「残り」を学ばせる
家の値段(百万円)が 10, 20, 30 の3件で、最初は全部を平均の20と予測する。残差(実際−予測)は −10, 0, 10
次の木はこの残差を当てるように学ぶ。木の予測が −8, 0, 8 やったとして、学習率0.5をかけて足すと

新しい残差は −6, 0, 6 に縮んだ。これをくり返す

6: 名無しさん

>>5
それやと「残差ブースティング」やん。どこが勾配なん?

7: 名無しさん

>>6
誤差を とすると、予測 で微分した値は

つまり残差は、誤差を減らす向き(勾配の逆向き)そのもの。誤差関数を変えれば、その勾配を次の木に学ばせればええ。予測そのものを少しずつ勾配の逆に動かしてるから勾配ブースティング
フリードマンの2001年の論文で、この形にまとめられた

8: 名無しさん

>>5
学習率0.5って、なんで半分しか足さへんの?全部足したほうが早いやん

9: 名無しさん

>>8
1本の木に頼りすぎると、その木のくせまで取りこんで過学習しやすい。少しずつ足して木の本数を増やすほうが、新しいデータでの精度がよくなることが多い
ただ、本数を増やしすぎても過学習するから、検証用のデータで誤差が下がらんくなったところで止める

10: 名無しさん

>>9
表形式のデータ(売上表や顧客台帳みたいなもの)では、勾配ブースティングがいまも強い選択肢。XGBoost や LightGBM はそれを速く計算できるようにしたライブラリ

管理人のひとこと