信息熵与信息增益在决策树生成中的使用

这篇具有很好参考价值的文章主要介绍了信息熵与信息增益在决策树生成中的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

    决策树是机器学习算法的一种,它主要对给定数据集合根据相关属性生成一个类似树结构的一种决策机制。

    生成树结构,其实可以很随便,只要根据特征值的分支做分叉,把所有的特征遍历完成,这棵树就是一颗决策树。但是要生成一个最优决策树,我们需要选择合适的根节点。

    有一种选择根节点的算法是ID3算法,它根据信息增益来选择特征作为根节点。

     信息熵的定义:香浓提出熵的概念,表示随机变量不确定度的衡量。

     从描述看来,不确定度,这里其实就隐含着概率的问题,而熵的计算公式,正是用来计算这个概率和。设X是一个取值有限的离散随机变量,其概率分布为:

,则随机变量X的熵定义为:

    这个公式看着有些奇怪,我们计算信息熵,应该是一个概率和,最终是大于0的数字,这个公式里面怎么有一个减号-,其实我们知道这里概率是一个0-1之间的数字,最大不超过1,而对数函数在0-1范围,结果就是负数,如下所示:

信息熵与信息增益在决策树生成中的使用,人工智能,决策树,机器学习,香浓熵,信息增益,ID3算法

    所以,这里的减号正好将负数变为正数,最后结果就大于0并不是负数。

    熵的结果,只能说明信息不确定度。熵越大,信息不确定度越大,样本分布越分散,熵越小,不确定度越小,样本更集中。

     比如我们通过如下示例来看看样本分布情况对应的熵。

信息熵与信息增益在决策树生成中的使用,人工智能,决策树,机器学习,香浓熵,信息增益,ID3算法

    上图中,我们假定

    1、所有样本都是一个颜色,那么熵最后计算的结果是0。 

    2、样本中混入一个红色,那么最后计算结果是0.811,

    3、样本中红色,蓝色都是一样的,他们概率都是50%,那么熵的结果就是1。

    熵的结果与样本结果有关,与特征值没有关系。

    信息增益的定义:字面意思来说,它是一个差值,信息增益的差值,而这个信息增益差,需要和特征和特征值挂钩,这里就产生一个权重,特征值对应样本占总体样本的比例。它又是另一个层面的概率。

     定义如下:假定特征a有如下可能取值,也就是分支:{ },如果使用a来进行划分,就会产生v个分支。其中,第v个分支,包含了样本X中,取值为的样本,记为,我们可以根据前面信息熵的定义计算的熵。考虑有v个分支样本量不相同,假定每个分支的权重,如是,就可以计算出使用特征a来划分数据集X的信息增益:

    信息增益表示的意思,使用特征a来划分对整个样本纯度提升的大小,提升越大,这个特征就越好,所以在构建决策树的时候,我们优先选择这个特征。选择完当前特征,我们就应该去掉该特征 ,继续使用剩下的特征来进行新的划分,直到所有特征划分完成。

    下面根据一个具体的示例,我们来看看如何选择一个好的根节点。

     如下所示,是一个银行根据贷款对象的年龄,工作,房产,贷款情况决定是否给与贷款的样本:

信息熵与信息增益在决策树生成中的使用,人工智能,决策树,机器学习,香浓熵,信息增益,ID3算法

    第一个表格是样本情况,第二个表格是根据第一个表格进行的样本统计。

    接着我们使用上面的信息熵和信息增益来计算相关数据。

    总体信息熵,这个只需要通过样本中是、否的概率来计算即可。

    Ent(X) =  =  0.971

    信息增益:

     Gain(X, 年龄) = 

     Gain(X, 工作) = 

     Gain(X, 房产) = 

     Gain(X, 贷款情况) = 

    以上计算过程通过代码演示如下:

from math import log2


