核心思想:
样本集D,属性集A
setTree(D,A):
生成结点node
if(样本最终分类相同)
node标记为该分类的叶结点
return
if(样本在A的某一个属性上取值相同 || 属性集合A已经是空集)
node标记为叶结点并标记为数目最多的属性取值
#选取最佳划分属性
for features in A:
计算每一个属性划分得到的指标数值(香农熵/信息熵,基尼指数...)
选取出指标最优的属性a
for values in a:
为该取值的样本D'分配一个子结点
#if 若该取值样本不存在,分配一个标记为父节点样本最多属性取值的子节点(?)
else
setTree(D',A-valus)
return
相关概念及公式
共有D组数据
K表示数据的某一种属性的一种样式,如西瓜色泽的:浅白,青绿,乌黑。
表示某一种属性的第k个取值所占的比例
信息熵表示当前计算属性的纯度,Ent(D)越小,D纯度越高。
信息熵(又称香农熵):
信息增益表示用数据的某一种属性来划分后所获的“纯度提升”,信息增益越大,提升越大。A表示某一种(离散)属性,共有V种不同的取值,v表示第v个取值(分支)。
信息增益:
由于信息增益对于分类较多的属性有所偏好,所以为了平衡这种偏向便有了增益率。
增益率:
若属性a的可能取值数目(V)越多,固有值通常会越大。
固有值:
在以上属性使用时,可遵循一定的组合,如先选出信息增益高于平均水平的属性,再用增益率进行筛选。
基尼指数反映了从数据集D中随机抽取两个样本其类别不一致的概率。
基尼指数:
属性a的基尼指数的定义类似。
属性a的基尼指数:
原文:https://www.cnblogs.com/LOSKI/p/10673717.html