决策树的直观理解
决策树是一种常用的机器学习算法,用于分类和回归任务。为了让你理解决策树的原理,我将用一个形象的类比来解释。
想象一下,你在参加一个问答游戏,目的是猜出某个人正在想的一种水果。这个人会依次回答你提出的各种问题,直到你猜到正确的水果。
比如,你可能会问:
- 这个水果的颜色是红色的吗?
- 它的大小比拳头大吗?
- 它的味道是甜的吗?
每个问题的答案都会把你引导到下一个问题,直到你缩小了可能的水果范围,最终得到了正确的答案。这个问答的过程就像在一棵树上移动,每个问题就是一棵树上的一个分叉点(节点),根据回答选择不同的分支,最终到达叶子节点(叶子节点就是最终的猜测结果)。
下面是一个假设回答上述问题的决策树示意:
决策树的基本思想
决策树的核心思想是通过递归地选择最优的特征来分割数据,以最大化每一步的“纯度”(即使得每个节点内的数据尽可能同质化)。常用的纯度衡量指标包括信息增益(Information Gain)、基尼指数(Gini Index)等。
决策树的数学定义
1. 数据集
我们假设有一个数据集 D = { ( x i , y i ) } i = 1 n D = \{(x_i, y_i)\}_{i=1}^n D={(xi,yi)}i=1n,其中:
- x i ∈ R d x_i \in \mathbb{R}^d xi∈Rd 是第 i i i 个样本的特征向量, d d d 是特征的维数。
- y i y_i yi 是与 x i x_i xi 对应的标签,对于分类问题 y i ∈ { 1 , 2 , … , C } y_i \in \{1, 2, \dots, C\} yi∈{1,2,…,C} ,而对于回归问题 y i ∈ R y_i \in \mathbb{R} yi∈R 。
2. 树的结构
决策树是一个递归的二叉树结构,每个节点 t t t 都与数据集的一个子集 D t ⊆ D D_t \subseteq D Dt⊆D 相关联。树包含以下几种节点:
- 根节点(Root Node):树的最顶层节点,包含整个数据集 D D D。
- 内部节点(Internal Node):每个内部节点通过对一个特征的条件测试(如 x j ≤ θ x_j \leq \theta xj≤θ)将数据集 D t D_t Dt 分为两个子集 D t L D_{t_L} DtL 和 D t R D_{t_R} DtR,其中 t L t_L tL 和 t R t_R tR 是该节点的两个子节点。
- 叶子节点(Leaf Node):不再继续分裂的节点,叶子节点与最终的预测输出 y ^ \hat{y} y^ 相关联。
3. 总结
一个决策树模型可以表示为一个函数 f : R d → R f: \mathbb{R}^d \rightarrow \mathbb{R} f:Rd→R 或 f : R d → { 1 , 2 , … , C } f: \mathbb{R}^d \rightarrow \{1, 2, \dots, C\} f:Rd→{1,2,…,C}(分类问题),其中:
- f ( x ) = ∑ t ∈ Leaves I ( x ∈ R t ) v t f(x) = \sum_{t \in \text{Leaves}} \mathbb{I}(x \in R_t) v_t f(x)=∑t∈LeavesI(x∈Rt)vt
- R t R_t Rt 是叶子节点 t t t 对应的区域, v t v_t vt 是叶子节点 t t t 的输出值(分类时是类别,回归时是均值)。
决策树的构建过程
决策树的构建是一个递归过程:
-
初始条件:从根节点开始,节点对应的数据集为 D D D。
决策树从根节点开始,这是树的顶端。在问答游戏中,根节点是你问的第一个问题。这个问题需要最大限度地将数据集分成不同的部分。在技术上,这意味着选择一个属性(或特征),该属性能将数据最有效地分开。类比:如果你想最快缩小范围,你可能会首先问一个能大幅度排除选项的问题,比如“这个水果是黄色的吗?”。这就像是根节点的问题。
-
选择分裂:对于当前节点 t t t 上的数据集 D t D_t Dt,选择特征 j j j 和阈值 θ \theta θ 使得分裂准则 Δ ϕ ( D t , j , θ ) \Delta \phi(D_t, j, \theta) Δϕ(Dt,j,θ) 最大化。
每当你在游戏中得到答案,你就把数据分成了两个或多个部分(比如红色的水果和非红色的水果)。在决策树中,这个过程叫做分裂。分裂的标准通常是根据某种度量方式,比如信息增益或基尼系数,来决定的。这个度量衡量了每次分裂后数据的纯度或不确定性减少的程度。类比:你问的问题应该尽量减少不确定性,比如通过问颜色问题,你一下子就把一半的水果排除了。
-
数据划分:根据选定的 j j j 和 θ \theta θ,将数据集 D t D_t Dt 分为两个子集 D t L D_{t_L} DtL 和 D t R D_{t_R} DtR。
-
递归构建:对两个子集 D t L D_{t_L} DtL 和 D t R D_{t_R} DtR 递归地重复上述过程,直到满足停止条件,如数据集不能再分或达到最大深度。
这个过程会递归进行。对于每个子节点,算法会重复选择最好的分裂属性,并进一步分裂,直到数据集不能再分裂(所有数据都属于同一类)或达到某个预设的条件(比如树的深度达到一定程度)。类比:你继续问“这个水果的大小比拳头大吗?”等问题,逐渐缩小范围,直到确定是某种特定的水果。
-
叶子节点输出:在叶子节点 t t t,返回分类问题中最常见的类别或回归问题中目标值的均值。
当数据不能再进一步分裂时,树的末端就是叶子节点。每个叶子节点代表一个决策或分类结果。比如在问答游戏中,这就是你最终猜测出的水果。类比:你得到了“苹果”或“香蕉”的答案。
-
剪枝:有时候,决策树可能会过度拟合数据,导致其在新数据上表现不佳。为了防止这种情况发生,可以对决策树进行剪枝,这意味着去掉一些不必要的分支,使模型更简单和泛化能力更强。
类比:有时候你可能会意识到你问了一些不太相关的问题,决定忽略这些问题,以避免混淆。
决策树中的分裂原理
1.信息增益(Information Gain)
通俗来说,信息增益用来决定在哪个属性上进行分裂。信息增益计算的是在当前分裂下,不确定性(熵)的减少量。熵越小,数据越纯,信息增益越大。
类比:当你问了一个很有用的问题,比如“这个水果的颜色是红色的吗?”,你会发现你剩下的选项大大减少了,这就是高信息增益的效果。
定义为:
E
(
S
)
=
−
∑
i
=
1
c
p
i
log
2
(
p
i
)
\text{E}(S) = - \sum_{i=1}^{c} p_i \log_2(p_i)
E(S)=−i=1∑cpilog2(pi)
其中,
p
i
p_i
pi 是集合中第
i
i
i 类样本的比例,
c
c
c 是类别数目。熵越大,表示样本的纯度越低,系统的不确定性越高。
信息增益则定义为在某特征
A
A
A 上进行划分后,数据集纯度提升的度量:
IG
(
S
,
A
)
=
E
(
S
)
−
∑
v
∈
Values
(
A
)
∣
S
v
∣
∣
S
∣
E
(
S
v
)
\text{IG}(S, A) = \text{E}(S) - \sum_{v \in \text{Values}(A)} \frac{|S_v|}{|S|} \text{E}(S_v)
IG(S,A)=E(S)−v∈Values(A)∑∣S∣∣Sv∣E(Sv)
其中,
S
v
S_v
Sv 是按照特征
A
A
A 的某个取值
v
v
v 分割后的子集。信息增益越大,说明这个特征越能提升数据集的纯度,因此会优先选择信息增益最大的特征来进行分割。
2. 基尼系数(Gini Index)
基尼系数反映了从数据集中随机抽取两个样本,它们属于不同类别的概率。基尼系数越小,数据越纯。
类比:问“这个水果甜吗?”如果甜的水果明显少于其他种类,那这个问题就能很好地分裂数据。
基尼指数定义为:
G ( S ) = 1 − ∑ i = 1 c p i 2 \text{G}(S) = 1 - \sum_{i=1}^{c} p_i^2 G(S)=1−i=1∑cpi2
基尼指数越小,表示样本集合的纯度越高。在决策树构建过程中,选择基尼指数最小的特征进行分割。
决策树的剪枝
为了防止过拟合,通常需要对决策树进行剪枝。剪枝可以分为预剪枝(Pre-pruning)和后剪枝(Post-pruning)。
- 预剪枝: 在树的生成过程中,通过设置一些条件提前停止分割,如达到最大深度、节点包含的样本数小于某阈值等。
- 后剪枝: 先生成一棵完整的树,然后从底向上检查每个节点,判断是否应当移除子树,改为叶子节点。如果剪枝后模型的泛化能力提升,则进行剪枝。
决策树的优势与劣势
优势:
- 直观易理解: 决策树的结构直观,可解释性强,尤其适合非专家理解和使用。
- 无需大量数据预处理: 决策树对数据的分布和特征的处理较为宽松,无需像SVM那样需要特征标准化。
- 处理非线性关系: 决策树能够很好地处理非线性数据。
劣势:
- 易于过拟合: 决策树如果不进行剪枝,很容易拟合数据中的噪声,导致泛化能力较差。
- 不稳定性: 决策树对数据中的小扰动较为敏感,容易导致树结构发生较大变化。
- 倾向于特征数较多的变量: 在特征较多的数据集上,决策树容易偏向于选择取值较多的特征进行分割。
决策树的改进:随机森林与梯度提升树
为了克服单棵决策树的不足,集成学习方法如随机森林(Random Forest) 和梯度提升树(Gradient Boosting Trees) 被提出。
随机森林通过构建多棵决策树并对其结果进行投票来提高模型的鲁棒性和精度;梯度提升树则通过迭代地优化树模型来最小化损失函数,从而获得更好的预测效果。
标签:剪枝,水果,机器,增益,简析,数据,节点,决策树 From: https://blog.csdn.net/Lewiz_124/article/details/141269159