决策树(decision tree)是一类常见的机器学习方法。决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。 数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。
输入: 训练集 D={(x1,y1),(x2,y2),...,(xm,ym)} ;
属性集: A={a1,a2,...,ad}a∗
伪代码:
函数 TreeGenerate(D,A)
生成节点node:
if D 中的样本全属于同一类别 C then
将node标记为C类叶子节点;return
end if
if A = ϕ OR D 中样本在 A 上取值相同 then
将 node 标记为叶节点,其类别标记为 D 中样本数最多的类;return
end if
从A中选则最优划分属性a∗;
for a* 的每一个值a*(v) do
为node生成一个分支;令Dv表示D中在a*上取值为a*(v)的样本子集;
if Dv 为空 then
将分支节点标记为叶节点,其类别标记为D中样本最多的类;return
else
以Tree(Dv,A\{a*})为分支节点
end if
end for
输出 : 以node为根的一颗决策数
决策数的生成是一个递归的过程,在决策树基本算法中有三种情况会导致递归返回:
决策树算法的关键在于如歌选择最优划分属性,随着划分的不断进行,我们希望决策树的分支节点所包含的样本尽可能的属于同一类别。
熵的概念最早起源于物理学,用于度量一个热力学系统的无序程度。在信息论里面,熵是对不确定性的测量。但是在信息世界,熵越高,则能传输越多的信息,熵越低,则意味着传输的信息越少。
信息熵(information entropy)是度量样本集合纯度最常用的一种指标,假定当前样本集合 D 中第 k 类样本所占的比例为 pk(k=1,2,...,|y|) ,则 D 的信息熵定义为:
假定离散属性 a 有 V 个可能的取值 {a1,a2,...,aV} ,若使用 a 来对样本集 D 进行划分,则会产生 V 个分支节点,之中第 v 个节点包含了 D 中所有在属性 a 上取值为 av 的样本,记为 Dv ,我们可以计算出 Dv 的信息熵,在考虑到不同的分支节点包含的样本数的不同,给分支节点赋予权重 |Dv|/|D| ,
信息增益:
C4.5决策树算法不直接使用信息增益,而是使用信息增益率来选择最优划分属性。
CART树(Classification and Regression Tree)使用基尼指数来选择属性的划分,通过基尼值来度量数据集的纯度
基尼值:
在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,导致过拟合,因此可以通过主动去掉一些分支来降低过拟合的风险。
剪枝的基本策略有:预剪枝和后剪枝
预剪枝是在决策树生成的过程中,对每个结点在划分前先进行预估,若当前结点的划分不能使决策树泛化性能提升,则停止划分并将当前结点标记为叶节点。
后剪枝是先从训练集中生成一颗完整的决策树,然后自底向上的对非叶子结点进行考察,若将改结点对应的子树替换为叶子结点能提高泛化能力,则进行替换。
由于连续属性的可能取值不再有限,因此不能直接根据连续属性的可能取值进行划分。我们可以使用离散化技术对其进行处理。
二分法:
给定样本集 D ,和连续属性 a , a 在 D 上出现了n个不同的取值,
将其排序 {a1,a2,...,an} ,然后基于划分点 t 将样本划分为 D−t 和 D+t , D−t 包括在属性 a 上取值小于 t 的样本, D+t 反之。通常将划分点设为该属性在训练集中出现额不大于中位点的最大值从而是的最终决策树使用的划分点都在训练集中出现过。
eg:
Ta={ai+ai+12|1≤i≤n−1}
现实任务中常常会遇到不完整的样本,也就是样本中的某些属性值缺失的情况,最简单的方法是直接去除缺失的数据,但是这是对数据信息的极大浪费,我们可以考虑下利用有缺失属性值的样本来进行学习。
需解决的问题:
给定训练集 D ,属性集 a ,令 D¯¯¯ 表示 D 中在属性 a 上没有缺失值的样本子集
对于问题一,根据 D¯¯¯ 来判断属性 a 的优劣,属性 a 的取值 {a1,...,aV} ,令 D¯¯¯v 表示 D¯¯¯ 在 a 上取值为 v 的样本子集, D¯¯¯k 表示 D¯¯¯ 中属于第 k,(k=1,2,3...,|y|) 类的样本子集
D¯¯¯=∪|y|k=1D¯¯¯k , D¯¯¯=∪Vv=1D¯¯¯v ,假定为每一个样本赋予一个权重 wx
设
对于问题二,样本 x 在属性 a 上的取值缺失,则将 x 划分到所有额子结点中,将权值变为 r¯v∗wx ,意思i将同一个样本以不同的概率划入到同的子结点中。