Rのxgboostobjective
との違いは何ですか? feval
これが非常に基本的なことであることは知っていますが、それら/その目的を正確に定義することはできません.
また、マルチクラス分類を行う際のソフトマックス目標とは何ですか?
Rのxgboostobjective
との違いは何ですか? feval
これが非常に基本的なことであることは知っていますが、それら/その目的を正確に定義することはできません.
また、マルチクラス分類を行う際のソフトマックス目標とは何ですか?
目的
Objective
inxgboost
は、学習アルゴリズムが試行して最適化する関数です。定義により、特定のトレーニング ラウンドでの予測に関して、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
関数は、各ツリーの各ノードでの分割に直接使用されます。
フェヴァル
feval
in 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))
}
名前 (メトリック) とスコア (値) を返すだけであることに注意してください。通常、feval
とobjective
は同じである可能性がありますが、必要なスコアリング メカニズムが少し異なるか、導関数がない可能性があります。たとえば、ユーザーはログロスobjective
を使用してトレーニングしますが、AUC を作成しfeval
てモデルを評価します。
さらに、 を使用しfeval
て、モデルの改善が止まったらトレーニングを停止できます。また、複数の関数を使用feval
して、さまざまな方法でモデルにスコアを付け、それらすべてを観察できます。
feval
モデルをトレーニングするための関数は必要ありません。それを評価し、トレーニングを早期に停止するのを助けるためだけに。
概要:
Objective
が主力です。
feval
xgboost
いくつかのクールなことを許可するヘルパーです。
softmax
は、objective
多クラス分類で一般的に使用される関数です。すべての予測の合計が 1 になることを保証し、指数関数を使用してスケーリングされます。ソフトマックス