请大家关注我的公众号“数据风控和模型那些事”,如有错误或遗漏或约稿请留言给我。如需转载请注明原作者及出处,正文不建议修改,正文标题前的闲扯部分请随意。
风险模型浅谈(八)
风险建模的“利器”(3)
上期传送门
决策树
最近一直为了生计在奔波,更新频率又下来了,而且近期流年不利,刚刚平复了郁闷的心情,想着本周一定要更新一次。
今天我们主要讨论的是决策树本身。决策树是一种简单但广泛使用的算法,是属于监督式学习中的分类算法或回归算法。同时决策树是一类具有树形决策结构的算法的总称而不是具体的某一种算法。同其他分类算法相比,决策树有如下两个优势:
决策树具有良好的可读性或者说解释性;
决策树算法在实际使用中的效率很高,每次进行分类或预测的时候仅会进不超过树深度次数的判断运算。
正是由于决策树相对简单的算法结构决定了决策树的优点,但也限制了决策树在一些对精确度要求比较高的场景的应用。但由于集成学习(ensemble learning)的出现,一举克服了决策树的这个问题,而且由于一些特性,使得决策树更易与集成学习结合。本文将着重介绍决策树,下一篇会着重讲解集成学习的内容。
决策树的一般构造方法
决策树一般是这么构造的:
将整体视为一个节点;
遍历每一种分割方式,根据某种指标定义出【最好的】分割方式;
将分开的若干个子节点,分别执行上一步,直到每个节点满足一定的中止条件。
在树的生成结束后,根据修剪条件(可能有)对树进行修剪。
这里的【某种指标】、【中止条件】以及【修剪条件】就是决定每个算法的关键。
下图的来源有点忘记了,貌似是python某个包的说明文档,侵删。
上图中有一些常用的术语,如Max feature,min_sample_split,min_sample_leaf等等,就不一一解释了,网上都可以搜到。
刚刚提到了,决策树是一类具有树形决策结构的算法的总称,下面一张图列出了目前主流的几种决策树算法出现的时间。
CHAID
Chi-squared Automatic Interaction Detection 卡方自动交互检测
卡方检验只针对分类变量,它是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,卡方值越大,偏离程度越 大; 若两个值完全相等时,卡方值就为 0 。
因此CHAID算法会自动将所有连续型的变量先“离散化”,具体什么是离散化可以翻看我以前的文章。
CART
CART 算法是由 Breiman 等人首先提出,标准的CART(classification and regression trees) 只能进行二部分叉。CART从名字上来说其实有两种功能,分别是分类树(classification tree)和回归树(regression tree),在做分类树时,主要应用的是GINI系数,具体什么是基尼系数,也请翻看我以前的文章,还是刚刚那篇;而在做回归树时,主要应用的是方差来作为判断标准。
ID3
Iterative Dichotomiser 3,迭代二叉树 3 代 ID3 算法是由 Quinlan 首先提出的,该算法是以信息论为基础,以信息熵(entropy)和信息增益为衡 量标准,从而实现对数据的归纳分类。 信息熵,也是我之前讲过的概念,依旧是那一篇文章。
C4.5
C4.5是ID3的改进型,核心的改进有:
使用信息增益率而不是信息增益来进行分叉判断;
在构造树的过程中就进行剪枝。
剪枝
之前提到的【中止条件】以及【修剪条件】,为满足这两个条件,我们通常会执行剪枝,原因是由于在决策树构造的过程中,为了分类或回归的精度,往往这个树的分叉会非常的细,即节点过多,造成一定程度的过拟合(overfit)。因此我们需要对数的枝叶进行修剪(pruning),目前有两类主流的修剪策略,分别是:
前置裁剪【中止条件】:设定一定的中止条件,在分叉的过程过程中进行判断,如果满足条件,则停止。这个中止条件可能包括树的高度、终端分叉的个数、使用的特征数、性能增益的绝对或相对量。
后置裁剪【修剪条件】:就是在整个树生成之后再根据一定的规则再重新审视整个树,根据某些指标再来决定是否要保留分叉。
多目标优化
其实每一个模型在建模过程中,都是解决一个多目标优化的问题,其中最重要的两个目标函数就是拟合优度函数(损失函数)和正则化函数。其中拟合优度函数负责算法的准确性,正则化函数负责算法的泛化能力或稳定性,这个我们后面会详细介绍。
除了这两个函数之外,还有一个重要的因素是算法的效率。其实除了很多革命性的算法,绝大多数的所谓的【新】算法,都是在这三个因素之中,做出了一个适合当前场景的平衡。
今天先到这里了,求转发,求点广告!
领取专属 10元无门槛券
私享最新 技术干货