机器学习:决策树(上)
1、基本流程
决策树中决策过程的每一次判定都是对某一属性的“测试”,决策最终结论则对应最终的判定结果。
一般一棵决策树包含:一个根节点、若干个内部节点和若干个叶子节点
- 每个非叶节点表示一个特征属性测试。
- 每个分支代表这个特征属性在某个值域上的输出。
- 每个叶子节点存放一个类别。
- 每个节点包含的样本集合通过属性测试被划分到子节点中,根节点包含样本全集。
2、 决策树的生成
决策树的构造是一个递归的过程,有三种情形会导致递归返回:
-
(1) 当前结点包含的样本全属于同一类别,
- 这时直接将该节点标记为叶节点,并设为相应的类别;
-
(2) 当前属性集为空,或是所有样本在所有属性上取值相同,无法划分,
- 这时将该节点标记为叶节点,并将其类别设为该节点所含样本最多的类别;
-
(3) 当前结点包含的样本集合为空,不能划分,
- 这时也将该节点标记为叶节点,并将其类别设为父节点中所含样本最多的类别。
决策树学习的关键在于如何选择划分属性,不同的划分属性得出不同的分支结构,从而影响整颗决策树的性能。
属性划分的目标是让各个划分出来的子节点尽可能地“纯”,即属于同一类别。
- 决策树最常用的算法有三种:ID3,C4.5和CART。
3、 ID3算法(使用信息增益)
ID3算法使用信息增益为准则来选择划分属性,
信息熵(information entropy):度量样本纯度。假定当前样本集合D中第k类样本的比例为\(p_k\),一共有\(y\)个类别,则信息熵定义为:
信息熵\(Ent(D)\)的值越小,D的纯度越高。
- 可以把信息熵理解成信息的混乱程度,混乱程度越大,说明纯度低;
假设离散属性\(\alpha\)有v个可能的取值,\({a^1,a^2,…,a^V}\),若使用\(\alpha\)对样本D进行划分,得到\(V\)个分支节点,第\(v\)个分支中包含D中所有在\(a=a^v\)的样本\(D^v\),其信息熵为\(Ent(D)\),考虑到不同分支结点的样本数不同,给分支结点权重\(|D^v|/|D|\),即该结点样本数占总样本数的比例。信息增益(information gain)为:
ID-3决策树算法采用信息增益为准则来划分属性。选用属性准则:
4、 C4.5算法(使用增益率)
实际上,信息增益准则对可取值数目较多的属性有所偏好,为了减少这种偏好可能带来的不利影响,C4.5算法采用”增益率“来选择最优划分属性:
\(IV(\alpha)\)为属性的固有值,表示属性的可能取值越多,其\(IV(\alpha)\)值越大。增益率准则可以对可取值数目较少的属性有所偏好。C4.5算法并不是直接选择增益率最大的候选划分属性,而是使用启发式:先从候选划分属性中找出信息增益高出平均水平的属性,再从中选择增益率最高的。
5、 CART算法(使用基尼系数)
CART决策树采用”基尼指数“衡量数据集D的纯度:
基尼指数表示从数据集D中随机抽取两个样本,其类别标记不一致的的概率。
- 因此,概率越小,即基尼指数越小,D纯度越高。
属性\(\alpha\)的基尼指数定义为:
选用准则:
6、划分属性方法小结
ID3:取值多的属性,更容易使数据更纯,其信息增益更大。
训练得到的是一棵庞大且深度浅的树:不合理。
C4.5:采用信息增益率替代信息增益。
CART:以基尼系数替代熵,最小化不纯度,而不是最大化信息增益。