• 决策树算法之ID3


    ID3算法

      ID3使用信息增益(information Gain)作为属性选择方法。信息增益基于信息论中熵(Entropy)的概念。熵是衡量一个节点不纯度的指标。

      熵越大,节点越不纯,当熵=0时,节点最纯。

        假设一个训练样本集T是含有t个数据的样本集合,假设T在类属性C上有n个不同的值,且在类属性C上的n个值相同的记录被划分为一类,则样本集T被划分成为n个类{C1,C2,C3,...Cn}。ci表示Ci类的个数。对于这个给定的样本集T,它的熵被定义为:

      

         第一步,先计算出目标分类属性的熵值Entropy(T)。

      第二步,再计算出,按照某划分属性S将T划分为m个子集{T1,T2,T3,...Tm},其中Tj中的记录为S上有相同的值Sj。设Tj的数据个数为tj。则用S属性来划分T的熵定义为:

      

      Entropys(T)反映了用属性S来划分T所需要的信息量。

      属性S的信息增益 等于: 

          

      信息增益是用来衡量由于划分造成的Entropy减小的程度,也就是属性S对样本T的贡献。Entropy减小的程度越大,则根据该属性S产生的划分就越纯,信息增益的值Gain就越大。因此,选择信息增益最大的属性最为划分属性。

      举例如下:

      

      我们先对目标分类属性:是否买电脑计算熵值:

       第二步,我们选一个属性“年龄(age)”作为入手,按照年龄可以将T划分成3个子集T1:{age<=30};T2{40>=age>30};T3{age>40}

      

      我们按照熵的计算公式,分别计算这三个子集的熵值:

        I1(2,3)=-2/5*log2(2/5)-3/5*log2(3/5)=0.971

        I1(4,0)=-4/4*log2(4/4)-0/4*log2(0/4=0

        I1(3,1)=-3/5*log2(3/5)-2/5*log2(2/5)=0.971

          因此,E(age) = 5/14*I1(2,3)+4/14*I2(4,0)+5/14*I3(3,2) = 0.694。

      所以信息增益Gain(age) =E(T)-E(age)=0.940-0.694=0.246。

      同理,把其他的属性也以同样的方式计算出各自的信息增益Gain(Studeng),Gain(credit_rating),。。。看看那个信息增益最大,就把此属性作为第一分类属性。

  • 相关阅读:
    消息分发
    subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1.
    ubuntu14.04 安装python3.7
    通过shell脚本查看python版本并比较
    shell 小数比较大小
    python 私有方法
    python 类的倒入
    python 路径拼接
    python 脚本接受参数
    python 获取文件运行路径
  • 原文地址:https://www.cnblogs.com/liyuewdsgame/p/13235031.html
Copyright © 2020-2023  润新知