Xgboost: アプローチ(文書化)のあいまいさ

作成日 2015年11月25日  ·  3コメント  ·  ソース: dmlc/xgboost

こんにちは、私はモデルトレーニングへのxgboostアプローチを理解しようとしています。 つまり、私は次のことを意味します。 Boosterを使用してxgb.trainを呼び出すか、sklearnAPIを使用してClassifier / Regressorを使用することができます。 以前のアプローチ(xgboostのドキュメントによる)では、ブーストの反復回数を指定する必要があり、ツリーの数を指定しない必要がありますが、後でブーストされたツリーの数を指定する必要がありますが、オプションがありませんブーストされた反復の数を指定します。 ブースティングの反復回数は推定量の数ですか? 誰かがこれを明確にすることができますか?

コードを正しく読み取れば、sklearn APIは内部ブースターを使用するため、clf._Boosterをxgb.trainに割り当てることができます。ここで、n_estimatorsはブーストされたラウンドの数と同じです。 また、そのような割り当てが行われている場合は、clf.fitを呼び出す必要はありません。 私は正しいですか? もしそうなら、ドキュメントを調整して、n_estimatorsがxgb.trainに使用されるnum_roundsであることを明示的に示すことができます。

低レベルのブースターアプローチとsklearnAPIの関係を正確に説明するドキュメントがあると便利です。後で前者を呼び出すことは理解していますが、それがどのように行われるかを理解し、ドキュメントでこれを明確にして、終わりの混乱を避けることができます。 -ユーザー。

最も参考になるコメント

こんにちはウラジミール、

一般に、ブースティングはメタアルゴリズムであり、組み合わせ全体のパフォーマンスが向上するように、単純/弱い学習者(または推定量)のシーケンスを繰り返し(または「ラウンド」で)トレーニングします。 木だけでなく、さまざまな種類の弱い学習者がいる可能性があります。 たとえば、xgboostにはツリーと(一般化された)線形モデルオプションがあります。 不思議なことに、xgboostのこれらの弱い学習者は「ブースター」と呼ばれ、組み合わせモデル全体は「学習者」と呼ばれます。 私が最初にxgboostのドキュメントとコードを読んでいたとき、それは私自身の用語の精神的な痕跡とは逆だったので、少し戸惑いました。

同じ主題に関連する異なるプロジェクト間で一貫した命名法を持ち、一貫した高品質のクロスリンクドキュメントを持っていると便利ですが、特にオープンソースプロジェクトでは、常に実現可能または簡単に保守できるとは限りません。 初心者ユーザーは、ほとんどの場合、単一のインターフェイスを使用する傾向があります。 主題に精通しているユーザーは、共通点を簡単にマッピングできます。 そして、低レベルの詳細を気にする人は誰でも、通常、コードを読むのに十分気にします。

あなたの特定の質問に関しては、sklearnラッパーコード[1]のn_estimatorsパラメーターがtrain [2]内のnum_boost_roundにマップされていることを正しく読んでいます。 しかし、なぜエンドユーザーとしてsklearnラッパーオブジェクトをそのようにハックしたいのでしょうか? 制御可能な方法でそれを行うには、ラッパーコードをかなりよく理解する必要があります。

[1] https://github.com/dmlc/xgboost/blob/2859c190cd0d168df25e2a7ea2b1fd5211ce94f0/python-package/xgboost/sklearn.py#L185
[2] https://github.com/dmlc/xgboost/blob/83e61bf99ec7d01607867b4e281da283230883b1/python-package/xgboost/training.py#L12

全てのコメント3件

こんにちはウラジミール、

一般に、ブースティングはメタアルゴリズムであり、組み合わせ全体のパフォーマンスが向上するように、単純/弱い学習者(または推定量)のシーケンスを繰り返し(または「ラウンド」で)トレーニングします。 木だけでなく、さまざまな種類の弱い学習者がいる可能性があります。 たとえば、xgboostにはツリーと(一般化された)線形モデルオプションがあります。 不思議なことに、xgboostのこれらの弱い学習者は「ブースター」と呼ばれ、組み合わせモデル全体は「学習者」と呼ばれます。 私が最初にxgboostのドキュメントとコードを読んでいたとき、それは私自身の用語の精神的な痕跡とは逆だったので、少し戸惑いました。

