基于决策数的分类方法是一种非常直观的,非常好解释的,初中生都可以看得懂的分类算法,所以今天就给大家写写这个简单实用的分类算法。
决策树的基本流程就是通过一系列只能回答是否的问题将数据进行分类,这种方法还可以很直观地出图,非常适合初学者。
递归分类算法
先看一个概念,递归,今天要写的决策树就是递归分类算法(recursive partitioning algorithm)的一种,所谓递归就是重复,把一个大问题化成可以重复的小问题从而达到问题的解决,决策树就是把一个大问题化成很多个回答是否的小问题,重复重复就把大问题解决了。
其实自己是很不愿意在文章中整过多的专业名词的,但是如果你想深入了解某个领域,想进一步提高姿势水平,这些专业名词肯定得学,所以大家见谅,我尽量会写的非常浅显易懂。
想象一下,人们的通勤工具的分类情形,我们会通过这个工具有几个轮子,有没有发动机,多重等信息来判断工具的类型,知道了这些特征信息,你自己就会在脑海里形成一系列是否问题,达到对交通工具分类的目的,比如你的脑海里形成了像下图一样的流程:

先回答这个工具有没有发动机,如果有,再回答多重,如果小于3吨,就是小汽车,大于3吨就是坦克;如果没有发动机,再回答有多少轮子,小于2的话就是独轮车,大于2的话再回答有没有踏板,有则是自行车,无则是小摩托,就是这么一个流程。这就是我们判断交通工具时我们都会用的一个流程,也就是一个决策树,也是你自己的思维的一个过程。
在上面的流程中,问题叫做节点node,最终的分类结局叫做叶leave,那么整个决策树画出来就像一个倒立的树一样,所以叫做决策树,就是这么简单。
对于我们来说,决策树的整个流程中,先问哪个问题至关重要。
你想想,先通过交通工具的重量分类和先通过交通工具的轮子分类肯定是不一样的嘛。
那么机器学习中,递归分类算法是如何选择这个顺序的呢?
At each stage of the tree-building process, the rpart algorithm considers all of the predictor variables and selects the predictor that does the best job of discriminating the classes.
一个总的原则就是优先用可以将数据划分为最纯的类的问题作为节点
这个纯度可以用两个指标来衡量,一个是entropy,另一个是Gini index,本文重点介绍Gini index。
用Gini index对树进行划分
所谓最纯就是说通过某个问题划分出的两类,也就是树分叉过后形成的两类,这两类内部的一致性越大越好。Gini index就是纯度的一个指标,在形成树的过程中,我们希望每个节点的Gini index都是最大的。
Gini index的计算公式如下:

其中p(A) p(B)是两类在划分过后的数据中的占比。从这儿式子大家也可以悟出来Gini index越大就说明纯度越大。</