决策树是用来解决分类问题的一种算法。

        现在有一批数据包含一些特征和一个标签。决策树用树型的模型根据特征一步一步做决策来预测标签。比如一个二分类的问题——是否会拖欠贷款。现在在样本中第一个特征是有无房产,有房产的不拖欠,无房产的容易拖欠,这样就出现了第一个分支。第二个特征为是否婚姻,那么在无房产的下面继续分支已婚和未婚。如此一来就可以得到一颗树,从根节点到叶子节点就可以预测出是否会拖欠贷款。

        那么怎么去选择不同特征的决策顺序呢?

        首先,我们会选择区分能力更强的特征作为先出场的节点。这里衡量区分能力的指标就是熵。

        熵用来描述混乱程度,越混乱熵越大。这个数学关系依旧可以用 -log 来描述。一件事情发生的概率越大,说明它越稳定,对应熵越小。那么得到的这个值也就代表了这一类的不确定度。再乘上一个概率(表示该类出现的权重),相加就得到了整个数据集的平均不确定度,也就是信息熵

        

       注意,信息熵是直接看的整个数据集的标签(分类结果),而没有去考虑特征。

        条件熵是指用某一个特征划分数据集后,计算每一个子集的信息熵后做加权平均。

        信息增益就是信息熵 - 条件熵,得到的结果能够反映该特征分类前后数据集混乱程度的变化。信息增益越大,代表分类效果越好,决策树优先选择这个特征分裂。

        当然以上是决策树的一种逻辑,还有的是通过信息增益率、Gini系数去构建。因为单纯考虑信息增益对于分类过于细的特征比如 学号 ,它的信息增益非常大,但作为决策树的节点显然是不妥当的。

        下面是信息增益率的公式:

        下面是Gini系数的公式:

        Gini系数的逻辑和熵差不多,当某一类的占比越大的时候(越接近1),也就是数据集越稳定,那么得到的基尼系数就越小。

        还有一个问题就是对于离散的值(如是否结婚)可以直接分类;而对于连续的值(如存款多少)又怎么办呢?算法会自己遍历数据集找到一个最佳阈值,将数据集分为二分类,从而把连续值转化为离散值。

        通过以上的知识,我们就可以建立一颗决策树了。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