0. 前言
在机器学习算法中,
决策树
可以说是思路最自然的一个门派了。
也正因为思路自然,所以门派内部根据不同的问题,不断细化,形成了多种分支。比较出名的,有ID3
,C4.5
,CART
等。
这几种决策树算法,在之后的文章中都会说明。本文中,我们首先了解一下决策树的基本信息。
最初始人们用 决策树
来辅助决策,用机器学习的行话来说,即用来做 分类。那么,自然就属于 监督学习
的范畴了。
决策树最开始只能处理离散值的特征。后来,随着研究的深入,人们发现来处理连续值特征也没有问题;进而甚至可以用来做回归问题。于是,决策树算法便一步一步的变身为“全能”型的算法了。
决策树的算法种类虽然多,但是基本都是根据 训练(即决策树构建)方法的不同划分的。而在实际使用时,所有的 树
都是一模一样的 推理 方法。
\
1. 一个案例
红楼银行 的新员工 林黛玉,接到一组贷款申请,她的工作是判断是否应该批准这些贷款申请。客户的资料如下:
姓名 | 时代 | 家产 | 年龄 |
---|---|---|---|
赵云 | 三国 | 5万两 | 28 |
贾宝玉 | 清朝 | 100万两 | 20 |
李逵 | 北宋 | 50两 | 35 |
贾雨村 | 清朝 | 1000两 | 47 |
黛玉手里,有一套审批流程,银行通过该流程(下图)来判断是否应该发放贷款。下图所表示的结构,即是一棵 决策树
。
2. 本质
从上面的例子中可以发现,决策树不就是一堆
if-else
规则的嵌套吗?是的,实际上的确是这样。
决策树算法,本质上是将一个复杂的大问题,不断地拆分为更小粒度但更简单的子问题,直至最终解决。决策树是一种以计算量换难度的方法
。这就类似分段函数。在拟合一条复杂的曲线时,虽然很难显式地写出一个整体表达式,但是利用合理的分段,在每一段上甚至可以用线性函数很好地拟合。
\
3. 中场休息,随便聊聊
虽然决策树算法已经 “很老” 了,但是由于近年Kaggle等竞赛上XGBoost等所谓“神器”的兴起,决策树也跟着沾光焕发第二春了。
其实,决策树算法还是有一些自己独特的东西的。比如,可解释性强(一堆 IF-THEN
);比如,天然支持多分类(如果你了解SVM的多分类是多么不美,估计会对我这句话感同身受……)。
不过,要从样本集自动构建出一棵决策树,并不是一个显而易见的问题。这个算法,看起来应该是用递归来描述比较合适,但细节也很多。比如,根节点为什么选择 时代
而不是 家产
?
另外,非叶子节点分叉的条件如何确定呢?
试想一下,如果林妹妹想给宝玉哥哥开个后门,将决策树中第三层的
年龄
分叉条件从24岁改到18岁,我们有什么理由说她不对呢?显然,靠人的经验说不清楚,必须有定量的科学描述,来证明18岁不可以。
带着这些问题,进入后面的章节,就能对决策树算法有更加深刻和系统性的认识。
本节完。