この記事では、Kaggleデータ分析の流れを6ステップに分けて紹介していきます。
これからデータ分析を学ぶ人が、データ分析の全体像を把握するのに最適な内容にしていますので、参考にしてみてください。
※今回はKaggle入門者の練習に使われる「Titanic」問題を例に進めていきます。
kaggleで勝つデータ分析の技術
今回の内容の多くの部分は「Kaggleで勝つデータ分析の技術」を参考にしています。
本書はKaggleのデータ分析について書かれた本ですが、実務のデータ分析に役立つ部分も非常に多く、何より内容がいい。
もっと深い内容を学びたい人は、購入を強くお勧めします。
Step.1:背景・課題の理解
まずは参加したコンペ自体が「どのような課題を解決するために開催されているのか?」を理解しましょう。
主催者がどのような仮説・問題意識をもってコンペを開催しているのか。
これを理解することなしには、意味のあるデータ分析はできません。
コンペに参加したらすぐ、Overview→Descriptionと進み、コンペ開催の背景・設定された課題の理解に取り組みましょう。
Step.2:タスクと評価指標の確認
つづいて、参加したコンペの「タスクと評価指標」を確認しましょう。
具体的に「タスクの確認」とは以下の二点を確認することです。
- 何を予測するのか?
- どのような予測値を提出するのか?
タスクの種類には、モノの値段や来客数などの「数値」を予測する回帰タスクや、患者が病気に「かかっているか否か」を予測する分類タスクなどがあります。
また「評価指標の確認」は、予測値の精度の良し悪しをどの観点で判断するか?を確認することを指します。
例えばコロナ検査キットの精度を考えるとき
- 陽性反応が出たときに実際はどれくらいの確率で感染しているか
- 実際に感染しているひとに対して、どのくらいの確率で陽性が出るか
の二つの観点では、精度の判断基準が異なります。
Overview→Evaluationと進みGoalとMetricを確認することで、Titanic問題は生存or死亡の分類タスクであり、評価指標はaccuracyであることがわかりますね。
Step.3:データの理解・前処理
次に行うのが「データ理解と前処理」です。
この段階からいよいよ、「データ分析」感が出始めます。
データ理解のためには、データ可視化・統計量の確認などを行います。
これには「matplotlib」や「seaborn」などPythonのデータ可視化ライブラリを用いたり、「pandas-profiling」というツールを用いたりします。(まぁ一つ一つ手動でやっても構いませんが)
ここでの理解をもとに次の前処理を行っていきます。
前処理とは、機械学習が可能な形にデータを整えること。
具体的には、以下のようなものです。
- 欠損値を処理(データの抜けを埋めたり)
- カテゴリ値の処理([male, female] → [0, 1]に直したり)
- 複数のテーブルを結合
- 有用な特徴量を新たに作成
Step.4:機械学習でモデル構築
学習用データの前処理が終わったら、いよいよ機械学習によって予測装置(AIモデル)の作成を行います。
と言ってもやることは単純で、Pythonの機械学習ライブラリを使って機械学習アルゴリズムにデータを入れていくだけです。
#アルゴリズムをインポート
from xgboost import XGBClassifier
#アルゴリズムを変数に代入しインスタンス生成。および学習データを与えてのモデル構築。
model = XGBClassifier(n_estimators = 20, random_state = 71)
model.fit(train_x, train_y)
コードで表したら、たったこれだけの量です。
これが機械学習・AIの分野でPythonが鬼のように使われる理由。
アルゴリズムを理解していなくても、AI構築ができてしまいます。
Step.5:モデルの評価・改善
機械学習をおこないモデルの構築が完了したら、そのモデルが未知のデータに対してどれくらいの予測精度を発揮できるかを確かめます。
そしてその精度をさらに上げるために、モデルの改善サイクルを回していくのです。
クロスバリデーションでモデルの予測精度を確認
kaggleでは教師あり学習タスクのコンペのみが行われ、モデル構築用の「トレーニングデータ(解答あり)」とは別に、精度確認用の「テストデータ(解答なし)」が与えられています。
このテストデータをモデルに入れて算出した予測値をkaggle側に提出すると、Step.2で確認した評価指標に基づいてその精度が数値化され、その良し悪しでコンペの順位が決まるのです。(Leaderboardで確認可)
一応その数値でも精度確認はできますが、実はいろいろ問題があります。(ここでは割愛)
そこで一般的にはクロスバリデーションという手法で、モデル精度の確認が行われます。
モデル改善のポイント2つ
一回目のクロスバリデーションで基準となる精度が確認できたら、さらにそれを高めるために次の2つのポイントを改善していきます。
- 学習データの特徴量の変更
- 機械学習モデルの設定の変更(パラメーターチューニング)
モデルの予測精度の改善にもっとも効くのが、学習に使われる特徴量の変更です。
害がありそうな特徴量を削除したり、効果のありそうな新たな特徴量を作成したりします。
kaggleコンペでのスコアは、ほぼ「選択した特徴量の良し悪し」で決まるといわれています。
またモデル自体の設定値を最適化するパラメーターチューニングも行われます。
Step.4で記述したコードにおける、n_estimatorsとrandom_stateがそれにあたります。
「変更→クロスバリデーションで確認→変更→クロスバリデーションで確認」とサイクルを回して、精度を改善していきます。
Step.6:アンサンブル学習で「とどめの一押し」
最後に「スコア(予測精度)の底上げ」のために、「アンサンブル学習」という手法を行っていきましょう。
アンサンブル学習の考え方は非常にシンプル。
Step.5までのやり方で、学習する特徴量、機械学習アルゴリズム、モデルのパラメーターをいろいろ変更した複数種類のモデルを作ります。
それらのモデルの予測値をすべて加味して(例えば平均する)、最終的な予測値の精度を上げようと試みるのが「アンサンブル学習」です。
要するに「三人寄れば文殊の知恵」を、機械学習モデルで体現しているわけですね。
kaggleデータ分析の流れまとめ
今回はKaggleのデータ分析の流れをざっくりと解説してきました。
なんとなくデータ分析の全体像をイメージできたのではないでしょうか?
より詳しくKaggleを学びたい方は、以下の記事にオススメ書籍をまとめているのでぜひ参考にしてください。
[word_balloon id="1" size="M" position="L" radius="true" name="" balloon="talk" balloon_shadow="true"]こんにちは、ツクダンです![/wo[…]