程序员的数学基础课
黄申
LinkedIn 资深数据科学家
83374 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 58 讲
导读 (1讲)
基础思想篇 (18讲)
程序员的数学基础课
15
15
1.0x
00:00/00:00
登录|注册

27 | 决策树:信息增益、增益比率和基尼指数的运用

计算用户要回答问题数的期望
优化方案
决策树算法的不足
决策树算法的优势
基尼指数
CART算法
信息增益率
迭代二叉树3算法
重复直到所有样本被分好类
计算信息增益
计算信息熵
分类问题
归纳推理算法
递归思想
计算信息增益
计算信息熵
重复选择问题直到所有人物被分开
计算每个问卷题的区分能力
选择信息增益最高的问题
熵值下降
被测者细分到不同的集合
思考题
总结
几种决策树算法的异同
决策树构建树的步骤
决策树学习的基本思想
高效的问卷调查
如何通过信息熵挑选合适的问题
信息熵和信息增益的概念
决策树中信息增益、增益比率和基尼指数的运用

该思维导图由 AI 生成,仅供参考

你好,我是黄申。
上一节,我通过问卷调查的案例,给你解释了信息熵和信息增益的概念。被测者们每次回答一道问题,就会被细分到不同的集合,每个细分的集合纯净度就会提高,而熵就会下降。在测试结束的时候,如果所有被测者都被分配到了相应的武侠人物名下,那么每个人物分组都是最纯净的,熵值都为 0。于是,测试问卷的过程就转化为“如何将熵从 3.32 下降到 0”的过程。
由于每道问题的区分能力不同,而我们对问题的选择会影响熵下降的幅度。这个幅度就是信息增益。如果问卷题的顺序选择得好,我们可以更快速地完成对用户性格的判定。这一节我们就继续这个话题,看看如何获得一个更简短的问卷设计,把这个核心思想推广到更为普遍的决策树分类算法中。

如何通过信息熵挑选合适的问题?

为了实现一个更简短的问卷,你也许很自然地就想到,每次选择问题的时候,我们可以选择信息增益最高的问题,这样熵值下降得就最快。这的确是个很好的方法。我们来试一试。
我们现在开始选择第一个问题。首先,依次计算“性别”“智商”“情商”“侠义”和“个性”对人物进行划分后的信息增益。我们得到如下结果:
显然,第一步我们会选择“侠义”,之后用户就会被细分为 3 组。
针对第一组,我们继续选择在当前这组中,区分力最强、也是信息增益最高的问题。根据计算的结果我们应该选择有关“性别”的问题,然后进一步地细分。后续的步骤依次类推,直到所有人物都被分开,对于第二组和第三组我们也进行同样地操作。整个过程稍微有点复杂,为了帮你理解,我把它画成了一个图。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

