2016-10-25 11 views
2

XGBoostで回帰問題を解きたい。私はラーニングタスクのパラメータ目標[デフォルト= reg:線形](XGboost)と混同しています** **目的は損失関数の設定に使用されているようです** **しかし、私は 'reg:linear'を理解できません影響力損失関数。ロジスティック回帰デモ(XGBoost logistic regression demo)では、目的=バイナリ:ロジスティックとは損失関数がロジスティックロス関数であることを意味します。したがって、 'objective = reg:linear'はどのロス関数に対応していますか?XGBoost:パラメータ 'objective'は何ですか?

答えて

2

したがって、 'objective = reg:linear'はどのロス関数に対応していますか?

二乗誤差

あなたはここにロジスティック回帰および線形回帰の両方のために

https://github.com/dmlc/xgboost/blob/master/src/objective/regression_obj.cc

を(勾配とヘッセ行列に基づいています)損失関数を見てみることができます損失関数は合理的に似ていることに注意してください。ただ、SecondOrderGradientは正方形の損失が一定であることを

// common regressions 
// linear regression 
struct LinearSquareLoss { 
    static float PredTransform(float x) { return x; } 
    static bool CheckLabel(float x) { return true; } 
    static float FirstOrderGradient(float predt, float label) { return predt - label; } 
    static float SecondOrderGradient(float predt, float label) { return 1.0f; } 
    static float ProbToMargin(float base_score) { return base_score; } 
    static const char* LabelErrorMsg() { return ""; } 
    static const char* DefaultEvalMetric() { return "rmse"; } 
}; 
// logistic loss for probability regression task 
struct LogisticRegression { 
    static float PredTransform(float x) { return common::Sigmoid(x); } 
    static bool CheckLabel(float x) { return x >= 0.0f && x <= 1.0f; } 
    static float FirstOrderGradient(float predt, float label) { return predt - label; } 
    static float SecondOrderGradient(float predt, float label) { 
    const float eps = 1e-16f; 
    return std::max(predt * (1.0f - predt), eps); 
    } 

著者はこのここhttps://github.com/dmlc/xgboost/tree/master/demo/regression

言及します
関連する問題