决策树算法(一)

决策树算法是机器学习中的一种算法,有分类预测的作用。首先先贴下算法

1.简要介绍及算法表达:

输入:训练集 D={(x1,y1),(x2,y2),,(xm,ym)}
属性集 A={a1,a2,,ad}
过程:函数 TreeGenerate(D,A)
1:生成节点node;
2:if D中样本全属于同一类别C then
3:    将node标记为页节点;return
4:end if
5:if A = OR D中样本在A上取值相同 then
6:    将node标记为叶节点,其类别标记为D中样本数最多的类;return
7:end if
8:从A中选择最优划分属性 a ;
9:for a 的每一个值 av   do
10:    为node生成一个分支;令 Dv 表示D中在 a 上取值为 av 的样本子集;
11:     if Dv 为空 then
12:        将分支节点标记为叶节点,其类别标记为D中样本最多的类; return
13:    else
14:        以 TreeGenerate( Dv, A \ {a})为分支节点
15:    end if
16:end for
输出:以node为根节点的一颗决策树
摘自: 周志华.机器学习.清华大学出版社.2016

训练集D中 x 为特征值,y为分类结果 属性集为特征值中每个属性的交集。判停条件:
1. 对训练集进行判断:当所有的y都相同时,退出,都是同一类不好分类。 无需划分
2. 属性集为空,或所有的样本在所有属性上取值相同,标记为训练集中样本数最多的类。无法划分
3. 当前阶段包含的样本集合为空。不能划分

这是个递归方法生成树,先判断第1,2种情况,然后确定以什么特征为根节点,然后根据特征不同的属性分孩子节点,如果出现第3中情况,则分为子节点。然后递归。


2.关于第8步的最优划分:

划分的方法区分了不同的决策树。比如CART,C4.5等。

纯度:结点包含的样本属于同一类别的越多,则结点纯度越高。(决策树的目标就是分类,所以决策树的构建就需要纯度越高)

信息熵:

Ent(D)=k=1|y|pklog2pk

plog_2p的图片
上图为函数 y=pklog2pk
信息熵值越小,样本集合纯度越高,由图我们需仔细观察,同时可发现类别越多信息熵越大。因为它是凸函数。

信息增益:

Gain(D,a)=Ent(D)v=1V|Dv||D|Ent(Dv)

Dv 表示在某个属性上的样本集,信息增益的意思就是(请对照公式) 根节点的信息熵 各个分支信息熵之和信息增益越大,相对而言就是根节点的信息熵很大,而叶子节点的相对较小。换成纯度即是根节点的纯度很低,以这个属性分节点后纯度变很高,所以分的越有效

增益率:

Gainratio(D,a)=Gain(D,a)IV(a)
其中
IV(a)=v=1V|Dv||D|log|Dv||D|

观察上图的时候,我们就发现类别越多信息熵越大,所以信息增益对有很多属性值的特征有偏好,所以我们需要 增益率信息增益一起使用。增益率对少属性值的特征有偏好。C4.5使用的方法是:先从候选划分特征中找出信息增益高于 平均水平的属性,再从中选增益率最高的。

基尼指数:

Gini(D)=k=1|y|kkpkpk=1k=1|y|p2k

Gini_index(D,a)=v=1V|Dv||D|Gini(Dv)

CART决策树使用它选择划分特征。

3.剪枝(防止过拟的手段):

过拟就是把训练集自身的特点当成所有所有数据都有的特点。通俗的说就是:共性寓于个性之中,过拟在训练时误将个性当成了共性。(共性决定事物的基本性质;个性揭示事物之间的差异性。)
为了解决过拟所以就有剪枝。为实现剪枝需将样本集分成训练集(样本集数量的2/3~4/5)验证集,训练集用于建模,验证集用于剪枝(留出法)。

3.1预剪枝

顾名思义,预剪枝就是预防过拟的方法,在过拟出现之前就解决掉(有可能错剪),实质就是在决策树生成好之前就剪枝。好处就是程序运行快了,坏处就是牺牲了很多特征,可能会不够准确。预剪枝第一步判断节点将其标记为训练集中样本数最多的类别,然后使用验证集得出精度(这是剪枝前的)。第二步按照特征的属性分支,然后对每个分支进行类别的判断(使用的训练集),然后使用验证集进行精度判断。第三步,比较那个精度高就使用哪个。预剪枝用广度优先搜索的方法(排除无需划分的点)进行迭代上面三步。

3.2后剪枝

后剪枝就是决策树生成完毕之后再进行剪枝。剪枝的方法也是上面的三步,只是从树的下层向上层进行迭代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值