Masser’s Blog

データサイエンティスト/Kaggle/Python/ADHD/旅行/サンフレ 等語る予定。

K言語初めてでKaggleのタイタニック生存者予測やってみた

昨今データベース分析の需要があがっておりますが、そのデータベース分析の勉強にもってこいのプラットフォームとしてKaggleがあります。企業がコンペ形式で課題を提示し、世界中から40万人を超えるデータベースサイエンティストが課題に対して最も最適な分析モデルとは何か競い合っております。ただいきなり本戦はデータ分析初心者にとってはハードルが高すぎるので、一番初心者向きのタイタニック生存者予測をデータ分析に適したK言語でやってみました。とはいいつつも、インフラ、プログラム(Cやシェルが中心だが)やDBや、統計学やるうえで必須な数学の知識はあるので全く初心者とはいえませが。この手の方法を覚えるには、変に座学から入るよりもまずは世の中のサイトを見ながら実戦で自分で作り、後から座学で補完するほうが一番覚えられる気がします。なので特に目新しいやり方はないですが、初心者が詰まりやすい観点から語ってみたいと思います。

タイタニック生存者予測とは

タイタニック生存者予測はtrain.csvから名前、性別、年齢等の乗船者のデータと生存者の情報を分析して、test.csvにあるデータから生存者情報を抜き出すというものです。

データの内容
  • PassengerId 乗客員の番号

  • Survived  生存しているかどうか

  • Pclass 部屋のクラス

  • Name 指名

  • Sex 性別

  • Age 年齢

  • SibSp 配偶者の数

  • Parch 子供の人数

  • Ticket チケットの番号

  • Fare 料金

  • Cabin 部屋番号

  • Embarked 出発した場所

データ分析の方法

データ分析は今はやりの機械学習で行います。一番単純なのだと木構造でしょうか?Pclass、Sex、Ageから木構造に分類された表はこちらの通りとなります。これでこの木構造からこのパターンだと何パーセントというように出るのでこれをテストデータに対して当てはめるのです。

f:id:masser199:20180128185700j:plain

今回の手順

今回は以下の手順でやりました。

  1. Train.CSVから生死に影響ありそうなデータを単純に抜き出す。単純にPclass、Sex、Ageを選定

  2. TrainからPassengerId、Survived、Pclass、Sex、Ageを抜き出す。またTestからPassengerId、Pclass、Sex、Ageを抜き出す

  3. Ageに欠損データがあるので、miceを使用して欠損データを埋める

  4. テストデータをRandom Forestで読み込み、Testデータに反映

  5. 結果をCSVを取り出し、Kaggleに登録

結果

結果は 0.75598でした。ですが、0.8以上がいいスコアとされており、これだけでは不十分なので、今回見ていない他のデータを分析する必要があります。そして今回欠損データの埋め方は全データから登録したのでここももっとうまく埋めないといけません。また分析手順もXGBoostとかいろいろあるでしょう。これは次の機会に。

詰まったポイント
  1. 何やるにしてもライブラリ読み込まないとできない。

R言語は統計、グラフ表示、機械学習するのに便利な言語ですが、ライブラリを読み込む必要があります。最初はパイプを使用するのに(%<%)tidyrすら知らなかったので。。。以外とハマります。

  1. データ加工がやりずらい。

これはR言語からだと思うけどこの言語はデータ加工がやりづらいと感じました。いくつも中間テーブルつくったことか。Pythonだともっとやりやすいかな?

今度はPython中心にやっていきたいと思います。そして、他の初心者向きのコンペティションのHouse Pricesや私の好きなサッカーチームのサンフレッチェのデータを使って何か分析できればですね。

データ分析はもっと早く勉強してれば後悔しきりです。