Pythonのxgboostで使用するカッパ評価メトリックを追加したいと思います。 Python関数をxgboostに接続する方法を理解するのに問題があります。
Xgboostのドキュメントによると、「ユーザーは複数の評価指標を追加できます。pythonユーザーの場合、地図ではなくパラメータペアのリストとして指標を渡すことを忘れないでください。そうすれば、後者の 'eval_metric'が勝ちます。前のものを上書きしない」
これは xgboostのgithubページ で発生しましたが、Pythonでは発生しません。
たとえば、カッパ関数が次の場合:
def kappa(preds, y):
# perform kappa calculation
return score
Xgboostで実装するにはどうすればよいですか? 'kappa'
パラメータの文字列としてeval_metric
を指定すると、XGBoostError: unknown evaluation metric type: kappa
になります。
同様に、カッパメソッドオブジェクトを指定すると、XGBoostError: unknown evaluation metric type: <function kappa at 0x7fbef4b03488>
になります。
Pythonのxgboostでカスタム評価メトリックをどのように使用できますか?
メソッドを次のように変更します。
def kappa(preds, y):
# perform kappa calculation
return 'kappa', score
そしてそれをfeval
引数と一緒に使用します:
bst = xgb.train(params, dtrain, num_rounds, watchlist, feval=kappa, maximize=False)
カスタム評価メトリックを作成するときは、maximize
引数の設定について覚えておいてください。 trueに設定すると、評価メトリックのスコアが大きくなるほどアルゴリズムが改善されます。