决策树(decision tree)是一种分类监督学习方法,通过连续提出一系列判断问题,将训练样本逐步划分为不同子组,并最终给出分类或回归预测。树中的每个内部节点表示一次判断,每个分支表示判断结果,最终的叶节点(leaf node)给出预测结果。
例如,研究者希望根据驾驶行为判断驾驶员是否疲劳。模型可以首先判断“是否出现长时间闭眼”;如果出现,则进一步判断“是否发生车道偏离”;最后根据不同判断路径预测驾驶员属于“疲劳”还是“不疲劳”。因此,一棵决策树可以表示为一系列逐层展开的“if-then”规则。
决策树中的判断规则是根据训练数据学习得到。建立分类树时,模型会反复选择某项特征及其切分条件,使切分后的样本在类别上更加单一。例如,如果按照“是否出现长时间闭眼”切分后,一组样本大多疲劳、另一组大多不疲劳,那么这一特征就能够有效区分两类样本。常用的切分标准包括基尼不纯度(Gini impurity)、信息增益等。模型在第一次切分后,会继续对得到的子组重复这一过程,逐渐形成树状结构。对于新的样本,只需要从根节点开始,根据样本的特征依次沿相应分支向下判断,直到到达某个叶节点,即可得到预测结果。
决策树形成的判断规则比较直观,可以直接观察模型使用了哪些特征以及样本经过怎样的判断路径得到预测结果。但如果决策树不断继续划分,就可能把训练数据中的偶然差异和噪声也当成稳定规律,导致过拟合。因此,可以限制树的最大深度、叶节点所需的最少样本数,或者通过剪枝(pruning)减少不必要的分支。此外,单棵决策树还可能对训练数据比较敏感,可以采用随机森林(random forest),通过建立多棵存在差异的决策树并汇总其预测结果,可以降低单棵决策树的这种不稳定性。