kaggleとは
データサイエンティストと企業や政府を繋ぐコンペサイトです。
データ解析の正答率をスコアとして参加者同士でスコアの高さを競い合います。
企業から出されたテーマに対して上位入賞者に賞金と引き換え(!)にデータセットを買い取るという意欲的な仕組みです。
なぜkaggleで学ぶのか
私の現職は通常のPGとは違って少し特殊で、小中学向けプログラミング教育の講師を勤める傍ら、数学・現代文の講師と内製アプリケーション専門のPGをやっております。
なので経験値をアピールする機会がとても少ない……という悲しい事態に直面しておりその対策として何か実力を証明できるものはないだろうかというものを探している中でkaggleを見つけました。
ちょうど社内でマーケティングの役割が必要なのではないかと話をしていたところだったのでいい機会だということでkaggleを始めました。
様々なバックグラウンドを持っている人間でも自由に出入り出来、また、データサイエンスの世界ではある程度の市民権があることもkaggleのいいところだと思います。
第一歩
・第一歩の手順は以下の二つです
① ランダムフォレストを学ぶ
今回はこの内容を学びました。
https://www.codexa.net/kaggle-mercari-price-suggestion-challenge/
開発環境
MacOS v10.13.6
行程
#####1.開発環境を整える
Kaggleのカーネルを利用し、直接書いていきました。
#####2.参考サイトの手順に沿って学習を始める
今回はランダムフォレストを用いて機械学習を行なっていたのでここではランダムフォレストの概要を簡単に説明したいと思います。
ランダムフォレストとは……
決定木を複数組み合わせ、各決定木の予測結果を多数決することによって結果を得る。
以下にアルゴリズムを示します。
1.ランダムにデータを抽出する
2.決定木を成長させる
3.1と2のステップを繰り返す
予測結果を多数決することによって分類閾値を決定する。
決定木を複数個作る必要があるのでどうしてもデータ量が必要なので使いどころが限られそうです。
#####【参考サイトの概略】
●データセットの確認
・CSVを読み込んで内容を確認する
・元データ と testデータ の簡単な統計情報とサイズも確認する
・pandasのdescribe()を使って各データセットの基本統計量も確認する
・データタイプを文字列からCategoryに変更する
・ユニーク値の確認
・データセットの欠損の確認する
●データセットの事前処理
・trainとtestのデータを連結させる
・連結させたDataFrameの文字列のデータ形式を「cateogry」へ変換
・文字列を数値へ値を変換
・訓練用データの「price」をnp.log()で処理
・ランダムフォレスト用にxとy(ターゲット)で分ける
●アルゴリズムにデータを流し込む
・決定したアルゴリズムにデータを流し込む
3.完成
お疲れ様でした。
まとめ
データセットの確認は前回とほぼ変わらずだったのでここはデータサイエンスをやるにあたってのルーティン的な内容になるのでしょう。
今回はアルゴリズムにランダムフォレストを使いましたが重要なのはどのタイミングでどのアルゴリズムを利用すべきかを考えておくことだと思っています。前回のタイタニックの時はデータ数が少なく、ランダムフォレストを使用することは難しいところがあったのでしょう。
使用されるアルゴリズムの幅というのはその時々で変わりそうです。であればどのタイミングでどのアルゴリズムを利用すべきかというのは非常に重要な問題だと考えられます。
なのでもう少し機械学習の手順を学んだ後にアルゴリズムチートシートの学習に移りたいと思います。