elsur.jpn.org >

« 読了:Ture et al. (2005) 高血圧患者をいろんな手法で予測してみた | メイン | 読了:「惑星スタコラ」「大砲とスタンプ」「中国嫁日記」「OL進化論」「あれよ星屑」 »

2015年12月28日 (月)

Elith, Leathwick, Hastie (2008) A working guide to boosted regression trees. Journal of Anomal Ecology, 77, 802-813.
 タイトル通り、ブースティング回帰木(boosted regresion trees, BRT)の使い方についての素人向けガイド。ええと、良く知らないけど、Rでいうとgbmとか、流行りのxgboostとかのことですかね。正直なところ機械学習の話は、学校出たてのチェックのシャツを着たお兄さんたちに任せておきたいんだけど、仕事となるとそうも言っていられない。
 動物生態学についてはなんの知識もございませんが、こういう分野向けの啓蒙的文章は助かる。イントロによると、生態学では種の分布を予測したりするときにGLMやGAMをよく使うけど、機械学習手法はあまり使わない、ましてやBRTなんて... という感じらしい。そりゃそうでしょうね、何やってんだかわかんなくて気持ち悪いもん。

 まず、決定木について。
 決定木は、予測子の空間を矩形に分割し、それぞれに定数をフィットさせる。矩形は反応変数において等質的であることを目指してつくる。定数といっているのは、分類器ならばクラスだし、回帰木ならば平均である。
 決定木に人気があるのは、なんといってもそのわかりやすさ。さらに、予測子の型を選ばない、単調変換なら影響なし、はずれ値に強い、交互作用をモデル化している、といった美点がある。いっぽう、滑らかな関数の表現が苦手、訓練データのちょっとした違いで構造がかわっちゃう、という弱みもある。

 ブースティングについて。
 根底にあるのは、ラフな目安をたくさんつくって平均する、というアイデア。兄弟分であるバギング、stacking、モデル・アベレージングとちがうのは逐次的に進むという点。モデルを訓練データに適合させ、うまくいかなかったケースの重みを増して...というのを繰り返す。
 もともとブースティングは2クラス分類に注目していたので(AdaBoostとか)、機械学習の分野でブースティングについて論じる際には、重みをどう変えるかという観点から論じる傾向がある。でもここでは回帰木に関心があるのでちょっと違った観点からとらえてみよう。要するに、ブースティングとは一種の関数的勾配降下(functional gradient descent)である。ここになんらかの損失関数があるとしよう(たとえばデビアンス)。ブースティングは損失関数を最小化させる最適化テクニックで、それぞれのステップで、損失関数の勾配を降りるような木を追加する。
 具体的にBRTの場合について考えると、まず最初の回帰木は、与えられたサイズの木のなかで、損失関数をもっとも減少させるような木である。次の木は最初の木の残差に適合させる。当然ながら変数も分割も全然違う。二本の木による予測は、それぞれの予測に学習率をかけて合計して求める。三本目の木は二本の木の残差に適合させる。これを延々繰り返す。一旦作っちゃった木は直さない、というのがポイント。なお、反応変数の型はいろいろ扱える(損失関数を反応の型にあわせて選べば済む話だから)。
 ユーザの観点からいうと、BRTの特徴は以下の通り。

 後半はケース・スタディ。ニュージーランドにおけるAnguilla australisの分布を予測する(調べてみたところ、日本の魚市場ではオーストラリアうなぎと呼ばれている由)。各観測地点で捕獲されるかどうかを11個の予測子で予測する。ソフトはRのgbmパッケージ。内容はこんな感じ。

 そんなこんなで、付録に詳細なチュートリアルをつけたから読みなさい、とのこと[すいません、読んでないです]。

 ...というわけで、あんまりきちんと読んでないけど、勉強になりましたです。
 xgboostなどを使っていると、ついつい細かいことを考えて混乱しちゃうわけだけど、割り切って考えちゃえばブースティングなんて最適化のテクニックに過ぎないわけで、シュリンケージ・パラメータ(eta)なんかについてあれこれ悩んでいるのはある意味で不毛というか、なんというか... いずれはパラメータを勝手にうまいこと決めてくれるようなソフトも出てくるんじゃないかと思う。

論文:データ解析(2015-) - 読了:Elith, Leathwick, Hastie (2008) ブースティング回帰木ユーザーズ・ガイド

rebuilt: 2020年11月16日 22:56
validate this page