什么是决策树
下面一大串是百科的描述(表示看不懂):
决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。Entropy = 系统的凌乱程度,使用算法ID3, C4.5和C5.0生成树算法使用熵。这一度量是基于信息学理论中熵的概念。
决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。
分类树(决策树)是一种十分常用的分类方法。他是一种监管学习,所谓监管学习就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类。这样的机器学习就被称之为监督学习。
自己归纳一下
- 从根节点开始一步步走到叶子节点(决策),每个节点就是一个条件,根据不同的条件把数据进行区分。所有的数据最终都会落到叶子节点,既可以做分类也可以做回归
举个栗子
构建一个决策树分类器,用来区分是否喜欢打游戏。首先认为年龄<15岁的人群喜欢打游戏,接下来再以是否是男生为条件来区分一次,这样就得到分类结果。
决策树模型构建
决策树的组成
- 根节点:第一个选择点
- 叶节点表示一个分类条件
- 非叶子节点与分支:中间过程
- 叶子节点:最终的决策结果
流程
- 训练阶段:给定一个数据集,选择某个条件作为根节点,随后再选择其他的调节作为叶节点去构建就可以了。
- 测试阶段:把测试数据丢进构件好的模型,等待输出结果。
一旦构建好了模型,分类或者预测任务就很简单了,只要把测试数据拿到模型里跑就行了。我们只要关注一个问题:如何构建一个决策树?围绕这个问题,再解决其他问题就行了。
切分特征
选择不同的条件作为根节点或者叶节点,对结果的影响肯定是很大的。特别是根节点的选择,显然比叶节点还要总要。
所以我们要通过一个指标来确定:到底用哪个条件作为优先选择的叶节点或者是根节点。这就引入了一个概念——信息熵。
信息熵
熵是表示随机变量不确定性的度量,熵值越高,表示混乱程度越高,越充满不确定性。
- 举个栗子:去杂牌店购物比去专卖店购物的熵值更高,因为杂牌店可能卖很多品牌的商品,你买到不同品牌的概率就很大,而去专卖店购物就只能买到一个品牌的商品。
看下图的log函数图像(忽略文字,草稿而已···),i必定是一个概率值,所以值域就是[0,1],结合公式,概率越小,月不确定,在这个范围内的log图像就是log值越小,熵H(x)越大。
这就是为什么说,去专卖店购物买到一个品牌的商品概率为1(在log图像上就趋近0),它的熵就小的原因。
再举个栗子
A集合[1,1,1,1,1,1,1,1,2,2]
B集合[1,2,3,4,5,6,7,8,9,1]
显然A集合的熵值要低,因为A里面只有两种类别,相对稳定一些,而B中类别太多了,熵值就会大很多。
不确定性越大,得到的熵值也就越大
当p=0或p=1时,H§=0,随机变量完全没有不确定性
当p=0.5时,H§=1,此时随机变量的不确定性最大
所以熵是大的好还是小的好?为了解决这个问题又引入了一个概念:信息增益
信息增益ID3
信息增益的意思就是做一次决策后,使熵减小了,减小的程度就是信息增益。(分类后的专一性,希望分类后的结果是同类在一起)
一般来说,选择信息增益大的条件作为最初的根节点,其他的节点也是以信息增益为标准来衡量的,总之优先选择信息增益大的条件就ok了。
决策树构造实例
知道了信息增益大的条件优先选择后,来看一个著名的例子:
数据是14天内去不去打球的情况,特征包括天气情况、温度、湿度、是否有风。
-
先计算总的熵
在历史数据中(14天)有9天打球,5天不打球,所以此时的熵应为:
Outlook = sunny时,熵值为0.971
Outlook = overcast时,熵值为0
Outlook = rainy时,熵值为0.971 -
接下来分别计算四个条件的信息增益
以outlook取值分别为sunny,overcast,rainy的概率为例:
熵值计算:5/14 * 0.971 + 4/14 * 0 + 5/14 * 0.971 = 0.693。
另外三个条件的信息增益分别为:0.029、0.152、0.048。
如果以天气为根节点,熵值从原始的0.940下降到了0.693,增益为0.247,我们只要按照信息增益的大小进行节点选择就ok了。
一种特殊情况——信息增益率C4.5
假如现在有一个条件,条件自身与最后的决策并无关联。但是他的条件属性值非常多,这个时候信息增益就很大,这时为了剔除信息增益的这种弊端,就引入了一个概念信息增益率。
计算这个条件本身的熵,肯定是一个非常大的值,因此对分类可能并没有什么帮助,所以就不去使用这个条件。
另一种选定标准——CART和GINI系数
CART的原理和熵的衡量标准是一样的,只是计算公式有所不同,CART使用GINI系数来衡量:
遇到连续值怎么搞?
和sigmoid一样,找个分界点就好了···
比如:把成绩从低到高排序,以60分为界限判断是否及格。
决策树的剪枝
为什么要剪枝?
决策树过拟合风险很大,理论上可以完全分得开数据。想象一下,如果树足够庞大,每个叶子节点不就一个数据了嘛?这个时候拿测试集过来用,肯定是有问题的。所以需要剪枝处理。
剪枝:顾名思义,去除一些节点,可以提高算法的性能或者是效果。
剪枝策略
-
预剪枝:边建立决策树边进行剪枝的操作(更实用),预剪枝可以从限制深度,叶子节点个数
叶子节点样本数,信息增益量这些方面来设定是否需要剪掉某个节点。 -
后剪枝:当建立完决策树后来进行剪枝操作,不理会构建的过程。后剪枝的衡量公式:
T代表的就是叶子节点的个数,因此,最后叶子节点越多,剪枝的数量就越多。
这些都是相对的,各种指标主要还是看阈值吧,所谓的调参,指的就是选择合适的阈值···