Heritage Health Prizeについて(2)

Heritage Health Prizeについて(2)

<<前の記事に戻る

前回、KaggleのHeritage Health Careコンペの概要について書きました。今回は、上位チームが使用したモデルを大まかに見てみたいと思います。

優勝チームのメンバーであるオランダのMestromとGrijesのモデルは、29個の弱学習器を組み合わせた構成になっています。以下、その一覧です。

dsf_20151203

29個のうち12個は確率的勾配降下法(SGD:Stochastic Gradient Descent)、1個は勾配ブースティング(GBM:Gradient Boosted Machines)、2個は決定木モデルのアンサンブル学習と確率的勾配降下法の組み合わせ、残りの14個は、訓練データの入院日数を「性別不明」などの特徴を持ったグループ毎に単純平均したものです。

 

確率的勾配降下法

データの中から一人をランダムに選んで、その人に対する誤差関数を最小化するステップを繰り返すのが確率的勾配降下法です。

同じ確率的勾配降下モデルでも、学習率を変える、特徴量の取り方を変える、予測式にシグモイド関数を入れるといった様々なバリエーションのモデルを作り、コンペ開始時から取捨選択を繰り返して、最終的なモデルには12種類を組み込んでいます。

 

勾配ブースティング

ブースティングというのは、複数の弱学習器を組み合わせる手法の一つです。最終的に組み合わされる29個の学習器のうちの一つがこの勾配ブースティングモデルですが、それ自体も複数の学習器から構成されていることになります。

バギングやスタッキングのように並列に組み合わせるのではなく、それまでに学習したモデルの結果を利用することによって次のモデルを作るのがブースティングの特徴です。

もともとは別の上位チームが使っていて第2回マイルストン賞で非常に良い成績を残していたことから、このチームも使うことにしたようです。

彼らのモデルでは、弱学習器として回帰木2800本を組み合わせて使っています。

 

ランダムフォレスト+確率的勾配降下

確率的勾配降下モデルのインプットを作成するためだけにランダムフォレストを使った贅沢なモデルです。

まず2000本の決定木を組み合わせたランダムフォレストで予測を行い、遺伝的アルゴリズムによって最適化された6つのパラメータによって予測値を補正します。

こうして得られた予測値は、各患者の年齢、性別、請求情報等のデータとともに確率的勾配降下モデルに入力され、さらに精度の高い予測結果が出力されます。

このモデルだけでも多くの決定木と確率的勾配モデルを組み合わせている上に、極めて高い予測精度を出しているので、一つの弱学習器と呼んでもよいものか分からないと本人たちが言っています。

 

最適化定数

この最適化定数のモデルは、全ての患者に同じ予測値を割り当てるという単純なものです。

ただし、今回のデータセットにはちょっとした癖があり、例えば、性別が「不明」となっている患者は入院している可能性が高い、といった類の傾向が、大会期間中に掲示板で数多く報告されました。

こうした傾向を考慮して、「性別不明」の患者には、「性別不明」となっている全ての患者の入院日数の平均を予測値とする、といったモデルを14個作りました。

 

以上のような学習器29個をスタッキングという手法によって組み合わせたのが彼らのモデルです。いかに手間をかけて作り込んであるかが伝わるでしょうか。

これだけ手の込んだモデルのアルゴリズムを、ほとんどパッケージを使わずにスクラッチで書いたというので驚くばかりです。

参考

Heritage Health Prize ホームページ/Milestone受賞者によるパフォーマンスレポート

http://www.heritagehealthprize.com/c/hhp/details/milestone-winners