决策树Decision Tree
1. 决策树
概念:是一种非参数的有监督学习方法,他能从一系列有特征和标签的数据中总结出决策规则,并用树状图来呈现这些规则,以解决分类和回归问题。
思想:决策树基于特征对数据实例按照条件不断进行划分,最终达到分类或者回归的目的。
核心概念:特征选择方法、决策树构造过程和决策树剪枝
本质:图结构
关键概念:结点 |
---|
根结点:没有进边,有出边。包含最初的,针对特征的提问。 中间结点:既有进边又有出边,进边只有一条,出边条数不固定。都是针对特征的提问。 叶子结点:有进边,没有出边,没一个叶子结点都是一个类别的标签 子结点和父结点:在两个相连的结点中,更接近根结点的是父结点,另一个是子结点 |
决策树算法的核心解决两个问题:
-
如何从数据表中找出最佳节点和最佳分支? -- 特征选择方法
-
如何让决策树停止生长防止过拟合? -- 剪枝
1.1 特征选择
常见的特征选择方法:信息增益、信息增益比和基尼系数,分别对应三种常见的决策树算法为ID3、C4.5和CART。
-
信息增益
熵:一种描述随机变量不确定性的度量方式,也可以用来描述样本集合的纯度,信息熵越低,样本不确定性越小,相应的纯度越高。
纯度:如果一个特征能够使得分类后的分支结点尽可能属于同一类别,即该结点有着较高的纯度。
信息增益:由得到的特征X而使得类Y的信息不确定性的减少程度,即它是一种描述目标类别确定性增加的量,特征信息增益越大,目标类的确定性越大。
信息增益定义为:经验熵E(D)与经验条件熵E(D|A)之差 -- g(D|A)=E(D)-E(D|Q)
存在问题:当某个特征分类取值较多时,该特征的信息增益计算结果就会比较大,因此选择特征会偏向于取值较大的特征
-
信息增益比
信息增益比定义:特征A对数据集D的信息增益比定义为g(D, A)与数据集D关于特征A取值的熵E_A(D)的比值:g_R(D, A) = \frac {G(D, A)} {E_A(D)}
-
基尼系数
基尼系数是针对概率分布而言。假设有K个样本,样本属于第k类的概率为p_k,则该样本类别概率分布的基尼指数可定义为:
Gini(p)=\sum_{k=1}^{K} {p_k(1-p_k)}=1-\sum_{k=1}^{K} p_k^2
1.2 决策树模型
-
ID3(Iterative Dichotomiser 3)-- 3代迭代二叉树
核心:基于信息增益递归的选择最优特征构造决策树
具体方法:
首先预设一个决策树根节点,然后对所有特征计算信息增益,选择一个信息增益最大的特征作为最优特征,根据该特征的不同取值建立子结点,接着对每个子结点递归地调用上述方法,直到信息增益很小或者没有特征可选时,即可构建最终的ID3决策树。
-
C4.5(与ID3的差异只在于特征选择方法)
核心:基于信息增益比作为特征选择方法,CART生成的决策树偶都是二叉决策树,可递归的二分每个特征
-
CART(classification and regression tree)-- 分类与回归树
与上述二者区别:(1) 既可用于分类,又可用于回归 (2) 基于基尼系数选择特征 (3) 不仅包含决策树的生成算法,还包括决策树剪枝算法
定义:在给定随机变量X的条件下输出随机变量Y的条件概率分布的学习算法。
-
决策树剪枝
决策树存在的问题:决策树生成算法递归的产生决策树,生成的决策树大而全,很容易导致过拟合现象
思想:对已生成的决策树进行简化,用过对已生成的决策树剪掉一些子树或者叶子结点,并将其根节点或父节点作为新的叶子结点
两种方法:预剪枝和后剪枝
预剪枝:在决策树生成过程中提前停止树的增长。
预剪枝思路:在决策树结点分裂之前,计算当前结点划分能否提升模型泛化能力,如果不能,则决策树提前停止生长。
预剪枝优点:直接、简单、高效,适用于大规模求解问题
预剪枝缺点:提前停止树生长的方法,在一定程度上存在欠拟合风险,导致决策树生长不够完全
后剪枝(CART使用后剪枝):主要是通过极小化决策树整体损失函数来实现。在复杂度α确定的情况下,选择损失函数最小的决策树模型。
2. DecisionTreeClassifier
2.1重要参数
2.1.1 criterion
决策树找出最佳节点和最佳分支:使用 ”不纯度“ 来衡量
不纯度越低,决策树对训练集拟合越好
不纯度基于节点来计算,树中的每个节点都有一个不纯度,并且子节点的不纯度一定低于父节点的不纯度,在同一棵树上,叶子节点的不纯度一定是最低的
criterion
参数:用来决定不纯度的计算方法
-
输入”entropy“,使用信息熵(entropy)
-
输入”gini”,使用基尼系数(Gini Impurity)
如何选取信息熵和基尼系数?
-
通常用基尼系数;
-
数据维度很大,噪音很大使用基尼系数
-
维度低、噪音低,信息熵和基尼系数没什么区别
-
当决策树拟合程度不够时,使用信息熵
参数 | criterion |
---|---|
如何影响模型? | 确定不纯度的计算方法,帮忙找出最佳节点和最佳分枝,不纯度越低,决策树的拟合越好 |
可能有哪些输入? | 不填写默认基尼系数,填写gini使用基尼系数,填写entropy使用信息增益 |
怎样选取参数? | 通常用基尼系数; 数据维度很大,噪音很大使用基尼系数 维度低、噪音低,信息熵和基尼系数没什么区别 当决策树拟合程度不够时,使用信息熵 |
2.1.2 random_state & splitter
random_state
:用来设置分枝中的随机模型的参数,默认为None,在高维度时随机性会表现更明显,低维数据随机性几乎不会显现。输入任意整数,会一直长出同一棵树,让模型稳定下来。
splitter
:用来控制决策树中的随机选项,有两种输入值。
输入'best',决策树在分枝时虽然随机,但还是会优先选择更重要的特征进行分支(特征重要性可以通过属性feature_importances_查看);
输入'random',决策树在分枝时会更加随机,树会更深,对训练集的拟合将会降低。这也是防止过拟合的一种方式。
2.1.3 剪枝参数
剪枝策略对决策树影响巨大,是优化决策树算法的核心。
max_depth
:限制树的最大深度,超过设定深度的树枝全部剪掉,对高维度低样本量非常有效。
min_samples_leaf
:限定一个结点在分枝后的每个子结点都必须包含至少min_samples_leaf个训练样本,否则分枝就不会发生,或分枝朝着满足每个子结点都包含min_samples_leaf个样本的方向去发生。一般搭配max_depth使用,在回归树中,可以让模型变得更加平滑
min_samples_split
:限定一个结点必须要包含至少min_samples_split个训练样本,否则分枝不会发生
max_feature
:一般与max_depth搭配,用作树的精修。限制分枝时考虑的特征数,超过限制个数的特征都会被舍弃,而可用来限制高维度数据的过拟合剪枝参数,但比较暴力,可能会导致模型学习不足。
min_impurity_decrease
限制信息增益的大小,信息增益小于设定数值的分支不会发生。
2.1.4 目标权重参数
class_weight
:完成样本标签平衡的参数。可对样本标签进行一定的均衡,给少量的标签更多的权重,让模型更偏向少数类,向捕获少数类的方向建模。默认为None,默认数据集中的标签具有相同的权重。
min_weight_fraction_leaf
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」