决策树是一种自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为零,此时每个叶节点中的实例都属于一类。
决策树学习算法优点是,它可以自学习。在学习过程中,不需要使用者了解过多背景知识,只需要对实例进行较好的标注,就能够进行学习。决策树属于有监督学习。从一类无序、无规则的事物中推理决策树表示的分类规则。
决策树的建立
建立决策树的关键是,在当前状态下选择哪个属性作为分类依据。根据不同的目标函数,建立决策树主要有三种算法:
ID3 (信息增益)
C4.5 (信息增益率)
CART (基尼指数)
信息增益表示得知特征A的信息而使得类X的信息的不确定性的减少程度。定义特征A对训练数据集D的信息增益为g(D,A),定义g(D,A)为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即g(D,A)=H(D)-H(D|A)。选择信息增益最大的特征作为当前的分裂特征。
上公式中,经验熵, (D表示训练数据集,|D|表示样本个数, 表示有K个类,为属于的样本个数,有:)。注:经验熵是对标号关于类的求和。
经验条件熵,特征A有n个不同的取值,根据特征A的取值将D划分为n个子集,为的样本个数,有:,记子集中属于类的样本的集合为,为的样本个数。注:经验条件熵是对特征关于属性的求和。
信息增益率:g(D,A)/H(D)
Gini系数。注,Gini系数也称贫富差距系数。
决策树剪枝
在决策树的创建时,由于数据中的噪声和离群点,许多分枝反映的是训练数据中的异常。剪枝方法是用来处理这种过分拟合数据的问题。通常剪枝方法都是使用统计度量,剪去最不可靠的分枝。
剪枝总体思路:由完全树开始,剪枝部分结点得到T1,再次剪枝部分结点得到T2...直到仅剩树根的树;在验证数据集上对这k个树分别评价,选择损失函数最小的树
剪枝系数确定:
1.根据原损失函数;
2.叶结点越多,决策树越复杂,损失越大,修正:
当为0时,未剪枝的决策树损失最小;
当为正无穷大时,单根结点的决策树损失最小;
3.假定当前对以r为根的子树剪枝,剪枝后只保留r本身而删除所有的叶子;
4.考察以r为根的子树
剪枝后的损失函数:
剪枝前的损失函数:
5.令上两式相等,则得到结点r的剪枝系数
剪枝算法:
1.计算所有内部节点的剪枝系数;
2.查找最小剪枝系数的结点,剪枝得决策树;
3.重复1.2.,直到决策树只有1个结点;
4.得到决策树序列;
5.使用验证样本集选择最优子树。