决策树算法

mac2022-06-30  205

ID3信息增益算法

算法描述:对于数据集中的数据 X m n X_{m}^{n} Xmn(m条数据,n维,其中第1条数据为 [ x 0 0 , x 0 1 , x 0 3 , … , x 0 n ] [x_0^{0},x_0^{1},x_0^{3},\ldots,x_0^{n}] [x00,x01,x03,,x0n])和标签 y m k y_m^k ymk。ID3算法试图在k个标签中找到对应的判断规则,通过规则即可分出该条数据属于哪一个类别。在不知道任何数据的情况下可以计算出标签y的信息量,表示在没有任何先验条件的情况下对于标签类别的确信程度。如何选择最优点?

信息增益

信息增益最大度量理解为在给定特征后信息不确定度的减少量最大的特征即为特征。说起来有点饶,举个简单的例子:现在有一个黑盒子,里面有各种小球,你需要从一个黑盒子拿小球判断其是不是你需要的,你不知道小球的情况,你只能通过拿出来的小球来判断。但是我现在告诉你,小球中有一些是金属球,因为金属球的特性和你摸到的可能不一样,所以你摸球的时候你就知道你肯定能摸到金属球。在没有告诉你这个信息之前你其实是不知道摸到的球的具体信息。也就是说告诉你信息后,你对摸球的了解更多了。可以说你对摸球结果的不确定度减少了(之前你认为摸出来的球可能什么材质都有(没有),什么形状都有(没有),现在你知道至少有金属球)。也就是说你可以通过已知的信息减小对摸球这个完全没有规律可以求证的活动有一个更深的判断。信息增益算法实际上就是告诉算法不同的特征,通过了解这些外在信息后对整个结果有一个全新的判断,但是如何才能选出一个好的特征?信息增益最大,即你通过它能获得最大的对整个事件的了解。再举个例子: 一个选择题,你现在完全不知道选什么。这时候同桌学渣和学霸分别给了你两个信息: 学渣说:不知道就选b或者c 学霸说:这个题上次模拟考原题,闭着眼我都知道选A。 这时候你会选择听谁的?当然是学霸的,原因在于相比于学渣,它给你提供和更多对此题答案的信息。决策树算法的信息增益最大化实际上和着原理类似,不过使用了信息计算公式而已(通信基础)。

详细的计算步骤

统计学习基础的原题

ID年龄有工作有房子信贷类别1青年否否一般否2青年否否好否3青年是否好是4青年是是一般是5青年否否一般否6中年否否一般否7中年是否好否8中年否是好是9中年否是非常好是10中年否是非常好是11老年否是非常好是12老年否是好是13老年是否好是14老年是否非常好是15老年否否一般否

