機械学習

勾配ブースティング木手法をPythonで実装して比較していく!

勾配ブースティング
記事内に商品プロモーションを含む場合があります
ウマたん
ウマたん
当サイト【スタビジ】の本記事では、勾配ブースティングの各手法をPythonで実装して徹底比較していきます!勾配ブースティングの代表手法「Xgboost」「Light gbm」「Catboost」で果たしてどのような違いがあるのでしょうか?

こんにちは!

データサイエンティストのウマたん(@statistics1012)です!

Xgboostに代わる手法としてLightGBMが登場し、さらにCatboostという手法が2017年に登場いたしました。

これらは弱学習器である決定木を勾配ブースティングによりアンサンブル学習した非常に強力な機械学習手法群。

勾配ブースティングの仲間としてくくられることが多いです。

計算負荷もそれほど重くなく非常に高い精度が期待できるため、Kaggleなどのデータ分析コンペや実務シーンなど様々な場面で頻繁に使用されているのです。

ロボたん
ロボたん
最新のアルゴリズムがどんどん登場するけど、勾配ブースティング×決定木の組み合わせであることは変わらないんだね!
ウマたん
ウマたん
そうなんだよー!それだけ勾配ブースティング×決定木の組み合わせが強いということだね!

この記事では、そんな最強の手法である「勾配ブースティング」について見ていきます!

勾配ブースティングの代表的な手法である「Xgboost」「LightGBM」「Catboost」をPythonで実装し、それぞれの精度と計算負荷時間を比較していきます!

ウマたん
ウマたん
Pythonの勉強は以下の記事をチェック!
Python独学勉強法
【Python独学勉強法】Python入門を3ヶ月で習得できる学習ロードマップ当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。...

勾配ブースティングとは

詳細の数式は他のサイトに譲るとして、この記事では概念的に勾配ブースティングが理解できるように解説していきます。

動画でも勾配ブースティング手法のXGBoostやLightGBMについて解説していますのであわせてチェックしてみてください!

まず、勾配ブースティングは「勾配+ブースティング」に分解できます。

まずは、ブースティングから見ていきましょう!

機械学習手法には単体で強力な精度をたたき出す「強学習器(SVMとか)」と単体だと弱い「弱学習器決定木とか)」あります。

弱学習器とは当サイト【スタビジ】の本記事では、機械学習手法の基本となっている弱学習器についてまとめていきます。実は、ランダムフォレストやXgboostなどの強力な機械学習手法は弱学習器を基にしているんです。弱学習器をアンサンブル学習させることで強い手法を生み出しているんですよー!...

弱学習器単体だと、予測精度の悪い結果になってしまいますが複数組みあわせて使うことで強力な予測精度を出力するのです。

それをアンサンブル学習と言います。

そしてアンサンブル学習には大きく分けて2つの方法「バギング」「ブースティング」があります(スタッキングという手法もありますがここではおいておきましょう)。

バギングは並列に弱学習器を使って多数決を取るイメージ

バギング

バギング×決定木ランダムフォレストという手法で、こちらも非常に強力な機械学習手法です。

一方、ブースティングとは前の弱学習器が上手く識別できなった部分を重点的に次の弱学習器が学習する直列型のリレーモデル

以下のようなイメージです。

勾配ブースティング

そして、「Xgboost」「LightGBM」「Catboost」はどれもブースティング×決定木との組み合わせなんです。

続いて勾配とは何を示しているのか。

ブースティングを行う際に損失関数というものを定義してなるべく損失が少なくなるようなモデルを構築するのですが、その時使う方法が勾配降下法。

そのため勾配ブースティングと呼ばれているんです。

最適化手法にはいくつか種類がありますが、もし興味のある方は以下の書籍が非常におすすめなのでぜひチェックしてみてください!

created by Rinker
¥3,190
(2024/04/26 10:41:37時点 Amazon調べ-詳細)

勾配ブースティングをPythonで実装

勾配ブースティングについてなんとなーくイメージはつかめたでしょうか?

それでは実際に勾配ブースティング手法をPythonで実装して比較していきます!

使用するデータセットは画像識別のベンチマークによく使用されるMnistというデータです。

Mnistは以下のような特徴を持っています。

・0~9の手書き数字がまとめられたデータセット
・6万枚の訓練データ用(画像とラベル)
・1万枚のテストデータ用(画像とラベル)
・白「0」~黒「255」の256段階
・幅28×高さ28フィールド

