机器学习之决策树
一、引言 决策树是另一种十分有效的机器学习模型。该模型采取树状分支结构,能够很快地进行模型训练,并具有较高的准确率。 本文将以决策树的最简单形式开始,即特征只包括真值特征,或只有两种选择的特征,且结果也只有两种的情况。 二、决策树基本模型 决策树是一个二叉树,树的非叶节点存储需要区分的特征,叶节点存储预测的分类。对于每一个要进行预测的数据,从根节点开始,根据当前节点所对应的特征,选择移动到左子节点或右子节点。直到最终移动到一个叶节点,返回预测结果。 可以认为决策树的预测过程就是通过不同特征将当前数据分组归类的过程。决策树的构建过程,或者更一般地说,该模型的学习过程,也就是不断确定如何分类的过程。 三、决策树的构建 总体上讲,对于我们已有的样本数据,构建决策树的过程时这样的。 选择一个特征,将该特征作为当前节点的特征 根据该特征将样本数据分为两组 对于两组被分类的数据,分别递归执行如上操作,从而确定当前节点的左右子节点。直到当前数据已经全部是要预测的某个结果了、或者所有特征都被用完、又或者递归进行到了最大层数。 可以看到,决策树构建的过程中大部分过程都可以用简单的程序逻辑实现。现在唯一要解决的就是在每个节点时,如何选择一个特征了。 当然,对于神经网络来说也是这样的。唯一要解决的是如何选择权重。 四、特征的选择 我们要衡量选择不同特征对训练样本的区分效果。这点类似于损失函数。 我们区分的目标是使得所有当前组的样本属于同一个预测结果。那么我们就要找到一种衡量纯度的指标,数据越纯指标越小,数据越不纯指标越大。这种指标就是熵。假设某一种类在数据总体中的占比为 $p_1$,则熵 $H(p_1)$ 为 $$ p_0 = 1 - p_1 \\ H(p_1) = -p_1log_2(p_1) - p_0 log_2(p_0) $$ 即 $$ H(p_1) = -p_1log_2(p_1) - (1-p_1) log_2(1 - p_1) $$ 当 $p_1 = 0$ 或 $p_1 = 1$ 时 $$ H(0) = H(0+0) = 0 \\ H(1) = H(1-0) = 0 $$ 可以看出熵与交叉熵损失函数之间有联系。确实,交叉熵损失函数也是用来衡量预测的纯度的。对于一个预测,我们总希望它接近 0 或者 1,也就是纯度最大的比例。...