信息增益matlab实现

作者: 听城 | 来源:发表于2017-10-13 13:38 被阅读412次

一般地,一个决策树包含一个根节点,若干个内部节点和若干个叶节点,叶结点对应决策结果,其他每个节点对应于一个属性测试,每个结点包含的样本集合根据属性测试的结果被划分到子节点中;根节点包含样本全集,从根节点到每个叶节点的路径对应了一个判定测试序列。决策树学习的目的是为了产生一颗泛化能力强,处理未见实例能力强的决策树。

信息熵
信息熵是度量样本集合纯度最常用的一种指标,假定当前样本集合D中第k类样本所占比例为pk(1,2,..|y|),则D的信息熵定义为


其中Ent(D)的值越小,则D的纯度越高。

信息增益
假定离散属性a有V个可能的取值a1,a2,...,aV,若使用a来对样本集D进行划分,则会产生V个分支节点,其中第v个分支节点包含了D中所有在属性a上取值为av的样本,记为Dv,根据信息熵的公式,在考虑到不同的分支节点所包含的样本数不同,给分支节点赋予权重|Dv|/|D|,即样本数越多的分支节点的影响越大,于是可计算出用属性a对样本集D进行划分所获得的”信息增益”。

一般而言,信息增益越大,则意味着使用属性a来进行划分所得的”纯度提升”越大。因此,我们可以用信息增益来进行决策树的划分属性选择。

实例分析
以下表的数据为例:其中有17个训练正例,学习目标是预测是不是好瓜的决策树。分类目标|Y|=2

信息熵计算得


上述实现代码为

close all;
clear all;
clc;
data = csvread('watermelon2.0.csv');
InforGain = gain(data);

function InforGain = gain(data) 
    [m, n] = size(data);
    InforGain = zeros(n-1,2);
    labels = data(:,n);
    for i=1:n
        tmp{i} = [];
        percen{i} = [];
        col = data(:,i);
        unicol = unique(col);
        %计算每一列有几类,并把每一类的信息熵和比例存储起来
        for j = 1:length(unicol)
            num = length(find(col==unicol(j)));
            pnum = length(find(col==unicol(j) & labels == 1));
            rate = pnum/num;
            if i==7
                rate = num/length(labels);
            end
            gain = -(rate*log2(rate)+(1-rate)*log2(1-rate));
            tmp{i}=[tmp{i} gain];
            percen{i}=[percen{i} num/length(col)];
        end
    end
    %整体信息熵
    InforEntropy = tmp{length(tmp)}(1);
    %将NAN转化为0
    for i = 1:length(tmp)
        tmp{i}(isnan(tmp{i})) = 0;
        %disp(tmp{i});
    end
    %求每一个属性列的信息增益
    for i = 1:length(percen)-1
        InforGain(i,:) = [i,roundn(InforEntropy-sum(tmp{i}.*percen{i}),-3)];
        disp(InforEntropy-sum(tmp{i}.*percen{i}));
    end

相关文章

  • 信息增益matlab实现

    一般地,一个决策树包含一个根节点,若干个内部节点和若干个叶节点,叶结点对应决策结果,其他每个节点对应于一个属性测试...

  • 信息增益与信息增益比

    首先,我们说熵,熵是随机变量不确定性的度量 那么,为什么用这个公式来定义熵,我们看下熵随概率的变化曲线便会一目了然...

  • [Mark]信息增益、信息增益比、CART

  • 机器学习算法——决策树3(信息增益和ID3算法)

    信息增益 信息增益 算法思想 信息增益的算法过程为: 出入:训练数据集D和特征A 输出:特征A对训练数据集D的信息...

  • 信息熵、条件熵、信息增益、信息增益率

    一、信息熵 1. 信息熵提出背景 我们生活在一个信息爆炸的时代,从信息学的角度来说,人类进步的本质就是不断的打...

  • decision tree

    ID3 C4.5 CART 比较 ID3(以信息增益为准则选择信息增益最大的属性) 缺点 信息增益对==可取值数目...

  • 信息增益法

    信息熵 在文本分类中,假设文本共k类,每类出现的概率是: 其中每个类别的信息熵计算公式: 信息熵代表了不不确定性,...

  • 信息增益,熵

    概念:在信息增益中,衡量标准是看特征能够为分类系统带来多少信息,带来的信息越多,该特征越重要。对一个特征而言,系统...

  • 决策树learning

    1.0 理论 熵 条件熵 信息增益 信息增益比 1.0 sklearn.tree 首先,http://scikit...

  • 特征选择之信息增益

    在文本分类中利用信息增益进行特征提取 信息增益体现了特征的重要性,信息增益越大说明特征越重要 假设数据中有k类: ...

网友评论

    本文标题:信息增益matlab实现

    本文链接:https://www.haomeiwen.com/subject/mgdzyxtx.html