决策树大概是最符合人直觉思考的机器学习方法了。通过对样本属性一步步的判断,最终给出一个结论。我想主要关注的几个问题有:如何选择划分节点,如何避免过拟合,如何处理连续及缺失值。
划分选择
选择分类节点时,利用了信息熵的知识。在分类问题中信息熵反映在样本集中不同类样本比例上。我们希望根据某一节点分组完后,各组内样本类别尽可能统一,即纯度提高。很多指标可以评价纯度提升程度,如信息增益(ID3),增益率(C4.5),基尼系数(CART)。
信息增益可以看做是划分前的熵减去划分后的熵,以熵下降的绝对程度作为划分标准;信息增益对可取类别比较多的属性有偏好,于是又有了增益率,在信息增益的基础上除以属性包含的类别数目,以下降的相对程度作为划分标准。有点类似ALFF和fALFF,由绝对到相对的转化通常会提升性能。
剪枝处理
剪枝是决策树应对过拟合的主要方法,分为预剪枝和后剪枝。预剪枝在每个划分节点上都要考察一下泛化能力,看分类能否带来验证集精度的提升。预剪枝可以显著避免过拟合,降低开销;但有些分支虽暂时不能提升泛化能力,但在此基础上的后续划分却有可能提高,因此也要承担欠拟合的风险。
后剪枝则是先在训练集上生成完整的决策树,之后再一个节点一个节点的倒推,看精度变化。后剪枝保留更多的分支,不用担心欠拟合,泛化能力往往优于预剪枝;但由于要先生成完整决策树,并且逐一考察节点,开销会大得多。
连续与缺失值
处理连续值时,要先设定后多个切值作为判定条件,然后考察每个切值的信息增益,选择最大的那个作为这个连续值属性的判断条件。
样本可能有些属性值缺失,但改分还得分,不用剔掉。在计算有缺失值的属性的信息增益时,可以只观察那些此属性上有值的样本,再乘一个无缺失样本所占比例即可。
多变量决策树
决策树的节点往往是单属性的,得到的决策边界都是横平竖直的。而多变量的决策树在分类节点上不是找一个最优划分属性,而可以是多个属性的线性组合,决策边界可以是斜线。多变量决策树可以简化模型,提高精度。