web-dev-qa-db-ja.com

xgboostのpythonでカスタム評価メトリックを作成するにはどうすればよいですか?

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でカスタム評価メトリックをどのように使用できますか?

12
Greg

メソッドを次のように変更します。

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に設定すると、評価メトリックのスコアが大きくなるほどアルゴリズムが改善されます。

13
Khozzy