决策树的原理
决策树的思想的来源非常朴素。在程序设计中的条件分支结构就是 if-then 结构。 最早的决策树就是利用这类结构分割数据的一种分类学习方法。
来看2个案列:
可以看到,如果男方的年龄如果大于30,那就直接over了。但是小于30,是吧,又继续往下。
长的怎么样,如果是一般或者不好看。那也就不见了。依次类推,这就是个简单的决策树。再来看另一个:
对于是否贷款,我们又会怎样做出决策依据呢?肯定是房子对不对,毕竟现在房价一直居高不下,是个硬通货。靠感觉,经验来做出决策依据。以银行贷款数据为例,年龄和工作又分为:
决策树的实际划分是这样的:
那么银行贷款到底是如何划分的。哪个是最主要的,最重要的?怎么得到最主要的。这就涉及到信息的度量和作用。
问题来了,假设有32支球队,我们怎么猜才能猜到谁是冠军?最少要猜几次才能知道结果?如何去猜?
其实,我们可以在 “一无所知” 的情况下,一半一半的猜。
首先我们可以猜:冠军在1-16之内吗? 如果它不在,那么它肯定在17-32之间。
接着猜,它在17-25之间吗?如果又不在,那么它就在26-32之间。依次类推,最终的到结果。
信息论 :
32支球队 ,log32 = 5比特
64支球队 ,log64 = 6比特
5比特,6比特,也就是在没有任何信息的情况下,最少猜到结果的次数。
信息论的创始人:克劳德·艾尔伍德·香农,非常NB的一个人!
信息熵 -- 对信息的度量
“谁才是世界杯的冠军”的信息量应该比 5比特 少,香农指出,它的准确信息量应该是这样算的:
H = -( p1㏒1 + p2㏒2 + p3㏒3 +...+ p32㏒32)
H 的专业术语称之为 : 信息熵,单位比特
公式:H(X)=∑x∈XP(x)㏒P(x)
当这32支球队夺冠的几率相同时,对应的信息熵等于5比特
- 信息和消除不确定性是相联系的
- 信息熵越大不确定性越大,信息熵越小不确定性越小。我可以理解为信息熵越大就越难看出那个能夺冠,反而信息熵越小,我觉得有可能Ta就夺冠了。。。。。。zzzzz
决策树的划分依据之一 : 信息增益
特征A 对 训练集D的信息增益g(D,A) , 定义为 集合D 的信息熵H(D) 与 特征A 在给定条件下的信息条件熵H(D|A)之差,即公式为
g(D,A) = H(D) - H(D|A)
注:信息增益表示得知特征X的信息而使得类Y的信息不确定性减少程度。
信息增益的计算:
结合前面的贷款数据来看我们的公式:
信息熵的计算:
条件熵的计算:
有了这两个公式,我们根据前面 是否通过贷款申请 的例子来 通过计算 得出我们的决策特征顺序,那么我们首先计算 总的信息熵为:
H(D) = - (9/15log(9/15)+6/15log(6/15)) = 0.971 # 9个通过贷款申请,6个未通过贷款申请
然后我们让A1 , A2 , A3 , A4分别表示年龄 ,有工作,有自己的房子和信贷情况4个特征,首先计算出年龄的信息增益为:
#