根据树形结构,一层一层网下判断,直到叶子节点就是所求的判断结果。
一、基本流程如下图:
二、我们从集合中选择最优化分属性有以下方法:
1.信息增益
首先介绍“信息熵”的概念,信息熵用来度量样本纯度
Ent越小,纯度越高,y是样本集合(D)的大小。pk表示第k类样本所占比例。
假定离散属性a有V中可能的取值(a^1,a^2,...a^V),若用a进行划分,则会由V个分支点,每个分支点包含的属性a为a^v的样本,记作D^v,在计算出该分支点的信息熵乘以权重,我们用原来整个的信息熵减去该分支点的信息熵就是用a进行划分所能得到的信息增益。
信息增益
然后计算出所有属性的信息增益后我们比较得到最大的信息增益即a=arg maxGain(D,a).来决策此次用来决定划分的属性。
2.增益率
增益率对取值较多的属性有所偏好,所以引入增益率
Gain_ratio(D,a)=Gain(D,a)/IV(a);
属性取值越多IV(a)就越大,增益率就越小,所以增益率对取值少的有所偏好。所以在使用的时候是先从划分中选取信息增益较高的,然后再从中选取增益率较大的。
3.基尼指数
CART决策树使用基尼指数来选择划分属性。
基尼指数反应从数据集中选取两个不一致样本的概率,因此基尼越小纯度越高。
属性a的基尼指数定义为
选择基尼属性最小的
三、剪枝处理
剪枝主要对付过拟合来用。
1.预剪枝
是在决策树生成过程中执行,每次划分前估计要不要再继续进行划分。我们先假设将其划分,然后用验证集去验证划分前和划分后的精度,若精度变高有有必要划分,反之就不划分。
2.后剪枝
是在决策树生成之后,由下而上。我们计算去掉这个节点和不去掉时的精度,若去掉>不去掉,则剪枝;反之部剪枝。
预剪枝容易出现欠拟合的情况,后剪枝的泛化性能更好,而开销也就更大。
四、连续与缺失值
1.连续值
首先将连续属性a的值进行排序,然后设置一个划分点t将a的属性值划分成两部分。前者包含小于t的值,后者包含大于t的值。对于划分点两边的相邻点来说,t只要取a^i到a^(i+1)之间的任意值就行了,所以我们可以取这两个数的中位点。
通过上式来寻找能够使信息增益最大的划分点t。
注意:离散属性划分过后该属性不再进行后续划分,连续属性还可作为后续划分属性。
2.缺失值
令分别表示D中在属性a上有值的样本集合,中属性a的值为a^v的样本集合,中属于第k类的样本集合。
令
一开始初始化w为1
若样本x在属性a上的取值已知,那么将x划入对应节点,且权值w保持不变;若取值为空,那么将x划入所有子节点,并且将对应的权值修改为