34

Rのxgboostobjectiveとの違いは何ですか? fevalこれが非常に基本的なことであることは知っていますが、それら/その目的を正確に定義することはできません.

また、マルチクラス分類を行う際のソフトマックス目標とは何ですか?

4

1 に答える 1

60

目的

Objectiveinxgboostは、学習アルゴリズムが試行して最適化する関数です。定義により、特定のトレーニング ラウンドでの予測に関して、1 次 (勾配) および 2 次 (ヘシアン) 導関数を作成できなければなりません。

カスタムObjective関数の例:リンク

# user define objective function, given prediction, return gradient and second order gradient
# this is loglikelihood loss
logregobj <- function(preds, dtrain) {
  labels <- getinfo(dtrain, "label")
  preds <- 1/(1 + exp(-preds))
  grad <- preds - labels
  hess <- preds * (1 - preds)
  return(list(grad = grad, hess = hess))
}

これはトレーニングにとって重要な機能であり、xgboostモデルを定義せずにトレーニングすることはできません。Objective関数は、各ツリーの各ノードでの分割に直接使用されます。

フェヴァル

fevalin xgboostは、モデルを直接最適化またはトレーニングする上で何の役割も果たしません。トレーニングする必要さえありません。分割には影響しません。トレーニング後にモデルにスコアを付けるだけです。カスタム例を見てみるfeval

evalerror <- function(preds, dtrain) {
  labels <- getinfo(dtrain, "label")
  err <- as.numeric(sum(labels != (preds > 0)))/length(labels)
  return(list(metric = "error", value = err))
}

名前 (メトリック) とスコア (値) を返すだけであることに注意してください。通常、fevalobjectiveは同じである可能性がありますが、必要なスコアリング メカニズムが少し異なるか、導関数がない可能性があります。たとえば、ユーザーはログロスobjectiveを使用してトレーニングしますが、AUC を作成しfevalてモデルを評価します。

さらに、 を使用しfevalて、モデルの改善が止まったらトレーニングを停止できます。また、複数の関数を使用fevalして、さまざまな方法でモデルにスコアを付け、それらすべてを観察できます。

fevalモデルをトレーニングするための関数は必要ありません。それを評価し、トレーニングを早期に停止するのを助けるためだけに。

概要:

Objectiveが主力です。

fevalxgboostいくつかのクールなことを許可するヘルパーです。

softmaxは、objective多クラス分類で一般的に使用される関数です。すべての予測の合計が 1 になることを保証し、指数関数を使用してスケーリングされます。ソフトマックス

于 2015-12-15T17:19:38.897 に答える