基于树的学习算法被认为是最好的和最经常使用的监督学习方法之一。 基于树的方法赋予预测模型高精度,稳定性和易于解释的能力。 与线性模型不一样,它们很是好地映射非线性关系。 它们适用于解决手头的任何问题(分类或回归)。决策树,随机森林,梯度加强等方法正在各类数据科学问题中普遍使用。 所以,对于每一个分析师学习这些算法并将其用于建模很是重要。本文的目的是介绍决策树学习的基本理论基础,并提出ID3算法。算法
简而言之,决策树是一棵树,其中每一个分支节点表明多个备选方案之间的选择,每一个叶节点表明一个决策。它是一种监督学习算法,主要用于分类问题,适用于分类和连续输入和输出变量。 是概括推理的最普遍使用和实用的方法之一(概括推理是从具体例子中得出通常结论的过程)。决策树从给定的例子中学习和训练数据,并预测不可见的状况。app
决策树的图形表示能够是:函数
有几种算法能够构建决策树,其中一些是:学习
在本文中,咱们将重点关注ID3算法。测试
基本术语:ui
当因变量是连续的时,使用回归树。因变量是分类时使用分类树。spa
两棵树都将预测空间(自变量)划分为不一样的和不重叠的区域。为简单起见,您能够将这些区域视为框。
这两棵树都遵循自上而下的贪婪方法,称为递归二进制分裂。咱们将其称为“自上而下”,由于当全部观察在单个区域中可用时,它从树的顶部开始,而且连续地将预测器空间分红树下的两个新分支。它被称为“贪婪”,由于该算法只关注当前分裂的关键(寻找最佳可用变量),而不关心未来会致使更好树的分裂。继续该拆分过程,直到达到用户定义的中止标准。例如:一旦每一个节点的观测数量小于50,咱们就能够告诉算法中止。
在这两种状况下,分裂过程都会致使树木彻底生长,直到达到中止标准。可是,彻底成长的树可能会过分填充数据,致使看不见的数据的准确性不好。这带来了'修剪'。修剪是用于解决过分拟合的技术之一。3d
ID3表明Iterative Dichotomizer 3。ID3算法由Ross Quinlan发明。 它从一组固定的实例构建决策树,结果树用于对测试样本进行分类。基本思想是经过在给定集合中使用自上而下的贪婪搜索来构造决策树,以测试每一个树节点处的每一个属性。决策树的构造是做为重复过程完成的,估计哪一个变量能够得到最大的信息增益。信息增益是当已知自变量的状态时因变量的熵的减小。从本质上讲,当咱们根据因变量的值将它分红组时,它会测量独立变量的组织程度。选择提供组织最大增长的因变量,并根据此变量拆分数据集。orm
在信息论中,熵是衡量消息来源不肯定性的指标。 它为咱们提供了数据中的无组织程度。blog
给定集合S包含某些目标概念的正面和负面示例,S相对于此布尔分类的熵是:
这里,p +和p-是S中正负例子的比例。
考虑相对于布尔分类(即二分类)的这种熵函数,由于正例p +的比例在0和1之间变化。
假设S是14个例子的集合,包括9个正例和5个负例子[9 +,5-]。 而后S的熵是:
请注意,若是S的全部成员属于同一个类,则熵为0。 例如,若是全部成员都是正数(p + = 1),则p-为0,而且
Entropy(S)= -1* log2(1) - 0.*log2 0 = -1. 0 - 0. log2 0 = 0。
当集合包含相同数量的正面和负面示例时,熵为1。
若是集合包含不等数量的正面和负面示例,则熵在0和1之间。
它衡量预期的熵减小。 它决定哪一个属性进入决策节点。 为了最小化决策树深度,具备最多熵减小的属性是最佳选择!更确切地说,属性A相对于示例集合S的信息增益增益(S,A)被定义为:
假设咱们想要ID3来决定天气是否适合打棒球。 在两周的时间内,收集数据以帮助ID3构建决策树。 目标分类是“咱们应该打棒球吗?”,能够是或不是。
天气属性是 outlook, temperature, humidity, and wind speed.。
outlook = { sunny, overcast, rain }
temperature = {hot, mild, cool }
humidity = { high, normal }
wind = { weak, strong }
咱们须要找到哪一个属性将成为决策树中的根节点。
计算数据集上最高信息增益的步骤
1.计算整个数据集的熵
14个记录,9个yes,5个No
2.计算每一个属性熵
outlook属性包含三个 不一样的观测:
sunny: 5 个概率, 2 个“yes”
预期的新熵:
预期的新熵:
预期的新熵:
显然,outlook属性的增益最高。 所以,它用做根节点。
因为outlook有三个可能的值,所以根节点有三个分支( sunny, overcast, rain )。 接下来的问题是,应该在sunny分支节点测试什么属性? 因为咱们在根部使用了outlook,咱们只决定其他三个属性: temperature, humidity, and wind。
Ssunny = {D1, D2, D8, D9, D11} = 5 examples from the table with outlook = sunny
Gain(Ssunny, Humidity) = 0.970
Gain(Ssunny, Temperature) = 0.570
Gain(Ssunny, Wind) = 0.019
humidity,增益最大; 所以,它被用做决策节点。 这个过程一直持续到全部数据都被完美分类或者咱们的属性用完了.
决策树也能够用规则格式表示:
IF outlook = overcast THEN play baseball = yes
最终会生成一颗像下边同样的树: