机器学习笔记-决策树
声明
转自:https://blog.csdn.net/jiaoyangwm/article/details/79525237
决策树的概念
- 决策树(decision tree):是一种基本的分类与回归方法。
- 决策树通常有三个步骤:特征选择、决策树的生成、决策树的修剪。
决策树的构造
决策树学习的算法通常是一个递归的选择最优特征,并根据该特征对训练数据进行分割,使得各个子数据集有一个最好的分类的过程。这一过程对应着对特征空间的划分,也对应着决策树的构建。
- 开始:构建根节点,将所有训练数据都放在根节点,选择一个最优特征,按着这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。
- 如果这些子集已经能够被基本正确分类,那么构建叶节点,并将这些子集分到对应的叶节点上。
- 如果还有子集不能够被正确分类,那么就对这些子集选择新的最优特征,继续对其进行分割,构建相应的节点,如果递归进行,直到所有训练数据子集被基本正确分类,或者没有合适的特征为止。
- 每一个子集都被分到叶节点上,即都用了明确的类,这样就生成了一颗决策树。
决策树的优缺点
- 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。
- 缺点:可能会产生过度匹配问题。
- 适用数据类型:数值型和标称型
从上面的介绍中,明显可以看出决策树的关键问题就是如何划分数据集。
信息增益
划分数据集的大原则是:将无序的数据变得更加有序。为了科学的量化数据集划分前后的差别,这里要引用信息论中一些对信息的定义:熵。
熵的定义为:信息的期望值。如果待分类的事物可能划分在多个类别之中,则符号:\(x_i\)的信息定义为:
其中,\(p(x_i)\)是选择该分类的概率。
为了计算熵,我们需要计算所有类别所有可能值所包含的信息期望值:
其中\(n\)为分类数目,熵越大,随机变量的不确定性越大。
当熵中的概率由数据估计(特别是最大似然估计)得到时,所对应的熵称为经验熵(empirical entropy)。什么叫由数据估计?比如有10个数据,一共有两个类别,A类和B类。其中有7个数据属于A类,则该A类的概率即为十分之七。其中有3个数据属于B类,则该B类的概率即为十分之三。浅显的解释就是,这概率是我们根据数据算出来的。
此外还要讲一个条件熵的概念。
条件熵\(H(Y|X)\)表示在已知随机变量\(X\)的条件下随机变量\(Y\)的不确定性,随机变量\(X\)给定的条件下随机变量\(Y\)的条件熵\(H(Y|X)\):
其中\(p_i=P(X=x_i)\)
我们定义:在划分数据集前后信息发生的变化称为信息增益。获得最高信息增益的特征就是最优的选择。
信息增益是相对特征而言的。所以特征\(A\)对训练数据集\(D\)的信息增益\(g(D, A)\),定义为集合\(D\)的经验熵\(H(D)\)与特征\(A\)给定条件下\(D\)的经验熵\(H(D|A)\)之差,即:
一般地,熵\(H(D)\)与条件熵\(H(D|A)\)之差成为互信息(mutual information)。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
信息增益比
特征\(A\)对训练集\(D\)的信息增益比\(g_R(D,A)\)定义为:
决策树构建
ID3算法
ID3算法的核心是在决策树各个节点上对应信息增益准则选择特征,递归地构建决策树。
具体方法是:
- 从根节点(root node)开始,对节点计算所有可能的特征的信息增益,选择信息增益最大的特征最为节点的特征。
- 由该特征的不同取值建立子节点,再对子节点递归地调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止。
- 最后得到一个决策树。
C4.5 的生成算法
与ID3算法相似,但是做了改进,将信息增益比作为选择特征的标准。