当前特征有年龄(age),工作(work),房子(house),信贷(credit)等四个特征,首先决定根节点应该选那个特征。按照上面的信息增益算法计算信息增益最大的即为当前根节点。 没有任何信息之前,我们对结果的了解程度使用信息计算公式即可算出,标签中是的个数为9个,否为6个。总共15个。(信息量为: H ( l a b e l s ) = − 9 15 l o g 9 15 − 6 15 l o g 6 15 = 0.971 H(labels)=-\frac{9}{15}log\frac{9}{15}-\frac{6}{15}log\frac{6}{15}=0.971 H(labels)=159log159156log156=0.971

计算Age的信息增益主要是计算给定Age后的信息量,现在年龄有三种情况,青年,重点,老年。,如果是青年的话,信息量应该是多少?可以看到青年条件下,标签为是的人有2人,为否的情况下有三人,总人数为5人,计算青年的信息量 − 2 5 l o g 2 5 − 3 5 l o g 3 5 = 0.971 -\frac{2}{5}log\frac{2}{5}-\frac{3}{5}log\frac{3}{5}=0.971 52log5253log53=0.971,但是在所有的三种情况中青年占据的比例只有 5 / 15 5/15 5/15,同理你可以计算出老年和中年的信息量,其加权和为告诉你年龄信息后产生的信息量 H ( l a b e l s ∣ a g e ) = 0.888 H(labels|age)=0.888 H(labelsage)=0.888。信息增益即为没有提供年龄信息的信息量和提供年龄信息后的信息量的差: H ( l a b e l s ) − H ( l a b e l s ∣ a g e ) = 0.252 H(labels)-H(labels|age)=0.252 H(labels)H(labelsage)=0.252同样的方式你可以计算出给定,work,house,credit后的信息量分别为: H ( l a b e l s ∣ w o r k ) = 0.324 H(labels|work)=0.324 H(labelswork)=0.324 H ( l a b e l s ∣ h o u s e ) = 0.420 H(labels|house)=0.420 H(labelshouse)=0.420 H ( l a b e l s ∣ c r e d i t ) = 0.363 H(labels|credit)=0.363 H(labelscredit)=0.363 可以看到house的信息增益最大,这时候根节点确定了,此时决策树大概是这样的: 目前为止我们可以判断,如果这个人有房,那么标签对应的为是,如果没有房呢?这时候同样,用信息增益法计算: 对于这9个样本(6个对应是3个对应否)我们再次计算信息量 H ( l a b e l s ∣ h o u s e = 否 ) = − 6 9 l o g 6 9 − 3 9 l o g 3 9 = 0.918 H(labels|house=否)=-\frac{6}{9}log\frac{6}{9}-\frac{3}{9}log\frac{3}{9}=0.918 H(labelshouse=)=96log9693log93=0.918。这是依然面临的问题是选择什么特征能更容易的区分数据?答案依旧是信息增益法。计算给定特征为年龄的信息量,这是青年,中年,老年人数分别是:4、2,、3 H ( l a b e l s ∣ h o u s e = 否 , a g e = 青 年 , 中 年 , 老 年 ) = 4 9 ∗ ( − 1 4 log ⁡ 1 4 − 3 4 log ⁡ 3 4 ) + 3 9 ( − 1 3 log ⁡ 1 3 − 2 3 log ⁡ 2 3 ) = 0.667 H(labels|house=否,age={青年,中年,老年})=\frac{4}{9}*(-\frac{1}{4}\log\frac{1}{4}-\frac{3}{4}\log\frac{3}{4})+\frac{3}{9}(-\frac{1}{3}\log\frac{1}{3}-\frac{2}{3}\log\frac{2}{3})=0.667 H(labelshouse=,age=)=94(41log4143log43)+93(31log3132log32)=0.667,无房环境下,Age的信息增益 H ( l a b e l s ∣ h o u s e = 否 ) − H ( l a b e l s ∣ h o u s e = 否 , a g e = 青 年 , 中 年 , 老 年 ) = 0.252 H(labels|house=否)-H(labels|house=否,age={青年,中年,老年})=0.252 H(labelshouse=)H(labelshouse=,age=)=0.252同理: Age的信息增益 H ( l a b e l s ∣ h o u s e = 否 ) − H ( l a b e l s ∣ h o u s e = 否 , a g e = 青 年 , 中 年 , 老 年 ) = 0.252 H(labels|house=否)-H(labels|house=否,age={青年,中年,老年})=0.252 H(labelshouse=)H(labelshouse=,age=)=0.252work的信息增益 H ( l a b e l s ∣ h o u s e = 否 ) − H ( l a b e l s ∣ h o u s e = 否 , w o r k = 是 , 否 ) = 0.918 H(labels|house=否)-H(labels|house=否,work={是,否})=0.918 H(labelshouse=)H(labelshouse=,work=)=0.918credit的信息增益 H ( l a b e l s ∣ h o u s e = 否 ) − H ( l a b e l s ∣ h o u s e = 否 , a g e = 一 般 , 好 , 非 常 好 ) = 0.474 H(labels|house=否)-H(labels|house=否,age={一般,好,非常好})=0.474 H(labelshouse=)H(labelshouse=,age=)=0.474 可以看到work的信息增益最大,选择work为此时的节点。当前决策树如下: 当前可以看到整个树分类基本只需要主要两个特征house和work,age和credit对结果没有影响。

c4.5算法

c4.5算法相比于ID3算法只是将评价是否作为节点的信息增益最大变成了信息增益比最大,但是如果信息增益比的最大值都很小且小于给定的阈值 δ \delta δ,则说明此特征能够提供的信息很少,则不使用特征作为节点。这里的信息增益比实际上是:通过告诉算法特征信息后的信息减少量相对于原始信息量的比例。及如果被告知的信息很重要,则信息增益应该比较大,但是如果信息熵本身也很大,则该信息提供的信息不足以用来判断,所以信息增益比实际上是:给定信息熵后通过告诉算法额外的信息获取到的信息量越大,则信息越有效(越应该成为分类的核心特征,成为分类节点)。


最新回复(0)