决策树
- 模型:树图,递归构造,不断的执行 i f , e l s e if\,,else if,else
- 策略&算法(如何选择划分):
-
信息增益:
借用信息论中的信息熵,我们可以用信息熵的值度量一个样本集合的纯度。熵可以理解为混乱程度\不确定度,则熵越小,纯度越高。在信息论中,我们知道:
E n t ( D ) = H ( D ) = − ∑ k = 1 n p k l o g 2 p k H ( D ∣ a ) = ∑ k p ( y k ) H ( D ∣ y k ) G a i n ( D ; a ) = I ( D ; a ) = H ( D ) − H ( D ∣ a ) Ent(D)=H(D) = -\sum_{k=1}^{n}p_klog_2p_k\\ H(D|a) = \sum_kp(y_k)H(D|y_k)\\ Gain(D;a)=I(D;a) = H(D)-H(D|a) Ent(D)=H(D)=−k=1∑npklog2pkH(D∣a)=k∑p(yk)H(D∣yk)Gain(D;a)=I(D;a)=H(D)−H(D∣a)
则平均互信息即为我们所要求的信息增益。它表示在已知集合 D D D的不确定性后,集合 D D D因为已知属性 a a a的信息后,自身不确定性减少的值。所以信息增益越大,表示知道其取值以后样本集合不确定性减小的越多,则样本集越纯。(具体例子见书,还是比较通俗易懂的) -
增益率:
G a i n — r a t i o = G a i n ( D ; a ) I V ( a ) I V ( a ) = H ( a ) Gain—ratio =\frac{Gain(D;a)}{IV(a)}\\ IV(a)=H(a) Gain—ratio=IV(a)Gain(D;a)IV(a)=H(a)
I V ( a ) IV(a) IV(a)称为属性 a a a的固有值,即可理解为属性 a a a的熵。 -
基尼指数:
在分类问题中,假设有 K K K类,样本点属于第 k k k类的概率为 p k p_k pk,则基尼值定义为:
G i n i ( D ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 Gini(D) = \sum_{k=1}^{K}p_k(1-p_k)\\=1-\sum_{k=1}^{K}p_k^2 Gini(D)=k=1∑Kpk(1−pk)=1−k=1∑Kpk2
可以理解为任取一个样本被误分类的概率。则基尼指数定义为:
G i n i − i n d e x ( D , a ) = ∑ i = 1 K ∣ D i ∣ ∣ D ∣ G i n i ( D i ) Gini-index(D,a) = \sum_{i=1}^K\frac{|D_i|}{|D|}Gini(D_i) Gini−index(D,a)=i=1∑K∣D∣∣Di∣Gini(Di)
我们只需要选择使得基尼指数最小的划分即可。信息论原来这么有用啊,为什么考完试才发现D:
-
剪枝处理
主要应对过拟合的问题
- 预剪枝
显著减少决策树的训练、测试时间,但会有欠拟合的风险。
在生成决策树的过程中,对每个结点在划分前进行估计,若划分不能提高模型的泛化能力,则不进行划分。判断模型的泛化能力使用“留出法”,给定划分准则后,计算划分前后的验证集精度,若提高则进行划分,否则不进行划分。
- 后剪枝
泛化性能一般优于前者,但训练、测试时间较长。
生成完整的决策树以后,进行与“预剪枝”类似的操作,决定是否剪枝。