【机器学习】决策树

V1.0

决策树的概念

决策树是属于用树的形式,在树的每一个内部节点上使用1个划分标准对在该节点上待划分的样本进行划分,划分成2个类别,2堆样本可以作为叶子节点认为其中样本都属于某个分类,也可以继续使用另1个划分标准继续划分

决策树的每个结点的划分标准是通过学习得到的,不需要人工进行设计。

决策树具体划分到何时停止,可以通过决策树的超参数来进行设定,常用的超参数包括决策树的最大深度以及叶子节点最小样本数等。

决策树的结构

决策树的根节点上包含所有待划分样本,决策树中的非叶子节点会进行会进行样本划分,称为内部节点叶子节点上的样本,经过了其父节点(内部节点)的划分,预测为同1种分类

决策树的构建

决策树由根节点不断向下递归构建,不断由父节点生成子节点,子节点可以成为叶子节点,终止划分,也可以成为内部节点,继续划分构建子树。

划分标准的选择

在每个内部节点上要进行样本的划分,需要确定2个关键点:

  1. 根据样本的哪个特征维度进行划分,具体来说,即根据样本特征向量的哪1个维度进行划分
  2. 用于划分的特征维度的阈值是多少

每次分裂1个节点上的样本,需要使用1种方法从划分节点的样本中选取特征维度及阈值。可行的方法可以使用类似其他机器学习的方法最小化1种损失度量,使用某个节点上损失最小的划分方式作为该节点的划分方式。这种划分方式需要能够使得尽可能将某1种或某几种样本较为完全的分离出来。

决策树使用最小化信息熵或者最小化基尼系数的方式来选取1个节点上的划分标准,对每个划分标准都可以求其信息熵或者其基尼系数,并将其进行比较。

对于每1种划分标准所划分出来的左右两堆样本,在每堆样本中统计各个类别的样本的数量,占这堆样本总数的比例,将其作为概率,并以这堆样本中各个类别的概率,来求信息熵或者基尼系数。将左右两堆样本的信息熵或者基尼系数加和,得到这种划分标准的总损失。

信息熵

信息熵的公式如下:
H ( P ) = − ∑ i = 1 n P i ⋅ log ⁡ P i H(P)=-\sum_{i=1}^n{P_i\cdot{\log{P_i}}} H(P)=i=1nPilogPi
信息熵表示一个概率系统的中的事件的概率分散程度概率系统中的各个事件中概率越集中于1个事件或少数某几个事件时信息熵越小概率系统中各个事件的概率分布越平均,且事件数量越多,信息熵越大

基尼系数

基尼系数(Gini Index)的公式如下:
G i n i ( P ) = 1 − ∑ i = 1 n P i 2 Gini(P)=1-\sum_{i=1}^n{{P_i}^2} Gini(P)=1i=1nPi2

基尼系数也可以表示一个概率系统中事件概率的分散程度。当事件概率分布完全集中时即有1个事件的概率是 1 1 1其他事件若有概率为 0 0 0此时基尼系数取得最大值 1 1 1
当概率系统中的事件的概率越分散时,各个事件的概率的平方之和越小,基尼系数越大。

如果划分的2堆样本各自的内部样本分类更集中,集中于某种样本或某几种样本,则这种划分是更有效的,信息熵越小(或基尼系数越小)

内部节点进行划分时需要对其分割的左右两堆样本分别求其信息熵或基尼系数,并以此作为这种划分标准的损失,每个待划分的节点需要选取最优的划分标准,即损失最小的划分标准。

划分标准举例

举1个内部节点划分的例子。设样本有2个维度,共有3个分类A,B和C,各分类分别有 { 5 , 5 , 5 } \{5,5,5\} {5,5,5}个样本,使用标准 S 1 S_1 S1划分的结果如下,左边的的堆中有A,B,C样本 { 4 , 1 , 0 } \{4, 1, 0\} {4,1,0}个,右边有样本 { 1 , 4 , 5 } \{1, 4, 5\} {1,4,5}个,这是1个比较有效的划分,有效的将A样本划分了出来。

划分标准1的信息熵为:
H ( S 1 L e f t ) = − 1.0 ∗ log ⁡ 1.0 = 0 H ( S 1 R i g h t ) = − ( 0.1 ∗ log ⁡ 0.1 + 0.4 ∗ log ⁡ 0.4 + 0.5 ∗ log ⁡ 0.5 ) ≈ 0.3010 H ( S 1 ) = H ( S 1 L e f t ) + H ( S 1 R i g h t ) = 0.3010 \begin{align} H(S_{1_{Left}})&=-1.0*\log{1.0}=0\\ H(S_{1_{Right}})&=-(0.1*\log{0.1}+0.4*\log{0.4}+0.5*\log{0.5})\approx0.3010\\ H(S_1)&=H(S_{1_{Left}})+H(S_{1_{Right}})=0.3010\\ \end{align} H(S1Left)H(S1Right)H(S1)=1.0log1.0=0=(0.1log0.1+0.4log0.4+0.5log0.5)0.3010=H(S1Left)+H(S1Right)=0.3010

