决策树演算法
原理:透过特征值构成树结构来分类,找出在划分数据集时找出哪个特征起到了决定性的作用。
目标:分类未知类别的案例,用以理解数据中所蕴涵的知识讯息
优点:计算复杂度不高,输出结果易于了解,对中间值的缺失不敏感、可以处理不相关的特征数据
缺点:可能有过度匹配的问题
适用数据:数值型和标称型
输入:未知类别的实例
输出:输入实例的类别
工作原理
从数据集中提取出一系列规则,在每次划分前找出在划分数据集时找出哪个特征起到了决定性的作用,依照找特征的规则不同而有不同的决策树算法(ID3、C4.5、CART)
,进而评估每个特征。若某个分支下的数据属于同一个类型则无需进一步对数据集分割;若不属于同一个类型则重复划分子集,直到所有具有相同类型的数据均在一个数据子集内,每个叶节点代表一个类别。
创建分支的伪代码函数createBranch():
检查数据集中的每个实例是否属于同一个分类:
If so return类标签
Else
寻找划分数据集的最好特征
划分数据集
创建分支节点
for 每个划分的子集
调用函数createBranch并增加返回结果到分支节点中
return 分支节点
划分数据集的大原则是:将无序的数据变得更加有序,在划分数据集前后信息发生的变化称谓"信息增益(Information Gain)"
,透过信息增益选信息增益最高的特征就是最好的划分选择。
熵(Entropy)为信息的期望值,为了计算熵,我们要计算所有类别中所有可能值包含的信息期望值。
ID3算法
ID3算法(Iterative Dichotomiser 3,迭代二叉树3代)是一种贪心算法,用来构造决策树。
对于有K个类别的分类问题来说,假定样本集合D中第 k 类样本所占的比例为pk(k=1,2,…,K),则样本集合D的信息熵定义为:
其中pk是选择该分类的概率。
信息增益(information gain)是针对一个特定的分支标准(branching criteria)T,计算原有数据的信息熵与引入该分支标准后的信息熵之差。
其中a是有V个不同取值的离散特征,使用特征a对样本集D进行划分会产生V个分支,Dv表示D中所有在特征a上取值为av的样本,即第v个分支的节点集合。表示分支节点的权重,即分支节点的样本数越多,其影响越大。
ID3算法的基本思想是:首先计算出原始数据集的信息熵,然后依次将数据中的每一个特征作为分支标准,并计算其相对于原始数据的信息增益,选择最大信息增益的分支标准来划分数据,因为信息增益越大,区分样本的能力就越强,越具有代表性。重复上述过程从而生成一棵决策树,很显然这是一种自顶向下的贪心策略。
C4.5算法
对ID3算法的改进,C4.5克服了ID3的2个缺点:
- 用信息增益选择属性时偏向于选择分枝比较多的属性值,即取值多的属性
- 不能处理连续属性
C4.5算法不不直接使用信息增益,而是使用“增益率”(gain ratio)来选择最优的分支标准,增益率的定义如下:
称作分支标准T的“固有值”(intrinstic value)。作为分支标准的属性可取值越多,则IV 的值越大。
需要注意的是: 增益率准则对可取值数目较少的属性有所偏好,
因此C4.5算法并不是直接选择增益率最大的属性作为分支标准,
而是先从候选属性中找出信息增益高于平均水平的属性,
再从中选择增益率最高的。
CART算法
CART(Classification And Regression Tree)可用于创建分类树和回归树。CART算法的特点:
- 二分(Binary Split):在每次判断过程中,都是对样本数据进行二分。CART算法是一种二分递归分割技术,把当前样本划分为两个子样本,使得生成的每个非叶子结点都有两个分支,因此CART算法生成的决策树是结构简洁的二叉树。由于CART算法构成的是一个二叉树,它在每一步的决策时只能是“是”或者“否”,即使一个feature有多个取值,也是把数据分为两部分
- 单变量分割(Split Based on One Variable):每次最优划分都是针对单个变量。
- 剪枝策略:CART算法的关键点,也是整个Tree-Based算法的关键步骤。剪枝过程特别重要,所以在最优决策树生成过程中占有重要地位。有研究表明,剪枝过程的重要性要比树生成过程更为重要,对于不同的划分标准生成的最大树(Maximum Tree),在剪枝之后都能够保留最重要的属性划分,差别不大。反而是剪枝方法对于最优树的生成更为关键。
CART的分支标准建立在GINI指数这个概念上,GINI指数主要是度量数据划分的不纯度,是介于0~1之间的数。GINI值越小&#