にゃん分間待ってやる

「文章の書き方」や「アクセスアップ」などブログ運営のテクニックを解説。

Kaggle始めました(機械学習・プログラミング)

Kaggle始めました

ブログの新しい方向性を模索中。

これまでは、ノウハウを整理して情報提供する形式でブログをやってきました。
しばらくは日記・作業記録っぽくします。

とにかく新しいことを始めようということで、Kaggleを始めました。

機械学習とか、予測モデリングとかいう分野です。
既存のデータを読み込ませて、未知のものを予測します。

Kaggle自体は学習サイトではなくて、問題が出題されてみんなで解いて得点を競うみたいなサイトです。
ここでノウハウを蓄積して、何か作ろうと思います。

たとえば

  1. ツイッターの自分のフォロワーさんのデータを読み込ませる
  2. 未知のツイッターユーザーに対して
    その人をこちらからフォローした場合に、フォローバックしてくれる確率が何%くらいあるかを予測する

みたいなものを作ろうかと思っています。

Kaggleのタイタニック問題を練習中

いまは機械学習の初歩中の初歩、タイタニック予測で練習中。

乗客名簿に

  • 名前
  • 年齢
  • 性別
  • 家族連れかどうか

などのデータが乗っていて、それらの情報を元に沈没後に各乗客が生存したかどうかを1人ずつ予測します。

名簿の半分を使ってコンピュータプログラムで予測モデルを作成します。
たとえば、

女性より、男性の方が生存率が高い。
(女性の方が優先的に救命ボートに乗せてもらえた?)

若い方が生存率が高い。
(子供の方が優先的に救命ボートに乗せてもらえた?
老人は体力的に冷たい海で生存できなかった?)

子供連れの母親&子供は特に生存率が高い。
(優先的に救命ボートに乗せてもらえた?)

みたいなことがデータ全体から発見できます。

そして、名簿の残りの半分については
「ケリーさん、70歳、女性、夫婦で乗船」みたいな個々のデータを見ながらその人の生死を予測します。
既に過去の出来事なので、答えも分かっていて、どれだけ正確に予測ができたかを競います。

機械学習とチューニング

機械学習には色んな既知の手法があって、コンピュータープログラミングで予測モデルを作ります。

その過程でパラメーターのチューニングなんかをするんですが、
「名前と生存確率」が関係しているとは思えないので、名前を無視して予測すると精度が上がったりします。

「名前」を予測に使っちゃうと、「苗字がRから始まる人は生存確率が高い」みたいな謎の知見が得られたりします。
でも、それはただの偶然の可能性もあるわけです。
名簿の後半を使って答え合わせをしたら全然関係なかった。
無駄な法則を発見したせいで予測精度が下がった。
みたいなことが起こったりします。

でも、「○○」という苗字の人は「××」地方出身の人に多くて、「××」地方の人は全員泳ぎが得意。
みたいな目に見えないルールが隠れていたりする可能性もあります。

なので、与えられた情報の中からどれを予測に使うかみたいな部分が、エンジニアの腕の見せ所だったりします。

というわけで、いまは試行錯誤中。

このページは移転しました。