logistic loss公式的由来 xgboost 雪伦的推导中使用了该公式

本文探讨了LogisticLoss与二进制交叉熵损失之间的等价关系,指出无论hypothesisfunction的形式如何,使用LogisticLoss进行二分类问题等同于使用二进制交叉熵损失。通过对数学公式的推导,证明了Logistic函数的映射特性,从而说明了这一等价性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公式如下

 

 

摘录片段如下

假设是另外一个hypothesis function,且,把带入式可以得到

显然式和式是等价的,即

式的Loss形式叫作针对的Logistic Loss,也就是说针对的二进制交叉熵损失等价于针对的Logistic损失,而实际上是通过Logistic function的映射,即

也就是说不论这个hypothesis function是什么形式,针对使用Logistic Loss就可以用于二分类问题,因为针对使用Logistic Loss就等价于针对使用二进制交叉熵损失。

 

https://blog.youkuaiyun.com/fengdu78/article/details/113904375?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-4.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-4.control

### XGBoost算法原理 XGBoost是一种基于梯度提升决策树的机器学习算法,具备高效、可扩展性和灵活性等特性,在分类、回归以及排序任务中有广泛应用[^1]。 #### 加性模型表达形式 如同GBDT一样,XGBoost由多个基模型构成一个加性模型。具体来说,对于样本\(x_i\)预测值\(\hat{y}_i\)可以通过如下公式表示: \[ \hat{y}_i = \sum_{k=1}^{K} f_k(x_i)\] 其中,\(f_k\)代表第\(k\)棵决策树所贡献的部分,而整个求和则涵盖了所有用于构建最终预测结果的决策树集合[^2]。 #### 客观函数定义 为了训练这样的模型,需要最小化下面的目标函数: \[ Obj(t) = L(y, \hat{y}) + \Omega(f_t) \] 这里,\(L\)是损失函数,衡量真实标签与当前预测之间的差异;\(\Omega\)则是正则项,用来控制模型复杂度以防止过拟合现象的发生。特别地,针对每棵树\(t\)引入了结构风险惩罚因子来约束其规模大小[^3]。 #### 近似分裂查找方法 不同于传统GBDT采用精确贪心策略寻找最佳切分点的方式,XGBoost提出了近似的解决方案——通过预排序并累积统计量之后再利用直方图技术快速定位最优分割位置。这种方法不仅提高了计算效率而且降低了内存消耗,使得大规模数据集上的应用成为可能。 ```python import xgboost as xgb from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split # 创建模拟二元分类问题的数据集 X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10, random_state=7) # 划分训练集测试集 X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.25, stratify=y, random_state=78) # 构建DMatrix对象作为输入给定到XGBoost中去 dtrain = xgb.DMatrix(X_train, label=y_train) dtest = xgb.DMatrix(X_test, label=y_test) param = { 'max_depth': 6, # 树的最大深度 'eta': 0.3, # 学习率 'objective': 'binary:logistic', # 对于二类分类我们选用逻辑回归目标 } num_round = 100 # 设置迭代次数为100轮 bst = xgb.train(param, dtrain, num_round) preds = bst.predict(dtest) print(preds[:5]) # 输出前五个预测概率值 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值