上一篇博客中提到了如何创建决策树,并且让决策树可视化展示,这里,我将补充连续与缺失的概念讲解,以及剪枝的代码实现。
连续与缺失值
连续值处理
什么是连续?
定义:在一定区间内可以任意取值的变量叫连续变量,其数值是连续不断的,相邻两个数值可作无限分割,即可取无限个数值。——百度百科
由定义可知,连续值得取值是无限的,不在是离散数值的有限,故不能直接根据连续属性的可取值来对结点进行划分,因此有了连续属性离散化技术。最简单的策略是采用C4.5决策树采用的机制,通过二分法对连续值进行处理
给定样本集D和连续属性a,假定a再D上出现了n个不同取值,将这些值从小到大排列,记为。基于划分点t,可将D分为子集和,其中包含那些在属性a上取值不大于t的样本,包含那些在属性a上取值大于t的样本。对相邻的属性取值ai,ai+1,t在[ai, ai+1]中取任意值所产生的划分结果相同。对连续属性a,把区间[ai, ai+1]的中卫点作为候选划分点。
T a = a i + a i + 1 2 ∣ 1 ≤ i ≤ n − 1 T_{a} =\frac{a^i + a^{i+1}}{2} | 1\le{i}\le{n-1} Ta=2ai+ai+1∣1≤i≤n−1
采用离散属性值方法,计算这些划分点的信息增益,选取最优的划分点进行样本集合的划分:G a i n ( D , a ) = max t ∈ T a G a i n ( D , a , t ) = max t ∈ T a E n t ( D ) − ∑ λ ∈ ( − , + ) ∣ D t λ ∣ ∣ D ∣ E n t ( D t λ ) Gain(D,a) = \max_{t\in T_a}Gain(D,a,t) = \max_{t\in T_a}Ent(D) - \sum_{\lambda \in{(-,+)}}\frac{|D_{t}^{\lambda } |}{|D|}Ent(D_{t}^{\lambda }) Gain(D,a)=t∈TamaxGain(D,a,t)=