同じ主題に関連する異なるプロジェクト間で一貫した命名法を持ち、一貫した高品質のクロスリンクドキュメントを持っていると便利ですが、特にオープンソースプロジェクトでは、常に実現可能または簡単に保守できるとは限りません。 初心者ユーザーは、ほとんどの場合、単一のインターフェイスを使用する傾向があります。 主題に精通しているユーザーは、共通点を簡単にマッピングできます。 そして、低レベルの詳細を気にする人は誰でも、通常、コードを読むのに十分気にします。

あなたの特定の質問に関しては、sklearnラッパーコード[1]のn_estimatorsパラメーターがtrain [2]内のnum_boost_roundにマップされていることを正しく読んでいます。 しかし、なぜエンドユーザーとしてsklearnラッパーオブジェクトをそのようにハックしたいのでしょうか? 制御可能な方法でそれを行うには、ラッパーコードをかなりよく理解する必要があります。

[1] https://github.com/dmlc/xgboost/blob/2859c190cd0d168df25e2a7ea2b1fd5211ce94f0/python-package/xgboost/sklearn.py#L185
[2] https://github.com/dmlc/xgboost/blob/83e61bf99ec7d01607867b4e281da283230883b1/python-package/xgboost/training.py#L12

Rにも同じ問題がありますか?

2015年11月26日木曜日午前11時39分、Vadim Khotilovich <
[email protected]>は次のように書いています:

こんにちはウラジミール、

ブースティングは、一般的に、反復的に(または
「ラウンド」)は、そのような単純/弱い学習者(または推定量)のシーケンスをトレーニングします
全体の組み合わせがより良く機能する方法。 さまざまな可能性があります
木だけでなく、弱い学習者の一種。 たとえば、xgboostには木があり、
(一般化)線形モデルオプション。 不思議なことに、これらの弱い学習者は
xgboostは「ブースター」と呼ばれ、組み合わせモデル全体は
「学習者」と呼ばれます。 私が最初にいたとき、それは私を少し当惑させました
xgboostのドキュメントとコードを読んでいるのは、私自身の精神とは逆だったからです。
用語の刻印。

異なるものの間で一貫した命名法があるといいでしょうが
同じ主題に関連し、一貫して高い
質の高いクロスリンクドキュメント、それは常に実行可能または簡単であるとは限りません
特にオープンソースプロジェクトでは、保守可能です。 初心者ユーザーは
ほとんどの場合、単一のインターフェースを使用します。 主題に精通しているユーザー
問題は、共通点を簡単にマッピングできるでしょう。 そして気にする人は誰でも
低レベルの詳細については、通常、コードを読むのに十分気を配っています。

あなたの特定の質問に関しては、あなたはn_estimatorsが正しく読んでいます
sklearnラッパーコード[1]のパラメーターは、内のnum_boost_roundにマップされます
電車[2]。 ただし、エンドユーザーとしてsklearnをハックしたい理由
そのようにラッパーオブジェクト? 制御可能な方法でそれを行うには、
ラッパーコードをかなりよく知るために。

[1]
https://github.com/dmlc/xgboost/blob/2859c190cd0d168df25e2a7ea2b1fd5211ce94f0/python-package/xgboost/sklearn.py#L185
[2]
https://github.com/dmlc/xgboost/blob/83e61bf99ec7d01607867b4e281da283230883b1/python-package/xgboost/training.py#L12


このメールに直接返信するか、GitHubで表示してください
https://github.com/dmlc/xgboost/issues/651#issuecomment-159956213

@khotilov 、説明ありがとう。 私のニーズにはそれで十分であり、チケットを閉じます。

このページは役に立ちましたか?
0 / 5 - 0 評価