1.决策树概念:
决策树经常用于处理分类问题,也是最经常使用的数据挖掘算法。决策树的一个重要任务是为了数据中所蕴含的知识信息,并从中提取一系列的规则,而创建这些规则的过程就是机器学习的过程。例如一个典型例子就是根据天气情况分类星期天是否适合打球。
如果星期天的天气是晴天,温度很高,湿度很高,并且有很大的风,那么根据决策树的规则,这里是沿着最左侧的分支向下,最后判定为不打球。
决策树从名字上看就可以知道这是一个树形结构,将实例从根节点排列到某个叶子节点来分类实例,叶子节点即为实例所属的分类。分类过程从根节点开始,根据实例与节点对应属性的属性值判断下一步移动的方向,直至到达叶子节点。
2.决策树优缺点:
优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据;
缺点:可能会产生过度匹配问题;
适用数据类型:数值型和标称型
3.决策树的一般流程:
1.收集数据:可以使用任何方法;
2.准备数据:树构造算法只适用于标称型数据,因此数值型数据必须离散化;
3.分析数据:可以使用任何方法,构造树完成之后,我们应该检查图形是否符合预测;
4.训练算法:构造树的数据结构;
5.测试算法:使用经验树计算错误率;
6.使用算法:此步骤可以适用于任何监督学习算法,而使用决策树可以更好地理解数据的内在含义。
4.决策树算法
目前使用较为广泛的决策树算法是ID3算法和C4.5算法,这两种算法都是采用自顶向下的贪婪搜索遍历可能的决策树空间。
4.1 ID3算法
ID3算法是一种贪心算法,起源于概念学习系统,以信息熵的下降数度为选取测试属性的标准,即在每个节点选取还尚未被用来划分的具有最高信息增益的属性作为划分标准,然后继续这个过程,直到生成的决策树能完美分类训练样例。简单地说,ID3算法的核心问题是选取在树的每个节点要测试的属性,即应该选取哪些属性,选取的属性应该放在树中的哪个位置。这就涉及到划分数据集。
划分数据集的目的是使得数据从无序状态变成有序状态,例如上面提到的是否适合打球的例子,我们可以先根据天气划分,再根据湿度和风力划分,当然,也可以先根据风力划分,再根据天气和湿度划分。也就是说对于同一数据集有多种划分数据的方式,而每种方式所对应的预测结果可能是不一样的,那么究竟该如何选择最佳的划分方法?这里就有一个新的概念——信息增益。
信息增益(information gain)是划分数据集前后信息发生的变化,计算每个属性划分数据集后获得的信息增益,信息增益越大的属性就是最好的划分选择。在计算信息增益前,还需要了解一个概念——熵(entropy),熵是信息期望值,其公式为:
其中P(xi)是选择分类i的概率,n是所有分类属性的数目。
那么,一个属性A相对于数据集S的信息增益可表示为:
其中,Value(A)是属性A中所有可能值的集合,S(v)是集合S中属性A的值为v的子集。
下面我们用一个例子来熟悉信息增益的计算。数据集S是20个天气情况和打球与否的样本实例,其中打球有12个,不打球有8个,记作:S=[12+,8-];现在根据风力(即属性A)大小划分,风力大的子集中,打球有3个,不打球有6个,记作:S大=[3+,6-];风力小的子集中,打球有9个,不打球有2个,记作:S小=[9+,2-]。根据信息增益的计算公式: