スキルアップしたい

【kaggle入門】XGBoostによる最もシンプルな回帰モデル構築【営業だってプログラミング】

2019年8月8日

  1. HOME >

【kaggle入門】XGBoostによる最もシンプルな回帰モデル構築【営業だってプログラミング】

2019年8月8日

【kaggle用】XGBoostによる最もシンプルな回帰モデル構築【営業だってプログラミング】

いくら検索しても、XGBoostによる「最もシンプルな」回帰モデル構築のコーディングが見つからなかったため、自身の備忘としてエントリーしておきます。

初めにお断りしておくと当記事は、XGBoostで回帰モデルを構築することのみに特化しており、最低限のハイパーパラメータチューニングのみで、モデル精度向上等については全く考慮していません。

上級者向けのエッセンスは全て削ぎ落しています。というより私にはそのエッセンスを盛り込む技術がありません。

プログラミング初心者である我々にとっては、submitできる状態に持っていくことが一つのハードル。

まずは最低限、

  • 与えられたデータからモデルを構築する
  • 構築したモデルで予測をして、submitするためのcsvを生成する

事に集中しましょう。

ちなみに表題にある「回帰」とは、平たく言うと数字(「連続値」という)を当てる問題です。

  • 売上がいくらになるか
  • 在庫がいくつになるか
  • どのくらいの発注量になるか

これら全て、1,2,3,4・・・という数字(連続値)で表せるので、「回帰問題」であると言えます。

他に良く出る単語で「分類」がありますが、こちらはYes/Noや、複数カテゴリを当てる問題です。

今回は数字(連続値)を当てる問題に的を絞ったものになります。

おやくそく(各種ライブラリの読み込み)

初めに、各種ライブラリを読み込んでおきます。

今回はXGBoostを使うので、それも読み込んでおきます。

最近のkaggleはXGBoostとLightGBM全盛ですね

データの読み込み

与えられているcsvデータを読み込みます。

ほとんどの場合、

  • 学習データ:train.csv
  • テストデータ:test.csv

なので、このままコピペすればokです。

「index_col=0」は、「左から1列目がindex」の意味です。

こちらもほとんどのコンペでこの形式なので、気にせずコピペで大丈夫だと思います。

学習データの分離

学習データを、ターゲット変数とそれ以外に分離する必要があります。

これも、大抵はこのままコピペすればokです。

「ターゲット変数」の部分だけは、予測したい列名に置き換えて下さい。

文字列のエンコード

文字列(object)はそのままではモデリングできないため、数字に置き換え(エンコード)します。

ここでは何も考えずにOrdinalEncodingしています。

欠損値の補完

空白のカラムがあるとエラーが起きる可能性があるので、ここでは無難に中央値で埋めておきます。

学習データ(train)、テストデータ(test)両方とも処理をする必要があるのでご注意下さい。

と言ってもこれもこのままコピペで大丈夫だと思います。

モデリング

学習データを投入し、XGBoostのモデルを構築していきます。

予測

作ったモデルにテストデータを投入し、予測していきます。

ここでは予測した結果を「pred」と名付けています。

投稿用csvの生成

サンプル投稿データ(sample_submission)を読み込み、予測データに置き換えます。

「ターゲット変数」の部分は、予測したい列名に置き換えて下さい。

以上でモデリング~予測~投稿用csv生成は完了です。

【kaggle用】LightGBMによる最もシンプルな回帰モデル構築【営業だってプログラミング】 まとめ

一連の流れを一つのコードとしてまとめると以下です。

注釈も入れてあります。

「ターゲット変数」と記載のある3か所だけ、予測したい列名に書き換えて下さい。

以上です。

注意点はここまでに赤字で記載した3か所だけ。

「ターゲット変数」部分だけはコンペによって異なりますので、そのコンペの予測ターゲットとなる変数(列名)に書き換えて下さい。

その他、pythonやkaggle、AI・機械学習といった記事のまとめはこちらです。

【2020年版】python・kaggle関連の記事まとめ【営業だってプログラミング】

続きを見る

ここからは、実際に私が購入し、おすすめできると思った本を紹介してみたいと思います。

 

機械学習のための「前処理」入門

 

まずはこちら。「機械学習のための『前処理』入門」です。

 

  • これから機械学習を始めてみたい
  • kaggleやSIGNATEにチャレンジしてみたい

 

という方には最適な本。個人的には一番のおすすめです。

 

データモデルの精度向上には特徴量エンジニアリングが不可欠。

 

というかこれが全てと言っても過言ではないのですが、各種環境準備の方法やコーディングの詳細に至るまで、誰にでも分かりやすく書かれています。

 

この一冊さえあれば、とりあえずkaggleにトライすることができます。

 

 

スラスラ読める Pythonふりがなプログラミング

 

Pythonのコーディングが、全てふりがなで解説されている、究極に親切な解説本です。

 

  • 「機械学習のための『前処理』入門」は、自分には難しすぎた
  • 英語アレルギーがありpythonコードに触れることすらできない

 

という方は、まずはこちらをご一読される事をおすすめします。

 

※但し、慣れてきたらすぐに上記「機械学習のための『前処理』入門」に移行される事をおすすめします。

 

 

仕事ではじめる機械学習

 

定番のオライリーです。

 

こちらはkaggleやSIGNATEなどのコンペティションというよりは、機械学習をビジネスで生かしていくためにはどうすれば良いか?という観点の内容が充実しています。

 

pythonコードの記述に留まらず、

 

  • 機械学習プロジェクトを成功させるにはどうすれば良いか
  • KKD(勘・経験・度胸)を掲げる抵抗勢力とはどう付き合うべきか

 

というような、実務に即した内容は個人的には本当に参考になったのですが、オライリーは初心者にはかなり敷居が高いので、まずは本屋で立ち読みして、レベル感をチェックしてみるのが良いと思います。

 

 

人工知能は人間を超えるか

 

pythonのコーディングからは離れますが、もしこの本を読んでいない人がいたら必ず一度は目を通しておいた方が良いです。

 

この界隈では有名な、東大の松尾豊先生の著書「人工知能は人間を超えるか」。

 

いわゆるAI・人工知能、機械学習といった昨今のキーワードを中心に、過去の歴史からここ最近の動き、今後の動向に至るまでを、平易な表現で丁寧に解説されています。

 

また日本ディープラーニング協会が開催する「ディープラーニング ジェネラリスト検定(通称:G検定)」の推薦図書の一つでもあります。

 

全てのビジネスマンにおすすめできる一冊。中古でもkindleでも構いませんので、これだけは目を通しておいた方が良いです。

 

-スキルアップしたい

Copyright© 営業アップデート , 2020 All Rights Reserved.