web-dev-qa-db-ja.com

CatBoostの反復結果を抑制する方法は?

CatBoostを使用してバイナリモデルに適合させようとしています。次のコードを使用すると、verbose=Falseは、反復ログの抑制に役立ちます。しかし、そうではありませんでした。イテレーションの印刷を回避する方法はありますか?

model=CatBoostClassifier(iterations=300, depth=6, learning_rate=0.1, 
loss_function='Logloss',
         rsm = 0.95, 
         border_count = 64, 
         eval_metric =  'AUC', 
         l2_leaf_reg= 3.5, 
         one_hot_max_size=30, 
         use_best_model = True,
         verbose=False,
         random_seed = 502)

model.fit(X_train, y_train,
     eval_set=(X_test_filtered, y_test_num),   
     verbose = False,
     plot=True)

enter image description here

10
Gavin

CatBoostには、詳細度を制御するいくつかのパラメーターがあります。それらはverbosesilentおよびlogging_levelです。

デフォルトではロギングは冗長であるため、すべての反復で損失値が表示されます。ロギングを減らしたい場合は、これらのパラメーターのいずれかを使用する必要があります。 2つ同時に設定することはできません。

silentには、TrueFalseの2つの値があります。

verboseTrueおよびFalseにすることもできますが、整数にすることもできます。整数Nの場合、ロギングはN回の反復ごとに出力されます。

logging_level'Silent''Verbose''Info''Debug'のいずれかになります:

  • 'Silent'は、(重要な警告を除いて)stdoutに出力しないことを意味し、silent=Trueまたはverbose=Falseと同じです。
  • 'Verbose'はデフォルトのロギングモードです。 verbose=Trueまたはsilent=Falseと同じです。
  • 'Info'は、反復ごとに選択されるツリーを出力します。
  • 'Debug'は、多くのデバッグ情報を出力します。

これらのパラメーターを使用できる場所は2つあります。 1つ目はモデルの作成です。 2つ目は、作成したモデルのフィッティングです。モデルの作成時にパラメーターを使用した場合、フィット関数のパラメーターが指定されていなければ、フィット中にそのパラメーターが使用されます。

フィット関数でパラメーターを使用する場合、このパラメーターで選択されたモードが使用されます。

あなたの場合、バグに遭遇したようです。次にバグが見つかったときの最良の方法は、GitHubページの問題を使用してCatBoostチームに報告することです。このバグはすでに修正されているはずなので、最新バージョンにアップグレードするか、ソースからコードをビルドしてください。

セットする metric_period=100。うまくいくはずです。

1
Tommao