KDD CUP 2013 Trac1 に参加して感じたこと [データサイエンス、統計モデル]
KDD CUP 2013 のTrac1に参加しているが、Scoreが0.968まで上がってきた。
通常の業務をやりつつ、KDDに参加しつつってこともあり、あまり時間をさけないのが残念なのだが、効率的にモデリングをしたり、変数を作ったりすることで、なんとなく解ってきたことがある。
以下、そのまとめ。
今回、テキストのデータがあるので、それを使った方が良いだろうとは思う。
しかし、LDAなどでトピックを抽出し、距離(近さ)を計算し、そのまま投入するだけでは対して精度は上がらなかった。
むしろ、ネットワークの問題と考え、ネットワークの構造をうまく変数として与えることができれば、精度が大幅に上昇した。
次にモデルに注力した方が良いのか、うまい変数作りに注力した方が良いのか?
もちろん、両方大切である。
両方大切なので、あまりに偏った分析設計をすると、時間が足りなくなってしまう。
そこで、以下のようにすれば良いのでは?と。
最初は、モデルを固定せずに、できるだけ数多くのモデル(決定木、ニューラル、SVM、ロジスティック回帰)にチャレンジした方が良い。
この時に、あまりパラメータチューニングをガリガリ行うのではなく、簡単なモデル(チューニング)であたりを付けていく感じ。
その中で、筋の良いモデルとそうでないモデルが見えてくるので、だんだんと要らないモデルを落としていく。
上記の作業を行いつつ、変数を追加していくのだが、精度の凸凹は、変数を追加しても大きく変わることはほとんどない。
新たな変数を追加したところで、そのベースからの上昇率は、どのモデルも似たり寄ったり。
この辺りで、決定木とかも単にCHAIDだけではなく、C5.0とか、流行りのrandom forestなど複数の木を試してみる。
また、不要なモデルを削除し、そして、また、変数を追加しということを繰り返していく。
最終段階に入ってくると、深い構造を作っていく必要があるのだが、boostingやbaggingといったオプションで繰り返しモデルを作っていくと、相当時間がかかる。
この辺りになると、ほぼどのモデルを使ったらいいのか見えてくるので、1,2個のモデルを使いつつ、モデルのパラメータを微調整していく。
そして、また、変数自体も微妙性していく。
なんだか、職人のような気もするが、そうしてくると、微々ではあるが精度は少しずつ上がっていくので、(もちろん、オーバフィットには注意しつつ)、後は、どれだけ時間を取れるかが、1%以下の精度の勝負の分かれ目になるんだろう。
通常の業務をやりつつ、KDDに参加しつつってこともあり、あまり時間をさけないのが残念なのだが、効率的にモデリングをしたり、変数を作ったりすることで、なんとなく解ってきたことがある。
以下、そのまとめ。
今回、テキストのデータがあるので、それを使った方が良いだろうとは思う。
しかし、LDAなどでトピックを抽出し、距離(近さ)を計算し、そのまま投入するだけでは対して精度は上がらなかった。
むしろ、ネットワークの問題と考え、ネットワークの構造をうまく変数として与えることができれば、精度が大幅に上昇した。
次にモデルに注力した方が良いのか、うまい変数作りに注力した方が良いのか?
もちろん、両方大切である。
両方大切なので、あまりに偏った分析設計をすると、時間が足りなくなってしまう。
そこで、以下のようにすれば良いのでは?と。
最初は、モデルを固定せずに、できるだけ数多くのモデル(決定木、ニューラル、SVM、ロジスティック回帰)にチャレンジした方が良い。
この時に、あまりパラメータチューニングをガリガリ行うのではなく、簡単なモデル(チューニング)であたりを付けていく感じ。
その中で、筋の良いモデルとそうでないモデルが見えてくるので、だんだんと要らないモデルを落としていく。
上記の作業を行いつつ、変数を追加していくのだが、精度の凸凹は、変数を追加しても大きく変わることはほとんどない。
新たな変数を追加したところで、そのベースからの上昇率は、どのモデルも似たり寄ったり。
この辺りで、決定木とかも単にCHAIDだけではなく、C5.0とか、流行りのrandom forestなど複数の木を試してみる。
また、不要なモデルを削除し、そして、また、変数を追加しということを繰り返していく。
最終段階に入ってくると、深い構造を作っていく必要があるのだが、boostingやbaggingといったオプションで繰り返しモデルを作っていくと、相当時間がかかる。
この辺りになると、ほぼどのモデルを使ったらいいのか見えてくるので、1,2個のモデルを使いつつ、モデルのパラメータを微調整していく。
そして、また、変数自体も微妙性していく。
なんだか、職人のような気もするが、そうしてくると、微々ではあるが精度は少しずつ上がっていくので、(もちろん、オーバフィットには注意しつつ)、後は、どれだけ時間を取れるかが、1%以下の精度の勝負の分かれ目になるんだろう。