决策树是一种机器学习的方法,它是一种树形结构(可以是二叉树或者非二叉树),其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。其实决策树的分类和人在生活中的决策很相似,举个栗子:
今天我想网购台电脑,刷到一台看着挺带劲的机子,在决定买不买之前,我心路历程是这样的:
- 这台笔记本价格还可以,7000 多,没超过 8000 ,在我的可接受范围内
- emmm,牌子是 xxx ,名牌值得信赖。。再看看配置
- i7,固态+机械,显存 8G,内存16G。这个配置一看就是游戏本,我喜欢。看看评价如何?
- woc,这么多差评,差评率也太高了。。。告辞告辞
看到没,刚刚的心路历程就是一个决策过程。我通过品牌、价格、配置、差评率等属性来决定“买还是不买 ”。再举一个经典的例子:给出如下的一组数据,一共有十个样本(学生数量),每个样本有分数,出勤率,回答问题次数,作业提交率四个属性,最后判断这些学生是否是好学生。最后一列给出了人工分类结果。
然后用这一组附带分类结果的样本可以训练出多种多样的决策树,这里为了简化过程,我们假设决策树为二叉树,且类似于下图:
通过学习上表的数据,可以设置A,B,C,D,E的具体值,而A,B,C,D,E则称为阈值。当然也可以有和上图完全不同的树形,比如下图这种的:
其中非叶子节点表示判断条件,叶子节点表示决策结果,箭头表示在一个判断条件在不同情况下的决策路径。
构建决策树
决策树是一种十分常用的分类方法,需要监管学习(Supervised Learning),监管学习就是给出一堆样本,每个样本都有一组属性和一个分类结果,也就是分类结果已知,那么通过学习这些样本得到一个决策树,这个决策树能够对新的数据给出正确的分类。具体过程如下:
训练阶段:从给定的训练数据集DB,构造出一颗决策树
class=DecisionTree(DB)
分类阶段:从根开始,按照决策树的分类属性,从上往下,逐层划分。直到叶子节点,便能获得结果。