コンペチュートリアル 前処理 機械学習

KFold + XGBoost + EDAチュートリアル | PortoSeguro コンペ

投稿日:

概要説明

本記事は、機械学習を始めて基本的な操作を覚え、次に精度を上げるために何をすればよいのか?という悩みを持つ方たちのために、機械学習のコンペサイトkaggleの練習問題をベースに事例を紹介していきたいと思います。
今回は特に、不均衡データの取り扱いを中心にしたノートとなっています。

本記事では、HyungsukKangさんのノートブックを参考にしています。

コンペの説明

ブラジル最大の自動車および住宅所有者保険会社の1つであるPorto Seguroの事例です。
このコンペでは、保険加入者が翌年に自動車保険の請求を行う確率を予測するモデルの構築に挑戦します。

目次

  • 1. イントロ
  • 2. データ準備
    • 2.1 データロード
    • 2.2 欠損値の確認
    • 2.3 特徴量とターゲットの分割
    • 2.4 データの可視化
  • 3. パイプライン
    • 3.1 ジニ係数の定義
    • 3.2 不要な特徴量の削除
    • 3.3 層化抽出法を用いたK-Fold法
    • 3.4 XGBoost
  • 4. Prediction and submission
    • 4.1 予測と結果の提出

本記事は、機械学習を始めて基本的な操作を覚え、次に精度を上げるために何をすればよいのか?という悩みを持つ方たちのために、機械学習のコンペサイトkaggleの練習問題をベースに事例を紹介していきたいと思います。
今回は特に、不均衡データの取り扱いを中心にしたノートとなっています。

本記事では、Rafael Alencarさんのノートブックを参考にしています。

コンペの説明

ブラジル最大の自動車および住宅所有者保険会社の1つであるPorto Seguroの事例です。
このコンペでは、保険加入者が翌年に自動車保険の請求を行う確率を予測するモデルの構築に挑戦します。

イントロ

これは、PortoSeguro提供するSafe Driver Predictionデータセットの機械学習モデル構築のチュートリアルです。 ターゲットが不均衡なため、階層化KFoldが使用されます。 予測にはXGBoostを使用します。 XGBoostの詳細については、このリンクをクリックしてください。

[XGBoost](https://xgboost.readthedocs.io/en/latest/)

データ準備

データロード

欠損値の確認

True

中央値で欠損値補完

この補完によるモデルへの致命的なトラブルはありません。

特徴量とターゲットの分割

データの可視化

ターゲットの分布

この分布より以下のことがわかる:

  • ターゲットは不均衡である
  • 0に大きく偏っている
  • 偏りを調整する必要がある

相関マトリクス

この結果より:

  • ps_calc_*は全く相関がない
  • 相関がないためデータを削除することで次元の呪いを防ぐことができる

参考) https://qiita.com/SolKul/items/e6f6f620199274aeb1fe

パイプライン

ジニ係数の定義

不要な特徴量の削除

層化抽出法を用いたK-Fold法

不均衡データに対して、sklearnのk-foldをデフォルトで実行すると、極端な場合、学習データ内のデータが全てtarget=0ということになる可能性があります。 この問題を解消するため、層化抽出法を用いたK-Fold法を使用して、各トレーニングバッチで各ラベルの分布の一貫性を保ちます。

参考)https://blog.amedama.jp/entry/2018/08/25/174530

XGBoost

パラメータ設定

予測と提出

予測と結果の提出

X, yの定義

提出用ファイルの作成

This is a pipeline originated from StratifiedShuffleSplit + XGBoost example (0.28)

Original Simple XGBoost BTB (0.27+)

csvファイルで出力

-コンペチュートリアル, 前処理, 機械学習

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Pandas/DataFrame/ダミー変数(get_gummies)

ダミー変数とは、カテゴリカルデータのように数値でないデータに対して、0と1の 2値型に変換し数量化すること。 具体的には、血液型、職業など pythonのpandasではget_dummiesを主に利 …

no image

kaggle:House Price チュートリアル(LASSO回帰とRIDGE回帰)

Contents1 概要説明1.1 作業の流れ2 ライブラリインポート3 データの読み込み4 前処理4.1 対数変換4.2 ダミー変数化4.3 欠損値処理4.4 データの分割5 モデリング5.1 RI …

no image

python lambda/list/list内包表記の使い方まとめ

pythonのlmadaとlist、list内包表記の使い方を一覧にまとめておきます。 Contents1 lambda2 listとlambdaの組み合わせ3 list内包表記 lambda 基本形 …

no image

特徴量エンジニアリングまとめ

ツリーモデルと非ツリーモデルを中心に特徴量エンジニアリングのパターンを特徴量のデータ型と手法選択の考え方をまとめます。地味だけど脱初心者には重要なスキルです。 Contents1 数値データ1.1 正 …

no image

機械学習スタッキング例

汎化性能を上げるためkaggleでよく利用されている、スタッキングの実行例をメモしておきます。 スタッキングとは、単一の学習器をそのまま使うのではなく、複数の学習きを組み合わせることで、過学習を防ぎ予 …