决策树解决的是机器学习领域监督学习的分类问题,即:Machine_Learning: Supervised_Learning: Classification problem
举例如下:
e . g . e.g. e.g. 我们要根据所给出的 三个因素(贷款、婚姻情况、税收) 与 Label(欺诈与否) 构造决策树,从而判定是否贷款为欺诈。有数据库示例如下:
构成的 决策树 Decision Tree 如下:
假设需要你用决策树来判断下一项是否为欺诈:
根据三个属性的值,即 没有贷款 已婚 税收为82K
我们根据从 训练集(training set) 训练好的 决策树模型(Decision Tree) 来判断,其不为欺诈。
下一步,我们需要考虑的是,如何构成的决策树呢???
这里就需要引入几个概念,熵 Entropy,条件熵,信息增益与构建决策树。
其实关于熵的具体详细内容,我在博客 【ML27】Entropy 熵 有详细提及与举例,所以在这里只会简单介绍熵是什么,熵的作用以及熵与信息增益和对决策树有什么影响?
熵 代表着 不确定性,是一个很有意思的概念,可以先带着这个 “不确定性” 的概念往下看看 e . g . e.g. e.g.
e . g . e.g. e.g. 假设明天要出去郊游,那么明天的天气就至关重要。
假设 事件A 为 明天下雨,那么 事件A的熵 就代表着事件A的不确定性。而我们都知道一般来说阴天的话很有可能下雨。所以若我假设 事件B 为 明天阴天,那么条件概率 P ( A ∣ B ) P(A|B) P(A∣B) 即为 明天阴天的话下雨的概率,其 条件熵 为代表着 明天要是阴天的话下雨的不确定性。我们很清楚,要是知道明天阴天的话,其下雨的可能性会增大,所以其不确定性会降低,那么该条件熵(A|B)就不会很大。
第一次极有可能没有看明白上面在说啥,没关系,你可能需要结合几个概念一起去理解:
且有熵的公式为:
H ( p 1 ) = − p 1 l o g 2 ( p 1 ) − ( 1 − p 1 ) l o g 2 ( 1 − p 1 ) H(p_1)=-p_1log_2(p_1)-(1-p_1)log_2(1-p_1) H(p1)=−p1log2(p1)−(1−p1)log2(1−p1)
e . g . e.g. e.g. 还是没有理解如何计算熵,希望这个案例可以帮到你:
信息增益,为 Information Gain,我在博客 【ML28】信息增益 Information Gain 中也有详细介绍。综合来说,信息增益为 熵-条件熵,其变现的是 信息的不确定性减少的程度。
而我们再结合上述的熵的案例来看:
e . g . e.g. e.g. 假设明天要出去郊游,那么明天的天气就至关重要。
假设 事件A 为 明天下雨,那么 事件A的熵 就代表着事件A的不确定性。而我们都知道一般来说阴天的话很有可能下雨。所以若我假设 事件B 为 明天阴天,那么条件概率 P ( A ∣ B ) P(A|B) P(A∣B) 即为 明天阴天的话下雨的概率,其 条件熵 为代表着 明天要是阴天的话下雨的不确定性。我们很清楚,要是知道明天阴天的话,其下雨的可能性会增大,所以其不确定性会降低,那么该条件熵(A|B)就不会很大。
信息增益 = 熵 − 条件熵 信息增益 = 熵-条件熵 信息增益=熵−条件熵
其相减得到的值为信息量的变化,所以 P ( A ) − p ( A ∣ B ) P(A)-p(A|B) P(A)−p(A∣B) 就是知道 明天阴天后下雨 的概率的变化。这个变化值很大,说明的是明天阴天这件事对于整个事件(事件A:下雨)充当着决定性的作用,即该事件(事件B:阴天)是非常非常重要的。
所以根据信息增益就一句话:
信息增益越大,那么说明的是条件概率下的条件越重要。
说完了熵、条件熵是什么以及信息增益如何通过熵与条件熵来计算,下面我们回归正题,如何通过信息增益来构建决策树?
构建决策树的准则,是先来考虑信息增益较大的,因为信息增益大意味着该条件越为重要。
e . g . e.g. e.g. 我们还是来看这个案例,尝试通过计算其熵、条件熵来求得其信息增益,然后通过信息增益大小构建决策树。
首先罗列出相关公式:
信息增益 = 熵 − 条件熵 信息增益 = 熵-条件熵 信息增益=熵−条件熵
H ( p 1 ) = − p 1 l o g 2 ( p 1 ) − ( 1 − p 1 ) l o g 2 ( 1 − p 1 ) H(p_1)=-p_1log_2(p_1)-(1-p_1)log_2(1-p_1) H(p1)=−p1log2(p1)−(1−p1)log2(1−p1)
然后观察上表,我们的通过 三个因素-(贷款、婚姻情况、税收),去判断 欺诈与否(Fraud)。所以我们的不确定性(熵)在于不确定是否为欺诈,所以根据有:
H ( F r a u d ) = − 3 10 l o g 2 ( 3 10 ) − 7 10 l o g 2 ( 7 10 ) = 0.881 H(Fraud)=-\frac 3 {10} log_2(\frac 3 {10})-\frac 7 {10} log_2(\frac 7 {10})=0.881 H(Fraud)=−103log2(103)−107log2(107)=0.881
求条件熵1: Refund-Fraud,已知为欺诈的调价下,其贷款与否对是否构成诈骗的影响力,若影响力很大,那么条件熵的值不会很大,且信息增益会较大。
因为贷款与否为两种可能,所以我们要区分贷款对欺诈的影响力,以及不贷款对欺诈的影响力,最后根据占比对其进行加权平均:
H ( F r a u d R e f u n d Y e s ) = − 0 3 l o g 2 ( 0 3 ) − 3 3 l o g 2 ( 3 3 ) = 0 H(FraudRefundYes)=-\frac 0 {3} log_2(\frac 0 {3})-\frac 3 {3} log_2(\frac 3 {3})=0 H(FraudRefundYes)=−30log2(30)−33log2(33)=0
H ( F r a u d R e f u n d N o ) = − 4 7 l o g 2 ( 4 7 ) − 3 7 l o g 2 ( 3 7 ) = 0.985 H(FraudRefundNo)=-\frac 4 {7} log_2(\frac 4 {7})-\frac 3 {7} log_2(\frac 3 {7})=0.985 H(FraudRefundNo)=−74log2(74)−73log2(73)=0.985
加权平均为:
H ( F r a u d R e f u n d ) = 3 10 ∗ 0 + 7 10 ∗ 0.985 = 0.690 H(FraudRefund)=\frac 3 {10} * 0+\frac 7 {10} * 0.985=0.690 H(FraudRefund)=103∗0+107∗0.985=0.690
所以,信息增益为:
H ( F r a u d ) − H ( F r a u d R e f u n d ) = 0.881 − 0.690 = 0.191 H(Fraud)-H(FraudRefund)=0.881-0.690=0.191 H(Fraud)−H(FraudRefund)=0.881−0.690=0.191
同样,我们来计算条件熵2:Refund-Marital Status
H ( F r a u d M a r t i a l S i n g l e ) = − 2 4 l o g 2 ( 2 4 ) − 2 4 l o g 2 ( 2 4 ) = 1 H(FraudMartialSingle)=-\frac 2 {4} log_2(\frac 2 {4})-\frac 2 {4} log_2(\frac 2 {4})=1 H(FraudMartialSingle)=−42log2(42)−42log2(42)=1
H ( F r a u d M a r t i a l M a r r i e d ) = − 0 4 l o g 2 ( 0 4 ) − 4 4 l o g 2 ( 4 4 ) = 0 H(FraudMartialMarried)=-\frac 0 {4} log_2(\frac 0 {4})-\frac 4 {4} log_2(\frac 4 {4})=0 H(FraudMartialMarried)=−40log2(40)−44log2(44)=0
H ( F r a u d M a r t i a l D i v o r c e d ) = − 1 2 l o g 2 ( 1 2 ) − 1 2 l o g 2 ( 1 2 ) = 1 H(FraudMartialDivorced)=-\frac 1 {2} log_2(\frac 1 {2})-\frac 1 {2} log_2(\frac 1 {2})=1 H(FraudMartialDivorced)=−21log2(21)−21log2(21)=1
加权平均为:
H ( F r a u d M a r t i a l ) = 4 10 ∗ 1 + 4 10 ∗ 0 + 2 10 ∗ 1 = 0.6 H(FraudMartial)=\frac 4 {10} * 1+\frac 4 {10} * 0+\frac 2 {10}*1=0.6 H(FraudMartial)=104∗1+104∗0+102∗1=0.6
所以,信息增益为:
H ( F r a u d ) − H ( F r a u d R e f u n d ) = 0.881 − 0.600 = 0.281 H(Fraud)-H(FraudRefund)=0.881-0.600=0.281 H(Fraud)−H(FraudRefund)=0.881−0.600=0.281
同样,我们来计算条件熵3:Refund-Taxable,与前两个不同的是,Taxable为连续值而非离散值,所以对Taxable的分类需要我们手动进行分类,在本案例中我们将Taxable分为两类,且按照较低的值 80 作为划分界限:
H ( F r a u d T a x m i n 80 ) = − 0 3 l o g 2 ( 0 3 ) − 3 3 l o g 2 ( 3 3 ) = 0 H(FraudTaxmin80)=-\frac 0 {3} log_2(\frac 0 {3})-\frac 3 {3} log_2(\frac 3 {3})=0 H(FraudTaxmin80)=−30log2(30)−33log2(33)=0
H ( F r a u d T a x m a x 80 ) = − 3 7 l o g 2 ( 3 7 ) − 4 7 l o g 2 ( 4 7 ) = 0.985 H(FraudTaxmax80)=-\frac 3 {7} log_2(\frac 3 {7})-\frac 4 {7} log_2(\frac 4 {7})=0.985 H(FraudTaxmax80)=−73log2(73)−74log2(74)=0.985
加权平均为:
H ( F r a u d M a r t i a l ) = 3 10 ∗ 0 + 7 10 ∗ 0.985 = 0.690 H(FraudMartial)=\frac 3 {10} * 0+\frac 7 {10} * 0.985=0.690 H(FraudMartial)=103∗0+107∗0.985=0.690
所以,信息增益为:
H ( F r a u d ) − H ( F r a u d R e f u n d ) = 0.881 − 0.690 = 0.191 H(Fraud)-H(FraudRefund)=0.881-0.690=0.191 H(Fraud)−H(FraudRefund)=0.881−0.690=0.191
所以,综上,对比上述三个信息增益,我们发现最大的信息增益为:Marital Status,说明因素 Marital Status 对是否为欺诈的影响最大!
所以我们将该因素放在根节点作为第一个进行判断,从而构建“最佳”决策树。而我们构建“最佳”决策树相比于随意构建决策树的目的区别在于提高判定效率。
更多相关决策树案例与决策树判断可看博文:【ML25】Decision Tree 决策树概念
end