决策树一CART算法(第一部分)

决策树一CART算法(第一部分)


CART算法简介

CART算法是机器学习十大算法之一,这个方法的创始人Leo Breiman

CART算法展开就是Classification and Regression Tree,对应的就是分类与回归树,用树 形结构来解决分类和回归的问题。

如果输出变量是离散的,对应的就是分类问题。
如果输出变量是连续的,对应的就是回归问题。

CART算法分为三步走:选择特征、生成决策树、剪枝

在CART算法中,树形结构是二叉树模型,通常左边为「是 」,右 边为 「否」。

特征选择-基尼指数

​ ID3 算 法 通 过 信 息 增 益 求 特 征 、 C4.5 通 过 信 息 增 益 比 求 特 征 , 而 在 C A RT 算 法 中 , 是 通 过 基 尼 指 数来选择最优特征的。基尼指数越大代表其具有更高的不确定性,反之,则越具有确定性。

​ 假设有K 个类,样本点属于k第 类的概率为 p k p_k pk,权重赋值为 p i p_i pi,概率分布的基尼指数定义为:

类别 1 2 3 k
所属类别概率 P1 P2 P3 PK
不属该类概率 1-P1 1-P2 1-P3 1-PK
基尼指数 P1(1-P1) P2(1-P2) P3(1-P3) PK(1-PK)

G i n i ( p ) = ∑ k = 1 k p k ( 1 − p k ) = 1 − ∑ p k 2 Gini(p)=\sum_{k=1}^{k}p_k(1-p_k)=1-\sum p_k^2 Gini(p)=k=1kpk(1pk)=1pk2

这就是样本点 被错分的概率期望,若整个样本集只有一个类别,基尼指数为0,表示样本集纯度达到最高值。

对于二类分类问题

类别 1 2
所属类别概率 P 1-p
不属该类概率 1-p p
权重赋值为所属类别概率 P(1-P) (1-P)P

基 尼 指 数 : G i n i ( p ) = P ( 1 − P ) + ( 1 − P ) P = 2 p ( 1 − P ) 基尼指数:Gini(p)=P(1-P)+(1-P)P=2p(1-P) Gini(p)=P(1P)+(1P)P=2p(1P)

现实中并不知道所属类别的概率,用估计值表示:可以用数数来表示 p k = C k ∣ D ∣ p_k = \frac{C_k}{|D|} pk=DCk

D D D样本总个数, C k C_k Ck表示所属第k类的值

如果对给定的样本集合D,可以分为两个子集C1和C2:
经 验 形 式 的 基 尼 指 数 : G i n i ( D ) = 1 − ∑ k = 1 2 ( ∣ C k ∣ ∣ D ∣ ) 2 经验形式的基尼指数:Gini(D)=1-\sum_{k=1}^2(\frac{|C_k|}{|D|})^2 Gini(D)=1k=12(DCk)2
其中, ∣ C k ∣ ∣ D ∣ \frac{|C_k|}{|D|} DCk就是p的经验值

对于多类分类问题
G i n i ( p ) = ∑ k = 1 k p k ( 1 − p k ) = 1 − ∑ p k 2 Gini(p)=\sum_{k=1}^{k}p_k(1-p_k)=1-\sum p_k^2 Gini(p)=k=1kpk(1pk)=1pk2
对于多分类问题,如果对给定的样本集合D,可以分为K个子集: C 1 , C 2 , . . . . . , C K C_1,C_2, ..... ,C_K C1,C2,.....,CK,其基尼指数为
经 验 形 式 的 基 尼 指 数 : G i n i ( D ) = 1 − ∑ k = 1 2 ( ∣ C k ∣ ∣ D ∣ ) 2 经验形式的基尼指数:Gini(D)=1-\sum_{k=1}^2(\frac{|C_k|}{|D|})^2 Gini(D)=1k=12(DCk)2
其中, ∣ C k ∣ ∣ D ∣ \frac{|C_k|}{|D|} DCk就是 p k p_k pk的经验值

用基尼指数的最小化来选出最优特征

​ 对于特征A条件下,样本集D的基尼指数为:
Gini ⁡ ( D , A ) = ∣ D 1 ∣ ∣ D ∣ Gini ⁡ ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ Gini ⁡ ( D 2 ) \operatorname{Gini}(D, A)=\frac{\left|D_{1}\right|}{|D|} \operatorname{Gini}\left(D_{1}\right)+\frac{\left|D_{2}\right|}{|D|} \operatorname{Gini}\left(D_{2}\right) Gini(D,A)=DD1Gini(D1)+DD2Gini(D2)
例如:有10个桃子,分为两类:好吃和不好吃,5个好吃,5个不好吃。
基 尼 指 数 : G i n i ( p ) = P ( 1 − P ) + ( 1 − P ) P = 2 p ( 1 − P ) = 2 × 1 2 × 1 2 = 0.5 基尼指数:Gini(p)=P(1-P)+(1-P)P=2p(1-P)=2\times\frac{1}{2}\times\frac{1}{2}=0.5 Gini(p)=P(1P)+(1P)P=2p(1P)=2×21×21=0.5
特征1:甜度,阈值0.3分为两组

