决策树模型之ID3算法、C4.5算法和CART算法

决策树模型是一种常用的有监督的学习模型,其主要用来解决分类问题,但是也可用来解决回归问题。

信息熵和信息增益

我们先来了解两个概念,信息熵与信息增益。

信息熵
信息熵用来表示事物的不确定性或不纯性,信息熵越大,则表示该事物的不确定性或不纯性越大。

信息熵的公式为: H ( x ) = − ∑ i = 1 n p i l o g p i H(x)=-\sum_{i=1}^{n}p_ilogp_i H(x)=i=1npilogpi

举个例子:有两个集合,A集合[1,1,1,1,1,1,3],B集合[1,2,3,4,5,6,7],显然A集合的熵值要比B集合小得多,因为A集合只有两类,B集合有七类,相对来说A集合的不确定性要比B集合小,因此A集合的熵值更小。同样,我们在进行分类问题时,也希望通过节点分类后,数据的不确定性变小。

信息增益

简单来说,信息增益就是熵值变化的大小,即一个特征带来的熵值变化。

信息增益公式: I ( x , y ) = H ( x ) − H ( x ∣ y ) I(x,y)=H(x)-H(x|y) I(x,y)=H(x)H(xy)

信息熵和信息增益计算方法:

举个例子:
决策树模型之ID3算法、C4.5算法和CART算法_第1张图片
这是一份一个同学这14天打球的情况,其中“play”是标签,其他是特征。在分裂之前,14天中,有9天打球,5天不打球,所以,此时的熵值为:

− 9 14 l o g 2 9 14 − 5 14 l o g 2 5 14 = 0.940 -\frac{9}{14}log_2\frac{9}{14}-\frac{5}{14}log_2\frac{5}{14}=0.940 149log2149145log2145=0.940

如果按照“天气”特征进行分裂,分裂后结果为:
决策树模型之ID3算法、C4.5算法和CART算法_第2张图片
Outlook = sunny时,熵值为0.971
Outlook = overcast时,熵值为0
Outlook = rainy时,熵值为0.971
Outlook为sunny、overcast、rainy的概率分别为5/14,4/14,5/14

因此,总熵值为: 5 / 14 ∗ 0.971 + 4 / 14 ∗ 0 + 5 / 14 ∗ 0.971 = 0.693 5/14*0.971+4/14*0+5/14*0.971=0.693 5/140.971+4/140+5/140.971=0.693
因此,信息增益为: 0.940 − 0.693 = 0.247 0.940-0.693=0.247 0.9400.693=0.247

ID3算法

ID3算法就是以“信息熵”和“信息增益”为核心的贪心算法。ID3算法通过计算每个属性的信息增益,认为信息增益高的是好属性,每次划分选取信息增益最高的属性为划分标准,重复这个过程,直至生成一个能完美分类训练样例的决策树。

如上面的例子,ID3算法将依次计算按照4个特征分裂后的信息增益,选取最大的信息增益的特征作为分裂的根节点,然后再次求出不同叶子节点按照不同特征划分的信息增益,选取信息增益最大的特征进行分裂,不断重复,直至模型训练完成。简单来说:ID3算法是以“信息增益”作为分类标准的算法。

ID3算法的缺点:
1.不能处理连续值。 ID3算法中的特征只能是类别数据,如果是连续值,ID3算法将会把每个值作为一个类进行处理。
2.容易偏向取值较多的特征。 因为取值较多的特征的熵值更大,对其进行分类后熵值减小的数值容易较大,因此,ID3算法在进行特征选取时,容易偏向取值较多的特征。
3.容易发生过拟合,且只能进行分类不能进行回归。
4.使用了熵模型,涉及大量的对数运算,比较耗时。

C4.5算法

C4.5算法在ID3算法的基础上主要进行了如下改进:
1.将连续值离散化,用以处理连续特征。
2.使用信息增益率作为选取特征的标准,从而避免了ID3算法中容易偏向取值较多特征的缺点。

C4.5算法中连续值离散化过程:
1.加入特征A有m个点,先对特征A进行排序:a1,a2,a3······am;
2.取相邻两个点的均值作为划分点,共计m-1个划分点,其中第i个划分点使用 T i = a i + a i + 1 2 T_i=\frac{a_i+a_{i+1}}{2} Ti=2ai+ai+1 表示;
3.分别计算着m-1个点的信息增益,选择信息增益最大的点作为该连续特征的二元离散分类点。

信息增益率
信息增益率即信息增益与特征熵的比值: I R ( D , A ) = I ( A , D ) H A ( D ) I_R(D,A)=\frac{I(A,D)}{H_A(D)} IR(D,A)=HA(D)I(A,D)

C4.5算法的缺点:
1.和ID3算法一样,只能处理分类问题,不能处理回归问题。
2.同样使用了熵模型,比较耗时。
3.生成的是多叉树。

CART算法

CART算法既能处理分类问题,也能处理回归问题。
CART算法与C4.5算法类似,不同的是CART算法使用基尼系数作为特征选择的依据,并且在处理连续值时,生成的是二叉树而非多叉树。

基尼系数(Gini)
如果一个样本D,共有K个类别,第K个类别的数量为 C K C_K CK,第K个类别的概率为 P K P_K PK:

G i n i ( P ) = ∑ K = 1 K P K ( 1 − P K ) = 1 − ∑ K = 1 K P K 2 Gini(P)=\sum_{K=1}^{K}P_K(1-P_K)=1-\sum_{K=1}^{K}P_K^2 Gini(P)=K=1KPK(1PK)=1K=1KPK2

即: G i n i ( D ) = 1 − ∑ K = 1 K ( C K D ) 2 Gini(D)=1-\sum_{K=1}^{K}(\frac{C_K}{D})^2 Gini(D)=1K=1K(DCK)2

对于样本D,根据特征A的某个值a,将D分为D1和D2,则在特征A下,D的基尼系数为:

G i n i ( D , A ) = D 1 D G i n i ( D 1 ) + D 2 D G i n i ( D 2 ) Gini(D,A)=\frac{D_1}{D}Gini(D_1)+\frac{D_2}{D}Gini(D_2) Gini(D,A)=DD1Gini(D1)+DD2Gini(D2)

CART回归:
CART回归树和CART分类树相似,不同之处在于:
1.连续值的处理方式不同:
CART回归树的度量目标是:对于任意特征A,对应任意划分点S两边划分成的数据集D1和D2,求出是D1和D2各自集合的均方差最小;同时,D1和D2的均方差之和最小所对应的特征和特征值划分点,表达式为:
m i n A , S [ m i n C 1 ∑ x i ∈ D 1 ( A , S ) ( y i − C 1 ) 2 + m i n C 2 ∑ x i ∈ D 2 ( A , S ) ( y i − C 2 ) 2 ] \underset{A,S}{min}\left [ \underset{C_1}{min}\sum_{x_i\in D_1(A,S)}(y_i-C_1)^2+\underset{C_2}{min}\sum_{x_i\in D_2(A,S)}(y_i-C_2)^2 \right ] A,Smin[C1minxiD1(A,S)(yiC1)2+C2minxiD2(A,S)(yiC2)2]
其中,C1为D1的均值,C2为D2的均值。
2.决策树建立后的预测方式不同:
分类树的预测按照投票方式进行,而回归树采用最终叶子节点的均值或中位数作为最终预测结果。

你可能感兴趣的:(机器学习,算法,算法,信息熵,决策树,机器学习)