决策树学习是由训练数据集估计条件概率模型,损失函数通常是正则化的极大似然函数,算法依据信息论来划分数据集。
优势:数据形式非常好理解,计算复杂度不高,对缺失值不敏感,可以处理不相关特征
缺点:容易过拟合
专家系统中经常使用决策树
伪代码:(递归函数,递归结束的条件:程序遍历完所有划分数据集的属性,或者每个分支下的所有实例都具有相同的分类。如果数据集已经处理了所有属性,但是类标签依然不是唯一的,这时我们通常会采用多数表决的方法决定该叶子节点的分类。)
def createBranch():
检测数据集中的每个子项是否属于同一分类:
If so return 类标签;
Else
寻找划分数据集的最好特征
划分数据集
创建分支节点
for 每个划分的子集
调用函数createBranch()并增加返回结果到分支节点
return 分支节点
决策树算法包括特征选择、决策树的生成、决策树的剪枝。
特征选择:划分数据集的大原则是:将无序的数据变得更加有序 。所以,通常特征选择的准则是信息增益或者信息增益比或基尼指数。
决策树生成:基于训练数据集生成决策树,生成的决策树越大越好
决策树剪枝:(预剪枝)在构建树时设置提前终止条件,如信息增益最小阈值;(后剪枝)用验证集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝标准。
ID3
1986年由Quinlan提出。
信息增益(information gain):表示得知特征X的信息而使得类Y的信息不确定性减少的程度。也可以认为是熵的减少或者是数据无序度的减少。
特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差:
一般的,熵H(Y)与条件熵H(Y|X)之差称为互信息(mutual information)。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
特征选择 : 对训练数据集,计算每个特征的信息增益,选择信息增益最大的特征。
注:一信息增益为划分数据集的特征,存在偏向于选择取值较多的特征的问题。使用信息增益比(information gain ratio)可以对这一问题进行校正
C4.5
1993年由Quinlan提出。
信息增益比:特征A对训练数据集D的信息增益比:信息增益g(D,A)与训练数据集D关于特征A的值的熵H(D)之比:
特征选择 : 对训练数据集,计算每个特征的信息增益比,选择信息增益比最大的特征。
CART(classification and regression tree)
1984年由Breiman提出。CART同样由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归。
CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支。等价于递归地二分每个特征,将特征空间划分为有限个单元,并在这些单元熵确定预测的概率分布,也就是在输入给定的条件下输出的条件概率分布。
决策树的生成就是递归地构建二叉决策树的过程。对回归树用平方误差最小化准则,对分类树用基尼系数(Gini index)最小化准则,进行特征选择,生成二叉树。
回归树
最小二乘回归树:选择第j个变量x_j和它的取值s作为切分变量和切分点并定义两个区域1和R2。遍历所有输入变量,找到最优的切分变量j,构成一个(j, s),依次将输入空间切分为两个区域。接着,对每个区域重复上述划分过程,直到满足停止条件。
分类树
基尼指数:分类问题中,假设有K个类,样本点属于第K个类的概率为p_k,则概率分布的基尼指数定义为:
对于二分类问题,若样本点属于第1个类的概率是p,则概率分布的基尼指数为
对于给定的样本集合D,其基尼系数为:
这里C_k是D中属于第k类的样本子集,K是类的个数。
如果样本集合D根据特征A是否取某一可能值a被分割成D1和D2两部分,D2=D-D1。特征A条件下集合D的基尼指数:
基尼指数Gini(D)表示集合D的不确定性,基尼指数Gini(D,A)表示A=a分割后集合D的不确定性。
基尼指数的值越大,样本集合的不确定性也越大,这一点与熵相似。
特征选择 : 对训练数据集,计算每个特征的基尼指数,选择基尼指数最小的特征。
《Machine Learning in Action》 3、9
《统计学习方法》 5
《机器学习》 4