机器学习算法 —— 决策树

一、简介

  决策树,英文名为Decision Tree,是一种有监督分类算法。在决策树算法中,需要先构建一个树形结构,其中每个结点都代表某一特征值的一种结果,故命名为决策树。决策树是机器学习中的一个重要分类方法。


二、原理

  首先看一个例子,根据一个人的年龄、信用等级、收入、是否是学生,来判断他是否会买电脑:

RID Age Credit_Rating Income Student Buy_Computer
1 youth fair high no no
2 youth excellent high no no
3 middle_aged fair high no yes
4 senior fair medium no yes
5 senior fair low yes yes
6 senior excellent low yes no
7 middle_aged excellent low yes yes
8 youth fair medium no no
9 youth fair low yes yes
10 senior fair medium yes yes
11 youth excellent medium yes yes
12 middle_aged excellent medium no yes
13 middle_aged fair high yes yes
14 senior excellent medium no no
15 youth excellent high yes yes

  将上述表格中的前14组数据作为训练集,第15组作为测试集,将AgeCredit_RatingIncomeStudent作为特征,将Buy_Computer作为标记,利用决策树算法,我们可以构建出如下树结构:
机器学习算法 —— 决策树_第1张图片
  根据这个树,我们就可以根据已知特征值一步步推出标记值。例如对于第15组数据,我们就可以根据生成的决策树按照False → False → True → False的顺序推出,这个人会购买电脑。
  那么我们该如何生成决策树呢?生成决策树时,最关键的一步就是选择让哪个特征的哪个值作为根节点。在此之前,我们需要了解什么是信息熵(Information Entropy)。
  在高中的化学课上,我们知道了熵表示混乱程度,信息熵类似,它表示的是事件的不确定性:信息熵越大,事件的不确定性就越大,那么确定它所需要的信息量就越大。例如对于Age = middle_aged的实例,其信息熵为0,因为其是否会购买电脑的不确定性为0,即所有Age = middle_aged的实例都会购买电脑。
  那么怎么计算信息熵呢?信息熵的计算公式为:
E n t r o p y ( X ) = − ∑ i = 1 n P ( x i ) log ⁡ 2 P ( x i ) {Entropy(X)=-\sum_{i=1}^{n}{P(x_i)\log{_2P(x_i)}}} Entropy(X)=i=1nP(xi)log2P(xi)
由该公式可知,信息熵的取值区间为 [ 0 , log ⁡ 2 n ] {[0,\log{_2n}]} [0,log2n]
  举个例子,假如要预测世界杯的32支球队中哪一支会夺冠,假设每支球队夺冠的概率相同,均为 1 32 {\frac{1}{32}} 321,则根据公式可以算出,信息熵为5,恰好为最大值,这说明当所有事件发生的概率均相同时,我们从中获得的信息量最少,不确定性最大
  让我们回到根节点的选择。根节点的选择有多种算法,常见的有ID3、C4.5、CART等,这里主要讲解ID3算法。ID3算法是通过计算每个特征的信息增益(Information Gain),选择其中最大的作为根节点。公式如下:
I G ( a ) = E n t r o p y ( D ) − E n t r o p y a ( D ) {IG(a)=Entropy(D)-Entropy_a(D)} IG(a)=Entropy(D)Entropya(D)
I G ( a ) {IG(a)} IG(a)为某特征的信息增益, E n t r o p y ( D ) {Entropy(D)} Entropy(D)为原始的信息熵, E n t r o p y a ( D ) {Entropy_a(D)} Entropya(D)为按特征 a {a} a划分的信息熵,其中 E n t r o p y a ( D ) {Entropy_a(D)} Entropya(D)为:
E n t r o p y a ( D ) = ∑ t S v S E n t r o p y ( S v ) {Entropy_a(D)=\sum_{t}\frac{S_v}{S}{Entropy(S_v)}} Entropya(D)=tSSvEntropy(Sv)
其中 t {t} t为特征 a {a} a取值的种数, S {S} S为实例总数, v {v} v为特征 a {a} a的某种取值, S v {S_v} Sv为在所有实例中该种取值的个数。
  继续之前的例子,我们来计算特征Age的信息增益。
E n t r o p y ( D ) = − ( 9 14 log ⁡ 2 ( 9 14 ) + 5 14 log ⁡ 2 ( 5 14 ) ) = 0.940 b i t s {Entropy(D)=-(\frac{9}{14}\log_2(\frac{9}{14})+\frac{5}{14}\log_2(\frac{5}{14}))=0.940bits} Entropy(D)=(149log2(149)+145log2(145))=0.940bits
E n t r o p y A g e ( D ) = − 5 14 × ( 2 5 log ⁡ 2 ( 2 5 ) + 3 5 log ⁡ 2 ( 3 5 ) ) − 4 14 × ( 4 4 log ⁡ 2 ( 4 4 ) + 0 4 log ⁡ 2 ( 0 4 ) ) − 5 14 × ( 3 5 log ⁡ 2 ( 3 5 ) + 2 5 log ⁡ 2 ( 2 5 ) ) {Entropy_{Age}(D)=-\frac{5}{14}×(\frac{2}{5}\log_2(\frac{2}{5})+\frac{3}{5}\log_2(\frac{3}{5}))-\frac{4}{14}×(\frac{4}{4}\log_2(\frac{4}{4})+\frac{0}{4}\log_2(\frac{0}{4}))-\frac{5}{14}×(\frac{3}{5}\log_2(\frac{3}{5})+\frac{2}{5}\log_2(\frac{2}{5}))} EntropyAge(D)=145×(52log2(52)+53log2(53))144×(44log2(44)+40log2(40))145×(53log2(53)+52log2(52))
= 0.694 b i t s {=0.694bits} =0.694bits
I G ( A g e ) = E n t r o p y ( D ) − E n t r o p y A g e ( D ) = 0.940 − 0.694 = 0.246 b i t s {IG(Age)=Entropy(D)-Entropy_{Age}(D)=0.940-0.694=0.246bits} IG(Age)=Entropy(D)EntropyAge(D)=0.9400.694=0.246bits
同理可得:
I G ( C r e d i t ‾ R a t i n g ) = E n t r o p y ( D ) − E n t r o p y C r e d i t ‾ R a t i n g ( D ) = 0.048 b i t s {IG(Credit\underline{\hspace{0.5em}}Rating)=Entropy(D)-Entropy_{Credit\underline{\hspace{0.35em}}Rating}(D)=0.048bits} IG(CreditRating)=Entropy(D)EntropyCreditRating(D)=0.048bits
I G ( I n c o m e ) = E n t r o p y ( D ) − E n t r o p y I n c o m e ( D ) = 0.029 b i t s {IG(Income)=Entropy(D)-Entropy_{Income}(D)=0.029bits} IG(Income)=Entropy(D)EntropyIncome(D)=0.029bits
I G ( S t u d e n t ) = E n t r o p y ( D ) − E n t r o p y S t u d e n t ( D ) = 0.151 b i t s {IG(Student)=Entropy(D)-Entropy_{Student}(D)=0.151bits} IG(Student)=Entropy(D)EntropyStudent(D)=0.151bits
由此可见, I G ( A g e ) > I G ( C r e d i t ‾ R a t i n g ) > I G ( I n c o m e ) > I G ( S t u d e n t ) {IG(Age)>IG(Credit\underline{\hspace{0.5em}}Rating)>IG(Income)>IG(Student)} IG(Age)>IG(CreditRating)>IG(Income)>IG(Student),故应选择特征 A g e {Age} Age作为根节点。

你可能感兴趣的:(机器学习)