我正在尝试探索Xgboost二进制分类以及多分类的工作。对于二进制类,我观察到base_score被视为起始概率,并且在计算Gain和Cover时也显示出主要影响。
在多类的情况下,我无法弄清base_score参数的重要性,因为它为我显示了相同的Gain和Cover值(不同(任何)值) base_score。
而且我在为多类计算cover即2 * p *(1-p)时,也找不到为什么2的因子的原因
有人可以帮我这两个部分吗?
我正在尝试探索Xgboost二进制分类以及多分类的工作。对于二进制类,我观察到base_score被视为起始概率,并且在计算增益和覆盖率时也显示出主要影响。
是-这是base_score
的意思-以减少训练期间所需的历元/树的数量。我在评论中发布的链接包括有关默认base_score
应该是什么的讨论。对于二元问题,默认值为0.5(即,训练始于假设训练集中每个班级的比例为50:50),但是在“真实世界”数据中,该假设经常被违反,例如,您可能有98个案例“非保险欺诈”,只有2个“保险欺诈”案件。在这个不平衡的数据集中,将base_score
设置为更接近真实拆分是有意义的(例如95:5)。如果您使用默认的base_score
,您仍然期望通过足够的训练时期来“达到”相同的模型,但是,如果学习率较低且没有足够的训练时期,那么您可能就不会“达到”最佳模型。
有关更改base_score
对分类和回归问题的影响的详细示例,请参见https://github.com/dmlc/xgboost/issues/799#issuecomment-181646779
在多类的情况下,我无法弄清base_score参数的重要性,因为它为我显示了针对base_score的不同(任意)值的相同的Gain和Cover值。
多类和二进制在这方面是相同的:对于多类问题,默认base_score
为1 / n(即,对于3个组,base_score为33:33:33),在您的情况下,这可能是很好地表示您正在使用的数据。例如,如果您要分析R.A. Fisher的“ iris”数据集在3个类别中的每个类别中都有50个样本。如果base_score
太高(例如2:49:49)或您没有足够的训练时间,则可能会产生影响,否则您可能会使用相对默认的参数“达到”最佳模型。
而且在计算多类别(即2 * p *(1-p))的覆盖率时,我也无法找出为什么会有2的因子
根据https://towardsdatascience.com/is-it-easy-to-explain-part-i-global-explainability-in-boosted-trees-cac51ae63a4c:“从代码文档中查找(不容易找到):” coverage是分类为叶子的训练数据的二阶梯度之和,如果是平方损失,则仅对应于该分支中的实例。节点在树中越深,则该指标越低意思是,对于每个拆分,我们需要计算每个样本的二阶梯度,然后乘以样本数。对于p(预测)和y(真实标签),在“ reg:logistic”目标的情况下,成本函数为(y-p)²,因此二阶导数为常数。对于“二进制:逻辑”目标,成本函数为-(y log(p)+(y-1)(log(1-p))和二阶导数(相对于x, p = 1 /(1 + e ^ -x))为p(1-p)。“
所以,我认为多类问题的二阶导数中的“ 2”对应于“ 2 *二进制:逻辑分类器的二阶导数”(您必须自己研究一下)