什么是决策树?
其实决策树采用的是if else 的思想! 在我们经常不停的敲if, else if, else的时候,其实就已经在用到决策树的思想了。只是你有没有想过,有这么多条件,用哪个条件特征先做if,哪个条件特征后做if比较优呢?怎么准确的定量选择这个标准就是决策树机器学习算法的关键了。策树就像是我们现实生活中的树一样! 有根(根节点)、有叶子(叶子节点)。树的最顶层是根结点。使用决策树分类就是将实例分配到叶节点的类中。该叶节点所属的类就是该节点的分类。用一张图来理解决策树的形状。
2、构建决策树的基本算法。
1、首先是ID3算法 : 它是使用信息增益进行特征选择的! 下面介绍一下ID3的原理.
2、C4.5 算法:使用信息增益率进行特征选择,克服了信息增益选择特征的时候偏向于特征个数较多的不足。
3、CART 算法:CART 全称为分类回归树,既可以用于分类,也可以用于预测。利用 CART 构建回归树用到树的 剪枝技术,用于防止树的过拟合
2.1 决策树归纳算法 (ID3) :
2.1.1、首先想要了解ID3算法,我们就需要知道熵的概念 :1948 年,香农提出了 “信息熵(entropy)”的概念一条信息的信息量大小和它的不确定性有直接的关系,要搞清楚一件非常非常不确定的事情,或者是我们一无所知的事情,需要了解大量信息==>(也就是说)信息量的度量就等于不确定性的多少(使用)比特(bit)来衡量信息的多少
例子:对一个有 32 支球队的世界杯争夺冠军,每一个夺冠的概率都是1/32,那么熵就为?
H =− {p1 ∙ log p1 + p2 ∙ log p2 + ....+p32 ∙ log p32 }
其中 p1,p2……p32 分别是 32 支球队争冠的概率。如果当 32 支球队夺冠概率相同时,对应的熵是最大的,等于 5bit。(分析如何得出 5 这个数值的。)
注意:实质上每个队夺冠的几率不是相等的。当概率不相等的时候算出的熵都比 5 小
上面我们采用了的信息熵的公式:
通常多个独立事件所产生的不确定性等于各自不确定性之和,也就是每个事件的发生与不发生是相互独立的,这在数学上称为可加性,而满足这样可加性的函数就是我们在高中阶段所学习过的对数函数(log 函数)。由此得到第一个不确定性函数 I(X) 公式:
I(X) = log(1/P)=− log(P) (公式一)
如果对一个随机事件有 n 种取值:X1,X2,X3…,对应的概率 p1,p2…..pn,则该事件的不确定性应该是单个取值的不确定性的期望 E,也叫作信息熵,即:
总结: 熵越大---->信息的不确定性就越大---->信息纯度就越低。
用概率上的来说就是 概率越大--->出现的机会就越多--->不确定性越小---->信息熵就越小
有了以上基础之后,我们就可以学习 ID3 算法,从而构建我们的决策树,从而达到分类目的。
2.2 . ID3算法的思路:
目的 : 是为了选择属性判断节点
引入了"信息增益"的概念 : 就是信息获取量(information Gain): Gain(A)=info(D)-info_A(D)
:注 : 整个数据集信息熵与当前节点(划分节点)信息熵的差
什么是信息增益??
含义 :划分数据集前后信息发生的变化。
本质上是衡量给定属性能否更完美、没有误差地区分开训练数据集的能力。
我们使用信息增益来确定决策树分支的划分依据,它也是决策树分支上整个数据集信息熵与当前节点(划分节点)信息熵的差值,通常用 Gain(A)表示:
Gain(A) = I(parent) − E(A) 公式 (3)
一般的整体的信息熵 就是I(parent)是保持不变的 ! 也就是当前节点的信息熵E(A)越小,整体的信息增益Gain(A)就越大 . 不确定性越小,因此通常选择信息熵大的作为根节点。
2.3 ID3算法的步骤 :
输入:样本的集合 S,属性集合 A
输出:ID3 决策树
A. 如果所有种类的属性都处理完毕,则返回。否则,执行步骤 B.
B. 计算出 信息增益最大的属性 a,将该属性作为一个节点。如果仅凭借 a就可以对样本分类,则返回。否则执行步骤 C。
C. 对属性 a 的每个可能取值 v 执行以下操作:
1.将 v 的样本作为 s 的一个子集 Sv
2.生成剩余属性集合 AT=A-{a}
3.以样本集合 Sv 和属性集合 AT 为输入,递归执行 ID3 算法。
下面来看一个例子来解释一下ID3算法的应用:
算法内的过程是这样的 :
输入的是m个样本,样本输出集合为D,每个样本有n个离散特征,特征集合即为A,输出为决策树T。
算法的过程为:
1) 初始化信息增益的阈值ϵϵ
2)判断样本是否为同一类输出Di,如果是则返回单节点树T。标记类别为Di
3) 判断特征是否为空,如果是则返回单节点树T,标记类别为样本中输出类别D实例数最多的类别。
4)计算A中的各个特征(一共n个)对输出D的信息增益,选择信息增益最大的特征AgAg
5) 如果AgAg的信息增益小于阈值ϵϵ,则返回单节点树T,标记类别为样本中输出类别D实例数最多的类别。
6)否则,按特征AgAg的不同取值AgiAgi将对应的样本输出D分成不同的类别DiDi。每个类别产生一个子节点。对应特征值为AgiAgi。返回增加了节点的数T。
7)对于所有的子节点,令D=Di,A=A−{Ag}D=Di,A=A−{Ag}递归调用2-6步,得到子树TiTi并返回。
2.4 . ID3算法的不足:(所以有了改进后的C4.5算法:)
a)ID3没有考虑连续特征,比如长度,密度都是连续值,无法在ID3运用。这大大限制了ID3的用途。
b)ID3采用信息增益大的特征优先建立决策树的节点 , 但是,在相同的条件下取值比较多的特征 比 取值少的特征信息增益大 也就是 :用信息增益作为标准容易偏向于取值较多的特征
c) ID3算法对于缺失值的情况没有做考虑
d) 没有考虑过拟合的问题
下面是对于ID3算法的改进:
3 、C4.5算法的:(它是对ID3算法的改进)
C4.5 和 ID3(1986 年 Quinlan 提出的)算法类似,只有在以下几个点作了改进。
1.用 信息增益率来选择属性,克服用信息增益选择时候偏向选择取值多的属性的不足。
2.在树构造过程中进行剪支。
3.能够完成连续属性的离散化处理。
4.能够对不完整数据进行处理。
信息增益率就是信息增益和特征熵的比值来决定的, 他解决了信息增益作为标准容易于取值较多的特征的问题。
表达式如下:
c4.5算法的不足.
1、由于决策树的算法非常容易产生过拟合, 因此对生成的决策树进行剪枝, 剪枝的算法有很多! 而决策树采用的两种手段,第一种是预剪枝,就是在生成决策树的过程中进行剪枝,另一个是后剪枝,就是先生成决策树,然后在根据交叉验证来进行剪枝.
2、C4.5生成的是多叉树 , 就是一个父节点有多个节点 , 很多时候,在计算机中二叉树模型会比多叉树运算效率高.我们考虑是否可以采用二叉树来提高效率。
3、C4.5只能用于分类,如果能够将决策树用于回归的话,name不就可以扩大它使用的范围了。
4、C4.5由于使用了熵模型,里面有大量的耗时的对数运算,如果是连续值还有大量的排序运算。如果能够加以模型简化可以减少运算强度但又不牺牲太多准确性的话,那就更好了 下面介绍的是分类回归树