Kaggle初挑戦。Titanicで学んだ「特徴量は多ければ多いほど良い」"ではない"ということ
初めて挑戦したKaggleコンペは、データ分析の入門として有名な「Titanic」です。
今回は、実際に1か月ほど取り組んでみて、どんなことに苦労したのか、そしてそこから何を学んだのかを書いてみます。
まずは結果から
※Github名:Hans Bellmer
結果は、
- Score:0.78947
- 順位:1,159位 / 11,100人
- 上位10.4%
となりました。
初めてのコンペとしては、一定の結果を出すことができました。
一方で、自分としては「まだ改善できる余地がかなりある」と感じた結果でもあります。
※Titanicコンペは、直近2か月以内に提出したアクティブな参加者のみがリーダーボードに掲載されるRolling Leaderboard方式です。
実装面では、試行錯誤を結果につなげられた
モデルの作成、ハイパーパラメータの調整、パイプラインの構築など、初めて触れることも多く、もちろん苦労しました。
ただ、ここでは比較的スムーズに学習を進めることができました。
コードを書いて、
実装 → 学習 → 検証 → スコア確認
というサイクルを回すと、自分が行ったことが数字として返ってきます。
「この変更でスコアはどう変わるのか」
を確認しながら進められるので、試行錯誤そのものを楽しむことができました。
一方で、最も頭を悩ませたのが「特徴量エンジニアリング」でした。
一番苦労したのは、特徴量エンジニアリング
※色々試しに作った特徴量
Titanicに取り組む中で、最も苦労したのが特徴量エンジニアリングです。
最初の私は、
「新しい特徴量を作れば、予測に使える情報が増える。だったら、たくさん作った方が良いのでは?」
と考えていました。
そこで、いろいろな特徴量を考えて追加し、データリークにも注意しながらモデルを改善していきました。
ところが、期待とは逆に、特徴量を増やすほどスコアが下がることがありました。
ここで初めて、
「情報を増やすこと」と「予測に役立つ情報を増やすこと」は同じではない
ということに気づきました。
特徴量同士が似た情報を持っていたり、予測にあまり関係のない情報が入っていたりすると、単純に特徴量を増やせば良いというわけではありません。
これは料理にも似ていると思います。
私は料理が趣味なのですが、
「好きな具材を何でも入れたら、おいしくなるはず!」
と言って、ハンバーグにフルーツや甘いもの、ジュースまで入れたら、当然おいしくなるとは限りません。
重要なのは、材料の量ではなく、料理に合った材料を選ぶこと。
特徴量エンジニアリングも、それと同じなのだと感じました。
「作る」よりも「なぜ作るのか」が重要
この経験から、特徴量を追加するときの考え方が変わりました。
以前は、
「新しい特徴量を思いついた。試してみよう」
という考え方でした。
今は、
「この特徴量は、何を表しているのか?」
「なぜこの特徴量が目的変数の予測に役立つと考えるのか?」
「既存の特徴量と似た情報になっていないか?」
「実際に検証した結果、改善したのか?」
という順番で考えるようになりました。
つまり、特徴量を作ること自体ではなく、仮説を立てて検証することが重要だと学びました。
Kaggleを通して学んだこと
今回のコンペを通して、特に大きかった学びは2つあります。
1. 努力は「量」だけでなく「方向」が重要
1か月間かなり試行錯誤しましたが、ただコードを書いて特徴量を増やすだけでは、必ずしも結果にはつながりませんでした。
重要なのは、
問題を理解する → 仮説を立てる → 実験する → 結果を確認する → 次の行動を決める
というサイクルを回すことでした。
努力量だけではなく、どこに努力を向けるのかを考えることが重要だと実感しました。
2. 最初の分析が、その後の改善を左右する
もう一つ強く感じたのが、最初のデータ分析の重要性です。
どの特徴量が目的変数の予測に役立ちそうなのか。
逆に、どの特徴量はノイズになっている可能性があるのか。
扱いにくい特徴量は、どのように加工すれば使えるのか。
既存の特徴量と似た情報を持つ特徴量を作っていないか。
こうしたことを考えるためには、まずデータそのものを理解する必要があります。
今回のTitanicでは、実際に試行錯誤を繰り返したことで、
「モデルを作る前に、問題を正しく理解することが大切」
ということを実感できました。
次のコンペでは、もっと「なぜ」を意識したい
Titanicでは、Pythonや機械学習の技術だけでなく、
「問題をどう捉え、どの仮説を検証するのか」
という部分の重要性を学ぶことができました。
まだまだ学ぶことは多いですが、今後もKaggleを通して、単にモデルを動かすだけではなく、
データから課題を見つけ、仮説を立て、検証し、結果から次の改善につなげる力
を身につけていきたいと考えています。
今回のTitanicコンペは、そのための最初の一歩になりました。