机器学习算法 —— 决策树

一、简介

  决策树,英文名为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的实例都会购买电脑。
  那么怎么计算信息熵呢?信息熵的计算公式为:
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作为根节点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
决策树算法是一种广泛应用于分类和回归的机器学习算法,它基于树形结构对样本进行分类或预测。决策树算法的主要思想是通过一系列的判断来对样本进行分类或预测。在决策树中,每个节点表示一个属性或特征,每个分支代表该属性或特征的一个取值,而每个叶子节点代表一个分类或预测结果。 决策树算法的训练过程主要包括以下步骤: 1. 特征选择:根据某种指标(如信息增益或基尼系数)选择最优的特征作为当前节点的分裂属性。 2. 决策树生成:根据选择的特征将数据集分成若干个子集,并递归地生成决策树。 3. 剪枝:通过剪枝操作来提高决策树的泛化性能。 决策树算法的优点包括易于理解和解释、计算复杂度较低、对缺失值不敏感等。但是,决策树算法也存在一些缺点,如容易出现过拟合、对离散数据敏感等。 下面是一个决策树算法的案例:假设我们要根据一个人的年龄、性别、教育程度和职业预测其收入水平(高于或低于50K)。首先,我们需要将这些特征进行编码,将其转换为数值型数据。然后,我们可以使用决策树算法对这些数据进行训练,并生成一个决策树模型。最后,我们可以使用该模型对新的数据进行分类或预测。例如,根据一个人的年龄、性别、教育程度和职业,我们可以使用决策树模型预测该人的收入水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SoCalledHBY

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

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

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

打赏作者

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

抵扣说明:

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

余额充值