2017-03-28 74 views
2

私はscikit-learnを使ってXGBoostモデルを構築しています。私はそれにかなり満足しています。オーバーフィットを避けるための微調整として、いくつかの機能の単調性を保証したいと思いますが、そこではいくつかの問題に直面しています...ScikitLearnでXGBoostで単調性制約を強制する方法は?

私が理解する限り、scigit-xgboostについてのドキュメントはありません私は本当に驚いています - この状況が数ヶ月続くことを知っています)。私が見つけた唯一のドキュメントは直接ですhttp://xgboost.readthedocs.io

このウェブサイトでは、「monotone_constraints」オプションを使用して単調性を強制することができます。

あなたがそれを行う方法を知っていますか:「予期しないキーワード引数 『monotone_constraints』 GOT)のinit(例外TypeError」 私はScikit-学んでそれを使用しようとしましたが、私はエラーメッセージが表示されましたか?

grid = {'learning_rate' : 0.01, 'subsample' : 0.5, 'colsample_bytree' : 0.5, 
    'max_depth' : 6, 'min_child_weight' : 10, 'gamma' : 1, 
    'monotone_constraints' : monotonic_indexes} 
#'monotone_constraints' ~ = "(1,-1)" 
m07_xgm06 = xgb.XGBClassifier(n_estimators=2000, **grid) 
m07_xgm06.fit(X_train_v01_oe, Label_train, early_stopping_rounds=10, eval_metric="logloss", 
    eval_set=[(X_test1_v01_oe, Label_test1)]) 

答えて

0

XGBoost現在APIをScikit・ラーン(0.6a2)monotone_constraintsをサポートしていません。ここで

は(スパイダーを使用して)私はPythonで書いたコードです。代わりに Python APIを使用できます。 exampleをご覧ください。例の

このコードを削除することができます。

params_constr['updater'] = "grow_monotone_colmaker,prune" 
+0

しかし、今のところモノトーンの制約はうまくいかないようです。私は[こちら](https://github.com/dmlc/xgboost/issues/1514#issuecomment-307567705)に関する質問をしました。 @chapelonはあなたのために働くのですか? –

0

あなたが単調制約が応答が2つの以上のレベルを持っている可能性のある一般的な分類問題のために働くことを期待する方法は?この機能に関連して私が見たすべての例は、回帰問題のためのものです。あなたの分類応答が2レベルしかない場合は、インジケータ変数の回帰に切り替えて、分類に適切なスコアしきい値を選択してください。

この機能は、XGBclassifierではなくXGBregressorを使用し、kwargsを使用してmonotone_constraintsを設定すると、最新のxgboost/scikit-learnとして動作するように見えます。

構文は次のようである:この例では

params = { 
    'monotone_constraints':'(-1,0,1)' 
} 

normalised_weighted_poisson_model = XGBRegressor(**params) 

、トレーニングデータ内の列1に負制約、カラム2には制約、そしてそれはコラム3にプラスの制約があります名前で列を参照することはできず、訓練データの各列に対して制約タプル内の項目を指定する必要があります。

関連する問題