31 XGBoost
XGBoostは、XGBoost Gradient Boostingオープン・ソース・パッケージを使用可能にする、回帰および分類用の効率が高いスケーラブルな機械学習アルゴリズムです。
- XGBoostについて
- XGBoostを使用したスコアリング
31.1 XGBoostについて
Oracle Machine Learning for SQL XGBoostでは、トレーニング・データの準備、XGBoostの起動、モデルの作成と保持、予測のためのモデルの適用を実施します。
OML4SQL XGBoostは、分類と回帰の両方をサポートするスケーラブルな勾配ツリー・ブースティング・システムです。これにより、オープン・ソースの勾配ブースティング・フレームワークが使用可能になります。
XGBoostをスタンドアロンの予測子として使用することも、広告クリックスルー率の予測、ハザード・リスクの予測、Webテキスト分類といった幅広い問題に対処するために、実際の生産パイプラインに組み込むこともできます。
OML4SQL XGBoostアルゴリズムでは、汎用パラメータ、ブースタ・パラメータおよびタスク・パラメータの3種類のパラメータを使用します。パラメータはモデル設定表から設定します。このアルゴリズムでは、オープン・ソース・プロジェクトの設定のほとんどがサポートされています。
XGBoostを介して、OML4SQLでは様々な分類および回帰の仕様、ランク付けモデル、生存モデルがサポートされています。分類の機械学習ファンクションでは2項モデルと多クラス・モデルがサポートされているのに対し、回帰の機械学習ファンクションでは回帰、ランク付け、計数および生存の各モデルがサポートされています。
また、XGBoostでは、パーティション化されたモデルのサポートやデータ準備の取込みも行われます。
31.2 ランキング方法
Oracle Machine Learningは、XGBoostによるペアワイズおよびリストワイズのランキング方式をサポートしています。
トレーニング・データセットについては、複数のセットを用意して、各セットはオブジェクトとそのランキングを表すラベルで構成します。ランキング関数は、トレーニング・データの特定の損失関数を最小化することで構成します。テスト・データを使用して、ランク付けされたオブジェクトのリストを取得するためにランキング関数を適用します。XGBoostでは、回帰関数を使用することでランキングが有効になります。OML4SQLは、XGBoostによるペアワイズおよびリストワイズのランキング方式をサポートしています。
ペアワイズ・ランキング: このアプローチでは、オブジェクトのペアを学習インスタンスと見なします。ペアとリストは、同じcase_id
値を指定することで定義されています。オブジェクトのペアがあれば、このアプローチにより、そのペアに最適な順序が付けられます。ペアワイズの損失は、2つのオブジェクトの順序によって定義されます。OML4SQLの場合、このアルゴリズムでは、ランキングの平均反転回数を最小化することを目的として、ペアワイズ・ランキングの実行にLambdaMARTを使用します。
リストワイズ・ランキング: このアプローチでは、複数のランク付けされたオブジェクトのリストを学習インスタンスとして採用します。リスト内の項目には、同一のcase_id
を設定する必要があります。このアルゴリズムでは、リストワイズ・ランキングを実行するためにLambdaMARTを使用します。
参照:
- 研究論文のプレゼンテーション"Ranking Measures and Loss Functions in Learning to Rank" (https://www.researchgate.net/)を参照してください
- XGBoostの使用可能なモデル設定のリストと説明は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
注意:
hyperparameterという用語は、モデル設定でも同じ意味で使用されます。31.3 XGBoostを使用したスコアリング
XGBoostを使用してスコアリングする方法について説明します。
分類のXGBoostモデルでサポートされているSQLスコアリング関数は、PREDICTION
、PREDICTION_COST
、PREDICTION_DETAILS
、PREDICTION_PROBABILITY
およびPREDICTION_SET
です。
回帰のXGBoostモデルでサポートされているスコアリング関数は、PREDICTION
およびPREDICTION_DETAILS
です。
予測関数からは、次の情報が返されます。
PREDICTION
は予測値を返します。PREDICTION_COST
は、指定した予測のコストの測度をOracle NUMBERとして返します(分類のみ)。PREDICTION_DETAILS
は、SHAP (SHapley Additive exPlanation)の寄与率を返します。PREDICTION_PROBABILITY
は、指定された予測の確率を返します(分類のみ)。PREDICTION_SET
は、観測値ごとに予測とそれに対応する予測確率を返します(分類のみ)。
参照:
https://github.com/oracle/oracle-db-examples/tree/master/machine-learning/sql/20c XGBoostの例のGitHubリポジトリ。関連項目