这一节介绍一下信息熵,这个跟热力学的熵是有区别的,所以现在让我们忘记热力学第二定律,我们不需要去联想。在这里我将按0基础的思维来讨论信息熵到底是什么
我们先把基础公式摘出来 H(X)=−∑xεXP(x)logP(x))
看公式,我们已经能感受到了,这是离散型的,每个特征值是独立的。在计算机里面,我们就以0,1来表示是,否。这将牵扯到后面的决策树算法的介绍,每一次yes和no的回答都是为了把数据集分类到它应当从属的子集里面去
那么熵是计算出来的什么呢?我们先带一点数据来看看
就从简单的只有一个维度来考量吧,举个例子:小区有100户人,10户没有小孩,20户有1个小孩,30户有2个小孩,40户有3个小孩,那么对应的概率就是p1=0.1,p2=0.2,p3=0.3,p4=0.4
OK,总的概率是1,这没问题。
按照数学期望的公式来验算的话,那么平均下来1户人家有的小孩数量就是0*0.1+1*0.2+2*0.3+3*0.4=2.0,也就是说一户人家平均有2个小孩。
我们来推算一下这个公式对不对 小孩总数是:20*1+30*2+40*3=200(个小孩)
2.0*100=200(个小孩)
OK,没毛病。。。。。。。。。。。。
熵呢?来计算一下 -H(X)=0.1*log(0.1)+0.2*log(0.2)+0.3*log(0.3)+0.4*log(0.4) = -0.1-0.14-0.157-0.159=0.238
这表示什么呢?在计算机我们叫比特
意思就是我们找到只有一个小孩的家庭要0.14比特,找到没小孩的0.1比特,值越大,分类更明确,信息增益越大
记住,信息熵,就是为了我们的通信服务的。。。最开始就是为了优化我们的通信的。。。而信息说白了,在计算机里面就是0,1
熵越低的,说明越稳定,熵越高的,就越不稳定,那么通过概率也可以看出,我们要找到有3个小孩的,平均下来要输入的信息量更大,那么假设我们以三个小孩的来划分,那么后面的子集就更小。这就是所谓的最优决策。每次都把最大的拿出来,一次次不停的切割我们的结果集
OK,我们直接贴代码
这段代码极其简单,没过多需要说明的,只需要理解一点,什么是期望。期望*熵代表的是什么,就可以理解决策树算法究竟是什么了。。。。。
之前写的,后来反过来想有点不对,我就把最后一句话重新编辑了,免得误人子弟
其实,我们要看的并不是信息熵,而关注点在信息增益
举例说明是:你想找个什么样的工作?
1 月薪1万以上 月薪1万以下
2 体力工作 脑力工作
3 办公室工作 户外工作
好了,我们就三个问题吧,现在开始决策了吧,你觉得那个是你最需要考虑的?
是月薪一万,一天累死累活,户外大太阳晒着,还是月薪5000,天天办公室无所事事呢
这里的关注点就是月薪了,但是它真的是我们的最优决策的那个秩吗?不一定
有的人可能愿意底薪,但是有潜力,给他5000,他愿意去做it实习生,学习技术呢
所以 这里我们就要考查的是月薪这个特征点的信息增益和工种的信息增益的比较(要前途还是现在!)
在上面的代码我们也就能看出来了,信息总熵去减去按各个特征分类的熵,这就是我们的信息增益了
信息增益越大,说明我们的信息越纯,我们更加看重的是那个特征,我们应该按什么特征去首先分类