文章目录
1. 基本流程
(1)叶节点类别的划分
① 当前D中所有样本都属于同一类别C时 ⇒ 将Node标记位C类型的叶节点
② 当前属性集A为空 ==> 将Node标记为当前样本集合D中数量最多类别的叶节点
③ 当前样本集D为空 ⇒ 将Node标记为其父节点样本中数量最多的类的叶节点
TreeGenerate(D,A)
{
//1.生成结点Node
if 当前D中样本全属于同一类别C then
将Node标记为C类别的叶节点
end if
if 属性集A为空(但样本还未分类完毕) OR 样本在所有属性下取值相同
将Node标记为当前样本集合D中最多类别的叶节点
end if
//2.从所有属性中选择最优化分
for a in A
// 若当前样本集合D为空
if D 为空 then
将Node标记为父节点样本集合D中最多类别的叶节点
else // 不为空 分类
TreeGenerate(D,A-{
a})
end if
end for
}
2. 划分选择
2.1 信息熵
信息熵是度量样本集合纯度最常用的指标。假定集合D中第K类样本所占的比例为 P k P_k Pk,则D的信息熵定义为:
E n t ( D ) = − ∑ k = 1 2 P k l o g 2 P k Ent(D)=-\sum_{k=1}^{2}P_k log_2P_k Ent(D)=−k=1∑2Pklog2Pk
其中,Ent(D)的值越小,则D的纯度越大。
① 约定:若p=0,则 p l o g 2 p = 0 plog_2p=0 plog2p=0
② Ent(D)的最小值为0(当D中所有样本属于同一类型),最大值为1(当D中样本类型的比例呈1:1分布)
2.2 经典的属性划分方法
2.2.1 信息增益
(1)定义
离散属性 α \alpha α有V个可能的取值 a 1 , a 2 , … , a V {a^1,a^2,\dots,a^V} a1,a2,…,aV,用 α \alpha α来进行划分,会产生V个分支节点,其中第v各分支节点包含了D中所有在属性 α \alpha α上取值为 a V a^V aV的样本,记为 D v D^v Dv。
可以计算出用属性 α \alpha α对样本D进行划分所得到的信息增益:
G a i n ( D , α ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D,\alpha)=Ent(D)-\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v) Gain(D,α)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(D