假设,甜度大于0.2的有6个桃子,其中5个好吃,1个不好吃,甜度小于等于0.2的有4个桃子,都不好吃,列出二叉树。数据集就被分成了D1和D2两个。甜度特征标记为A。
在这里插入图片描述

计算甜度特征下的基尼指数:

  1. 计算数据集D1的基尼指数 :
    G i n i ( D 1 ) = P ( 1 − P ) + ( 1 − P ) P = 2 p ( 1 − P ) = 2 × 5 6 × 1 6 = 10 36 Gini(D1)=P(1-P)+(1-P)P=2p(1-P)=2\times\frac{5}{6}\times\frac{1}{6}=\frac{10}{36} Gini(D1)=P(1P)+(1P)P=2p(1P)=2×65×61=3610
    D1占比权重: w 1 = 6 10 w_1=\frac{6}{10} w1=106

  2. 计算数据集D2的基尼指数 :
    G i n i ( D 2 ) = P ( 1 − P ) + ( 1 − P ) P = 2 p ( 1 − P ) = 2 × 0 4 × 1 6 = 0 Gini(D2)=P(1-P)+(1-P)P=2p(1-P)=2\times\frac{0}{4}\times\frac{1}{6}=0 Gini(D2)=P(1P)+(1P)P=2p(1P)=2×40×61=0
    D2占比权重: w 2 = 4 10 w_2=\frac{4}{10} w2=104

  3. 计算特征为甜度下的基尼指数:
    Gini ⁡ ( D , A ) = ∣ D 1 ∣ ∣ D ∣ Gini ⁡ ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ Gini ⁡ ( D 2 ) \operatorname{Gini}(D, A)=\frac{\left|D_{1}\right|}{|D|} \operatorname{Gini}\left(D_{1}\right)+\frac{\left|D_{2}\right|}{|D|} \operatorname{Gini}\left(D_{2}\right) Gini(D,A)=DD1Gini(D1)+DD2Gini(D2)

    Gini ⁡ ( D , A ) = 6 10 × 10 36 + 4 10 × 0 = 0.17 \operatorname{Gini}(D, A)=\frac{6}{10}\times\frac{10}{36}+\frac{4}{10}\times 0=0.17 Gini(D,A)=106×3610+104×0=0.17

特征硬度,分软硬两组:

假设,有5个硬桃子,其中2个好吃,3个不好吃,5个软桃子中,有3个好吃,2个不好吃。那
么继续列出一个二叉树,这里我们把硬度特征标记为B。
在这里插入图片描述
计算硬度特征下的基尼指数:

  1. 计算数据集D1的基尼指数 :
    G i n i ( D 1 ) = P ( 1 − P ) + ( 1 − P ) P = 2 p ( 1 − P ) = 2 × 3 5 × 2 5 = 12 25 Gini(D1)=P(1-P)+(1-P)P=2p(1-P)=2\times\frac{3}{5}\times\frac{2}{5}=\frac{12}{25} Gini(D1)=P(1P)+(1P)P=2p(1P)=2×53×52=2512
    D1占比权重: w 1 = 5 10 w_1=\frac{5}{10} w1=105

  2. 计算数据集D2的基尼指数 :
    G i n i ( D 1 ) = P ( 1 − P ) + ( 1 − P ) P = 2 p ( 1 − P ) = 2 × 4 5 × 1 5 = 8 25 Gini(D1)=P(1-P)+(1-P)P=2p(1-P)=2\times\frac{4}{5}\times\frac{1}{5}=\frac{8}{25} Gini(D1)=P(1P)+(1P)P=2p(1P)=2×54×51=258
    D1占比权重: w 1 = 5 10 w_1=\frac{5}{10} w1=105

  3. 计算特征为硬度下的基尼指数:

Gini ⁡ ( D , B ) = ∣ D 1 ∣ ∣ D ∣ Gini ⁡ ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ Gini ⁡ ( D 2 ) \operatorname{Gini}(D, B)=\frac{\left|D_{1}\right|}{|D|} \operatorname{Gini}\left(D_{1}\right)+\frac{\left|D_{2}\right|}{|D|} \operatorname{Gini}\left(D_{2}\right) Gini(D,B)=DD1Gini(D1)+DD2Gini(D2)

Gini ⁡ ( D , B ) = 1 2 × 12 25 + 1 2 × 8 25 = 0.4 \operatorname{Gini}(D, B)=\frac{1}{2}\times\frac{12}{25}+\frac{1}{2}\times\frac{8}{25}=0.4 Gini(D,B)=21×2512+21×258=0.4

比较
Gini ⁡ ( D , A ) < Gini ⁡ ( D , B ) \operatorname{Gini}(D, A)<\operatorname{Gini}(D, B) Gini(D,A)<Gini(D,B)

0.17 < 0.4 0.17<0.4 0.17<0.4

可知,按照甜度分类比按硬度分类更具有确定性,所以,选择甜度特征为最优特征

猜你喜欢

转载自blog.csdn.net/qq_44795788/article/details/124668000