python 多分类算法_深入理解GBDT多分类算法

本文详细介绍了GBDT多分类算法,包括Softmax回归的对数损失函数,GBDT多分类原理,以及如何用Python3和sklearn实现GBDT多分类算法。通过实例和伪代码,解析了GBDT在多分类问题中的应用和训练过程。
摘要由CSDN通过智能技术生成

我的个人微信公众号:Microstrong

微信公众号ID:MicrostrongAI

微信公众号介绍:Microstrong(小强)同学主要研究机器学习、深度学习、计算机视觉、智能对话系统相关内容,分享在学习过程中的读书笔记!期待您的关注,欢迎一起学习交流进步!目录:

1. GBDT多分类算法

1.1 Softmax回归的对数损失函数

1.2 GBDT多分类原理

2. GBDT多分类算法实例

3. 手撕GBDT多分类算法

3.1 用Python3实现GBDT多分类算法

3.2 用sklearn实现GBDT多分类算法

4. 总结

5. Reference

本文的主要内容概览:

1. GBDT多分类算法

1.1 Softmax回归的对数损失函数

当使用逻辑回归处理多标签的分类问题时,如果一个样本只对应于一个标签,我们可以假设每个样本属于不同标签的概率服从于几何分布,使用多项逻辑回归(Softmax Regression)来进行分类:

其中,

为模型的参数,而

可以看作是对概率的归一化。一般来说,多项逻辑回归具有参数冗余的特点,即将

同时加减一个向量后预测结果不变,因为

,所以

假设从参数向量

中减去向量

,这时每一个

都变成了

。此时假设函数变成了以下公式:

从上式可以看出,从

中减去

完全不影响假设函数的预测结果,这表明前面的Softmax回归模型中存在冗余的参数。特别地,当类别数为2时,

利用参数冗余的特点,我们将所有的参数减去

,上式变为:

其中

。而整理后的式子与逻辑回归一致。因此,多项逻辑回归实际上是二分类逻辑回归在多标签分类下的一种拓展。

当存在样本可能属于多个标签的情况时,我们可以训练

个二分类的逻辑回归分类器。第

个分类器用以区分每个样本是否可以归为第

类,训练该分类器时,需要把标签重新整理为“第

类标签”与“非第

类标签”两类。通过这样的办法,我们就解决了每个样本可能拥有多个标签的情况。

在二分类的逻辑回归中,对输入样本

分类结果为类别1和0的概率可以写成下列形式:

其中,

是模型预测的概率值,

是样本对应的类标签。

将问题泛化为更一般的多分类情况:

由于连乘可能导致最终结果接近0的问题,一般对似然函数取对数的负数,变成最小

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GBDT(Gradient Boosting Decision Tree)是一种强大的集成学习算法,常用于分类和回归问题。对于多分类问题,GBDT可以通过One-vs-Rest或One-vs-One策略来扩展到多类别。 这里给出一个使用GBDT进行多分类的示例,该示例使用sklearn库中的GradientBoostingClassifier类来实现。 ```python from sklearn.ensemble import GradientBoostingClassifier from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 生成随机数据集 X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_classes=3, random_state=1) # 划分数据集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1) # 创建GBDT分类器 gb_clf = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, max_depth=3, random_state=1) # 训练分类器 gb_clf.fit(X_train, y_train) # 预测测试集 y_pred = gb_clf.predict(X_test) # 计算准确率 acc_score = accuracy_score(y_test, y_pred) print("Accuracy score:", acc_score) ``` 在上面的示例中,我们首先使用`make_classification`函数生成一个具有10个特征和3个类别的随机数据集。然后,我们将数据集划分为训练集和测试集,并使用`GradientBoostingClassifier`函数创建GBDT分类器。接着,我们使用训练集来训练分类器,并使用测试集来预测分类结果。最后,我们使用`accuracy_score`函数计算分类器的准确率。 需要注意的是,GBDT算法中的参数设置会影响分类器的性能,需要根据具体情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值