什么是决策树
以一个母亲要给女儿介绍男朋友为例,在见面之前,都会判断一下各方面的条件,然后再决定去还是不去,那么其实决策树构建思想,在进行节点的划分 前首先进行判断。
决策树的划分依据
由上面案例可知,决策树划分之前需要进行判断,那么具体如何划分呢,首先引入熵的概念,物理学上,熵 Entropy 是“混乱”程度的量度,系统越有序,熵值越低;系统越混乱或者分散,熵值越高,1948年香农提出了信息熵(Entropy)的概念,“信息熵” (information entropy)是度量样本集合纯度最常用的一种指标。
假定样本集合 D 中第 k 类样本所占的比例为 pk (k = 1, 2,. . . , |y|)
pk=ck/D D为样本的所有数量,ck 为第k类样本的数量
D的信息熵定义为:
决策树划分依据
- 信息增益(ID3 算法):划分前后信息熵的差值,熵可以表示样本集合的不确定性,熵越大,样本的不确定性就越大。因此可以使用划分前后集合熵的差值来衡量使用当前特征对于样本集合D划分效果的好坏,一般而言,信息增益越大,则意味着使用属性 a 来进行划分所获得的"纯度提升"越大。
特征a对数据样本D的信息增益表示为
End(D)表示样本D的信息熵(根据正负样本的占比计算各自的信息熵求和)
Dv表示a属性中第v个分支节点包含的样本数
Ck 为第k类样本的数量
特征a的信息熵(分别计算样本特征a属性下类别正负样本占a属性的的占比)
Ckv表示a属性下k类样本的数量
最后计算样本各特征的信息增益进行比较,决策树选择信息增益大的作为划分依据
- 信息增益率(C4.5算法)
有了信息增益不是已经可以划分决策树了吗,为什么还要有信息增益率,其实主要是信息增益有时划分的决策树不一定是最优的,根据计算,信息增益更偏向于样本特征属性数目多的哪一类,所以有了C4.5决策树算法,选择增益率计算可以避免信息增益的缺陷,同时C4.5算法使用后剪枝,避免树无节制的划分增长,可以避免过拟合
信息增益率的计算公式:
G(D,a)就是上述计算a特征的信息增益
IV(a)表示a对应的固有值
以下图为例:
第一列为论坛号码,第二列为性别,第三列为活跃度,最后一列用户是否流失。我们要解决一个问题:性别和活跃度两个特征,哪个对用户流失影响更大?
以性别为例计算其信息增益及信息增益率:
- 基尼值和基尼指数
基尼值:从样本D从随机抽取连个样本,其类别标记标记不一致的概率,Gini值越小,数据集的纯度越高。CART决策树使用的是基尼指数选择划分属性(这是一种著名的决策树学习算法,分类和回归任务都可用)
数据集D的基尼值计算公式:
基尼指数(Gini_index(D)),计算公式如下:
一般选择基尼指数下的选择划分属性
如何评估分割点的好坏
如果一个分割点可以将当前的所有节点分为两类,使得每一类都很“纯”,也就是同一类的记录较多,那么就是一个好分割点,构建决策树采用贪心算法,只考虑当前纯度差最大的情况作为分割点
常用的减枝方法
决策树剪枝的基本策略有"预剪枝" (pre-pruning)和"后剪枝"(post- pruning) ,剪枝 (pruning)是决策树学习算法对付"过拟合"的主要手段
- 预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点;
- 后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。