def create_datasets():
    datasets = [[0, 0, 0, 0, 'no'],
                [0, 0, 0, 1, 'no'],
                [0, 1, 0, 1, 'yes'],
                [0, 1, 1, 0, 'yes'],
                [0, 0, 0, 0, 'no'],
                [1, 0, 0, 0, 'no'],
                [1, 0, 0, 1, 'no'],
                [1, 1, 1, 1, 'yes'],
                [1, 0, 1, 2, 'yes'],
                [1, 0, 1, 2, 'yes'],
                [2, 0, 1, 2, 'yes'],
                [2, 0, 1, 1, 'yes'],
                [2, 1, 0, 1, 'yes'],
                [2, 1, 0, 2, 'yes'],
                [2, 0, 0, 0, 'no']]
    labels = ['F-Age', 'F-Work', 'F-House', 'F-Loan', 'Target']
    return datasets, labels


def calc_shannon_entropy(datasets):
    data_len = len(datasets)
    label_count = {}
    for i in range(data_len):
        label = datasets[i][-1]
        if label not in label_count:
            label_count[label] = 0
        label_count[label] += 1
    entropy = -sum([(p / data_len) * log2(p / data_len) for p in label_count.values()])
    return entropy


def cal_condition_entropy(datasets, axis=0):
    data_len = len(datasets)
    feature_sets = {}
    for i in range(data_len):
        feature = datasets[i][axis]
        if feature not in feature_sets:
            feature_sets[feature] = []
        feature_sets[feature].append(datasets[i])
    condition_entropy = sum([(len(p) / data_len) * calc_shannon_entropy(p) for p in feature_sets.values()])
    return condition_entropy


def info_gain(entropy, condition_entropy):
    return entropy - condition_entropy


def info_gain_train(datasets, labels):
    count = len(datasets[0]) - 1
    entropy = calc_shannon_entropy(datasets)
    best_feature = []
    for i in range(count):
        info_gain_i = info_gain(entropy, cal_condition_entropy(datasets, axis=i))
        best_feature.append((i, info_gain_i))
        print('feature : {},info_gain : {:.3f}'.format(labels[i], info_gain_i))
    best_ = max(best_feature, key=lambda x: x[-1])
    return labels[best_[0]]


if __name__ == '__main__':
    datasets, labels = create_datasets()
    ent = calc_shannon_entropy(datasets)
    print('entropy : {}'.format(ent))
    feature = info_gain_train(datasets, labels)
    print('best feature : {}'.format(feature))

    运行结果:
entropy : 0.9709505944546686
feature : F-Age,info_gain : 0.083
feature : F-Work,info_gain : 0.324
feature : F-House,info_gain : 0.420
feature : F-Loan,info_gain : 0.363
best feature : F-House 

   在决策树生成过程中,上面的部分只是一个开端,求出了最合适的根节点,后续还需要根据其他特征继续递归求解新的合适的节点。文章来源地址https://www.toymoban.com/news/detail-578651.html

