GBM対XGBOOST?主な違いは?


40

GBMとXGBOOSTの主な違いを理解しようとしています。私はそれをグーグルで検索しようとしましたが、2つのアルゴリズムの違いとxgboostがGBMよりもほとんど常に優れている理由を説明する良い答えを見つけることができませんでした。XGBOOSTの高速化の理由は何ですか?


XGBoostはないこと fast.Referにこの実験
agcala

回答:


36

の著者からの引用xgboost

xgboostとgbmは両方とも、勾配ブースティングの原理に従います。ただし、モデリングの詳細には違いがあります。具体的には、xgboostはより正規化されたモデル形式化を使用して過剰適合を制御し、パフォーマンスを向上させました。

モデルの紹介に関する包括的なチュートリアルを更新しましたので、ご覧ください。ブーストされたツリーの概要

ただし、xgboostという名前は、実際には、ブーストされたツリーアルゴリズムの計算リソースの限界を押し上げるというエンジニアリングの目標を指します。これが多くの人がxgboostを使用する理由です。モデルの場合、正則化勾配ブースティングと呼ばれる方が適している場合があります。

編集:xgboostの詳細なガイドには、より多くの違いが示されています。

参照資料

https://www.quora.com/What-is-the-difference-between-the-R-gbm-gradient-boosting-machine-and-xgboost-extreme-gradient-boosting

https://xgboost.readthedocs.io/en/latest/tutorials/model.html


2
いい答えだ。OPはまた、なぜxgboostがそんなに高速なのかと尋ねました。その理由は、各ツリーは前のツリーに依存しているため、アンサンブル自体を並列化することはできませんが、各ツリーの各深さ内の複数のノードの構築を並列化できるからです。これらのタイプの詳細がxgboostを非常に高速にするものです。
リカルドクルス

13

Icybladeからの回答に加えて、xgboostの開発者は、実装のさまざまな部分にいくつかの重要なパフォーマンス強化を行い、速度とメモリ使用率に大きな違いをもたらしました。

  1. スパース性を認識したアルゴリズムでのスパース行列の使用
  2. データ構造が改善され、プロセッサキャッシュの使用率が向上し、高速化されています。
  3. 全体的なトレーニング時間を短縮するマルチコア処理のより良いサポート。

大きなデータセット(500万件以上のレコード)のトレーニング中にGBMとxgboostを使用した私の経験では、同じデータセットのメモリ使用率(R)が大幅に減少し、複数のコアを使用してトレーニング時間を短縮できることがわかりました。



0

勾配ブースティングとXgboostの違いはxgboostにあると思います。このブログで見ることができるツリー形成を並列化することにより、アルゴリズムは計算能力に焦点を当てています。

勾配ブースティングは、分散にのみ焦点を当てますが、バイアス間のトレードオフではなく、xgブーストも正則化因子に焦点を当てることができます。


-1

XGBoostの実装にはバグがあります。 v 082でGPUをトレーニングすると、静かにクラッシュしましたv 0.90でも同様に発生したため、これまでのところこの問題は解決されておらず、GitHubで提供される「修正」は機能しませんでした。

LGBM 2.3.1はすぐに使えるように動作しますが、インストールにはもう少し手間がかかります。これまでのところ、GPUでのトレーニング問題はありません。

XGBoostは「であるので、速い」、あなたは見てとるべきこれらのベンチマークを


OPはxgboostとlightgbmについて質問しませんでした。
oW_
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.