再来看另1种划分标准,同样A,B,C 的3种样本,左边的堆中有A,B,C样本分别为 { 2 , 2 , 2 } \{2, 2, 2\} {2,2,2}个,右边的堆种有A、B、C样本 { 3 , 3 , 3 } \{3, 3, 3\} {3,3,3}个,这不是1个很有效的划分标准,因为没有能够使得某种样本或某几种样本被区分出来,左右两堆样本的信息熵较大

划分标准 S 2 S_2 S2的信息熵为:
H ( S 2 L e f t ) = − ( 1 3 ∗ log ⁡ 1 3 + 1 3 ∗ log ⁡ 1 3 + 1 3 ∗ log ⁡ 1 3 ) ≈ 0.4771 H ( S 2 R i g h t ) = − ( 1 3 ∗ log ⁡ 1 3 + 1 3 ∗ log ⁡ 1 3 + 1 3 ∗ log ⁡ 1 3 ) ≈ 0.4771 H ( S 2 ) = H ( S 2 L e f t ) + H ( S 2 R i g h t ) = 0.9542 \begin{align} H(S_{2_{Left}})&=-(\frac{1}{3}*\log{\frac{1}{3}}+\frac{1}{3}*\log{\frac{1}{3}}+\frac{1}{3}*\log{\frac{1}{3}})\approx0.4771\\ H(S_{2_{Right}})&=-(\frac{1}{3}*\log{\frac{1}{3}}+\frac{1}{3}*\log{\frac{1}{3}}+\frac{1}{3}*\log{\frac{1}{3}})\approx0.4771\\ H(S_2)&=H(S_{2_{Left}})+H(S_{2_{Right}})=0.9542\\ \end{align} H(S2Left)H(S2Right)H(S2)=(31log31+31log31+31log31)0.4771=(31log31+31log31+31log31)0.4771=H(S2Left)+H(S2Right)=0.9542
在这种情况下,选择划分标准 S 1 S_1 S1更好,因为其将A类样本更好的划分了出来(分类中混杂的B类样本可以进一步进行划分),左右2堆样本中种类更集中,信息熵更小。

节点划分标准的选择流程

循环选取特征维度  i   各个样本按特征维度  i  进行从小到大排序 循环选取排序后的第  k  个样本的维度  i  的数值将 x k , i 作为阈值,将该节点上的样本划分为 2 堆 划分的 2 堆样本分别求信息熵 H L e f t 和 H R i g h t ,并加和得到该划分的信息熵损失  H   若  H  优于现在的保存结果 保存信息熵  H  ,划分特征维度  i  ,以及划分阈值 x k , i \begin{align} &循环选取特征维度\ {i}\ \\ &\quad{各个样本按特征维度\ {i}\ 进行从小到大排序}\\ &\quad循环选取排序后的第\ k\ 个样本的维度\ i\ 的数值将x_{k,i}作为阈值,将该节点上的样本划分为2堆\\ &\quad划分的2堆样本分别求信息熵H_{Left}和H_{Right},并加和得到该划分的信息熵损失\ H\ \\ &\quad若\ H\ 优于现在的保存结果\\ &\quad\quad保存信息熵\ H\ ,划分特征维度\ i\ ,以及划分阈值x_{k,i} \end{align} 循环选取特征维度 i 各个样本按特征维度 i 进行从小到大排序循环选取排序后的第 k 个样本的维度 i 的数值将xk,i作为阈值,将该节点上的样本划分为2划分的2堆样本分别求信息熵HLeftHRight,并加和得到该划分的信息熵损失 H  H 优于现在的保存结果保存信息熵 H ,划分特征维度 i ,以及划分阈值xk,i

决策树分裂过程的停止

一般来说,如果不加控制,决策树可以分裂到叶子节点中只有1个样本。

可以通过控制超参数来使得决策树的分裂过程提前终止,这些超参数包括决策树的最大深度决策树的最大叶子节点数(即决策树的最大叶子结点总数),内部节点分裂所需要的最小样本数(一个节点中的样本需要大于等于这个数量才能进行分裂,不然将作为叶子节点),叶子节点中的最小样本数等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YoseZang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值