决策树构建的目的有两个——探索与预测。探索方面,参与决策树声场的数据为训练数据,待树长成后即可探索数据所隐含的信息。预测方面,可以借助决策树推导出的规则预测未来数据。由于需要考虑未来数据进入该模型的分类表现,因此在基于训练数据构建决策树之后,可以用测试数据来衡量该模型的稳健性和分类表现。通过一连串的验证过程,最后得到最佳的分类规则,用作未来数据的预测。
1决策树构建理论
决策树的建立步骤包括数据准备、决策树生长、决策树修剪及规则提取。
1.1数据准备
决策树的分析数据包括两类变量:一是根据问题所决定的目标变量;二是根据问题背景与环境所选择的各种属性变量作为分支变量。分支变量是否容易理解与解释将决定决策树分析结果。
(1)二元属性:其测试条件可以产生两种结果。
(2)名目属性:名目属性结果的多少可以用不同属性值来表示,如血型可以分为A、B、AB、O四种类别。
(3)顺序属性:可以生成二元或二元以上的分割,其属性可以是群组,但群组必须符合属性值顺序特征。如年龄可以分为青年、中年、老年,
(4)连续属性:连续属性的条件可以表示成x<a或x>=a的关系。决策树必须考虑到所有可能的分割点y,再从中选出最好的分割。
取得数据后,将所搜集的数据分为训练数据集和测试数据集,数据分割可参照如下方法:
数据分割是将数据分成训练数据集、测试数据集和验证数据集。训练数据集用来建立模型,测试数据集用来评估模型是否过度复杂及其通用性,验证数据集则用以衡量模型的好坏,例如分类错误率、均方误差。一个好的训练模式应该对于未知的数据仍有很好的适配度,若当模式复杂程度越来越高,而测试数据的误差却越来越大,表示该训练模型有过度配适的问题。
数据分割的比例有不同的定义,均应代表原来的数据。一种方法是抽取80%的数据作为训练数据集构建模型,剩下的20%用于模型的效度检验。另一种方法是k-fold交互验证。该方法首先将数据分为k等份,每次抽取k-1份数据进行模式训练,剩下的1份数据用于测试模型,如此重复k次,使每笔数据都能成为训练数据集与测试数据集,最后的平均结果则用来代表模型的效度。该方法适合于样本数较少的情况,可以有效涵盖整个数据,但缺点是计算时间很长。
在决策树构建过程中,如果一个决策树模型仅在训练数据中有很低的错误率,但在测试数据集中有很高的错误率,则说明该决策树模型过度配适,造成模型无法用于估计其他数据。因此建立决策树模型后,应根据估计测试数据的分类表现,适当地修剪决策树,增加其分类或预测的争取性,避免过度配适。
1.2决策树分支准则
决策树的分支准则决定了树的规模大小,包括宽度和深度。常见的分支准则有:信息增益、Gini系数、卡方统计量、信息增益比等。
假设训练数据集有k个类别,分别为C1、C2、……、Ck,属性A有l中不同的数值,A1、A2、……、Al。
属性 |
类别 |
||||
C1 |
C2 |
… |
Ck |
总和 |
|
A1 |
x11 |
x12 |
… |
x1k |
x1. |
A2 |
x21 |
x22 |
… |
x2k |
x2. |
… |
… |
… |
… |
… |
… |
Al |
xl1 |
xl2 |
… |
xlk |
xl. |
总和 |
x.1 |
x.2 |
… |
x.k |
N |
(1)信息增益
信息增益是根据不同信息的似然值或概率衡量不同条件下的信息量。
若每个类别的数据个数定义为x.j,N为数据集合中所有数据的个数,类别出现的概率为pj = x.j/N,根据信息论可以知道,各类别的信息为-log2(pj),因此各类别C1、C2、……、Ck所带来的信息总和Info(D)为:
Info(D)= - (x.1/N)*log2(x.1/N) - (x.2/N)*log2(x.2/N) - … - (x.k/N)*log2(x.k/N)
Info(D)又称为熵,常用以衡量数据离散程度。当各类别出现的概率相等,则Info(D)=1,表示该分类的信息复杂程度最高。
假设该数据集D要根据属性A进行分割,产生共L各数据分割集Di,其中xi.为各属性值Ai下的分割数据总个数xij为属性值Ai下且为类别Cj的个数,因此可计算属性Ai下的信息Info(Ai):
Info(Ai)= - (xi1/ xi.)*log2(xi1/ xi.) - (xi2/ xi.)*log2(xi2/ xi.) - … - (xik/ xi.)*log2(xik/xi.)
属性A的信息则根据各属性值下数据个数多寡决定:
InfoA(D)= (x1./N)*Info(A1) + (x2./N)*Info(A2) + … + (xl./N)*Info(Al)
信息增益可以表示为原始数据的总信息量减去分之后的总信息量,以表示属性A作为分支属性对信息的贡献程度。以此类推可以计算出各个属性作为分支变量能带来的信息贡献度,比较后可找出具有最佳信息增益的信息属性。
(2)Gini系数
Gini系数是衡量数据集合对于所有类别的不纯度。
Gini(D)= 1 – sum(j = 1, ….,k, pj^2)
各属性值Ai下数据集合的不纯度Gini(Ai)为:
Gini(Ai)= 1 – (xi1/xi.)^2 – (xi2/xi.)^2 - ……, – (xik/xi.)^2
属性A的总数据不纯度为:
GiniA(D)= (x1./N)*Gini(A1) + (x2./N)*Gini(A2) + … + (xl./N)*Gini(Al)
属性A对不纯度减少的贡献:
deltaGini(A)= Gini(D) –GiniA(D)
(3)卡方统计量
卡方统计量是用列联表来计算两列变量之间的相依程度,当计算出的样本卡方统计值越大,表示两变量之间的相依程度越高。
(4)信息增益比
信息增益比是考虑候选属性本身所携带的信息,在将这些信息转移至决策树,经由计算增益与分支属性的信息量的比值来找出最适合的分支属性。
(5)方差