【BData08】Decision Tree 决策树 & Entropy 熵 & 信息增益

Decision Tree 决策树

  • 什么是决策树?一个决策树案例
  • 熵 Entropy
    • 首先,熵是什么,条件熵又是什么
  • 信息增益
  • 构建决策树

决策树解决的是机器学习领域监督学习的分类问题,即:Machine_Learning: Supervised_Learning: Classification problem

什么是决策树?一个决策树案例

举例如下:
e . g . e.g. e.g. 我们要根据所给出的 三个因素(贷款、婚姻情况、税收)Label(欺诈与否) 构造决策树,从而判定是否贷款为欺诈。有数据库示例如下:
【BData08】Decision Tree 决策树 & Entropy 熵 & 信息增益_第1张图片

构成的 决策树 Decision Tree 如下:

【BData08】Decision Tree 决策树 & Entropy 熵 & 信息增益_第2张图片
假设需要你用决策树来判断下一项是否为欺诈:
【BData08】Decision Tree 决策树 & Entropy 熵 & 信息增益_第3张图片
根据三个属性的值,即 没有贷款 已婚 税收为82K

【BData08】Decision Tree 决策树 & Entropy 熵 & 信息增益_第4张图片

我们根据从 训练集(training set) 训练好的 决策树模型(Decision Tree) 来判断,其不为欺诈。


下一步,我们需要考虑的是,如何构成的决策树呢???

这里就需要引入几个概念,熵 Entropy,条件熵,信息增益与构建决策树。

熵 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(AB) 即为 明天阴天的话下雨的概率,其 条件熵 为代表着 明天要是阴天的话下雨的不确定性。我们很清楚,要是知道明天阴天的话,其下雨的可能性会增大,所以其不确定性会降低,那么该条件熵(A|B)就不会很大。

第一次极有可能没有看明白上面在说啥,没关系,你可能需要结合几个概念一起去理解:

  • 首先,事件A 的概率为 0.5 0.5 0.5
  • 其次,要是知道明天阴天的话, 事件A 发生的可能性大大提升,转过来想,那就是其 熵(不确定性) 要降低。再反之,若得知明天大晴天,那么是不是 事件A 发生的可能性大大减少,但是 熵(不确定性) 也是在减少!
  • 第三,由上述的可以大致理解熵在干啥,现在我将给出熵的具体图像:
    【BData08】Decision Tree 决策树 & Entropy 熵 & 信息增益_第5张图片
    其中x轴为发生事件A的概率,y轴为可能性。
    该图像说明了当事情的概率越接近一半时,其熵越高。代表着其不确定性越大,所包含的信息量越多,其信息的价值越高。

且有熵的公式为:
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)(1p1)log2(1p1)

e . g . e.g. e.g. 还是没有理解如何计算熵,希望这个案例可以帮到你:
【BData08】Decision Tree 决策树 & Entropy 熵 & 信息增益_第6张图片


信息增益

信息增益,为 Information Gain,我在博客 【ML28】信息增益 Information Gain 中也有详细介绍。综合来说,信息增益为 熵-条件熵,其变现的是 信息的不确定性减少的程度

而我们再结合上述的熵的案例来看:

e . g . e.g. e.g. 假设明天要出去郊游,那么明天的天气就至关重要。
假设 事件A明天下雨,那么 事件A的熵 就代表着事件A的不确定性。而我们都知道一般来说阴天的话很有可能下雨。所以若我假设 事件B明天阴天,那么条件概率 P ( A ∣ B ) P(A|B) P(AB) 即为 明天阴天的话下雨的概率,其 条件熵 为代表着 明天要是阴天的话下雨的不确定性。我们很清楚,要是知道明天阴天的话,其下雨的可能性会增大,所以其不确定性会降低,那么该条件熵(A|B)就不会很大。

信息增益 = 熵 − 条件熵 信息增益 = 熵-条件熵 信息增益=条件熵

其相减得到的值为信息量的变化,所以 P ( A ) − p ( A ∣ B ) P(A)-p(A|B) P(A)p(AB) 就是知道 明天阴天后下雨 的概率的变化。这个变化值很大,说明的是明天阴天这件事对于整个事件(事件A:下雨)充当着决定性的作用,即该事件(事件B:阴天)是非常非常重要的。

所以根据信息增益就一句话:
信息增益越大,那么说明的是条件概率下的条件越重要。


说完了熵、条件熵是什么以及信息增益如何通过熵与条件熵来计算,下面我们回归正题,如何通过信息增益来构建决策树?
构建决策树的准则,是先来考虑信息增益较大的,因为信息增益大意味着该条件越为重要。

构建决策树

e . g . e.g. e.g. 我们还是来看这个案例,尝试通过计算其熵、条件熵来求得其信息增益,然后通过信息增益大小构建决策树。
【BData08】Decision Tree 决策树 & Entropy 熵 & 信息增益_第7张图片
首先罗列出相关公式:

信息增益 = 熵 − 条件熵 信息增益 = 熵-条件熵 信息增益=条件熵
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)(1p1)log2(1p1)

然后观察上表,我们的通过 三个因素-(贷款、婚姻情况、税收),去判断 欺诈与否(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)=1030+1070.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.8810.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)=1041+1040+1021=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.8810.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)=1030+1070.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.8810.690=0.191

所以,综上,对比上述三个信息增益,我们发现最大的信息增益为:Marital Status,说明因素 Marital Status 对是否为欺诈的影响最大!

所以我们将该因素放在根节点作为第一个进行判断,从而构建“最佳”决策树。而我们构建“最佳”决策树相比于随意构建决策树的目的区别在于提高判定效率。

更多相关决策树案例与决策树判断可看博文:【ML25】Decision Tree 决策树概念


end

你可能感兴趣的:(决策树,机器学习,人工智能)