RSCTC2010+そのとき使った解析のフロー
RSCTC2010というのに統計解析のコンテストに
出場して(一応)世界で96人中3位になりました。
→ http://tunedit.org/challenge/RSCTC-2010-B?m=leaderboard
このコンテストが何をやるコンテストだったかというと
DNAマイクロアレイのクラスタリングのコンテスト
で、2クラスから5クラスの分類を
6課題くらい行うというものでした。
テストデータの段階では、微妙に19位くらいで
恥ずかしかったので周りにいわずにたらたらやって
ました。
なので、ほとんど期待していなかったのですが
本番のデータでやってみたところ
精度が3位になっててちょっとびっくり。
(しかも、超僅差で3000USDもらい損ねた。。。)
ただ、使ったアルゴリズムは
むちゃくちゃ単純なので
解析のフローについて若干以下に書いておきます。
利用したのは
・ランダムフォレスト
・OOBスコアによる変数選択
・ジャックナイフ法
・ランダムフォレストの枝の本数の最適化
・大域最適化
・MCMC回帰
※ほとんどノートPCで解析をしていたので
もっといいものを使えば楽にできたはず
1.ランダムフォレストで変数選択
OOBのスコアを使って使用するプローブ(データ列)
優先順位を決定する。
その際、枝の本数を1から増やしていき、
誤判別率の値の変化量が1%以内になるものが
10回出現した点で枝の本数を決定する。
2.ジャックナイフ法で複数回ランダムフォレスト
1で行った変数選択の結果を元に
出現回数に重み付けを行ったデータセットを
ジャックナイフ法で1000データ列
(本当はもっとほしかった)
とってきて、ランダムフォレストで
誤判別率とテストデータへの当てはめの
結果を1000回分の予測結果を出力する
その際も枝の数を1と同様に毎回選択する。
3.1000回分のデータを下にMCMC回帰
1000分の予測データと誤判別率を用いて
MCMC回帰分析を行い、回帰式を作成する。
4.回帰式を用いて大域最適化を行う。
求めた回帰式を元に大域最適化を行い、
各データセットの予測値を出力する
という感じで行いました。
最終結果と途中の結果の順位が結構違ったことから
ほかの人は
あまり未知データに強くない
クラスタリングを使ったのではないかなと思う。
ただ、SVMとかラベル伝播とかを使っても
テストデータではそこまで精度が出なかったので
ほかの人が何を使っていたか
聞いてみたい。