本文摘录于http://www.jianshu.com/p/ed9ae5385b89
一句话概要,决策树算法的核心在于决策树的构建,每次选择让整体数据香农熵(描述数据的混乱程度)减小最多的特征,使用其特征值对数据进行划分,每次消耗一个特征,不断迭代分类,直到所有特征消耗完(选择剩下数据中出现次数最多的类别作为这堆数据的类别),或剩下的数据全为同一类别,不必继续划分,至此决策树构建完成,之后我们依照这颗决策树对新进数据进行分类。
决策树长什么样?
决策树算法较之于kNN算法一个很显著的不同在于,kNN算法需要持续使用全部的训练数据,而决策树算法经过训练构建出决策树之后,就不再需要将所有的训练样本保持在内存中了,这颗决策树就是在训练样本中抽象出来的模型。
香农(信息)熵用来描述数据的混乱度,混乱度越大熵越大,计算公式如下:
Pi指第i种数据在这个数据集中所占的比例。
定性理解,如果这个数据集中所包含的数据类别越少,它的熵也就越小(熵是正数,因为对数算出来的结果是负数)。
如果我们将这个数据集按照数据的某个特征(不是按数据类别分,因为我们做的是学习+预测,不是对训练样本分类)进行了分类,分成了多个小数据集,那整个数据集熵的计算公式如下:
我们需要知道按照这个特征分类过后,整个数据集的熵减少了多少,也就是信息增益是多少,计算公式如下:
信息增益越大,也就是我们对数据的分类越有效,整个数据集的熵减小的越多。
在整个数据集的基础上,挑选使熵减小最多的特征对数据集进行分类,将整个数据集按照上一步所选定的特征的特征值分成多个(可以超过2个)小数据集,然后对每个小数据集重复进行以上的操作,直到某个小数据集内部数据的数据类别全部相同,或者没有可以继续分类的特征了,这个时候我们把剩下的数据集里面出现最多的数据类别作为这个小数据集的类别。
然后我们就得到了一颗决策树,当需要处理新样本的时候,我们按照决策树对特征的使用顺序和新样本的各个特征值,逐步对这个样本进行分类,直到决策树的叶子节点处,最后这个叶子节点数据集的数据类别就是我们根据决策树算法所推断出来的新样本的数据类别。