精华内容
下载资源
问答
  • 原文地址:...xgboost中的Objective是算法将尝试和优化的函数。根据定义,它必须能够针对给定训练轮次的预测创建一阶(gradient)和二阶(hessian)导数。 自定义Objec...

    原文地址:https://stackoverflow.com/questions/34178287/difference-between-objective-and-feval-in-xgboost

    Objective

    xgboost中的Objective是算法将尝试和优化的函数。根据定义,它必须能够针对给定训练轮次的预测创建一阶(gradient)和二阶(hessian)导数。

    自定义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)
      returnlist(grad = grad,hess = hess))
    }
    

    Objective是训练的关键函数,任何xgboost模型都需要定义它才能训练。Objective函数直接用于每个树中的每个节点处的拆分过程。

    feval

    xgboost中的feval在优化或训练模型方面没有任何的直接作用。你甚至不需要它就能训练。它不会影响分裂。它所做的只是在训练结束后对你的模型进行评分。下面是自定义feval的例子

    evalerror < -  function(preds,dtrain){
      labels< -  getinfo(dtrain,“label”)
      err < -  as.numeric(sum(labels!=(preds> 0)))/ length(labels)
      returnlist(metric =“error”,value = err))  #译注:metric为名称,value为分数
    }
    

    请注意,它只返回一个名称(metric)和一个分数(value)。通常情况下,fevalobjective可能是相同的。但是有时候,你可能需要有点不同的评分机制,或者没有导数。例如,人们使用logloss作为Objective进行训练,但使用AUC 作为feval来评估模型。

    另外,你可以使用feval在模型已经没有改进的时候停止训练。你还可以使用多个feval函数以不同的方式为你的模型打分并观察它们。

    总的来说,你不需要feval函数来训练模型,而只是为了评估它,并帮助它尽早停止训练。

    展开全文
  • 之前对于xgboost中的两个参数objective和eval_metric一直分不清楚,不知道它们各自的作用。后来通过查找资料理清了他们之间的关系。这里记录一下。 1、objective objective参数代表的是模型的损失函数,也就是我们...

    之前对于xgboost中的两个参数objective和eval_metric一直分不清楚,不知道它们各自的作用。后来通过查找资料理清了他们之间的关系。这里记录一下。

    1、objective

    objective参数代表的是模型的损失函数,也就是我们进行优化的目标。

    这里要注意损失函数与目标函数的区别,一般情况下,我们说的损失函数就是目标函数,但是一些模型如xgboost要求目标函数要有一阶导数和二阶导数才能进行优化,而很多目标函数是没有一阶导数或二阶导数的,所以这时就用具有相似结果的损失函数来代替(如果损失函数能够很好地替代目标函数,这是最好的情况,如果替代效果不佳,则影响模型优化)。在模型优化中,我们使用的都是损失函数。
    objective是训练模型必备的函数,只有定义了objective模型才能进行训练

    2、eval_metric函数
    eval_metric是评价函数,对模型的训练没有影响,而是在模型训练完成之后评估模型效果。如我们经常使用logloss作为objective,经常与之搭配的评价函数是auc、acc等。

    为什么评价的时候不用objective呢?本来就是用objective来优化的,自己评价自己就没多大意义了,所以一般需要来自另一个评分机制的eval_metric来评估模型效果。

    eval_metric对于训练模型没有影响,即使我们不定义这个函数模型也可以正常训练。

    参考文献:
    xgboost中Objective和feval之间的差异
    XGBoost自定义评价函数(feval)

    展开全文
  • XGBoost

    2020-12-08 10:50:53
    def xgboost_Classifier(train, trainLabel, test): gbm = xgb.XGBClassifier(silent=1, max_depth=8,objective='binary:logitraw',\ min_child_weight=1, subsample=0.5,colsample_bytree=0.8,\ reg_lamb...

    基础模型代码

    def xgboost_Classifier(train, trainLabel, test):
    
    
        gbm = xgb.XGBClassifier(silent=1, max_depth=8,objective='binary:logitraw',\
                                min_child_weight=1, subsample=0.5,colsample_bytree=0.8,\
                                reg_lambda=0.8,scale_pos_weight=1,\
                                n_estimators=100, learning_rate=0.05,alpha=0.1)
        gbm.fit(np.array(train), np.array(trainLabel))
        pred = gbm.predict(np.array(test))
    
    
        return pred
    

     

    xgboost中XGBClassifier()参数详解

     

    n_estimatores
        含义:总共迭代的次数,即决策树的个数
        调参:
    early_stopping_rounds
        含义:在验证集上,当连续n次迭代,分数没有提高后,提前终止训练。
        调参:防止overfitting。
    max_depth
        含义:树的深度,默认值为6,典型值3-10。
        调参:值越大,越容易过拟合;值越小,越容易欠拟合。
    min_child_weight
        含义:默认值为1,。
        调参:值越大,越容易欠拟合;值越小,越容易过拟合(值较大时,避免模型学习到局部的特殊样本)。
    subsample
        含义:训练每棵树时,使用的数据占全部训练集的比例。默认值为1,典型值为0.5-1。
        调参:防止overfitting。
    colsample_bytree
        含义:训练每棵树时,使用的特征占全部特征的比例。默认值为1,典型值为0.5-1。
        调参:防止overfitting。
    

     

    学习任务参数

    learning_rate
        含义:学习率,控制每次迭代更新权重时的步长,默认0.3。
        调参:值越小,训练越慢。
        典型值为0.01-0.2。
    objective 目标函数
        回归任务
            reg:linear (默认)
            reg:logistic 
        二分类
            binary:logistic     概率 
            binary:logitraw   类别
        多分类
            multi:softmax  num_class=n   返回类别
            multi:softprob   num_class=n  返回概率
        rank:pairwise 
    eval_metric
        回归任务(默认rmse)
            rmse--均方根误差
            mae--平均绝对误差
        分类任务(默认error)
            auc--roc曲线下面积
            error--错误率(二分类)
            merror--错误率(多分类)
            logloss--负对数似然函数(二分类)
            mlogloss--负对数似然函数(多分类)
    
    gamma
        惩罚项系数,指定节点分裂所需的最小损失函数下降值。
        调参:
    alpha
        L1正则化系数,默认为1
    lambda
        L2正则化系数,默认为1
    

     

     

     

     

     

     

     

     

    展开全文
  • 解决xgboost.core.XGBoostError: [17:12:src/objective/objective.cc:23: Unknown objective function binary

    主要代码如下

    from lightgbm.sklearn import LGBMClassifier
    xgb = XGBClassifier(boosting_type='gbdt', objective='binary', learning_rate=0.05, n_estimators=5000, num_leaves=31,subsample=0.8, colsample_bytree=0.8, metric='auc')
    

    报错内容提示我们问题应该出在objective='binary'这里,按住ctrl点击objective,发现源代码长这样
    在这里插入图片描述
    问题根源很明显了,就是objective的赋值出了问题,考虑到我本来也是带算用binary,直接把objective='binary'删除问题就解决了。

    最后再看一眼objective是干嘛的,参考博客XGBoost:参数解释objective [ default=reg:linear ]定义学习任务及相应的学习目标,可选的目标函数如下:

    1. “reg:linear” –线性回归。
    2. “reg:logistic” –逻辑回归。
    3. “binary:logistic” –二分类的逻辑回归问题,输出为概率。
    4. “binary:logitraw” –二分类的逻辑回归问题,输出的结果为wTx。
    5. “count:poisson” –计数问题的poisson回归,输出结果为poisson分布。
    6. “multi:softmax” –让XGBoost采用softmax目标函数处理多分类问题,同时需要设置参数num_class(类别个数)
    7. “multi:softprob” –和softmax一样,但是输出的是ndata * nclass的向量,可以将该向量reshape成ndata行nclass列的矩阵。没行数据表示样本所属于每个类别的概率。
    8. “rank:pairwise” –set XGBoost to do ranking task by minimizing the pairwise loss
    展开全文
  • xgboost之 'objective': 'rank:pairwise',

    千次阅读 2017-12-26 22:05:29
    1、The objective function is used for optimization not the evaluation function. rank:pairwise and multi:softprob are objective functions, and will change the predictions depending on which one ...
  • <p>Create a XGBoost Booster with parameter 'objective': 'binary:logistic'. Then convert it to CoreML. The resulting MLModel gives wrong predictions. <p>Here is the script demonstrating...
  • 一、问题上篇文章中我们已经搞明白了逻辑回归的问题中,xgboost的train(),fit()方法已经不同参数的objective的对应的输出结果和关系,这篇文章我们就来研究下xgboost再做多分类时,train(),fit()建模后输出的...
  • <div><p>Our xgboost models use the <code>binary:logistic'</code> objective function, however the m2cgen converted version of the models return raw scores instead of the transformed scores. <p>...
  • xgboost调优

    2019-06-26 21:26:09
    1.xgboost参数: ...class xgboost.XGBClassifier(max_depth=3, learning_rate=0.1, n_estimators=100, silent=True, objective=‘binary:logistic’, booster=‘gbtree’, n_jobs=1, nthread=None, gamma=0,...
  • 1 sklearn与XGBoost 1.2 xgboost库与XGB的sklearn API 1.3 XGBoost的三大板块 2 梯度提升树 ...3.2 XGB的目标函数:重要参数objective 3.3 求解XGB的目标函数 3.4 参数化决策树 :参数alpha, lambda 3.5 寻
  • xgboost api

    2019-12-19 11:07:33
    import xgboost as xgb 读取数据 dtrain = xgb.DMatrix(‘demo/data/agaricus.txt.train’) dtest = xgb.DMatrix(‘demo/data/agaricus.txt.test’) 通过 map 指定参数 param = {‘max_depth’:2, ‘eta’:1, ...
  • sklearn与XGBoost

    2020-07-16 23:15:41
    菜菜的scikit-learn课堂——sklearn与XGBoost 文章目录1. XGBoost简介1.1 xgboost库与XGB的sklearn API1.2 XGBoost的三...重要参数booster3.2 XGB的目标函数:重要参数objective3.3 求解XGB的目标函数3.4 参数化决策树
  • xgboost的警告

    千次阅读 2019-12-12 19:56:15
    WARNING: d:\build\xgboost\xgboost-0.90.git\src\objective\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror 本来是想通过屏蔽python的warning让这个东西不显示的,但是没有.....
  • xgboost优点正则化并行处理?灵活性,支持自定义目标函数和损失函数,二阶可导缺失值的处理剪枝,不容易过拟合内置了交叉验证参数的设置params = { 'booster': 'gbtree', 'objective': 'multi:softmax', # 多分类...
  • 熟悉xgboost的小伙伴都知道,它在训练模型时,有train()方法和fit()方法,train方法使用如下:params ={'eta': 0.1, 'max_depth': 4, 'num_boost_round':20, 'objective': 'reg:logistic', 'random_state': ...
  • xgboost训练回归模型很简单,按照前面的博客安装了xgboost库之后:xgboost的参数说明如下代码:params={'booster':'gbtree','objective': 'multi:softmax', #多分类的问题'num_class':10, # 类别数,与 multisoftmax...
  • 在建模过程中,用XGBClassifier定义参数为objective='reg:... passed down to XGBoost core. Or some parameters are not used but slip through this verification. Please open an issue if you find above cases.
  • 下面回归到xgboostobjective 设为rank:pairwise的问题 xgboost就是一种二分类模型,当将objective设为rank:pairwise意思就是说采用评分机制进行训练 官网介绍–set XGBoost to do ranking task by ...
  • xgboost优点正则化并行处理?灵活性,支持自定义目标函数和损失函数,二阶可导缺失值的处理剪枝,不容易过拟合内置了交叉验证参数的设置params = { 'booster': 'gbtree', 'objective': 'multi:softmax', # 多分类...
  • xgboost API说明

    2020-08-09 16:37:08
    官方文档 我比较喜欢xgboost的sklearn API,在官网页面需要向下拉,拉到sklearnAPI那里。 import xgboost as xgb model_xgb = xgb.XGBRegressor() model_xgb = xgb.XGBClassifier() ...objective 暂时没有用到,先不管
  • XGBoost: A Scalable Tree Boosting System链接:https://www.kdd.org/kdd2016/papers/files/rfp0697-chenAemb.pdf内容 Introduction Tree ... Regularized objective & Gradient tree boosting & Shr...
  • xgboost调参

    2019-08-26 16:50:07
    objective’: ‘multi:softmax’, 多分类的问题 ‘num_class’:10, 类别数,与 multisoftmax 并用 ‘gamma’:损失下降多少才进行分裂-(即xgboost公式推导中的,类似于信息增益) ‘max_depth’:12, 构建树的深度...
  • 遇到这个warning这的是看着烦,感谢前辈: https://github.com/dmlc/xgboost/issues/4599 加上这个参数: objective =‘reg:squarederror’ 即可
  • xgboost项目实战

    2019-12-05 10:03:28
    import xgboost as xgb start_time = time.time() offline = 0 online = 0 params = {'booster': 'gbtree', 'objective': 'rank:pairwise', 'eval_metric': 'auc', 'gamma': 0.1, ...
  • xgboost note

    千次阅读 2016-04-13 11:25:53
    参数记录param = {'bst:max_depth':3, 'bst:subsample':0.5, 'bst:min_child_weight':1,'bst:eta':0.3, 'silent':1,'objective':'binary:logistic'} param['nthread'] = 2 50 iter :auc:0.661716221418 param =...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 133
精华内容 53
关键字:

objectivexgboost