统计学习方法读书笔记(五)-决策树

全部笔记的汇总贴:统计学习方法读书笔记汇总贴

PDF免费下载:《统计学习方法(第二版)》

决策树(decision tree )是一种基本的分类与回归方法。

一、决策树模型与学习

可以将决策树看成一个if-then规则的集合。将决策树转换成if-then规则的过程是这样的:由决策树的根结点到叶结点的每一条路径构建一条规则:路径上内部结点的特征对应着规则的条件,而叶结点的类对应着规则的结论。

二、特征选择

特征选择在于选取对训练数据具有分类能力的特征。这样可以提高决策树学习的效率。通常特征选择的准则是信息增益或信息增益比。

则随机变量 X X X的熵定义为 H ( X ) = − ∑ i = 1 n p i l o g p i          p i 为 概 率 H(X)=-\sum_{i=1}^np_ilog p_i\;\;\;\;p_i为概率 H(X)=i=1npilogpipi熵越大,随机变量的不确定性就越大。

信息增益: g ( D , A ) = H ( D ) − H ( D ∣ A )          其 中 H ( D ∣ A ) 为 特 征 A 给 定 条 件 下 D 的 经 验 条 件 熵 g(D,A)=H(D)-H(D|A)\;\;\;\;其中H(D|A)为特征A给定条件下D的经验条件熵 g(D,A)=H(D)H(DA)H(DA)AD

信息增益的算法:

  1. 计算数据集 D D D的经验熵 H ( D ) H(D) HD
  2. 计算特征 A A A对数据集D的经验条件熵 H ( D ∣ A ) H(D|A) HDA
  3. 计算信息增益(一般选取信息增益最大的作为最有特征)

信息增益比: g R ( D , A ) = g ( D , A ) H A ( D ) g_R(D,A)=\frac{g(D,A)}{H_A(D)} gR(D,A)=HA(D)g(D,A)其中, H A ( D ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ log ⁡ 2 ∣ D i ∣ ∣ D ∣ , n 是 特 征 A 取 值 的 个 数 H_A(D)=-\sum_{i=1}^n\frac{|D_i|}{|D|}\log_2\frac{|D_i|}{|D|},n是特征A取值的个数 HA(D)=i=1nDDilog2DDi,nA

三、决策树的生成

(一)ID3算法

从根结点(root node)开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子结点递归地调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止。最后得到一棵决策树。ID3 相当于用极大似然法进行概率模型的选择。

具体的构造过程恶意根据P77的例5.3。

ID3 算法只有树的生成,所以该算法生成的树容易产生过拟合。

(二)C4.5算法

C4.5 算法与 ID3 算法相似,C4.5 算法对 ID3 算法进行了改进。C4.5 在生成的过程中,用信息增益比来选择特征。

四、决策树的剪枝

决策树的剪枝往往通过极小化决策树整体的损失函数 (loss function)或代价函数(cost function)来实现。

决策树学习的损失函数可以定义为 C α ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) + α ∣ T ∣ C_\alpha(T)=\sum_{t=1}^{|T|}N_tH_t(T)+\alpha|T| Cα(T)=t=1TNtHt(T)+αT其中 ∣ T ∣ |T| T为树 T T T的叶节点个数, t t t是树 T T T的叶节点,该叶节点有 N t N_t Nt个样本点,其中 k k k类的样本点有 N t k N_{tk} Ntk个, k = 1 , 2 , ⋯   , K k=1,2,\cdots,K k=1,2,,K H t ( T ) H_t(T) Ht(T)为叶节点 t t t上的经验熵, α ≥ 0 \alpha\ge0 α0是参数。其中经验熵为 H t ( T ) = − ∑ k N t k N t log ⁡ N t k N t H_t(T)=-\sum_k\frac{N_{tk}}{N_t}\log\frac{N_{tk}}{N_t} Ht(T)=kNtNtklogNtNtk
所以,损失函数可以记作 C α ( T ) = C ( T ) + α ∣ T ∣ 其 中 , C ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) = − ∑ t = 1 ∣ T ∣ ∑ k = 1 K N t k log ⁡ N t k N t C_\alpha(T)=C(T)+\alpha|T|\\其中,C(T)=\sum_{t=1}^{|T|}N_tH_t(T)=-\sum_{t=1}^{|T|}\sum_{k=1}^KN_{tk}\log\frac{N_{tk}}{N_t} Cα(T)=C(T)+αTC(T)=t=1TNtHt(T)=t=1Tk=1KNtklogNtNtk

