ID3分类算法由Quinlan于1986年提出来的,使用信息增益作为属性选择标准。首先检测所有属性,选择信息增益值最大的属性产生决策树节点,由该属性的不同取值建立分支,在对各分支的子集递归调用该方法建立决策树节点的分支,直到所有子集仅包含同一类别的数据为止,最后得到一棵决策树,用来对新的样本进行分类。
1.信息熵
熵(entropy,也叫信息熵)用来度量一个属性的信息量。假定S为训练集,S的目标属性C具有m个可能的类标号值,C = {},假定训练集S中,在所有样本中出现的概率为(i = 1,2,...,m),则该训练集S所包含的信息熵定义为:
2.信息增益
信息增益是划分样本数据集的不纯度(熵)和划分后样本数据集的不纯度(熵)的差值。假设划分前样本数据集为S,并用属性A来划分样本集S,则按属性A划分S的信息增益Gain(S,A)为样本集S的熵减去按属性A划分S后的样本集的熵,即:
按属性A划分S后的样本集的熵定义如下:假定属性A由k个不同的取值,从而将S划分为k个样本子集{},则属性A划分S后的样本子集的信息熵为:
其中,为样本子集中包含的样本 |S|为样本集S中包含的样本数。
信息增益越大,说明使用属性A划分后的样本子集越纯,越有利于分类。
3.ID3算法的优缺点
ID3算法采用一种自顶向下、贪婪的搜索方法。ID3搜索的假设空间是可能的决策树的集合,搜索目的是构造与训练数据一致的决策树,搜索策略是爬山法,在构造决策树时从简单到复杂,用信息熵作为爬山法的评价函数。算法的核心在于决策树各节点属性的选择,用信息增益作为属性选择的标准,使得在每个非叶节点进行测试时能获得关于被测数据最大得类别信息,使得该属性将数据集划分为子集后系统的熵值最小。
ID3算法的优点是理论清晰,方法简单,学习能力较强,也存在一些需要改进的缺点:
(1) ID3算法只能处理分类属性数据,无法处理连续型数据。
(2) ID3算法对测试属性的每个取值相应产生一个分支,且划分相应的数据样本集,这样的划分会导致产生许多小的子集。随着子集被划分得越来越小,划分过程将会由于子集规模过小所造成得统计特征不充分而停止。
(3) ID3算法中使用信息增益作为决策树节点属性选择标准,由于信息增益在类别值多懂的属性上计算结果大于类别值少的属性上计算结果,这将导致决策树算法偏向选择具有较多分枝的属性,因而可能过度拟合。在极端情况下,如果某个属性对于训练集中的每个元组都有一个唯一的值,则认为该属性是最好的,这因为对于每个划分都只有一个人元组(因此也是一类)。