大白话决策树分类


前言

决策树(decision tree):是一种基本的分类与回归方法,此处主要讨论分类的决策树。
但是对于决策树回归,跟决策树分类差不多,是在决策树分类的基础下,获取各各叶子结点(类)的均值。

1 决策树的基本流程

1) 构建根节点,将所有训练数据都放在根节点,根据某种算法选择一个最优特征,按着这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。

2) 如果这些子集已经能够被基本正确分类,那么构建叶节点,并将这些子集分到所对应的叶节点去。

3)如果还有子集不能够被正确的分类,选取子集选择新的最优特征,继续对其进行分割,构建相应的节点,如此递归,直至所有训练数据子集被基本正确的分类,或者没有合适的特征为止。

4)每个子集都被分到叶节点上,即都有了明确的类,这样就生成了一颗决策树。

2 决策树的属性划分

2.1 信息增益(ID3算法)

在这里插入图片描述
简单一句话就是:划分前的信息熵–划分后的信息熵。表示的是向纯度方向迈出的“步长”。
在这里插入图片描述
举个例子
在这里插入图片描述
在这里插入图片描述

2.2 C4.5算法(信息增益比)

分裂信息

信息增益率

举个例子:

计算income的增益率
由上面Gain(income)=0.029。因此GainRatio(income)= 0.029/1.557 = 0.019

2.3 CART算法(基尼指数)

在这里插入图片描述

3 决策树的减枝处理

分为预减枝和后减枝
预减枝:在划分前计算该划分前后的验证精度(通过验证集对该树进行验证),若精度不提升则减枝,否者不减枝
后减枝:在树生成后进行减枝,计算减枝后的验证精度是否提升,来判断减不减枝

4 决策树中的连续值和缺失值

开始之前先思考第一个为问题?当样本数据中出现连续值和缺失值,决策树是怎么处理的?
对于特征(列)中的连续值处理:
1)对该连续值按小到大排序
2)依次选取左右两个点的中间值,形成n-1个划分结点
3)在这些划分结点中选择最有效的划分结点

5 多变量的决策树

首先让我们看看,正常的决策树是长这样
在这里插入图片描述

多变量决策树长这样
在这里插入图片描述
对比前后,实际上原来的化分类别的是关于轴(x和y)平行的,现在变为线/曲线
这线是怎么出来的?实质上在各各变量间建立了一个关系函数,再以此分类

思考第二个问题,若数据集中出现缺失值,决策树又是怎么处理的?

由上面可以看出,对于缺失值的处理就是在原信息增益的基础上进行推广,计算含缺失值的信息增益。

6 sklearn中的决策树

对于sklearn中的模型基本上就分为以下3步骤:

第1步:导入模型,并确定模型参数
第2步:添加训练模型
第3步:对训练后的模型进行样本预测/平均精度

为了方便理解,这里使用sklearn中的load_iris数据集举例,模型3步骤:

### 虹膜数据集构建树
from sklearn.datasets import load_iris
from sklearn import tree
X, y = load_iris(return_X_y=True)

## 第1步:导入模型,并确定模型参数
clf = tree.DecisionTreeClassifier()

## 第2步:添加数据训练模型
clf = clf.fit(X, y)

## 第3步:对训练后的模型进行样本预测/平均精度
#这里可以调用函数查看模型的属性,或者预测样本类型等
print("训练集样本平均精度"+str(clf.score(X,y)))

总结

对于属性划分:
信息增益:
缺点:如果考虑编号为一属性,每个分支节点仅包含一个样本,这些分支节点的纯度已经最大,然而,这样的决策树显然不具有泛化能力,无法对新样本进行有效预测。

信息增益比:
是信息增益上的改进,采用信息增益率替代信息增益。

基尼系数:
以基尼系数替代熵,最小化不纯度,而不是最大化信息增益。

对于树减枝:
预剪枝基于"贪心"本质禁止这些分支展开,给预剪枝决策树带来欠拟合的风险.
后剪枝决策树欠拟合风险很小,泛化性能往往优于预剪枝决策树,但是训练时间开销比未剪枝决策树
和预剪枝决策树都要大得多

参考文献
<<机器学习>> --周志华
<<数据挖掘概念与技术>> 中文版的

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XGBoost(eXtreme Gradient Boosting)是一种非常流行的机器学习算法,它是一种梯度提升树模型。它的设计目标是提高其前身GBDT(Gradient Boosting Decision Tree)算法的性能和鲁棒性。 XGBoost使用的是一种特殊的决策树模型,称为CART(Classification and Regression Trees)。与传统的决策树不同,CART决策树在每个节点上进行分裂时,会使用一种称为泰勒展开的方法,来近似地找到最优分裂点。通过这种方法,XGBoost能够更精确地构建决策树模型,并提高预测的准确性。 XGBoost还通过引入正则化技术,如L1和L2正则化,来避免模型过拟合。正则化可以限制模型的复杂性,提高模型的泛化能力,并使得模型对噪音数据不敏感。 在训练过程中,XGBoost使用梯度提升算法,该算法通过迭代地训练多个决策树,并使用梯度下降法来优化模型的损失函数。在每一轮迭代中,XGBoost会根据之前模型的预测结果和真实标签之间的误差,调整每个样本的权重,并生成一个新的决策树。通过这种迭代优化的方式,XGBoost能够逐步提升模型的准确性。 此外,XGBoost还具备优化性能的功能。它使用一种称为并行化的技术,通过同时在多个处理器上训练多个决策树,来加快训练速度。另外,XGBoost还支持特征重要性评估,可以通过计算每个特征对模型的贡献度来帮助我们理解数据的特征重要性。 总之,XGBoost是一种非常强大的机器学习算法,它通过使用特殊的决策树模型、正则化技术、梯度提升算法和优化性能等方法,提高了模型的预测准确性和鲁棒性。它在很多数据竞赛和实际应用中都取得了出色的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值