决策树算法及其应用 本文介绍了决策树算法的基本概念和几种常见的决策树算法,包括ID3、C4.5和CART。文章首先通过问卷调查案例引出了信息熵、信息增益和基尼指数等信息论概念在决策树中的运用,重点介绍了信息增益、增益比率和基尼指数的应用。作者详细解释了这些概念的计算方法,并通过案例分析展示了决策树算法的实际应用。此外,文章还对不同决策树算法的特点进行了比较,指出它们在特征选择和数据划分上的异同。特别是介绍了信息增益率的应用,以及CART算法采用基尼指数进行特征选择和数据划分的方式。最后,文章指出了决策树算法的优势和不足,以及对于过拟合问题的优化方案。总的来说,本文通过具体案例和技术原理,深入浅出地介绍了决策树算法的运用和相关概念,对于读者快速了解决策树算法具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《程序员的数学基础课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(22)

  • 最新
  • 精选
  • Peng
    开始看不懂了,我再多看几遍试试。

    作者回复: 可以逐个理解,每次理解一点都是进步👍

    2019-03-05
    2
    13
  • lifes a Struggle
    知道了,老师的案例中个体都是一个单独的分类,所有在原始集合中可以采用-n*(Pi*log(2,Pi))的形式进行信息熵的计算。如果存在分类的数据不均匀,通过各个分类的信息熵求和即可。

    作者回复: 是的👍

    2019-08-07
    5
  • 总统老唐
    既然每次都是分解成左右两个子树,为什么CART算法公式中的m不直接写成2

    作者回复: 这里主要是通用性,对于CART算法确实可以将m简写为2,对于其他使用基尼指数的算法仍然保持m

    2019-12-25
    3
  • 张九州
    计算整个数据集基尼指数,pj是什么 如何计算?

    作者回复: pj表示第j组元素出现的概率,这里用在某个划分的组之中,第j组元素的数量除以这个划分的元素数量来计算

    2019-09-08
    3
  • 建强
    根据信息增益划分的原理,简单写了一个python程序计算了一下问题期望数,程序输出结果如下: 选择信息增益小的问题对人物分类,问题数的期望值=3.7 选择信息增益大的问题对人物分类,问题数的期望值=2.8 程序代码如下: import pandas as pd # 初始化10个武侠人物的属性 p = { '性别':['男','男','男','男','男','女','女','女','女','女'] ,'智商':['高','高','高','高','中','高','高','高','高','中'] ,'情商':['高','高','中','中','高','高','中','中','中','中'] ,'侠义':['高','中','低','中','高','低','高','高','低','中'] ,'个性':['开朗','拘谨','开朗','拘谨','开朗','开朗','开朗','拘谨','开朗','开朗']} name = ['A','B','C','D','E','F','G','H','I','J'] knight = pd.DataFrame(data=p,index=name) # 定义问题类型及增益大小 problem_type = {'性别':1,'智商':0.72,'情商':0.97,'侠义':1.58,'个性':0.88} # 计算测试问题的期望值 def get_exp_problems(knight, problem_type): #BEGIN result = {} sub_knight = [(knight,0)] temp_sub_knight = [] for pt in problem_type: #用某一个问题类型对每一组侠客进行划分 for sub in sub_knight: temp_sub = sub[0].groupby(by = [pt]) #该问题没有将该组侠客进行划分,放入中间结果,继续下一组划分 if len(temp_sub) <= 1: temp_sub_knight.append((sub[0],sub[1])) continue # 对划分后的结果进行处理 for label, member in temp_sub: list_member = list(member.index) if len(list_member) == 1: result[list_member[0]] = sub[1] + 1 else: temp_sub_knight.append((member, sub[1]+1)) sub_knight.clear() sub_knight.extend(temp_sub_knight) temp_sub_knight.clear() # 计算问题数的期望值 exp = 0 for k in result: exp += result[k]/len(name) return exp #END def main(): problem = dict(sorted(problem_type.items(), key=lambda x: x[1], reverse=False)) print('选择信息增益小的问题对人物分类,问题数的期望值={}'.format(round(get_exp_problems(knight, problem),2))) problem = dict(sorted(problem_type.items(), key=lambda x: x[1], reverse=True)) print('选择信息增益大的问题对人物分类,问题数的期望值={}'.format(round(get_exp_problems(knight, problem),2))) if __name__ == '__main__': main()

    作者回复: 很好的实现

    2020-06-21
    2
  • qinggeouye
    某个特征 T 取值越多,数据集 P 划分时分组越多,划分后的「信息熵」越小,「信息增益」越大。「分裂信息」是为了解决某个特征 T 取值过多,造成机器学习过拟合,而引入的一种惩罚项,惩罚取值多的特征。 老师,「基尼指数」没怎么看明白,第一个式子中「n 为集合 P 中所包含的不同分组或分类的数量」该怎么理解?求和符号后面的 pi 是什么含义?谢谢~

    作者回复: 因为决策树是一种分类算法,我们有训练样本告诉我们每个数据样本属于何种分类,所以这里的分类、分组都是根据训练样本中的分类标签。

    2019-03-10
    2
    2
  • Thinking
    建议老师每堂课后能配多几个具有代表性的,针对性的练习题辅助理解概念和公式。

    作者回复: 好的,后面我会考虑多从公式的角度出发

    2019-02-15
    2
  • 灰太狼
    老师,基尼系数公式里的pi是指分组i在集合P中的概率吗?

    作者回复: 是的👍

    2020-03-28
    4
    1
  • 💢 星星💢
    老师随机森林有没有好的文章推荐,另外老师有没有公众号,或者其他方式可以白嫖看您的文章呢,当然也期待老师出新的专栏,虽然这个专栏对于我来说已经是新的挑战。但是非常喜欢读老师的文章。

    作者回复: 你好,感谢支持,我暂时还没有时间在其他地方发表博文。如果有好的想法写作,当然首选极客时间专栏啦😆。正在和编辑筹划下一个专栏,期待与大家再次交流

    2019-11-11
    1
  • Joe
    老师,请问有没有相关代码实现的方式,能否给出参考链接。

    作者回复: 你是指计算信息熵、信息增益和基尼指数?可以使用现成的机器学习包计算,如果希望自己计算也不难,遵循专栏中的公式就可以了。后面我有时间整理一下代码。

    2019-02-21
    2
    1
收起评论
显示
设置
留言
22
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部