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から木構造に分類された表はこちらの通りとなります。これでこの木構造からこのパターンだと何パーセントというように出るのでこれをテストデータに対して当てはめるのです。
今回の手順
今回は以下の手順でやりました。
Train.CSVから生死に影響ありそうなデータを単純に抜き出す。単純にPclass、Sex、Ageを選定
TrainからPassengerId、Survived、Pclass、Sex、Ageを抜き出す。またTestからPassengerId、Pclass、Sex、Ageを抜き出す
Ageに欠損データがあるので、miceを使用して欠損データを埋める
テストデータをRandom Forestで読み込み、Testデータに反映
結果をCSVを取り出し、Kaggleに登録
結果
結果は 0.75598でした。ですが、0.8以上がいいスコアとされており、これだけでは不十分なので、今回見ていない他のデータを分析する必要があります。そして今回欠損データの埋め方は全データから登録したのでここももっとうまく埋めないといけません。また分析手順もXGBoostとかいろいろあるでしょう。これは次の機会に。
詰まったポイント
- 何やるにしてもライブラリ読み込まないとできない。
R言語は統計、グラフ表示、機械学習するのに便利な言語ですが、ライブラリを読み込む必要があります。最初はパイプを使用するのに(%<%)tidyrすら知らなかったので。。。以外とハマります。
- データ加工がやりずらい。
これはR言語からだと思うけどこの言語はデータ加工がやりづらいと感じました。いくつも中間テーブルつくったことか。Pythonだともっとやりやすいかな?
今度はPython中心にやっていきたいと思います。そして、他の初心者向きのコンペティションのHouse Pricesや私の好きなサッカーチームのサンフレッチェのデータを使って何か分析できればですね。
データ分析はもっと早く勉強してれば後悔しきりです。