今天是周六,窗外一片绿色,身处北京能闲暇下来,着实不易~
下面我来解释下什么是决策树,在大学期间我们都接触过二叉树,搜索树,以及数据库中索引的基本原理...和今天要说的决策树,从本质上都是一种基于树这种数据结构的具体实现。
决策树是一个类似于流程图的树结构:其中,每个内部结点表示在一个属性上的测试,每个分支代表一个属性输出,而每个树叶结点代表类或类分布。树的最顶层是根结点。
上述事例是决策小强是否出去和朋友打羽毛球的一棵决策树,可以看到根目录中在没有任何特征(属性)干预的情况,小强有5/14的概率不打球,打球的概率是9/14~
在第一层树中,天气属性作为干扰因素,如果是sunny天,我有2/5的概率打球,还有3/5的概率做其他的事情,比如约会,加班~(当然我没女朋友,加班~) 如果是overcast(阴天无雨)打球的概率是1(100%),如果是下雨天,有3/5的概率打球和2/5的概率不打球。
决策树是一种递归算法,可以用当前的分支(branch)当作根(root)节点,继续进行构建..直到~
可能你此时心中会有这些问题, 啥时候结束递归流程呢?为啥先选用天气为决策特征呢?如果先选择湿度(humidity|windy)作为决策特征呢,不行吗?
一般来说,决策树在满足以下条件的时候,结束分裂过程
1,当前决策分支中所有的数据都属于同一个类(Play|Don‘t play),当前分支设置为叶子结点,结束列
2,如果该分支中其他特征没有继续分裂的能力,可以按少数服从多数的投票原则进行选择
3,构建决策树之前我们可以设定结束条件,最大分裂层树,最大叶子树 等等
那么特征如何确定选择顺序呢?下一节我会通过计算实例来讲解 --决策树算法--ID3算法,其中会涉及香农定理中的熵,以及信息增益的运算方法。