决策树一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=1∑kpk(1−pk)=1−∑pk2
这就是样本点 被错分的概率期望,若整个样本集只有一个类别,基尼指数为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(1−P)+(1−P)P=2p(1−P)
现实中并不知道所属类别的概率,用估计值表示:可以用数数来表示 p k = C k ∣ D ∣ p_k = \frac{C_k}{|D|} pk=∣D∣Ck
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)=1−k=1∑2(∣D∣∣Ck∣)2
其中, ∣ C k ∣ ∣ D ∣ \frac{|C_k|}{|D|} ∣D∣∣Ck∣就是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=1∑kpk(1−pk)=1−∑pk2
对于多分类问题,如果对给定的样本集合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)=1−k=1∑2(∣D∣∣Ck∣)2
其中, ∣ C k ∣ ∣ D ∣ \frac{|C_k|}{|D|} ∣D∣∣Ck∣就是 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)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(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(1−P)+(1−P)P=2p(1−P)=2×21×21=0.5
特征1:甜度,阈值0.3分为两组
假设,甜度大于0.2的有6个桃子,其中5个好吃,1个不好吃,甜度小于等于0.2的有4个桃子,都不好吃,列出二叉树。数据集就被分成了D1和D2两个。甜度特征标记为A。
计算甜度特征下的基尼指数:
-
计算数据集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(1−P)+(1−P)P=2p(1−P)=2×65×61=3610
D1占比权重: w 1 = 6 10 w_1=\frac{6}{10} w1=106 -
计算数据集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(1−P)+(1−P)P=2p(1−P)=2×40×61=0
D2占比权重: w 2 = 4 10 w_2=\frac{4}{10} w2=104 -
计算特征为甜度下的基尼指数:
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)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(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。
计算硬度特征下的基尼指数:
-
计算数据集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(1−P)+(1−P)P=2p(1−P)=2×53×52=2512
D1占比权重: w 1 = 5 10 w_1=\frac{5}{10} w1=105 -
计算数据集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(1−P)+(1−P)P=2p(1−P)=2×54×51=258
D1占比权重: w 1 = 5 10 w_1=\frac{5}{10} w1=105 -
计算特征为硬度下的基尼指数:
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)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(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
可知,按照甜度分类比按硬度分类更具有确定性,所以,选择甜度特征为最优特征