机器学习之决策树

博客核心介绍决策树构建的三种方法,包括ID3算法,通过信息增益选取分裂特征;C4.5算法,解决了ID3无法处理连续型特征等不足,依据信息增益率选取分裂特征;CART算法,分支特征度量指标是Gini指标。

这里仅做核心介绍,关于决策树的详细介绍请看其他机器学习书籍。
决策树的构建根据其分支依据(ID3算法, C4.5算法, CART算法)大致有三种方法:

一、ID3算法:

ID3算法是说在树分裂时选取能获得最高信息增益的特征进行分裂。什么意思呢?就是说我们要建立决策树嘛,首先得找一个特征做为树根,对于众多的特征,到底选哪个呢?当选择某个特征feature_1做为树根时,分裂的分支数就是feature_1特征的取值种类,那么到第二层选择分裂节点时又面临当初选择树根时的抉择。聪明的科学家们发现如果我们用一个叫做信息增益的东西来选取根节点,决策树构建即快又矮。那什么是信息增益呢?
首先从熵谈起:

1.熵

在决策树的构建中我们可以理解熵就是用来衡量样本纯度的指标:
Entropy(S)=−∑i=1Npilog2(pi);pi=∣Ci∣n Entropy(S) = - \sum_{i=1}^N p_i log_2(p_i);\quad p_i = \frac{\vert C_i \vert}{n}Entropy(S)=i=1Npilog2(pi);pi=nCi
其中:Ci 表示i类的样本数,n表示样本总数。假设我们有m类,每一类样本所占的比列就是pi。

2.信息增益

信息增益就是计算分支属性对于样本集分类好坏程度的度量:
Gain(S,feature1)=Entropy(S)−∑i=1n∣Si∣∣S∣Entropy(Si) Gain(S, feature_1) = Entropy(S) - \sum_{i=1}^n \frac{\lvert S_i \lvert}{\lvert S \lvert} Entropy(S_i) Gain(S,feature1)=Entropy(S)i=1nSSiEntropy(Si)
其中:
∑i=1n∣Si∣∣S∣Entropy(Si)\sum_{i=1}^n \frac{\lvert S_i \lvert}{\lvert S \lvert} Entropy(S_i)i=1nSSiEntropy(Si) 表示依据feature_1划分后的总信息熵。
Entropy(S)Entropy(S)Entropy(S) 表示划分前的总信息熵。
使得Gain(S, feature_1)最大的那个特征即为本次选择的分裂特征。

二、C4.5算法

ID3存在两个缺点:
1.无法处理连续型特征。
2.使用信息增益作为分裂的依据,会导致模型在选择分裂特征时,倾向于选择分叉比较多的特征。
C4.5解决了ID3存在的不足。在C4.5中提出了“分裂信息”的概念。
SplitInfoA(S)=−∑j=1m∣Si∣∣S∣log2∣Si∣∣S∣ SplitInfo_A(S) = - \sum_{j=1}^m \frac{\lvert S_i \lvert}{\vert S \vert}log_2 \frac{\lvert S_i \lvert}{\vert S \vert}SplitInfoA(S)=j=1mSSilog2SSi
其中,训练数据集S通过特征A的m种取值将数据集划分为m个子数据集,|Sj|表示第j个子数据集中的样本个数,|S|表示划分之前数据集中样本总数量。
而通过特征A分裂之后样本集的信息增益为:
InfoGain(S,A)=E(S)−EA(S)InfoGain(S, A) = E(S) - E_A(S)InfoGain(S,A)=E(S)EA(S)
则通过特征A分裂后样本集的信息增益率为:
InfoGainRation(S,A)=InfoGain(S,A)SplitInfoA(S)InfoGainRation(S, A) = \frac{InfoGain(S, A)}{SplitInfo_A(S)}InfoGainRation(S,A)=SplitInfoA(S)InfoGain(S,A)
C4.5就是根据InfoGainRation来作为选取分离特征的依据的。通过C4.5算法构造决策树时,信息增益率最大的特征即为当前节点的分裂特征,随着递归计算,到后期则选择相对比较大的信息增益率的特征作为分裂特征。

三、CART算法

CART算法在分支处理中分支特征的度量指标是Gini指标:
Gini(S)=1−∑i=1mpi2;pi=∣Ci∣∣S∣ Gini(S) = 1 - \sum_{i=1}^m p_i^2; \quad p_i = \frac{\lvert C_i \lvert}{\vert S \vert}Gini(S)=1i=1mpi2;pi=SCi
列如:feature有两种取值,则该特征作为分支特征,其Gini指标为:
Gini(feature)=∣S1∣∣S∣Gini(S1)+∣S2∣∣S∣Gini(S2)Gini(feature) = \frac{\lvert S_1 \lvert}{\lvert S \lvert} Gini(S_1) + \frac{\lvert S_2 \lvert}{\lvert S \lvert}Gini(S_2) Gini(feature)=SS1Gini(S1)+SS2Gini(S2)

上述内容只是讲述了决策树中常见的分裂算法;此外,决策树含有很多其它特性值得我们去探索。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值