dataminer.me

データマイニングやその周辺のお話を書くブログ

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とかラベル伝播とかを使っても

テストデータではそこまで精度が出なかったので

ほかの人が何を使っていたか

聞いてみたい。