决策树主要分为两种类型:分类树和回归树。分类树的目标变量为离散型,最终目的是预测各样本所属的类别,如基于客户的征信行为预测客户借款后是否逾期;而回归树的目标变量为连续型,最终目的是预测各样本的最终取值,如基于客户的消费行为预测客户的收入。
决策树的生成步骤是:特征选择、决策树生成、决策树剪枝。
(1)特征选择
特征选择就是选择对训练集样本有较强分类能力的特征来提高决策树学习效率。至于如何选择特征,有不同的量化标准,从而衍生出了不同的决策树算法。特征选择的标准主要有熵(Entropy)、信息增益(Information Gain)、信息增益比(Information Gain Ratio)、基尼指数(Gini Index)、均方误差(Mean Squared Error)和平均绝对误差(Mean Absolute Error)等,其中均方误差和平均绝对误差适用于回归树,其他指标适用于分类树。
在开始进行特征选择之前,往往需要对建模样本进行数据清洗,待完成数据清洗后,才会开始进行特征选择,筛选效果好的特征用来生成决策树。常见的数据清洗工作是缺失值处理。在实际生产中,每次构建决策树基本上都会遇到样本中某些特征值缺失的情况。若存在缺失值的样本较少且缺失值不是关键特征值,则抛弃缺失样本对决策树的构建没什么影响。若缺失的样本较多或者缺失值是关键的特征值,则抛弃有缺失值的样本将造成较多有用信息的浪费,并且最终构建的决策树可能存在较大偏差,在这种情况下,抛弃缺失样本的方法是不可取的。在构建决策树的过程中,如何处理缺失值呢?通常的做法是基于业务情况了解产生缺失值的原因,对有缺失值的特征进行插补或者不处理缺失值,直接将有缺失值的样本纳入建模样本集中来构建决策树模型。常见的缺失值插补的方法有均值插补、众数插补、回归插补、二阶插补、抽样填补等,在处理实际问题时,可结合具体情况采用相应的处理方法。
(2)决策树生成
决策树是一种贪心算法,在生成决策树的过程中,会基于某种特征选择标准自上而下递归地生成子节点,直到数据集不可分或达到限制条件从而停止决策树“生长”。
决策树的每一次节点生成步骤其实就是不断基于特征选择方法递归地选择最优特征和特征对应的切分点的过程。由于采用贪心算法生成决策树,因此最终得到的决策树往往非常庞大且冗余,很容易在训练样本上产生过拟合,即在训练样本上的准确率非常高,但是在验证样本上的准确率比较差。因此,为了确保决策树有较好的泛化能力,通常需要通过剪枝过程对复杂的决策树进行裁剪,避免生成的决策树过于复杂。
(3)决策树剪枝
决策树本身的特点决定了它比较容易过拟合,在这种情况下,通过剪枝(pruning)来控制模型复杂度是一种非常有效且必要的手段。需要说明的是,虽然绝大多数决策树都支持剪枝,但是也有例外,如ID3算法生成的决策树就不支持剪枝。决策树剪枝的过程就是从生成的决策树上裁掉一些子树或者叶节点。剪枝的目的是通过剪枝来提升决策树的泛化能力。决策树剪枝的基本策略有预剪枝(pre-pruning)和后剪枝(post-pruning)两种,在实际生产中,往往将两种剪枝方法结合使用。
预剪枝是指在决策树生成前设定一些前置条件,用来决定每个节点是否应该继续划分。预剪枝能够避免生成过于复杂的决策树,且能够降低计算复杂度,但是可能生成过于简单的决策树,导致预测时偏差较大,从而带来欠拟合的风险。预剪枝基于贪心算法,抱着能多剪枝就多剪枝的思路对决策树进行修剪,使得决策树的很多分支没有展开就提前停止了。虽然有些分支的当前划分不能提升泛化性能,甚至可能导致泛化性能暂时下降,但是在其基础上进行的后续划分有可能导致泛化性能显著提升,这就是预剪枝剪太多从而导致欠拟合的原因。
后剪枝就是先从训练集充分生长成一棵完整的决策树,再自底向上地对非叶结点进行考察,若将该节点对应的子树替换为叶结点能带来决策树泛化性能的提升,则将该子树替换为叶结点。后剪枝决策树通常比预剪枝决策树保留了更多的分支,且会产生更大的计算开销。一般情况下,后剪枝决策树的欠拟合风险相对较小,且泛化性能往往会优于预剪枝决策树。
在决策树的生成算法中,典型代表有ID3、C4.5、CART(Classification And Regression Tree,分类与回归树)等,它们的区别在于树的结构与构造算法。上述几个决策树生成算法的比较见表2-9。
表2-9 典型决策树生成算法比较
为了弥补决策树容易过拟合、预测精度偏低等不足,基于决策树算法衍生出了随机森林(Random Forest)、GBDT、XGBoost、LightGBM等集成算法。上述集成算法预测精度较高,在风控领域应用广泛。常用的风控评分卡模型(A卡、B卡、C卡)除选择逻辑斯谛回归(Logistic Regression)算法拟合以外,往往还会同时选择上述至少一种集成算法进行拟合,通过比较不同算法拟合的模型结果,选择最优的模型进行上线决策。