XGboostとは?その特徴と用語・プログラムでの使い方を解説!
Machine learning
XGboostとは?その特徴と用語・プログラムでの使い方を解説!
アンドエンジニア編集部
2021.10.14
この記事でわかること
XGBoostとは、機械学習で用いられる勾配ブースティングの実装フレームワークを指します
XGboostは、分類法・回帰法・ランキング学習やユーザ定義オブジェクトをサポートしています
XGboostは、主要機械学習言語をサポートしており高速で高精度の予測結果が得られます

XGboostとは?

Machine learning

XGBoostとは、機械学習で用いられる勾配ブースティング(Gradient Boosting)実装フレームワークを指し、「eXtreme Gradient Boosting」の略です。XGBoostはC++・Java・PythonやR等の多くの言語で利用されており、Windows・MacOS・Linuxで動作します。 参考:XGBoost

2014年に登場以来、機械学習の多くの賞を受賞し機械学習ブームに火をつけました。

XGboostの特徴

XGboostの特徴は、スケーラブルで分散型の勾配ブースティングライブラリ利用できることです。過学習(オーバーフィッティング)低減のためにノード数やモデル更新を小さく調整し、併せて高速演算を実現しています。つまりXGboostでは時間をかけずに簡単に、それなりの結果が得られることになります。

XGboostは利便性を高めるために、機械学習でも用いられる分類法・回帰法・ランキング学習やユーザ定義オブジェクトをサポートしています。C++・Python・R・Java・Scala・Juliaの主要機械学習言語をサポートします。

さらに、Amazon AWS・Google CloudのGCE・Microsoft Azure・Apache HadoopのYARN クラスタなどの分散学習に対応しています。

XGboostとLightGBMの違い

LightGBMは、「Light Gradient Boosting Machine」の略で、マイクロソフト社が開発したフレームワークです。LightGBMフレームワークは、GBM・GBDT・GBRTの他、GBT・MART・RF などのアルゴリズムに対応します。Windows・MacOS・Linuxで動作し、C++・Python・R・C#に対応します。

LightGBMはヒストグラムベースの決定木学習アルゴリズムを実装することで、効率性を高めメモリ消費を最小に抑えています。そのため、アルゴリズム高速に実行できる特徴があります。 参考:Microswoft LightGBM

XGboostとLightGBMの違いは、LightGBMがヒストグラムベースの決定木学習アルゴリズムを持ち、高速性に優れていることが挙げられます。とは言ってもXGboostもその後同等機能を実装しており、現時点では明らかな違いは無くなりつつあります。

XGBoostのアルゴリズムは?

ここでは基本用語を交えて、XGBoostのアルゴリズムの概要を解説していきます。

分類と回帰とは 機械学習では分類(Classification)と回帰(Regression)を基本的なアルゴリズムに用います。

分類とは、事前に定めたクラスが割り当てられている場合に、入力値がどのクラスに属するか当てる方法です(例として、イヌかネコか)。回帰とは、すでにあるデータから連続量となる目的変数を割り出すことです。割り出した目的変数を使い予測値を算定できることで、将来の傾向予測に利用できます(例として、将来売り上げがいくら増加するか)。

分類器とは 分類器とはclassifierの日本語で、分類手法を表します。

単純ベイズ分類器(Naive Bayes classifier)は、ベイズの定理を適用した確率モデルで特徴変数を用いたものです。同様に決定木(Decision Tree)は始点を根、端点を葉に見立てて接点分岐し、変数分類を進めます。決定木はソートで用いられる最適探索アルゴリズムをベースとしたものです。

その他にも、2クラスのパターン認識を高精度で行うサポートベクターマシン(Support Vector Machin)や、最近傍オブジェクトと同じクラスに分類するk近傍法(k-nearest neighbor、k-NN)等、多様な手法が存在します。

勾配ブースティングとは 勾配ブースティングとはGradient Boostingの日本訳で、弱い学習器を連結して結果を求める手法です。

学習器とは機械学習の学習システム・学習モデルを表します。学習器は真の分類に近いものを強い学習器と呼び、真の学習器と若干の相関性がある学習器を弱い学習器と呼びます。勾配ブースティングは、複数の学習器を連携する集団学習(アンサンブル学習)の1つとなります。

