机器学习算法 —— 决策树

本文深入解析了决策树算法,一种重要的有监督分类方法。通过实例介绍了如何构建决策树,包括关键概念如信息熵、信息增益,以及ID3算法的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

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


二、原理

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

RIDAgeCredit_RatingIncomeStudentBuy_Computer
1youthfairhighnono
2youthexcellenthighnono
3middle_agedfairhighnoyes
4seniorfairmediumnoyes
5seniorfairlowyesyes
6seniorexcellentlowyesno
7middle_agedexcellentlowyesyes
8youthfairmediumnono
9youthfairlowyesyes
10seniorfairmediumyesyes
11youthexcellentmediumyesyes
12middle_agedexcellentmediumnoyes
13middle_agedfairhighyesyes
14seniorexcellentmediumnono
15youthexcellenthighyesyes

  将上述表格中的前14组数据作为训练集,第15组作为测试集,将AgeCredit_RatingIncomeStudent作为特征,将Buy_Computer作为标记,利用决策树算法,我们可以构建出如下树结构:

  根据这个树,我们就可以根据已知特征值一步步推出标记值。例如对于第15组数据,我们就可以根据生成的决策树按照False → False → True → False的顺序推出,这个人会购买电脑。
  那么我们该如何生成决策树呢?生成决策树时,最关键的一步就是选择让哪个特征的哪个值作为根节点。在此之前,我们需要了解什么是信息熵(Information Entropy)。
  在高中的化学课上,我们知道了熵表示混乱程度,信息熵类似,它表示的是事件的不确定性:信息熵越大,事件的不确定性就越大,那么确定它所需要的信息量就越大。例如对于Age = middle_aged的实例,其信息熵为0,因为其是否会购买电脑的不确定性为0,即所有Age = middle_aged的实例都会购买电脑。
  那么怎么计算信息熵呢?信息熵的计算公式为:
Entropy(X)=−∑i=1nP(xi)log⁡2P(xi) {Entropy(X)=-\sum_{i=1}^{n}{P(x_i)\log{_2P(x_i)}}} Entropy(X)=i=1nP(xi)log2P(xi)
由该公式可知,信息熵的取值区间为[0,log⁡2n]{[0,\log{_2n}]}[0,log2n]
  举个例子,假如要预测世界杯的32支球队中哪一支会夺冠,假设每支球队夺冠的概率相同,均为132{\frac{1}{32}}321,则根据公式可以算出,信息熵为5,恰好为最大值,这说明当所有事件发生的概率均相同时,我们从中获得的信息量最少,不确定性最大
  让我们回到根节点的选择。根节点的选择有多种算法,常见的有ID3、C4.5、CART等,这里主要讲解ID3算法。ID3算法是通过计算每个特征的信息增益(Information Gain),选择其中最大的作为根节点。公式如下:
IG(a)=Entropy(D)−Entropya(D) {IG(a)=Entropy(D)-Entropy_a(D)} IG(a)=Entropy(D)Entropya(D)
IG(a){IG(a)}IG(a)为某特征的信息增益,Entropy(D){Entropy(D)}Entropy(D)为原始的信息熵,Entropya(D){Entropy_a(D)}Entropya(D)为按特征a{a}a划分的信息熵,其中Entropya(D){Entropy_a(D)}Entropya(D)为:
Entropya(D)=∑tSvSEntropy(Sv) {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的某种取值,Sv{S_v}Sv为在所有实例中该种取值的个数。
  继续之前的例子,我们来计算特征Age的信息增益。
Entropy(D)=−(914log⁡2(914)+514log⁡2(514))=0.940bits {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
EntropyAge(D)=−514×(25log⁡2(25)+35log⁡2(35))−414×(44log⁡2(44)+04log⁡2(04))−514×(35log⁡2(35)+25log⁡2(25)) {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.694bits {=0.694bits} =0.694bits
IG(Age)=Entropy(D)−EntropyAge(D)=0.940−0.694=0.246bits {IG(Age)=Entropy(D)-Entropy_{Age}(D)=0.940-0.694=0.246bits} IG(Age)=Entropy(D)EntropyAge(D)=0.9400.694=0.246bits
同理可得:
IG(Credit‾Rating)=Entropy(D)−EntropyCredit‾Rating(D)=0.048bits {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
IG(Income)=Entropy(D)−EntropyIncome(D)=0.029bits {IG(Income)=Entropy(D)-Entropy_{Income}(D)=0.029bits} IG(Income)=Entropy(D)EntropyIncome(D)=0.029bits
IG(Student)=Entropy(D)−EntropyStudent(D)=0.151bits {IG(Student)=Entropy(D)-Entropy_{Student}(D)=0.151bits} IG(Student)=Entropy(D)EntropyStudent(D)=0.151bits
由此可见,IG(Age)>IG(Credit‾Rating)>IG(Income)>IG(Student){IG(Age)>IG(Credit\underline{\hspace{0.5em}}Rating)>IG(Income)>IG(Student)}IG(Age)>IG(CreditRating)>IG(Income)>IG(Student),故应选择特征Age{Age}Age作为根节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SoCalledHBY

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

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

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

打赏作者

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

抵扣说明:

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

余额充值