决策树——既能分类又能回归的模型
1、决策树
决策树上一中非常基础又常见的机器学习模型。一颗决策树(Decision Tree) 是一个树结构(可以是二叉树或非二叉树),每个非叶节点对应一个特征,该节点的每个分支代表这个特征的一个取值,而每个叶节点存放一个类别或一个回归函数。
使用决策树进行决策的过程就是从根节点开始的,提取出待分类项中相应的特征,按照其值选择输出分支,以此向下,知道达到叶子节点,将叶子节点存放的类别或者回归函数的运算结果作为输出(决策)结果。
决策树的决策过程非常直观,容易被人理解,而且运算量相对小。它在机器学习当中非常重要。如果要列举“十大机器学习模型”,决策树当列前三。
直观理解
这棵树的作用,是对要不要接受一个offer做出判断:
此树一共有7个节点,其中4个叶子节点和3个非叶子节点。它是一棵分类树,每个叶子节点对应一个类别。
那么有4个叶子节点,并不是代表有4个类别,从图中可看出,一共2个类别:accept offer(接受)和dicline offer(拒绝)。
理论上讲,一棵分类树有n个叶子节点时(n>1,只有1个结果也就不用分类了),可能对应2~n个类别,不同判断路径可能得到相同的结果。如图例:拿到一个offer后,要判断3个条件:1、年薪;2、通勤时间;3、免费咖啡。这三个条件根据重要程度,越重要的越靠近根节点,即年薪低于5W美元,直接pass…以此类推。
这三个非叶子节点(含有根节点),统称决策节点,每个节点对应一个条件判断,而这个条件判断的条件,我们叫做特征。图例有3个特征。
当我们用这棵树来判断一个offer的时候,我们就需要从这个offer提取这些特征(年薪,通勤时间,是否有免费咖啡),然后将特征值输入决策树,然后按照根节点向下进行筛选,达到的叶子所对应的类别就是预测结果。
构建决策树
简单讲,有以下几步:
- 准备若干的训练数据(假设m个样本);
- 标明每个样本预期的类别;
- 人为选取一些特征(即决策条件);
- 为每个训练样本对应所有需要的特征生成相应值——数值化特征;
- 将通过上面的1-4步获得的训练数据输入给训练算法,训练算法通过一定的原则,决定各个特征的重要程度,然后按照决策重要性从高到低,生成决策树。
2、几种常用算法
决策树的构造过程是一个迭代的过程,每次迭代中,采用不同特征作为分裂点,来将样本数据划分成不同的类别。被用作分裂点的特征叫做分裂特征。
选择分裂特征的目标,是让各个分裂子集尽可能地“纯”,即尽量让一个分裂子集中的样本都属于同一类别。如何使得各个分裂子集“纯”,算法也有很多:
I.ID3算法
最直接最简单的ID3算法,核心是:以信息增益为度量,选择分裂后信息增益最大的特征进行分裂。
首先,先讲一下信息熵:
假设一个随机变量x有n种取值,分别为{
x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn<