决策树(Decision Tree)
决策树例子
决策树是用于分类的一种机器学习算法。其最大的特点就是简单,直观. 由于资料来自于之前的笔记。原例子的出处找不到,干脆就手绘算了~~XD。
其中如果数据不是离散值,要先处理成离散值再进行决策树的计算。
(图1)
用一个例子来讲吧。 如上图,现在是有14条数据都从调研中得到,其中是研究是否买电脑的数据,RID是列号,是每条数据唯一的身份标识。标号1,Age记录的是参访的人的年龄情况。 标号2是记录参访人的收入状况,3是记录是否是学生。 4是记录受访人的信用状况。 标号5是判断结果是最后受访人是否买了电脑。
通过决策树我们可以找出1-4标号,同第5标号之间所隐藏的内在联系和规律。例如: 中年人,一定会买电脑。这就是从上图所得出的规律之一。由决策树,能更号更完善的知道这些规律。
而决策树就是如下图所示的一棵树:
(图2)
而节点就是标签(图1中的4个标签),图一中的标签5是最后的结果标签。不计入分类。通过某种算法(后面讲)来决定用哪个标签来作为分类会得到最好的效果。(此图是为了掩饰随便划分的为了讲解下,并没有详细计算)如上图中第一个标签选择用age 分, age 有三类,Y,M,S。 把14条数据根据age的分类分别分到这三类下。在m分类下的数据有相同的判别标签,都是Y所以这条分支得到了结果end。而age=Y这一支的判别类型不统一,所以要再分。此时因为age标签已经被使用了,剩下的还剩Income , Student 以及Credit. 在其中用算法再挑选一个分类标签(注,只有“父亲”使用过的标签,“孩子”不能使用)所以age=S这一只同样剩下Income Student以及Credit这三个标签。这样分一只到最后满足结束条件(后面讲)。
算法
1. 用<判别算法>*计算标签A能最有效的分割类型
2. 用标签A的类型分割数据
3. 用<判别算法>计算“父亲”节点中未使用的其他标签中最合适的分割标签B
4. 重复1-3依次递归,知道满足<结束条件>
判别算法:
根据判别算法的不同决策树也被分为不同种类:但是其核心就是一种贪婪算法。
D:标识全局的数据条目数,如上面例子D=14m
m:指的是判别标签的种类数量,如例子中只有Y和N(第五标签)所以就m=2;m只和判别标签有关。
pi:指在第i类的条目数占总条目数的概率。如例子里是p1是等于Y的条目占总条目的比例。p2是指等于N的条目数占总条目的比例。
k:指的是这个标签有几种情况,如用age 则k=3
Dj:是指属于这个情况的条目数
Info(Dj):指把Dj带入Info(D),并且其中个的m是在例如age 分类为y的时候的Y的概率的log加上age分类为S的概率的log再加上age分类为m的log.
ID3: 采用Info-gain来判别
Info-gain: 的基本公式
最后结果,Gain(R)最大的,为最优。因为说明,用此来分类,则信息的增长最快。例子:
根据图1写的例子:
之后的C4.5和Cart就不写例子了。
- C4.5: 采用gain ratio
- Cart: 采用Gini index来判别
结束条件:
主要有两个结束条件
- 所在的分类中,最后的判别标签只有一种如全是Y或者全是N
- 分类的标签耗尽,其中的分类会服从多数原则。那个多选那个。
结果:
求出决策树后,从跟节点到叶子节点的每一条路径都是一个分类规则,如图二:中的可以总结出凡是age=m的人都买电脑。
总结:
- 决策树会面临overfitting 就是过度拟合的问题:
解决方法很简单就是——剪枝条。而剪枝又分为先剪枝和后剪枝。
- 先剪枝:
在计算的时候就设定好阈值,如达到阈值后就不再往下分 - 后剪枝:
在决策树完成后再根据设置的设定来去掉某些分支
- 先剪枝:
2.决策树的缺点:
-不太能处理连续性的数据
-适合处理小型的数据,可规模性不太好
-类型众多时准确度不高
啊啊~感觉写博客比自己想的要累的啊 知识来源于我的笔记~~XD 。