在计算机科学领域,尤其是在数据结构,很多种复杂的数据结构都是跟树有关,都是一个XX树命名。比如典型的霍夫曼树、KD树等。霍夫曼树是用来做编码的,KD树是用来对空间做划分。
本文目录:
风控决策树模型
决策树模型的种类
决策树模型的构造
关注【金科应用研院】,回复“CSDN”,领取量化风控大礼包
在开始跟大家介绍决策树模型之前,结合自然界中的树,我们先来了解下树的特点。自然界里的一棵树一定是有一个根,沿着这个根往上生长,一直到叶子为止。根到叶子中间会经管会一些内部节点。那在数据结构里面,树应该有什么样的特点呢?
有一个根节点,若干个叶子结点,若干个非叶子结点;
具有层次性根节点只有子节点,没有父节点;叶子结点只有父节点,没有子节点;非叶结点同时具有父、子节点。并且在二叉树模型中,非叶结点同时有左、右两个子节点;
除根节点外,每个节点有且仅有一个父节点。
决策树模型
在数据科学中,决策树应该是怎么样?决策树模型是一个树结构的分类器,可以是二叉树或非二叉树。其每个非叶节点表示一个特征属性上的判断,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。
下图这个流程图是在信贷风控领域做贷前审核时的简单模型。下面模型主要考察了借款人的四个特质:年龄、收入、负债跟逾期情况。
例如,一个申请人进来之后,根据树的节点顺序,先看申请人的年龄是否满足要求。如果他年龄低于18岁或高于65岁,则拒绝。如果年龄满足要求,是介于18岁到65岁之间,再来考察他的收入是否满足要求。依次进行下去,中途某一个节点的条件不满足,就将其拒绝。一直到最后节点再通过。这样的流程就是典型的决策树。
典型决策树的特点是使用决策树进行决策的过程就是从根节点开始,判断待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。
需要注意的是,从根节点开始到达每一个叶子节点都是有且仅有一条路径。该路径上的节点的个数称为深度。所有深度的最大值称为决策树深度,决策树的深度是模型的一个重要参数。
决策树模型的种类
在决策树的框架下,有几种不同的决策树模型相继被设计出来。常用的决策树模型有:
ID3决策树:
ID3算法是建立在奥卡姆剃刀(用较少的东西,同样可以做好事情)的基础上∶越是小型的决策树越优于大的决策树。它使用信息增益偏向特征值多的特征,只能用于分类问题,只能处理离散数据且缺失值敏感,层级之间只使用一次特征,没有剪枝策略。
ID3决策树非常基础原始,仅仅只是在理论上去提出了一棵树,在使用的时会面临非常多的限制。为了解决这些限制和困难。衍生出了改进版——C4.5决策树。
C4.5决策树:
在ID3的基础上进行改进,引入信息增益率来作为划分标准,引入悲观剪枝策略进行后剪枝;将连续特征离散化。只能用于分类问题,层级之间只使用一次特征。
CART树:
对前两者的改进,简化规模,提高生成决策树的效率,既可以分类也可以回归,使用Gini系数作为变量的不纯度量,采用“基于代价复杂度剪枝”方法进行剪枝。目前CART树是一种相对成熟、应用广泛的决策树模型。此外还有其他一些决策树模型,不再赘述。
决策树模型的构造
了解了决策树的基本概念,接下来看一下如何根据有标签的数据集去构造出一棵想要的决策树。**和回归模型不同,决策树模型在构造之前是无法指定模型的结构的。**不知道第一个节点是哪一个变量,这个变量怎么去分裂,第二个变量是什么,一直到第几个变量为止,这些是完全不知道的。所以没办法通过最小化函数或最大化函数把它参数给推导出来。**决策树的参数例如树的深度也是无法显示地表达出来。**那么如何构造一棵决策树?
仔细观察决策树模型,会发现此类模型具有**“自相似”**(整体跟局部是高度相似的)的特点。任何一个中间节点(即非叶、非根节点)及其子节点依衣然构成一棵小的决策树。
这样的现象在数学(如:阶乘)、物理、计算机科学等领域比比皆是。那可以采用一类通用的算法来求解该类型的模型:递归(recursion)。又由于非叶节点的左子节点、右子节点分别可以形成同样结构的子树,因此我们使用分而治之的方法递归地求解出决策树模型。
我们先来看下基于数据的决策树模型的构造步骤:
构建一个基于数据集D和基于特征集的一棵树,首先就生成一个节点Node;
如果数据集D全部属于某类C,则将1中的节点Node划分为属性C,返回。如y全部为1,那么这个属性就是1;
如果不满足上方条件,再来看它是否满足第2个条件,即如果a为空集,a没有任何特征,或者这个数据集D在a上的取值完全一致,也就是x每一行都相等,一直等于第Xn行。这说明所有的样本都是一样,已经无法进行区分了。**则将1中的节点Node标记为叶节点,返回一个属性,所属类别为D中占大多数的类别。**例如:x全部都是一样的,y 里面有的是1,有的是0,“1”的占比超过了50%,那么就把“1"设为属性,然后标记给这个节点返回。
如果以上条件也不满足,意味着这个节点不是一个叶子节点,而是一个中间节点,就需要选择最优分裂节点a。
在整个算法里面,有3点尤其重要:① 形成递归;② 选择属性(特征/变量);③ 分裂属性。除以上还有一些细节问题:如何处理缺失值、如何控制过拟合等。生成决策树最要要的问题是质量问题,即如何选择特征、如何分裂特征,二者相辅相成,下篇文章我们再详细分析。
如果你喜欢、想要看更多的干货类型的文章,可以把公众号设为星标,并且转发分享。