机器学习——决策树算法分析

    欢迎关注微信公众号:AI Engine

    之前写过一篇文章是关于决策树实例的,对于急于上手的同学应该会有一定的帮助,这次对决策树算法原理会做一个较为详细的说明分析,可能会比较枯燥,俗称“看不动”。但是对于想要更深一步了解的同学,本篇文章对您或许所有帮助。

    决策树是人工智能算法中较为常见的一种,该算法可以应用的场景以及典型案例也很多。比如对商品购买能力的预测、对天气情况的预测、以及在医学中的应用等等。很多博客中经常会举相亲的例子作为介绍决策树介绍的敲门砖,不好意思我也一样。我们来看一个场景:

    时间: 早上九点

    地点: 家里。 

    “闺女,我给你找了个合适的对象,今天要不要见一面?”

    “多大?”

    “26岁。”      ———————————————————>年龄条件

    “长得帅吗?” ————————————————————>颜值条件

    “还可以,不算太帅。”

    “工资高么?” ———————————————————>收入条件

    “略高于平均水平。”

    “会写代码吗?”———————————————————>特殊条件

    “人家是程序员,代码写得棒着呢!”

    “好,那把他联系方式发来吧,我抽空见一面。” ========================>>>>>>>结论

    这是一个普通的相亲故事,但是在这个女孩和她母亲的对话中无形的构造出了一个决策树的模型:


    较为官方的概念:决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。每个非叶节点表示一个特征属性上的测试集,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。说实话我第一次看到这句话的时候确实也不知道到底说的是啥,但是例子是个好东西,上面的例子就是一个很好的说明。但是现在问题来了,在这个例子中女孩的所有划分条件(年龄,颜值…)都是比较明确和具体的,可是如果我们在拥有数据的同时也许并不知道这些划分条件。这些条件在机器学习中我们称之为特征,特征的选取需要我们对数据敏感并利用特征工程等知识对其进行确定。特征确定之后我们就拥有了一个特征序列{fea1,fea2,fea3……}。问题又来了,在这个例子中女孩首先使用的特征是年龄,她为什么这么做?这样做的优势是什么?这引出我们应该思考的第一个小问题:决策树的种类有哪些?每种的决策树的核心启发函数是什么?它们之间的区别和联系又是什么?

    我先回答上面关于种类的问题,常用的决策树分为3种:ID3决策树、C4.5决策树、CART决策树。我们首先介绍ID3决策树。 从信息论知识中我们知道,期望信息越小,信息增益越大,从而纯度越高。所以ID3算法的核心思想就是以信息增益来度量属性选择,选择分裂后信息增益最大的属性进行分裂。那么我们如何计算信息增益呢?在计算信息增益前我们需要计算数据集的经验熵和每个特征的经验条件熵(我知道有部分同学可能到这里已经要放弃阅读了,别着急,我保证让大家能看动!)

    对于样本集合D,类别数为K,数据集D的经验熵表示为:


    其中Ck是样本集合D中属于第k类的样本子集,|Ck|表示该子集的元素个数,|D|表示样本集合的元素个数。然后计算某个特征A对于数据集D的经验条件熵H(D|A)为:


    其中,Di表示D中特征A取第i个值的样本子集,Dik表示Di中属于第k类的样本子集。计算完二者之后信息增益就可以得出结果了,即:经验熵 - 经验条件熵:


    为了表示诚意,举实例作为上述原理的解释说明,特附上手稿一幅:


    从这个例子中我们计算出了经验熵和各自的经验条件熵,最后很明显’代码’属性的信息增益是最大,所有的样本可以根据此特征直接被分到叶结点(即见或不见)中,从而完成决策树生长。当然,在实际应用中决策树往往不能通过一个特征就完成构建,需要在经验熵非0的类别中继续生长。上述的例子由于代码属性的信息增益最大,所以第一次分类就以代码属性进行划分,之后就按照上述的计算方法迭代进行,从而构造一颗完整的决策树。

    以上就是ID3算法大致的核心思想,下面介绍一下C4.5决策树算法。如果说ID3算法依赖于信息增益,那C4.5就是依赖于信息增益比了,也可以说是ID3算法的优化。上述的例子中,不少朋友已经看出来既然’代码’属性这么NB,那就只按照这个属性划分正好也能得到预期的结果,何必还问工资年龄呢?没错,这可以说是ID3算法的劣势之一:易产生过拟合。ID3算法还存在另外一个问题,就是偏向于多值属性,例如,如果存在唯一标识属性ID,则ID3会选择它作为分裂属性,这样虽然使得划分充分纯净,但这种划分对分类几乎毫无用处,而C4.5使用信息增益比试图克服这个不足。

    特征A对于数据集D的信息增益比为:


其中:


    结合我们之前的实例以及上述公式,我们计算每个特征的取值熵:


    每个特征的取值熵均相同,那么我们可以得出结论’代码’属性的信息增益比仍然是所有属性中最大的,依然是分类的最好依据!最后我们看看CART决策树算法,该算法所依赖的是Gini系数,Gini系数所表示的是纯度信息,与信息熵含义相似:


    CART在每一次迭代中选择基尼指数最小的特征及其对应的切分点进行分类。 但与ID3、C4.5不同的是,CART是一颗二叉树,采用二元切割法,每一步将数据按特征A的取值切成两份,分别进入左右子树。特征A的Gini指数定义为:


我们还是结合上述的实例计算一下:


    果然是’代码’属性的纯度最高,Gini值最少,逆天特征。

    同理而述,CART决策树会选择’代码’属性作为第一次分类的划分依据,然后依次迭代上述的计算过程完成整个决策树的生长,实现分类的效果。这就是常用决策树的构建过程以及实现原理。三种算法有一定的区别:1.ID3以信息增益作为评定标准,信息增益是指给定条件后不确定性减少的程度,信息增益越大,确定性越高,熵值越小。但是在应用中模型的泛化能力弱,易产生过拟合。2.C4.5采取信息增益比,是对ID3的一种优化,提高了模型的泛化能力。3.ID3只能对离散型数值进行预测,而C4.5和CART可以对离散型和连续型数值均进行预测。但是从应用的角度来说,只有CART适合分类和回归任务,ID3和C4.5只适合分类任务。4.ID3和C4.5可以在每个结点上产生出多叉分支,且每个特征在 层级之间不会复用,而CART每个结点只会产生两个分支, 因此最后会形成一颗二叉树,且每个特征可以被重复使用。5.ID3和C4.5通过剪枝来权衡树的准确性与泛化能力,而CART直接利用全部数据发现所有可能的树结构进行对比。

    决策树大致就是如此,是机器学习中比较常用也比较简单有效的算法,但是有一定的缺陷。当然,所有的算法都是依赖于数据的质量的,相信大家一定会懂。后续的文章可能会介绍预剪枝和后剪枝的故事,希望大家多多关注小编,有哪里说的不好还请诸位多多指导批评,谢谢各位了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容