到了这里,关于信息熵与信息增益在决策树生成中的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 决策树分类算法(一)(信息熵,信息增益,基尼指数计算)

    觉得有用的请先点赞后收藏!不要只收藏不点赞! 例子: : I ( x ) = log ⁡ 2 1 p = − log ⁡ 2 p I(x)=log_{2}{frac{1}{p}}=-log_{2}{p} I ( x ) = lo g 2 ​ p 1 ​ = − lo g 2 ​ p 假设中国足球队和巴西足球队曾经有过8次比赛,其中中国队胜1次。以U表示未来的中巴比赛中国队胜的事件,那么U的先

    2024年01月16日
    浏览(39)
  • 决策树的划分依据之:信息增益率

    在上面的介绍中,我们有意忽略了\\\"编号\\\"这一列.若把\\\"编号\\\"也作为一个候选划分属性,则根据信息增益公式可计算出它的信息增益为 0.9182,远大于其他候选划分属性。 计算每个属性的信息熵过程中,我们发现,该属性的值为0, 也就是其信息增益为0.9182. 但是很明显这么分类,最后

    2024年02月14日
    浏览(36)
  • 决策树之用信息增益选择最优特征

    决策树之用信息增益选择最优特征 熵 ​ 熵的定义: 熵(shāng),热力学中表征物质状态的参量之一,用符号S表示,其物理意义是体系混乱程度的度量。 在决策树中,信息增益是由熵构建而成,表示的是[随机变量的不确定性],不确定性越大,代表着熵越大。随机变量的取值

    2024年02月01日
    浏览(32)
  • 机器学习2:决策树--基于信息增益的ID3算法

      建立决策树的过程可以分为以下几个步骤: 计算每个特征的信息增益或信息增益比,选择最优的特征作为当前节点的划分标准。 根据选择的特征将数据集划分为不同的子集。 对每个子集递归执行步骤 1 和步骤 2,直到满足终止条件。 构建决策树,并输出。 计算每个特征的

    2024年02月06日
    浏览(40)
  • python机器学习(六)决策树(上) 构造树、信息熵的分类和度量、信息增益、CART算法、剪枝

    模拟相亲的过程,通过相亲决策图,男的去相亲,会先选择性别为女的,然后依次根据年龄、长相、收入、职业等信息对相亲的另一方有所了解。 通过决策图可以发现,生活中面临各种各样的选择,基于我们的经验和自身需求进行一些筛选,把判断背后的逻辑整理成结构图,

    2024年02月14日
    浏览(42)
  • 数据挖掘题目:根据规则模板和信息表找出R中的所有强关联规则,基于信息增益、利用判定树进行归纳分类,计算信息熵的代码

    S∈R,P(S,x )∧ Q(S,y )== Gpa(S,w ) [ s, c ] 其中,P,Q ∈{ Major, Status ,Age }. Major Status Age Gpa Count Arts Graduate Old Good 50 Arts Graduate Old Excellent 150 Arts Undergraduate Young Good 150 Appl_ science Undergraduate Young Excellent Science Undergraduate Young Good 100 解答: 样本总数为500,最小支持数为5

    2024年02月06日
    浏览(42)
  • 【人工智能】机器学习中的决策树

    目录 特征选择 特征选择 树的生成 树的剪枝 特征如何选择 计算信息增益 样本集的基尼值 决策树生成 三种算法对比 决策树剪枝 预剪枝(pre-pruning) 后剪枝(post-pruning) 案例—红酒分类 案例—带噪正弦曲线拟合 本次实验是由python语言为基础学习网站分享给大家 点击右边链接进行

    2024年02月04日
    浏览(51)
  • 决策树在社交网络和人工智能中的应用

    决策树是一种常用的机器学习算法,它可以用于解决各种分类和回归问题。在社交网络和人工智能领域,决策树算法被广泛应用于多种场景,例如用户行为预测、推荐系统、文本分类、图像识别等。本文将从以下几个方面进行阐述: 背景介绍 核心概念与联系 核心算法原理和

    2024年02月22日
    浏览(46)
  • 人工智能在金融投资决策中的应用与未来

    随着人工智能(AI)技术的不断发展和进步,金融领域也逐渐开始利用这一技术来提高投资决策的效率和准确性。AI在金融投资决策中的应用主要体现在数据分析、风险管理、交易策略优化等方面。本文将从以下几个方面进行阐述: 背景介绍 核心概念与联系 核心算法原理和具体

    2024年02月20日
    浏览(44)
  • 信息熵,信息增益,增益率的理解

    编号 色泽 根蒂 敲声 纹理 脐部 触感 好瓜 1 青绿 蜷缩 浊响 清晰 凹陷 硬滑 是 2 乌黑 蜷缩 沉闷 清晰 凹陷 硬滑 是 3 乌黑 蜷缩 浊响 清晰 凹陷 硬滑 是 4 青绿 蜷缩 沉闷 清晰 凹陷 硬滑 是 5 浅白 蜷缩 浊响 清晰 凹陷 硬滑 是 6 青绿 稍蜷 浊响 清晰 稍凹 软粘 是 7 乌黑 稍蜷 浊

    2024年02月12日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包