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

那么怎么去选择不同特征的决策顺序呢?
首先,我们会选择区分能力更强的特征作为先出场的节点。这里衡量区分能力的指标就是熵。
熵用来描述混乱程度,越混乱熵越大。这个数学关系依旧可以用 -log 来描述。一件事情发生的概率越大,说明它越稳定,对应熵越小。那么得到的这个值也就代表了这一类的不确定度。再乘上一个概率(表示该类出现的权重),相加就得到了整个数据集的平均不确定度,也就是信息熵。


注意,信息熵是直接看的整个数据集的标签(分类结果),而没有去考虑特征。
条件熵是指用某一个特征划分数据集后,计算每一个子集的信息熵后做加权平均。

信息增益就是信息熵 - 条件熵,得到的结果能够反映该特征分类前后数据集混乱程度的变化。信息增益越大,代表分类效果越好,决策树优先选择这个特征分裂。
当然以上是决策树的一种逻辑,还有的是通过信息增益率、Gini系数去构建。因为单纯考虑信息增益对于分类过于细的特征比如 学号 ,它的信息增益非常大,但作为决策树的节点显然是不妥当的。
下面是信息增益率的公式:

下面是Gini系数的公式:

Gini系数的逻辑和熵差不多,当某一类的占比越大的时候(越接近1),也就是数据集越稳定,那么得到的基尼系数就越小。
还有一个问题就是对于离散的值(如是否结婚)可以直接分类;而对于连续的值(如存款多少)又怎么办呢?算法会自己遍历数据集找到一个最佳阈值,将数据集分为二分类,从而把连续值转化为离散值。
通过以上的知识,我们就可以建立一颗决策树了。
更多推荐




所有评论(0)