机器学习初探(三)决策树
在开始介绍决策树的基本算法之前,首先要了解一下决策树算法中的所使用到的损失函数。
决策树中度量不确定性的度量标准
几乎所有的决策树算法的思想都是一样的:不断地对数据集进行划分,而决定如何划分的标准是使得数据的“不确定性”减小的越多越好,就意味着该划分能够获得越多信息。接下来介绍一下常用的两种度量标准:
1.信息熵
公式:H(y)=−∑k=1KpklogpkH\left ( y \right )=-\sum_{k=1}^{K}p_{k}logp_{k}H(y)=−∑k=1Kpklogpk
对于具体的、随机变量y生成的数据集D={y1,...,yN}D=\left \{ y_{1},...,y_{N} \right \}D={y1,...,yN}而言,在实际操作中通常会利用经验熵来估计真正的信息熵:
H(y)=H(D)=−∑k=1K∣Ck∣∣D∣log∣Ck∣∣D∣H\left ( y \right )=H\left ( D \right )=-\sum_{k=1}^{K}\frac{\left | C_{k} \right |}{\left | D \right |}log\frac{\left | C_{k} \right |}{\left | D \right |}H(y)=H(D)=−∑k=1K∣D∣∣Ck∣log∣D∣∣Ck∣
这里假设随机变量y的取值空间为{c1,...,cK}\left \{ c_{1},...,c_{K} \right \}{c1,...,cK},pkp_{k}pk表示y取ckc_{k}ck的概率:pk=p(y=ck)p_{k}=p\left ( y=c_{k} \right )pk=p(y=ck);∣Ck∣\left | C_{k} \right |∣Ck∣代表由随机变量y中类别为ckc_{k}ck的样本的个数,∣D∣\left | D \right |∣D∣代表D的总样本个数(亦即∣D∣=N\left | D \right |=N∣D∣=N)。可以看到,经验公式背后的思想其实就是“频率估计概率”。
接下来阐述一下为什么信息熵能够用来度量数据的不确定性。
很直观地来看,如果随机变量取到每一个类别pkp_{k}pk的概率都是一样的,亦即y完全没有规律可循,此时的由y生成出来的数据{y1,...,yN}\left \{ y_{1},...,y_{N} \right \}{y1,...,yN}的不确定性是在取值空间为{c1,...,cK}\left \{ c_{1},...,c_{K} \right \}{c1,...,cK}、样本数为N的数据中最大的。
而当随机变量完全属于某一类别,即存在某个k∗k^{*}k∗,使得p(y=ck∗)=1p\left ( y=c_{k^{*}} \right )=1p(y=ck∗)=1,p(y=ck)=0,∀k≠k∗p\left ( y=c_{k} \right )=0,\forall k\neq k^{*}p(y=ck)=0,∀k̸=k∗,此时y产生数据的不确定性最小。
而信息熵公式恰好满足以上性质,以简单的K=2的情况来看,其函数图像就像一个倒扣的碗,当p=0.5时H(y)达到最大,p=0或1时H(y)为0。
2.基尼系数
Gini(y)=∑k=1Kpk(1−pk)=1−∑k=1Kpk2Gini\left ( y \right )=\sum_{k=1}^{K}p_{k}\left ( 1-p_{k} \right )=1-\sum_{k=1}^{K}p_{k}^{2}Gini(y)=∑k=1Kpk(1−pk)=1−∑k=1Kpk2
同样可以利用经验基尼系数来进行估计:
Gini(y)=Gini(D)=1−∑k=1K(∣Ck∣∣D∣)2Gini\left ( y \right )=Gini\left ( D \right )=1-\sum_{k=1}^{K}\left ( \frac{\left | C_{k} \right |}{\left | D \right |} \right )^{2}Gini(y)=Gini(D)=1−∑k=1K(∣D∣∣Ck∣)2
可以证明,基尼系数拥有与信息熵同样的性质,即p1=p2=...=pK=1Kp_{1}=p_{2}=...=p_{K}=\frac{1}{K}p1=p2=...=pK=K1时,Gini(y)取得最大值,当存在k∗k^{*}k∗使得pk∗=1p_{k^{*}}=1pk∗=1时,Gini(y)=0。
信息的增益
在了解了不确定性的度量标准后,决策树应该如何利用这些标准?这就不得不提到一个概念——信息的增益是针对随机变量y和描述该变量的特征来定义的,此时数据集D={(x1,y1),...,(xN,yN)}D=\left \{ \left ( x_{1},y_{1} \right ),...,\left ( x_{N},y_{N} \right ) \right \}D={(x1,y1),...,(xN,yN)},其中xi=(xi(1),...,xi(n))Tx_{i}=\left ( x_{i}^{\left ( 1 \right )},...,x_{i}^{\left ( n \right )} \right )^{T}xi=(xi(1),...,xi(n))T是描述yiy_{i}yi的特征向量,n则是特征个数。可以先研究单一特征情况,该特征为A,数据集D={(A1,y1),...,(AN,yN)}D=\left \{ \left (A_{1},y_{1} \right ),...,\left ( A_{N},y_{N} \right ) \right \}D={(A1,y1),...,(AN,yN)};此时所谓的信息增益,反映的就是特征A所能给我们带来的关于y的“信息量”的大小。
因此在这里引入条件熵H(y∣A)H\left ( y\mid A \right )H(y∣A)的概念来定义信息的增益:所谓信息熵,就是根据特征A的不同取值{a1,...,am}\left \{ a_{1},...,a_{m} \right \}{a1,...,am}对y进行限制后,先对这些被限制的y分别计算信息熵,再把这些信息熵(一共有m个)根据特征取值本身的概率加权求和,从而得到总的条件熵。换句话说,条件熵是由被A不同取值限制的各个部分的y的不确定性以取值本身的概率作为权重加总得到的。
所以,条件熵H(y∣A)H\left ( y\mid A \right )H(y∣A)越小,意味着y被A限制后的总的不确定性越小,从而意味着A更能够帮助我们做出决策。
数学定义如下:
H(y∣A)=∑j=1mp(A=aj)H(y∣A=aj)H\left ( y\mid A \right )=\sum_{j=1}^{m}p\left ( A=a_{j} \right )H\left ( y\mid A=a_{j} \right )H(y∣A)=∑j=1mp(A=aj)H(y∣A=aj)
其中
H(y∣A=aj)=−∑k=1Kp(y=ck∣A=aj)logp(y=ck∣A=aj)H\left ( y\mid A=a_{j} \right )=-\sum_{k=1}^{K}p\left ( y=c_{k}\mid A=a_{j} \right )logp\left ( y=c_{k}\mid A=a_{j} \right )H(y∣A=aj)=−∑k=1Kp(y=ck∣A=aj)logp(y=ck∣A=aj)
同样可以用经验条件熵来估计真正的条件熵:
H(y∣A)=H(y∣D)=∑j=1m∣Dj∣D∑k=1K∣Djk∣Djlog∣Djk∣DjH\left ( y\mid A \right )=H\left ( y\mid D \right )=\sum_{j=1}^{m}\frac{\left | D_{j} \right |}{D}\sum_{k=1}^{K}\frac{\left | D_{jk} \right |}{D_{j}}log\frac{\left | D_{jk} \right |}{D_{j}}H(y∣A)=H(y∣D)=∑j=1mD∣Dj∣∑k=1KDj∣Djk∣logDj∣Djk∣
这里的DjD_{j}Dj表示在A=ajA=a_{j}A=aj限制下的数据集。通常可以记DjD_{j}Dj中的样本yiy_{i}yi满足yiA=ajy_{i}^{A}=a_{j}yiA=aj,公式中的∣Djk∣\left | D_{jk} \right |∣Djk∣则代表着DjD_{j}Dj中第k类样本的个数。
从条件熵的直观含义,信息的增益可以自然地定义为:
g(y,A)=H(y)−H(y∣A)g\left ( y,A \right )=H\left ( y \right )-H\left ( y\mid A \right )g(y,A)=H(y)−H(y∣A)
这里的g(y,A)g\left ( y,A \right )g(y,A)常被称为互信息。ID3算法就是利用它作为特征选择标准的。但是,如果简单地以互信息作为标准的话,会存在偏向于选择取值较多的特征,也就是m比较大的特征的问题。
为了解决该问题,可以给m一个惩罚,由此可以得到信息增益比的概念,该概念对应着C4.5算法:
gR(y,A)=g(y,A)HA(y)g_{R}\left ( y,A \right )=\frac{g\left ( y,A \right )}{H_{A}\left ( y \right )}gR(y,A)=HA(y)g(y,A)
其中HA(y)H_{A}\left ( y \right )HA(y)是y关于A的熵,它的定义为:
HA(y)=−∑j=1mp(yA=aj)logp(yA=aj)H_{A}\left ( y \right )=-\sum_{j=1}^{m}p\left ( y^{A}=a_{j} \right )logp\left ( y^{A}=a_{j} \right )HA(y)=−∑j=1mp(yA=aj)logp(yA=aj)
同样可以用经验熵来进行估计:
HA(y)=HA(D)=−∑j=1m∣Dj∣∣D∣log∣Dj∣∣D∣H_{A}\left ( y \right )=H_{A}\left ( D \right )=-\sum_{j=1}^{m}\frac{\left | D_{j} \right |}{\left | D \right |}log\frac{\left | D_{j} \right |}{\left | D \right |}HA(y)=HA(D)=−∑j=1m∣D∣∣Dj∣log∣D∣∣Dj∣
需要指出的是,只需要类比上述的过程,同样可以使用基尼系数来定义信息的增益。具体而言,可以先定义条件基尼系数:
Gini(y∣A)=∑j=1mp(A=aj)Gini(y∣A=aj)Gini\left ( y\mid A \right )=\sum_{j=1}^{m}p\left ( A=a_{j} \right )Gini\left ( y\mid A=a_{j} \right )Gini(y∣A)=∑j=1mp(A=aj)Gini(y∣A=aj)
其中
Gini(y∣A=aj)=1−∑k=1Kp2(y=ck∣A=aj)Gini\left ( y\mid A=a_{j} \right )=1-\sum_{k=1}^{K}p^{2}\left ( y=c_{k}\mid A=a_{j} \right )Gini(y∣A=aj)=1−∑k=1Kp2(y=ck∣A=aj)
同样可以用经验条件基尼系数来进行估计:
Gini(y∣A)=Gini(y∣D)=∑j=1m∣Di∣∣D∣[1−∑k=1K(∣Djk∣∣Dj∣)2]Gini\left ( y\mid A \right )=Gini\left ( y\mid D \right )=\sum_{j=1}^{m}\frac{\left | D_{i} \right |}{\left | D \right |}\left [ 1-\sum_{k=1}^{K}\left ( \frac{\left | D_{jk} \right |}{\left | D_{j} \right |} \right )^{2} \right ]Gini(y∣A)=Gini(y∣D)=∑j=1m∣D∣∣Di∣[1−∑k=1K(∣Dj∣∣Djk∣)2]
信息的增益则自然地定义为
gGini(y,A)=Gini(y)−Gini(y∣A)g_{Gini}\left ( y,A \right )=Gini\left ( y \right )-Gini\left ( y\mid A \right )gGini(y,A)=Gini(y)−Gini(y∣A)
CART算法通常应用这种定义。
决策树算法
这里介绍三个比较基本的决策树算法:
- ID3算法可说是“最朴素”的决策树算法,它给出了对离散型数据分类的解决方案。
- C4.5算法在其基础上进一步发展,给出了对混合型数据分类的解决方案。
- CART算法则更进一步,给出了对数据回归的解决方案。
它们的核心思想都是一致的:算法通过不断划分数据集来生成决策树,其中每一步的划分能够使当前的信息增益达到最大。
直观上可以这样想像一个决策树的生成过程:
- 向根节点输入数据
- 根据信息增益的度量,选择数据的某个特征来把数据划分成(互不相交的)好几份并分别喂给一个新node
- 如果分完数据后发现:
1.某份数据的不确定较小,亦即其中某一类的样本已经占了大多数,此时就不再对这份数据继续进行划分,将对应的的node转化为叶节点
2.某份数据的不确定性仍然较大,那么这份数据就要继续分割下去(转第二个项目符号)
事实上,几乎所有决策树算法的主要过程都与上述一致,区别仅表现在度量信息增益和划分数据的方法不同上。
1.ID3
输入:训练数据集D={(x1,y1),...,(xN,yN)}D=\left \{ \left ( x_{1},y_{1} \right ),...,\left ( x_{N},y_{N} \right ) \right \}D={(x1,y1),...,(xN,yN)}
过程:
-
将数据集D喂给一个node;
-
若D中的所有样本同属于类别ckc_{k}ck,则该node不再继续生成,将其类别标记为ckc_{k}ck类;
-
若xix_{i}xi已经是0维向量,亦即已没有可选特征,则将此时D中样本个数最多的类别ckc_{k}ck作为该node的类别;
-
否则,按照互信息定义的信息增益:
g(y,x(j))=H(y)−H(y∣x(i))g\left ( y,x^{\left ( j \right )} \right )=H\left ( y \right )-H\left ( y\mid x^{\left ( i \right )} \right )g(y,x(j))=H(y)−H(y∣x(i))
来计算第j维特征的信息增益,然后选择使得信息增益最大的特征x(j)x^{\left ( j \right )}x(j)作为划分标准,亦即:
j∗=argmaxjg(y,x(j))j^{*}=argmax_{j}g\left ( y,x^{\left ( j \right )} \right )j∗=argmaxjg(y,x(j)) -
若x(j)x^{\left ( j \right )}x(j)满足停止条件,则不再继续生成并则将此时D中样本个数最多的类别ckc_{k}ck作为类别标记;
-
否则,依x(j)x^{\left ( j \right )}x(j)的所有可能取值{a1,...,am}\left \{ a_{1},...,a_{m} \right \}{a1,...,am}将数据集D划分为{D1,...,Dm}\left \{ D_{1},...,D_{m} \right \}{D1,...,Dm},使:
(xi,yi)∈D⇔xi(j∗)=aj,∀i=1,...,N\left ( x_{i},y_{i} \right )\in D\Leftrightarrow x_{i}^{\left ( j^{*} \right )}=a_{j},\forall i=1,...,N(xi,yi)∈D⇔xi(j∗)=aj,∀i=1,...,N
同时,将x1,...,xmx_{1},...,x_{m}x1,...,xm 的第j∗j^{*}j∗维去掉,使它们成为n-1维的特征向量 -
对每个DjD_{j}Dj从(1)开始调用算法。
输出:原始数据对应的node。
其中算法第(5)步的“停止条件”(也可以称为“预剪枝”)有许多提法,常用的是如下两种:
- 若选择xj∗x^{j^{*}}xj∗作为特征时信息增益g(y,xj∗)g\left ( y,x^{j^{*}} \right )g(y,xj∗)仍然很小(通常会传入一个参数ϵ\epsilonϵ作为阈值),则停止;
- 事先把数据集分为训练集与测试集(交叉验证的思想),若由训练集得到的x(j∗)x^{\left ( j^{*} \right )}x(j∗)并不能使得决策树在测试集上的错误率更小,则停止。
这两种停止条件的提法通用于C4.5和CART。
2.C4.5
C4.5使用信息增益比作为信息增益的度量,从而缓解了ID3算法会倾向于选择m比较大的特征A作为划分依据这个问题;也正因如此,C4.5算法可以处理ID3算法比较难处理的混合型数据。我们先来看看它在离散型数据上的算法:
过程:
- (4)否则,按照信息增益比定义的信息增益:
gR(y,x(j))=g(y,x(j))Hx(j)(y)g_{R}\left ( y,x^{\left ( j \right )} \right )=\frac{g\left ( y,x^{\left ( j \right )} \right )}{H_{x^{\left ( j \right )}}\left ( y \right )}gR(y,x(j))=Hx(j)(y)g(y,x(j))
来计算第j维特征的信息增益,然后选择使得信息增益最大的特征x(j∗)x^{\left ( j^{*} \right )}x(j∗)作为划分标准,亦即:
j∗=argmaxjgR(y,x(j))j^{*}=argmax_{j}g_{R}\left ( y,x^{\left ( j \right )} \right )j∗=argmaxjgR(y,x(j))
注意:C4.5会偏向选择m比较小的特征。针对此问题,提出了一个启发式方法:先选出互信息比平均互信息要高的特征,然后从这些特征中选出信息增益比最高的。
C4.5采用二分类问题的解决方案处理连续型特征。具体而言,当二分类问题和决策树结合起来时,在连续的情况下我们通常把他转述为:
Y1={y:yA<a1},Y2={y:yA≥a1}Y_{1}=\left \{ y:y^{A}< a_{1} \right \},Y_{2}=\left \{ y:y^{A}\geq a_{1} \right \}Y1={y:yA<a1},Y2={y:yA≥a1}
一般而言,如何处理连续性特征这个问题会归结为如何选择“二分标准”这个问题。C4.5中的做法如下:
- 若x(j)x^{\left ( j \right )}x(j)在当前数据集中有m个取值,不妨假设它们为u1,...,umu_{1},...,u_{m}u1,...,um;不失一般性,假设它们满足u1<...<umu_{1}< ...< u_{m}u1<...<um,那么依次选择v1,...,vpv_{1}, ..., v_{p}v1,...,vp作为二分标准并决出最好的一个,其中v1∼vpv_{1}\sim v_{p}v1∼vp构成等差数列,且:
v1=u1,vp=umv_{1}=u_{1},v_{p}=u_{m}v1=u1,vp=um - 依次选择v1=u1+u22,...,vm−1=um−1+um2v_{1}=\frac{u_{1}+u_{2}}{2},...,v_{m-1}=\frac{u_{m-1}+u_{m}}{2}v1=2u1+u2,...,vm−1=2um−1+um作为二分标准,计算它们的信息增益比,从而决出最好的二分标准来划分数据。
需要指出的是,C4.5具有一个比较糟糕的性质:由信息增益比的定义可知,如果是二分的话,它会倾向于把数据集分成很不均匀的两份;因为此时HA(y)H_{A}\left ( y \right )HA(y)将非常小,导致gR(y,A)g_{R}\left ( y,A \right )gR(y,A)很大。举个例子:如果当前划分标准为连续特征,那么C4.5可能会倾向于直接选择v1,v2,v3v_{1},v_{2},v_{3}v1,v2,v3等作为二分标准。这样会带来一种后果,决策树倾向于往深处发展,造成过拟合。
3.CART
CART既可作分类也可作回归。CART一般使用基尼增益作为信息信息增益的度量,其一大特色就是它假设了最终生成的决策树为二叉树,亦即它在处理离散型特征时也会通过决出二分标准来划分数据。
- 过程:
(4)否则,不妨设x(j)x^{\left ( j \right )}x(j)在当前数据集中有SjS_{j}Sj个取值u1(j),...,uSj(j)u_{1}^{\left ( j \right )},...,u_{S_{j}}^{\left ( j \right )}u1(j),...,uSj(j)且它们满足u1(j)<...<uSj(j)u_{1}^{\left ( j \right )}< ...< u_{S_{j}}^{\left ( j \right )}u1(j)<...<uSj(j),那么:
(a)若x(j)x^{\left ( j \right )}x(j)是离散型的,则依次选取u1(j),...,u1(Sj)u_{1}^{\left ( j \right )},...,u_{1}^{\left ( S_{j} \right )}u1(j),...,u1(Sj)作为二分标准apa_{p}ap,此时:
Ajp={x(j)=ap,x(j)≠ap}A_{jp}=\left \{ x^{\left ( j \right )}=a_{p},x^{\left ( j \right )}\neq a_{p} \right \}Ajp={x(j)=ap,x(j)̸=ap}
(b)若x(j)x^{\left ( j \right )}x(j)是连续型的,则依次选取u1(j)+u2(j)2,...,uSj−1(j)+uSj(j)2\frac{u_{1}^{\left ( j \right )}+u_{2}^{\left ( j \right )}}{2},...,\frac{u_{S_{j-1}}^{\left ( j \right )}+u_{S_{j}}^{\left ( j \right )}}{2}2u1(j)+u2(j),...,2uSj−1(j)+uSj(j)作为二分标准apa_{p}ap,此时:
Ajp={x(j)<ap,x(j)≥ap}A_{jp}=\left \{ x^{\left ( j \right )}<a_{p},x^{\left ( j \right )}\geq a_{p} \right \}Ajp={x(j)<ap,x(j)≥ap}
按照基尼系数定义的信息增益:
gGini(y,Ajp)=Gini(y)−Gini(y∣Ajp)g_{Gini}\left ( y,A_{jp} \right )=Gini\left ( y \right )-Gini\left ( y\mid A_{jp} \right )gGini(y,Ajp)=Gini(y)−Gini(y∣Ajp)
来计算第j维特征在这些二分标准下的信息增益,然后选择使得信息增益最大的特征x(j∗)x^{\left ( j^{*} \right )}x(j∗)和相应的二分标准up∗(j∗)u_{p^{*}}^{\left ( j^{*} \right )}up∗(j∗)作为划分标准,亦即:
(j∗,p∗)=argmaxj,pgGini(y,Ajp)\left ( j^{*},p^{*} \right )=argmax_{j,p}g_{Gini}\left ( y,A_{jp} \right )(j∗,p∗)=argmaxj,pgGini(y,Ajp)
而对于回归问题,之前的分类问题的损失为数据的不确定性,而在回归问题中,一种常见的做法就是将损失定义为平方损失:
L(D)=∑i=1NI(yi≠f(xi))[yi−f(xi)]2L\left ( D \right )=\sum_{i=1}^{N}I\left ( y_{i}\neq f\left ( x_{i} \right ) \right )\left [ y_{i}-f\left ( x_{i} \right ) \right ]^{2}L(D)=∑i=1NI(yi̸=f(xi))[yi−f(xi)]2
这里的I是示性函数,f是我们的模型、f(xi)f\left ( x_{i} \right )f(xi)是xix_{i}xi在我们模型下的预测输出,yiy_{i}yi是真实输出。在分类问题中决策树是一个划分规则的序列,在回归问题中也差不多。具体而言,设序列一共会将输入空间划分为R1,...,RMR_{1},...,R_{M}R1,...,RM(这M个子空间彼此不相交),则:
-
对于回归问题,模型可以表示为:
f(xi)=∑m=1McmI(xi∈Rm)f\left ( x_{i} \right )=\sum_{m=1}^{M}c_{m}I\left ( x_{i}\in R_{m} \right )f(xi)=∑m=1McmI(xi∈Rm)
这里cm=argmincLm(c)=argminc∑(xi,yi)∈Rm(yi−c)2c_{m}=argmin_{c}L_{m}\left ( c \right )= argmin_{c}\sum _{\left ( x_{i},y_{i} \right )\in R_{m}}\left ( y_{i}-c \right )^{2}cm=argmincLm(c)=argminc∑(xi,yi)∈Rm(yi−c)2。那么由一阶条件:
∂Lm(c)∂c=0⇔−2∑(xi,yi)∈Rm(yi−cm)=0\frac{\partial L_{m}\left ( c \right )}{\partial c}=0\Leftrightarrow -2\sum _{\left ( x_{i},y_{i} \right )\in R_{m}}\left ( y_{i}-c_{m} \right )=0∂c∂Lm(c)=0⇔−2∑(xi,yi)∈Rm(yi−cm)=0
可解得cm=avg(yi∣(xi,yi)∈Rm)=1∣Rm∣∑(xi,yi∈Rm)yic_{m}=avg\left ( y_{i}\mid \left ( x_{i},y_{i} \right )\in R_{m} \right )= \frac{1}{\left | R_{m} \right |}\sum _{\left ( x_{i},y_{i}\in R_{m} \right )}y_{i}cm=avg(yi∣(xi,yi)∈Rm)=∣Rm∣1∑(xi,yi∈Rm)yi -
解决回归问题时,我们会在特征和二分选择选好后,通过求解:
(j∗,p∗)=argminj,p[∑xi<p(yi−cjp(1))2+∑xi≥p(yi−cjp(1))2]\left ( j^{*},p^{*} \right )=argmin_{j,p}\left [ \sum _{x_{i}< p}\left ( y_{i}-c_{jp}^{\left ( 1 \right )} \right )^{2}+\sum _{x_{i}\geq p}\left ( y_{i}-c_{jp}^{\left ( 1 \right )} \right )^{2} \right ](j∗,p∗)=argminj,p[∑xi<p(yi−cjp(1))2+∑xi≥p(yi−cjp(1))2]
来选取划分标准。
剪枝
为了解决决策树算法中存在的过拟合问题,通常采用“预剪枝”或“后剪枝”。”预剪枝“就是前面算法所提到的”停止条件“。而”后剪枝“是指在决策树生成完毕后再对其进行修建,把多余的节点修剪掉。换句话说,后剪枝是从全局出发,通过某种标准对一些node进行局部剪枝,这样能减少决策树中node的数目,从而有效地降低模型复杂度。
因此问题的关键在于如何定出局部剪枝的标准。通常来说有两种做法:
- 应用交叉验证的思想,若局部剪枝能够使得模型在测试集上的错误率降低,则进行局部剪枝;
- 应用正则化的思想,综合考虑不确定性和模型复杂度来定出一个新的损失,用该损失作为一个node是否进行局部剪枝的标准。
因此,我们又遇到一个关键问题,如何定量分析决策树中一个node的复杂度:一个直观的做法是直接使用该node下属叶节点的个数作为复杂度。