机器学习之决策树(C4.5)

本文详细介绍了C4.5决策树算法,包括信息熵、信息增益、信息增益率等概念,通过实例展示了如何选择最佳属性进行分割,并给出了购车案例的决策树构建过程。
摘要由CSDN通过智能技术生成

知识点:

信息(Information,I):
用来消除某种不确定性的东西。
信息熵(Information entropy,H):
衡量不确定性的某种度量。
由上面两条定义可以得到这样一个结论:
I 为 信 息 增 益 I为信息增益 I
I = H b − H a I = H_b - H_a I=HbHa
即信息量(信息增益)的大小,可以由不确定性减少的量来衡量。那么如何计算不确定性?
不确定性是忧郁事物可能出现多种状态导致的,因此可以通过计算事物可能的状态及其每种状态的概率来计算。因此信息熵定义如下:
X:[x1,x2,…,xn]
P:[p1,p2,…,pn]
这里X代表状态集合,P代表概率集合,
H ( X ) = − ∑ i = 1 n P i l o g P i H(X) = -\sum\limits_{i=1}^{n}PilogPi H(X)=i=1nPilogPi
H(X) 即为当前事物的不确定性。

假设事物未获得某条信息之前的状态集与概率集为
X:[x1,x2,…,xn]
P:[p1,p2,…,pn]
而获得了某条信息之后的状态与概率集合为:
X’:[x1,x2,…,xn]
P’:[p1,p2,…,pm]
则次信息的信息增益为:
I = H ( X ) − H ( X ′ ) = − ( ∑ i = 1 n P i l o g P i + ∑ i = 1 m P i l o g P i ) I=H(X)-H(X')=-(\sum\limits_{i=1}^{n}PilogPi+\sum\limits_{i=1}^{m}PilogPi) I=H(X)H(X)=i=1nPilogPi+i=1mPilogPi)

题目 :

一、 设有一购车案例表,如图1所示,试利用C45方法构造出购车的决策树,并给出相应的决策规则。

案例 家庭经济状况 信用级别 月收入(元) 购买汽车
E1 一般 优秀 10K
E2 优秀 12K
E3 一般 优秀 6K
E4 一般 良好 8.5K
E5 一般 良好 9K
E6 一般 优秀 7.5K
E7 一般 22K
E8 一般 一般 9.5K
E9 一般 良好 7K
E10 良好 12.5K

小计算器:

为了计算方便,顺手写个简单的计算器:

	/**
	 * 测试得到带参数两个对数的结果
	 */
@Test
public void test02(){
   
		double param1 = 7.0;
		double param2 = 3.0;
		double param = 10.0;
							//均为以2为底的对数
							//参数				对数			参数2			对数2
		double total = log2( param1/param , param1/param , param2/param , param2/param);
	System.out.println("输出两个数的对数结果为:"+total);
}
/*--------------------------------------------------------------------------------*/
	/**
	 * 计算两个对数,带系数
	 */
public static double log2(double param1,double value1,double param2,double value2){
   
		double sum1 = param1*(Math.log(value1) / Math.log(2));
		double sum2 = param2*(Math.log(value2) / Math.log(2));
	    double sum = -(sum1 + sum2);
		return sum;
}

例如上面计算的是公式:
− ∑ i = 1 N P i l o g P i -\sum\limits_{i=1}^N PilogPi i=1NPilogPi
具体计算的是:
− ( 7 10 l o g 2 7 10 + 3 10 l o g 2 3 10 ) -(\frac{7}{10}log_2\frac{7}{10}+\frac{3}{10}log_2\frac{3}{10}) (107log2107+103log2103)
输出结果为:

输出两个数的对数结果为:0.8812908992306927

第一层选根节点:

1.不考虑任何条件属性:

观察是否买车的分布(即状态集合与概率集合):

Xd:[是,否].
Pd:[7/10 , 3/10].

因此当不考虑条件属性时,买车的不确定性程度为:
H ( D ) = − ∑ i = 1 2 P i l o g 2 P i = − ( 7 10 l o g 2 7 10 + 3 10 l o g 2 3 10 ) = 0.881 H(D) = -\sum\limits_{i=1}^{2}Pilog_2Pi = -(\frac{7}{10}log_2\frac{7}{10}+\frac{3}{10}log_2\frac{3}{10}) = 0.881 H(D)=i=12Pilog2Pi=(107log2107+103log2103)=0.881
接下来思考,前面的条件属性(如家庭经济状况)的作用。借助于观察家庭经济状况是可以来帮我们确定哪些是否买车。换句话说,可以帮助我们在一定程度上消除用户买车或者不买车的不确定性。
因此,“家庭经济状况”实际上带给我们一些信息,同样其他条件属性也带给我们一些信息。那么显然我们希望找到那个带给我们信息那个条件属性(信息增益最大的属性)。那么如何衡量每个属性的信息增益?

2.考虑属性“家庭经济状况”:[一般、好]

家庭经济状况=一般:有7个样本:

X1=[是,否]

P1=[4/7,3/7]
H ( X 1 ) = − ( 4 7 l o g 2 4 7 + 3 7 l o g 2 3 7 ) = 0.985 H(X1) = -(\frac{4}{7}log_2\frac{4}{7}+\frac{3}{7}log_2\frac{3}{7}) = 0.985 H(X1)=(74log274+73log273)=0.985
家庭经济状况=好:有3个样本:

X2=[是,否]

P2=[1,0]
H ( X 2 ) = − ( 1 l o g 2 1 + 0 l o g 2 0

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值