决策树基本思想

决策树


决策树又称为判定树,是运用于分类的一种树结构,其中的每个内部节点代表对某一属性的一次测试,每条边代表一个测试结果,叶节点代表某个类或类的分布。决策树的决策过程需要从决策树的根节点开始,待测数据与决策树中的特征节点进行比较,并按照比较结果选择选择下一比较分支,直到叶子节点作为最终的决策结果

 

实际上就是找到最纯净的划分,要达到这个目标,要干这些事:

  1. 特征选择
  2. 决策树生成
  3. 剪枝

在讲这三个步骤之前,先看一下步骤中用到的算法

2.1 特征选择 

首先要考虑哪个变量是树根,哪个是树节点,为此,我们需要考虑变量的重要性。

怎么衡量?,或者说怎样选择?有三种算法:

  • ID3算法 :使用信息增益(作为不纯度)
  • C4.5算法 :使用信息增益率(作为不纯度)
  • CART 算法:使用基尼系数(作为不纯度)


不同的方法形成不同的决策树,决策树方法会把每个特征都试一遍,最后选取能够使分类分的最好的特征(e.g. 将A属性作为父节点,产生的纯度增益(GainA)要大于B属性作为父节点,则A作为优先选取的属性)。

2.2 特征选择用到的算法


ID3算法


该算法决策树的一种算法实现,以信息论为基础,以信息熵和信息增益为衡量标准,从而实现对数据的归纳分类。

核心思想:是以信息增益度量属性选择,选择分裂后信息增益最大的属性进行分裂。

信息熵(entropy)是用来衡量一个随机变量出现的期望值。如果信息的不确定性越大,熵的值也就越大,出现的各种情况也就越多。

信息熵计算公式:$$Entropy(S) = \sum_{i=1}^c - p_i log_2 p_i $$ 
其中,S为所有事件集合,p为发生概率,c为特征总数。注意:熵是以2进制位的个数来度量编码长度的,因此熵的最大值是log2C。

信息增益是指信息划分前后的熵的变化(差值),其实,我们期望使用这个属性分割样例而导致的期望熵降低,这是我们想要的结果。

信息增益计算方式:
$$ Gain(S,A) ≡ Entropy(S) - \sum_{v∈Values(A)} \frac {\vert S_v\vert} {\vert S \vert}Entropy(S_v)$$

其中,第二项为属性A对S划分的期望信息

> 算法的基本思想:

  • 初始化属性集合和数据集合
  • 计算数据集合信息熵S和所有属性的信息熵,选择信息增益最大的属性作为当前决策节点
  • 更新数据集合和属性集合(删除掉上一步中使用的属性,并按照属性值来划分不同分支的数据集合)
  • 依次对每种取值情况下的子集重复第二步
  • 若子集只包含单一属性,则为分支为叶子节点,根据其属性值标记
  • 完成所有属性集合的划分

 
 C4.5算法(该算法是对ID3的改进)

  • 用信息增益率来选择属性,克服了用信息增益选择属性偏向选择多值属性的不足
  • 在构造树的过程中进行剪枝
  • 对连续属性进行离散化,也就是说能处理连续属性。
  • 能够对不完整的数据进行处理

有点不言而喻了。

样本增益率


设样本集S按离散属性F 的c个不同的取值划分为c个子集,则这c个子集的信息熵为:
$$ SplitInformation(S,A)≡-\sum_{i=1}^c \frac {\vert S_i \vert} {\vert S \vert} log_2 {\frac {\vert S_i \vert} {\vert S \vert}}$$

信息增益率是信息增益与信息熵的比例,如下
$$ GainRatio(S,A)≡\frac {Gain(S,A)}{SplitInformation(S,A)}$$

离散化处理

将连续型的属性变量进行离散化处理形成决策树的训练集:

- 将需要处理的样本(对应根节点)或样本子集(对应子树)按照连续变量的大小从小到大进行排序
- 假设该属性对应不同的属性值共N个,那么总共有N-1个可能的候选分割值点,每个候选的分割阈值点的值为上述排序后的属性值中两两前后连续元素的中点
- 用信息增益选择最佳划分

不完整数据处理

处理缺少属性值的一种策略是赋给该节点所有对应训练实例中该属性最常见的值,另一种复杂的情况是为该节点每个可能出现的值赋予一个概率

CART 算法

Classification And Regression Tree,分类回归树,也属于一种决策树。

构建决策树

根据所选特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止声场。

剪枝

决策树容易过拟合,需要剪枝来缩小树的结构和规模。

树的剪枝分为预剪枝和后剪枝,预剪枝,及早的停止树增长控制树的规模。

后剪枝在已生成过拟合决策树上进行剪枝,删除没有意义的组,可以得到简化版的剪枝决策树,包括REP(设定一定的误分类率,减掉对误分类率上升不超过阈值的多余树)、PEP,还有一种CCP,即给分裂准则—基尼系数加上惩罚项,此时树的层数越深,基尼系数的惩罚项会越大。


 

### 决策树算法的基本思想和工作原理 决策树是一种基于树形结构的预测模型,其基本思想是通过一系列条件判断将数据逐步划分到不同的子集中[^1]。在每个节点上,根据某个属性的最佳分裂规则对数据进行分类或回归处理。最终,叶子节点代表具体的类别或数值输出。 #### 1. 决策树基本概念 决策树由节点和有向边组成。其中,内部节点表示一个属性上的测试,分支表示测试的结果,而叶子节点表示类别的输出或回归值[^2]。决策树的核心在于如何选择最优的分裂规则,以使生成的树结构尽可能简单且具有良好的泛化能力。 #### 2. 决策树的工作原理 决策树的构建过程可以分为两个主要阶段:**树的生长**和**树的剪枝**。 - **树的生长** 树的生长是指通过递归地选择最佳分裂属性来构建决策树的过程。常用的分裂标准包括信息增益(Information Gain)、信息增益率(Gain Ratio)以及基尼指数(Gini Index)。例如,ID3算法使用信息增益作为分裂准则,而C4.5则采用信息增益率以减少对多值属性的偏好。 - **树的剪枝** 决策树容易出现过拟合问题,因此需要通过剪枝来提高模型的泛化能力。剪枝可以分为预剪枝和后剪枝两种方式。预剪枝通过限制树的深度或叶节点中的样本数来避免过度生长;后剪枝则是在树完全生长后再移除不必要的子树[^3]。 #### 3. 决策树分类与回归 决策树既可以用于分类任务,也可以用于回归任务。对于分类任务,决策树的目标是将数据划分为离散的类别;而对于回归任务,则是预测连续的数值。分类与回归树(CART)算法同时支持这两种任务,并通过不同的分裂标准进行优化。 ```python from sklearn.tree import DecisionTreeClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split # 加载数据集 data = load_iris() X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.3, random_state=42) # 构建决策树模型 clf = DecisionTreeClassifier(criterion='gini', max_depth=3) clf.fit(X_train, y_train) # 输出模型预测结果 print(clf.predict(X_test)) ``` #### 4. 决策树的优点与缺点 - **优点** - 计算量相对较小,易于理解和实现。 - 能够清晰显示哪些字段比较重要,便于解释模型结果。 - 非参数学习,不需要对数据分布做假设。 - **缺点** - 容易过拟合,尤其是在数据噪声较大或样本量较少时。 - 对数据敏感,即使样本发生微小变化也可能导致树结构的显著改变。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值