我们生活中遇到很多问题其实把他们抽象成一个数学模型,都可以抽象为一个决策树。(比如打篮球)
我们总是会经历两个阶段:构造、剪枝
构造
什么是构造呢?构造就是生成一棵完整的决策树。简单来说,构造的过程就是选择什么属性作为节点的过程,那么在构造过程中,会存在三种节点:根节点:就是树的最顶端,最开始的那个节点。在上图中,“天气”就是一个根节点;内部节点:就是树中间的那些节点,比如说“温度”、“湿度”、“刮风”;叶节点:就是树最底部的节点,也就是决策结果。
构造中遇到的问题
- 选择哪个属性作为根节点;
- 选择哪些属性作为子节点;
- 什么时候停止并得到目标状态,即叶节点。
减枝
主要是帮助我们的决策树进行瘦身操作,避免选择情况太多,需要很多不必要的考量,比如说我们中午要吃米饭,我们肯定需要考虑炒什么菜,但是我们不需要担心菜怎么种出来,要是所有商店都没有菜怎么办。
当然在构造的时候也会出现,欠拟合、和过拟合两种情况如上图1or图3.
过拟合
样本较少就会出现过拟合的情况,因为我们训练数据是有限的,但是在实际应用中我们会遇到千奇百怪的数据,在这样的情况下我们的模型就不行了,这也是我们在工作中需要多次上线切换不同环境的原因,先上测试环境,然后测试环境正常,我们上拟生产环境,生产环境正常我们再到正式生产环境,这样保证上线最大的不出错率。
在训练的时候也是让训练器有着更好的泛化能力。
剪枝
剪枝可以分为“预剪枝”(Pre-Pruning)和“后剪枝”(Post-Pruning)
在构建的时候进行剪枝,称为预减枝,我们最简单的斐波那契数列可以通过预减枝,来进行优化速度。
后剪枝:再生成决策树之后再进行剪枝,通常会从叶子节点开始,逐步向上每个节点进行评估。