ディープラーニングのパフォーマンスをカンタンに測るのによく利用されますね。

Xgboost

さて、まずはXgboost

Xgboostは今回比較する勾配ブースティング手法の中でもっとも古い手法です。

基本的にこの後に登場するLightGBMCatboostXgboostをもとにして改良を重ねた手法になっています。

どのモデルもIteration=100, eary-stopping=10で比較していきましょう!

結果は・・・以下のようになりました。

Xgboost Mnist

0.9764は普通に高い精度!!

ただ、学習時間は1410秒なので20分以上かかってます

ロボたん
ロボたん
結構時間がかかるんだな、、、

Xgboostについては以下の記事で詳しくまとめていますのでこちらもチェックしてみてください!

XGboostとは?理論とPythonとRでの実践方法!当ブログ【スタビジ】の本記事では、機械学習手法の中でも非常に有用で様々なコンペで良く用いられるXgboostについてまとめていきたいと思います。最後にはRで他の機械学習手法と精度比較を行っているのでぜひ参考にしてみてください。...

Light gbm

続いて、LightGBM

LightGBMXgboostよりも高速に結果を算出することにできる手法!

Xgboostを含む通常の決定木モデルは以下のように階層をあわせて学習していきます。

それをLevel-wiseと呼びます。

level-wise学習法
(引用元:Light GBM公式リファレンス

一方Light GBMは以下のように葉ごとの学習を行います。これをleaf-wise法と呼びます。

leaf-wise学習法
(引用元:Light GBM公式リファレンス

これにより、ムダな学習をしなくても済むためよりXGBoostよりも効率的に学習を進めることができます。

Gradient Boosting Decision Tree (GBDT) is a popular machine learning algorithm, and has quite a few effective implementations such as XGBoost and pGBRT. Although many engineering optimizations have been adopted in these implementations, the efficiency and scalability are still unsatisfactory when the feature dimension is high and data size is large. A major reason is that for each feature, they need to scan all the data instances to estimate the information gain of all possible split points, which is very time consuming.
(引用元:Google-“LightGBM: A Highly Efficient Gradient Boosting
Decision Tree”

詳しくは以下の記事でまとめていますのでチェックしてみてください!

Light GBM
【図解で解説】LightGBMの仕組みとPythonでの実装を見ていこう!当サイト【スタビジ】の本記事では、最強の機械学習手法「LightGBM」についてまとめていきます。LightGBM の特徴とPythonにおける回帰タスクと分類タスクの実装をしていきます。LightGBMは決定木と勾配ブースティングを組み合わせた手法で、Xgboostよりも計算負荷が軽い手法であり非常によく使われています。...

それでは、LightGBMの結果はどのようになるでしょうか・・・?

Xgboost Mnist

Light gbmは、0.972!若干Xgboostよりも低い精度になりました。

ただ、学習時間は178秒なので、なんとXgboostよりも8分の1ほどに短くなっています!

ロボたん
ロボたん
さっきよりも全然早い!

データサイエンスの特徴量精査のフェーズにおいて学習時間は非常に大事なので、この違いは大きいですねー!

Catboost

続いて、Catboost

Catboostは、「Category Boosting」の略であり2017年にYandex社から発表された機械学習ライブラリ。

発表時期としてはLightGBMよりも若干後になっています。

Catboostは質的変数の扱いに上手く、他の勾配ブースティング手法よりも高速で高い精度を出力できることが論文では示されています。

Catboost performance
(引用元:”CatBoost: gradient boosting with categorical features support”)

以下の記事で詳しくまとめていますのでチェックしてみてください!

Catboost
Catboostとは?XgboostやLightGBMとの違いとPythonでの実装方法を見ていこうー!!当サイト【スタビジ】の本記事では、XgboostやLightGBMに代わる新たな勾配ブースティング手法「Catboost」について徹底的に解説していき最終的にPythonにてMnistの分類モデルを構築していきます。LightGBMやディープラーニングとの精度差はいかに!?...

さて、そんなCatboostのパフォーマンスはいかに!?

Catboost Mnist

・・・・

精度は、0.9567・・

処理時間は260秒・・

何とも中途半端な結果におわってしまいましたー!

総合的に見ると、LightGBMが最も高速で実践的。

ただデータセットによって精度の良し悪しは変わるので、どんなデータでもこの手法の精度が高い!ということは示せない。

ウマたん
ウマたん
データに合った手法を選んでいこう!

勾配ブースティングまとめ

勾配ブースティングについて徹底的に比較してきました!

やはりLightGBMが最も高速で実用的なようです。

ロボたん
ロボたん
なるほどなー!違いが分かりやすい!
ウマたん
ウマたん
ぜひ自分でも実装して比較してみてねー!!

Xgboostはデータセットが膨大な場合、処理時間がかかり過ぎて実用的じゃなくなるケースがあります。

ぜひ勾配ブースティングの違いを理解して、実装してみましょう!

LightGBMを使ったデータ分析については以下のUdemy講座で詳しくまとめていますのでよければチェックしてみてください!

【初学者向け】データ分析コンペで楽しみながら学べるPython×データ分析講座

Udemy-course
【オススメ度】
【講師】僕!
【時間】4時間
【レベル】初級~中級

このコースは、なかなか勉強する時間がないという方に向けてコンパクトに分かりやすく必要最低限の時間で重要なエッセンスを学び取れるように作成しています。

アニメーションを使った概要編ハンズオン形式で進む実践編に分かれており、概要編ではYoutubeの内容をより体系的にデータ分析・機械学習導入の文脈でまとめています。

データサイエンスの基礎について基本のキから学びつつ、なるべく堅苦しい説明は抜きにしてイメージを掴んでいきます。

統計学・機械学習の基本的な内容を学び各手法の詳細についてもなるべく概念的に分かりやすく理解できるように学んでいきます。

そしてデータ分析の流れについては実務に即したCRISP-DMというフレームワークに沿って体系的に学んでいきます!

データ分析というと機械学習でモデル構築する部分にスポットがあたりがちですが、それ以外の工程についてもしっかりおさえておきましょう!

続いて実践編ではデータコンペの中古マンションのデータを題材にして、実際に手を動かしながら機械学習手法を実装していきます。

ここでは、探索的にデータを見ていきながらデータを加工し、その上でLight gbm という機械学習手法を使ってモデル構築までおこなっていきます。

是非興味のある方は受講してみてください!

Twitterアカウント(@statistics1012)にメンションいただければ2000円以下になる講師クーポンを発行いたします!

\30日以内なら返金無料/

またデータサイエンスを全般的にまとめて学びたい!という方には当メディアが運営するスクールであるスタビジアカデミー、略して「スタアカ」がオススメです!

【価格】ライトプラン:1280円/月
プレミアムプラン:149,800円
【オススメ度】
【サポート体制】
【受講形式】オンライン形式
【Pythonの学習範囲】データサイエンスを網羅的に学ぶ
実践的なビジネスフレームワークを学ぶ
実際に実データを使った様々なワークを行う

24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します!

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解などもあわせて学べるボリューム満点のコースになっています!

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったりする盛りだくさんの内容になってます!

・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定

機械学習、データサイエンス、統計学、Pythonの勉強に関しては以下の記事を参考にしてみてください!

機械学習独学勉強ロードマップ
【5分で分かる】機械学習の独学勉強ロードマップを徹底的にまとめていく!当サイト【スタビジ】の本記事では、機械学習の独学勉強ロードマップについて徹底的にまとめていきます。機械学習をいきなり理論からしっかり勉強しようとすると挫折しかねません。そこで、この記事ではなるべく挫折しないロードマップをお伝えしてきますよ!...
【5分で分かる】データサイエンティストに必要なスキルと独学勉強ロードマップ!当サイト【スタビジ】の本記事では、データサイエンティストに求められるスキルとそれを身に付けるための勉強法について徹底的にまとめていきます!入門者でも、しっかりデータサイエンティストについて理解しある程度独学で駆け出しの状態までいけることを目指します。...
統計学入門に必要な知識と独学勉強方法を簡単に学ぼう!当ブログ【スタビジ】の本記事では、統計学入門に必要な知識をカンタンにまとめ、それらをどのように効率的に独学で勉強していけばよいかをお話ししていきます。統計学は難しいイメージが少しありますが、学び方をしっかり考えれば大丈夫!...
Python独学勉強法
【Python独学勉強法】Python入門を3ヶ月で習得できる学習ロードマップ当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。...
スタビジアカデミーでデータサイエンスをさらに深く学ぼう!

スタアカサービスバナースタビジのコンテンツをさらに深堀りしたコンテンツが動画と一緒に学べるスクールです。

プレミアムプランでは私がマンツーマンで伴走させていただきます!ご受講お待ちしております!

スタビジアカデミーはこちら