So-net無料ブログ作成

KDD CUP 2013 Trac1 に参加して感じたこと [データサイエンス、統計モデル]

KDD CUP 2013 のTrac1に参加しているが、Scoreが0.968まで上がってきた。

通常の業務をやりつつ、KDDに参加しつつってこともあり、あまり時間をさけないのが残念なのだが、効率的にモデリングをしたり、変数を作ったりすることで、なんとなく解ってきたことがある。

以下、そのまとめ。

今回、テキストのデータがあるので、それを使った方が良いだろうとは思う。
しかし、LDAなどでトピックを抽出し、距離(近さ)を計算し、そのまま投入するだけでは対して精度は上がらなかった。

むしろ、ネットワークの問題と考え、ネットワークの構造をうまく変数として与えることができれば、精度が大幅に上昇した。

次にモデルに注力した方が良いのか、うまい変数作りに注力した方が良いのか?
もちろん、両方大切である。

両方大切なので、あまりに偏った分析設計をすると、時間が足りなくなってしまう。
そこで、以下のようにすれば良いのでは?と。

最初は、モデルを固定せずに、できるだけ数多くのモデル(決定木、ニューラル、SVM、ロジスティック回帰)にチャレンジした方が良い。
この時に、あまりパラメータチューニングをガリガリ行うのではなく、簡単なモデル(チューニング)であたりを付けていく感じ。

その中で、筋の良いモデルとそうでないモデルが見えてくるので、だんだんと要らないモデルを落としていく。

上記の作業を行いつつ、変数を追加していくのだが、精度の凸凹は、変数を追加しても大きく変わることはほとんどない。
新たな変数を追加したところで、そのベースからの上昇率は、どのモデルも似たり寄ったり。

この辺りで、決定木とかも単にCHAIDだけではなく、C5.0とか、流行りのrandom forestなど複数の木を試してみる。
また、不要なモデルを削除し、そして、また、変数を追加しということを繰り返していく。

最終段階に入ってくると、深い構造を作っていく必要があるのだが、boostingやbaggingといったオプションで繰り返しモデルを作っていくと、相当時間がかかる。
この辺りになると、ほぼどのモデルを使ったらいいのか見えてくるので、1,2個のモデルを使いつつ、モデルのパラメータを微調整していく。
そして、また、変数自体も微妙性していく。

なんだか、職人のような気もするが、そうしてくると、微々ではあるが精度は少しずつ上がっていくので、(もちろん、オーバフィットには注意しつつ)、後は、どれだけ時間を取れるかが、1%以下の精度の勝負の分かれ目になるんだろう。

nice!(8)  コメント(0)  トラックバック(0) 
共通テーマ:学問