kaggleとは
データサイエンティストと企業や政府を繋ぐコンペサイトです。
データ解析の正答率をスコアとして参加者同士でスコアの高さを競い合います。
企業から出されたテーマに対して上位入賞者に賞金と引き換え(!)にデータセットを買い取るという意欲的な仕組みです。
なぜkaggleを学ぶのか
私の現職は通常のPGとは違って少し特殊で、小中学向けプログラミング教育の講師を勤める傍ら、数学・現代文の講師と内製アプリケーション専門のPGをやっております。
なので経験値をアピールする機会がとても少ない……という悲しい事態に直面しておりその対策として何か実力を証明できるものはないだろうかというものを探している中でkaggleを見つけました。
ちょうど社内でマーケティングの役割が必要なのではないかと話をしていたところだったのでいい機会だということでkaggleを始めました。
様々なバックグラウンドを持っている人間でも自由に出入り出来、また、データサイエンスの世界ではある程度の市民権があることもkaggleのいいところだと思います。
第一歩
・第一歩の手順は以下の二つです
① kaggleに登録する
② チュートリアル的な内容を回してみる
①kaggleに登録する
そんなに難しいことはありません。
メールアドレスとパスワードを登録するだけです。
②チュートリアル的な内容を回してみる
今回はこの内容を回してみました。
https://www.codexa.net/kaggle-titanic-beginner/
開発環境
MacOS v10.13.6
Docker v18.06.1-ce-mac73
ubuntu v16.04(Docker上で起動)
jupyter-notebook v5.1
行程
1.開発環境を整える
積ん読していたもともと持っていた本で作った環境をそのまま用いました。dockerコンテナ上で作成した開発環境にdockerからアクセスしています。
dockerの勉強は後回しになってしまっていますが、どこかのタイミングで追記という形ででもオリジナルのdockerイメージをDL出来るようにしたいと思っています。
2.参考サイトを見ながら機械学習を行う
参考サイトでは決定木を用いてタイタニックの生存率を予測するデータ解析を行なっていました。
手順に関しては参考サイトを見ていただければわかると思うのでこちらでは決定木について解説します。
【決定木とは】
端的に表すと「フローチャート式のデータ決定方法」です。フローチャートの最終到着地点にそれぞれ結論を持たせておきその結論を出力します。
引用:https://dev.classmethod.jp/machine-learning/2017ad_20171211_dt-2/#sec1
データ解析のアルゴリズムは難しいものが多く、なかなかわかりづらいのですがこれは非常にわかりやすいアルゴリズムとなっています。
また、データの型に対しての許容度が高く、説明変数に型が入り混じっていても対応がききます。
反面、分類性能は高くなく、過学習も起こしやすいです。
つまり、簡単でわかりやすいけれども実用性が発揮される場面は限られる、という内容のアルゴリズムとなります。
【参考サイトの概略】
●データセットの確認
・CSVを読み込んで内容を確認する
・元データ と testデータ の簡単な統計情報とサイズも確認する
・pandasのdescribe()を使って各データセットの基本統計量も確認する
・データセットの欠損の確認する
●データセットの事前処理
・欠損データへ代わりとなる代理データを入れる
・カテゴリカルデータの文字列を数字に変換
●アルゴリズムにデータを流し込む
・決定したアルゴリズムにデータを流し込む
3.完成
お疲れ様でした。
まとめ
備忘録としてkaggle日記を書きました。
新しいことを始める時の第一障壁である環境構築を本に書かれている通り行なった(多少うまくいかないところもありましたが……)のであまり詰まることなく学習を行うことが出来ました。
冒頭に書いている通り本職はプログラミング講師で、dockerは非常に有用な知識なのでこちらも学びたいとは思っていますし、追記でオリジナルの環境構築方法をいつか書ければ……と思っております。