这里写自定义目录标题
知识点:
信息(Information,I):
用来消除某种不确定性的东西。
信息熵(Information entropy,H):
衡量不确定性的某种度量。
由上面两条定义可以得到这样一个结论:
I 为 信 息 增 益 I为信息增益 I为信息增益
I = H b − H a I = H_b - H_a I=Hb−Ha
即信息量(信息增益)的大小,可以由不确定性减少的量来衡量。那么如何计算不确定性?
不确定性是忧郁事物可能出现多种状态导致的,因此可以通过计算事物可能的状态及其每种状态的概率来计算。因此信息熵定义如下:
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=1∑nPilogPi
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=1∑nPilogPi+i=1∑mPilogPi)
题目 :
一、 设有一购车案例表,如图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=1∑NPilogPi
具体计算的是:
− ( 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=1∑2Pilog2Pi=−(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