当前样本集合 D 中第 k 类样本所占的比例为 pk(k=1,2,...,∣Y∣) Ent(D)=−k=1∑∣Y∣pklog2pk Ent(D) 的值越小,那么 D 的纯度越高。
信息增益(information gain)
假设当前节点根据离散属性 a(a∈{a1,a2,...,aV}) 进行划分,由此当前节点下产生了 V 个分支,第 v 个分支包含了所有 a 属性为 av 的样本,记为 Dv,那么定义信息增益为 Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv) 信息增益越大,表明在使用 a 划分样本之后各分支的信息熵越小,各分支的纯度提升越大。因此对于每个节点我们选择 a∗=argmaxa∈AGain(D,a) 属性来进行划分。
应用实例
ID3 决策树学习算法
注意
若多个属性的信息增益相同,那么任选一个属性作为划分标准。
对于离散属性,在决策树的一条支路上(从根节点到叶节点)不能用同一个属性进行重复判断。
增益率
信息增益对取值数目较多的属性有所偏好,从而造成对训练样本的过拟合,为了减少这种不利影响,引入增益率 (gain ratio) Gain_ratio(D,a)=IV(a)Gain(D,a) 其中 IV(a)=−v=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣ IV 称为属性 a 的“固有值”(instrinsic value),属性 a 的取值数目越多(即∣V∣ 越大),则 IV(a) 的值越大。
给定样本集 D 和连续属性 a,假定 a 在 D 上出现了 n 个不同的取值,将这些值按照大小排序,记为{a1,a2,⋯,an},对于相邻两个属性值 ai,ai+1而言,若 t 满足 t∈[ai,ai+1) ,那么按照 t 划分产生的分类结果是相同的。对于含有 n 个连续值的属性 a,考察含有 N−1 个元素的候选区域集合 Ta={2ai+ai+1∣1≤i≤n−1} 于是将连续属性转换为离散属性,按照离散属性处理即可构建决策树。 与离散属性不同的是,若当前节点划分属性为连续属性,该属性可作为其后代节点的划分属性,也就是说,在一条从根节点到叶节点的通路上,连续属性可以出现多次。
缺失值的处理
给定训练集 D 和属性 a,D~ 表示 D 在属性 a 上没有缺失值的样本子集。假定 a 有 V 个可取值 {a1,a2,⋯,aV},令 D~v 表示 D~ 中在属性 a 上取值为 av 的样本子集, D~k 表示 D~ 中属于第 k 类的(k=1,2,⋯,∣Y∣)样本子集,D~=⋃k=1∣Y∣D~k,D~=⋃v=1VD~v。假定我们给数据集中的每个样本 x 赋予一个权重 ωx,并定义: ρ=∑x∈Dωx∑x∈D~ωx 表示无缺失样本所占比例; p~k=∑x∈Dkωx∑x∈D~kωx(1≤k≤∣Y∣) 表示无缺失样本在第 k 类中所占的比例; r~v=∑x∈Dvωx∑x∈D~vωx(1≤v≤V) 表示无缺失样本中在属性 a 上取值为 av的样本所占比例。 更新信息增益的计算式为 Gain(D,a)=ρ×Gain(D~,a)=ρ×(Ent(D~)−v=1∑Vr~vEnt(D~v)) 其中 Ent(D~)=−k=1∑∣Y∣p~klog2p~k 若样本 x 在划分属性 a 上的取值已知,那么将 x 划入与其取值对应的子节点,且样本权值保持 ωx 不变;若样本 x 在划分属性 a 上的取值位置,那么将 x 放入所有子节点,且样本权值在与属性值 av 对应的子节点中调整为 r~v⋅ωx,即让一个样本以不同权重放入不同的节点中。通常每一个样本权重 ωx 赋为 1。