决策树算法之ID3

1.1 基本概念

ID3(Iterative Dichotmiser 3)算法是一种贪心算法,用于构造决策树。ID3算法起源于概念学习系统(CLS),以信息熵的降低速度为选取属性的标准,即每一个节点选取还还没有被用来划分的具备最高信息增益的属性做为划分标准,重复这个过程,知道找到全部完美匪类驯良样例。node

1.2 算法结构

  • Get the best attribute as A
  • Assign A as the decision tree for node
  • For each the value of A And create a descendant of node A
  • Sort the training examples to leaves.
  • If examples perfectly classified the training set ,stop. If not , return to the first step.

以上就是ID3算法的基本结构。这个结构的核心是:Get the best attribute,即获取最佳属性。web

1.3 最佳属性及信息增益

在看本节以前须要先了解信息熵,若是不知道信息熵是什么,能够查看——信息熵算法

结合1.1的概念,ID3是基于信息熵降低速度为选取属性标准的,而信息熵是表示信息不肯定的数值。咱们能够经过信息熵获得当前信息的不肯定度,而最佳属性是全部属性中信息熵的变化最大的即为最佳属性。咱们也能够把他理解为:当最佳属性肯定以后,咱们能够将信息所表明的数据范围进行最优的切分。svg

从信息的角度讲解,就是这个最佳属性给咱们带来的信息量越多,这个特征越重要。系统在有这个属性和没有这个属性发生的信息量变化的差值,就是信息增益(Information Gain)。而这也是经过信息熵判断一个属性是不是最佳属性的理论依据。信息增益的公式以下:
post

Gain(S,A)=Entropy(S)v|Sv||S|Entropy(Sv)

公式中的 S表明你要查看的训练样本的集合; A表明特定属性,这个属性能够存在各类值,例如:对或错。不一样的值咱们使用 v代替。Entropy(N)表明信息N的信息熵。

那么这个公式表示:特定属性A的信息增益等于整个样本的信息熵与属性A各个值的信息熵和的差值。咱们经过这个公式计算出不一样属性的信息增益,而后进行相应的比较来决定那个属性给咱们带来的信息量最多,咱们就会将这个信息量最多的属性做为最优属性来处理。学习

1.4 ID3的Bias(误差)

为了不关于误差引发误解,若是读者不是对误差有很详细的了解,但愿先阅读这篇文章——误差atom

首先在考虑空间搜索的算法的时候,咱们出现两种误差:spa

  • 限定误差。以决策树来讲明。当选用决策树模型的时候,咱们默认选择的决策树(有点绕),并无选择其它的。在实际的状况中,可能咱们其它的方式比决策树更加适合,可是因为咱们已经选定了,就会出现一些其它的误差。是因为咱们限定某一个标准以后出现的误差。
  • 优选误差。决策树在选择最佳属性的时候,并无考虑不一样属性之间的关联状况,而是默认选择当前的最优属性,这样在某种程度上也会致使误差的出现。

ID3的概括误差:.net

  • 好的分割(好的属性)靠近树的根部。例如若是两个决策树都表示相同的结果,那么会优选更好的分割做为当前的节点。
  • 会倾向于为数据建立好的决策树模型,而不是差的模型。具体的话能够一句最优属性。
  • 倾向于更短的树而非更长的树。

1.5 ID3的代码实现

因为计划的缘故,这一部分笔者将在后续过程当中补充上去。orm