Kaggle始めました
ブログの新しい方向性を模索中。
これまでは、ノウハウを整理して情報提供する形式でブログをやってきました。
しばらくは日記・作業記録っぽくします。
とにかく新しいことを始めようということで、Kaggleを始めました。
機械学習とか、予測モデリングとかいう分野です。
既存のデータを読み込ませて、未知のものを予測します。
Kaggle自体は学習サイトではなくて、問題が出題されてみんなで解いて得点を競うみたいなサイトです。
ここでノウハウを蓄積して、何か作ろうと思います。
たとえば
みたいなものを作ろうかと思っています。
Kaggleのタイタニック問題を練習中
乗客名簿に
- 名前
- 年齢
- 性別
- 家族連れかどうか
などのデータが乗っていて、それらの情報を元に沈没後に各乗客が生存したかどうかを1人ずつ予測します。
名簿の半分を使ってコンピュータプログラムで予測モデルを作成します。
たとえば、
女性より、男性の方が生存率が高い。
(女性の方が優先的に救命ボートに乗せてもらえた?)
若い方が生存率が高い。
(子供の方が優先的に救命ボートに乗せてもらえた?
老人は体力的に冷たい海で生存できなかった?)
子供連れの母親&子供は特に生存率が高い。
(優先的に救命ボートに乗せてもらえた?)
みたいなことがデータ全体から発見できます。
そして、名簿の残りの半分については
「ケリーさん、70歳、女性、夫婦で乗船」みたいな個々のデータを見ながらその人の生死を予測します。
既に過去の出来事なので、答えも分かっていて、どれだけ正確に予測ができたかを競います。
機械学習とチューニング
機械学習には色んな既知の手法があって、コンピュータープログラミングで予測モデルを作ります。
その過程でパラメーターのチューニングなんかをするんですが、
「名前と生存確率」が関係しているとは思えないので、名前を無視して予測すると精度が上がったりします。
「名前」を予測に使っちゃうと、「苗字がRから始まる人は生存確率が高い」みたいな謎の知見が得られたりします。
でも、それはただの偶然の可能性もあるわけです。
名簿の後半を使って答え合わせをしたら全然関係なかった。
無駄な法則を発見したせいで予測精度が下がった。
みたいなことが起こったりします。
でも、「○○」という苗字の人は「××」地方出身の人に多くて、「××」地方の人は全員泳ぎが得意。
みたいな目に見えないルールが隠れていたりする可能性もあります。
なので、与えられた情報の中からどれを予測に使うかみたいな部分が、エンジニアの腕の見せ所だったりします。
というわけで、いまは試行錯誤中。
このページは移転しました。