勾配ブースティングでは、通常決定木(Decision Tree)を分類手法に用います。そのためGBDT(Gradient Boosting Decision Tree)とも呼ばれています。

XGBoostのアルゴリズムは XGBoostはGBMやGBDTをベースとして考案されたアルゴリズムです。

GBMはGradient Boosting Machineの略で、1999年Friedman氏が論文発表した”TreeBoost”アルゴリズムによる勾配ブースティングの手法の1つです。GBDTは、決定木を用いた勾配ブースティングです。

このXGBoostアルゴリズムの詳細な解説は、「XGBoost: A Scalable Tree Boosting System」としてTianqi Chen氏とCarlos Guestrin氏の論文に掲載されています。ご興味ある方はご覧ください。 参考:ACM Digital Library RESEARCH-ARTICLE XGBoost: A Scalable Tree Boosting System

XGBoostの使い方

How to use

XGBoostはライブラリのため、インストール後各言語の手続きに従って利用します。GPUを使うには、gpu_histを用います。対応OSはLinux x86_64版とWindowsで、Linux aarch64版とMacOSは対応していません。さらに、マルチノード・マルチGPULinux x86_64版のみ対応します。 参考:XGBoost Documentation

XGBoostのインストール方法

XGBoostは使用言語ごとにインストール方法が異なります。以下に、代表的なプログラム言語でのインストール方法を説明します。

Pythonのインストール方法 Pythonの場合は、PyPI(Python Package Index) にアップロードされているライブラリを用います。pipコマンドで、”pip install xgboost”の様に実行します。

Rのインストール方法 Rのインストールは、CRAN(Comprehensive R Archive Network)を用います。コマンドはinstall.packages("xgboost")の様に指定します。MacOSでマルチコア対応する場合はOpenMPが必要です。事前に、brewで”brew install libomp”としてインストールしておきます。

XGBoostのPythonでの利用方法

PythonでXGBoostを使うためには、Pythonで”import xgboost as xgb”の様にライブラリをimportします。

XGBoostはデータを、LIBSVMテキストファイル・CSVファイル・NumPy 2D配列・SciPy 2Dスパース行列・cuDFデータフレーム・Pandasデータフレーム・XGBoost バイナリ バッファファイルから取込みできます。ファイル読み込みはxgb.DMatrix()を使います。”format=csv”を指定するとCSVファイルを読み込むことができます。

データをバイナリ形式で保存するには、DMatrix.save_binary()を使います。モデルのトレーニングはxgb.train()を用い、モデルの保存はtrain.save_model()を使います。テキストファイルに保存する場合はtrain.dump_model()を使います。保存したモデルの読み込みは、Booster.load_model()を使います。

XGBoostのRでの利用方法

RでXGBoostを使うためには、Rで”require(xgboost)”XGBoostパッケージをロードします。XGBoostではパッケージ組み込みのagaricusデータセットを使います。モデルを構築するにはtrainを、モデルを評価するにはtestを使います。

モデルの読み込みはxgb.DMatrix()やxgb.load()を、保存はxgb.DMatrix.save()やxgb.save()を使います。

XGBoostを使って機械学習を効率的に行いましょう

efficiency

XGBoostは、Python・R・Java等のプログラム言語で動作するフレームワークです。XGboostは高速で高精度の分類アルゴリズムを搭載しているので、時間をかけずに簡単に機械学習の予測結果が得られます。

XGBoostをの基本を理解したら次は実際にライブラリをインストールし、データ分析に利用することをおすすめします。

Twitterをフォローしよう!
この記事をシェア
Twitter
Facebook
LINE
Hatena
アンドエンジニアの公式LINEができました! ピッタリの記事や役立つ情報が届きます!

編集部オススメコンテンツ

eyecatch_visual_coder
Adobe製品を使わない"デザイナー"?「ビジュアルコーダー」が考える、自己満足で終わらないWebデザインとは
三角
2020.06.16

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
この記事をシェア
Twitter
Facebook
LINE
Hatena
アンドエンジニアの公式LINEができました! ピッタリの記事や役立つ情報が届きます!

編集部おすすめコンテンツ

アンドエンジニアへの取材依頼、情報提供などはこちらから