较大的 α \alpha α促使选择较简单的模型(树), 较小的 α \alpha α促使选择较复杂的模型(树)。 α = 0 \alpha=0 α=0意味着只考虑模型与训练数据的拟合程度, 不考虑模型的复杂度。

大致思想是将一组叶结点回缩到其父结点,之前与之后的整体树分别为 T B T_B TB T A T_A TA,其对应的损失函数值分别是 C α ( T B ) C_\alpha(T_B) CαTB C α ( T A ) C_\alpha(T_A) CαTA,如果 C α ( T A ) ≤ C α ( T B ) , 即 剪 掉 该 组 叶 节 点 后 , 损 失 函 数 更 小 C_\alpha(T_A)\le C_\alpha(T_B),即剪掉该组叶节点后,损失函数更小 CαTACαTB,则进行剪枝,即将父结点变为新的叶结点。

这种基于损失函数的剪枝算法只需考虑两个树的损失函数的差,其计算可以在局部进行。所以,决策树的剪枝算法可以由一种动态规划的算法实现。

五、CART算法

CART由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归。

(一)决策树生成

基于训练数据集生成决策树,生成的决策树要尽量大。

先求每个特征对应每个取值的基尼系数,基尼指数值越大,样本集合的不确定性也就越大,这一点与熵相似。

对于二分类问题, G i n i ( p ) = 2 p ( 1 − p ) Gini(p)=2p(1-p) Gini(p)=2p(1p)
对于多分类问题,我们需要求每一个取值的基尼系数,然后选取最小的为该特征的基尼系数。

例如样本分为三类,个数依次为 A 1 , A 2 , A 3 A_1,A_2,A_3 A1,A2,A3,总数为 ∣ D ∣ = A 1 + A 2 + A 3 |D|=A_1+A_2+A_3 D=A1+A2+A3
所以该特征的基尼系数为: min ⁡ { G i n i ( D , A 1 ) , G i n i ( D , A 2 ) , G i n i ( D , A 3 ) } \min\{Gini(D,A_1),Gini(D,A_2),Gini(D,A_3)\} min{ Gini(D,A1),Gini(D,A2),Gini(D,A3)},其中 G i n i ( D , A 1 ) = A 1 ∣ D ∣ G i n i ( A 1 ) + A 2 + A 3 ∣ D ∣ G i n i ( A 2 + A 3 ) Gini(D,A_1)=\frac{A_1}{|D|}Gini(A_1)+\frac{A_2+A_3}{|D|}Gini(A_2+A_3) Gini(D,A1)=DA1Gini(A1)+DA2+A3Gini(A2+A3)

依次选取基尼系数最小的特征进行决策树的建立。

(二)决策树剪枝

用验证数据集对己生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。

方法类似于前面提到的剪枝算法,只不过我们通过变化的选取 α \alpha α来得到一组树,通过交叉验证的方法找到最优子树。

利用独立的验证数据集,测试子树序列各棵子树的平方误差或基尼指数。平方误差或基尼指数最小的决策树被认为是最优的决策树。

下一章传送门:统计学习方法读书笔记(六)-逻辑斯蒂回归与最大熵模型

猜你喜欢

转载自blog.csdn.net/qq_41485273/article/details/112756978
今日推荐