西瓜书学习笔记 —— 第4章 决策树

    xiaoxiao2022-07-12  136

    1 基本流程

    决策树(decision tree)是一类常见的机器学习方法。 一般包含:一个根结点、若干个内部结点和若干个叶结点。

    叶结点:决策结果其他每个结点:对应一个属性测试每个结点包含的样本集合:根据属性测试的结果呗划分到子结点中根结点:包含样本全集。从根节点到每个叶结点的路径:对应了一个判定测试序列。

    决策树学习目的:产生以可泛化能力强(处理未见实例能力强)的决策树,其基本流程遵循“分而治之”(divide-and-conquer)策略,如所示:

    输入:训练集D={(x1,y1),(x2,y2),...,(xm,ym)} 属性集A={a1,a2,...,ad} 过程:函数TreeGenerate(D,A) 1.生成结点node; 2.if D中样本全属于同一类别C then: 3. 将node标记为C类叶结点;return 4. end if 5. if A=空集 or D中样本再A上取值相同 then: 6. 将node标记为叶结点,其类别标记为D中样本数最多的类;return 7. end if 8. 从A中选择最优划分属性a*; 9. for a*的每一个值a*v do: 10. 为node生成一个分支; 11. if Dv为空 then: 12. 将分支结点标记为叶结点,其类别标记为D中样本最多的类;return 13. else 14. 以TreeGenerate(Dv,A\{ak})为分支结点 15. end if 16. end for 输出:以node为根结点的一棵决策树

    由上可知为一个递归过程,有三种情形会导致递归返回:

    当前结点包含的样本全属于同一类别,无需划分;当前属性集为空,或是所有样本再所有属性上取值相同,无法划分;当前结点包含的样本集合为空,不能划分。

    2 划分选择

    2.1 信息增益

    信息熵(information entropy):是度量样本集合纯度最常用的一种指标。

    假定当前样本集合D中第k类样本所占的比例为 p k ( k = 1 , 2 , . . . , ∣ y ∣ ) p_k(k=1,2,...,|y|) pk(k=1,2,...,y),则D的信息熵定义为: E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k log ⁡ 2 p k Ent(D)=-\sum_{k=1}^{|y|}{p_k\log_2{p_k}} Ent(D)=k=1ypklog2pk E n t ( D ) Ent(D) Ent(D)的值越小,则D的纯度越高。

    E n t ( D ) Ent(D) Ent(D)的最小值为0,最大值为 log ⁡ 2 ∣ y ∣ \log_2{|y|} log2y

    假定离散属性 a a a V V V歌可能的取值{ a 1 , a 2 , . . . , a V a^1,a^2,...,a^V a1,a2,...,aV},计算用属性 a a a对样本集 D D D进行划分所获得的”信息增益“(information gain): G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D,a)=Ent(D)-\sum_{v=1}^{V}{\frac{|D^v|}{|D|}{Ent(D^v)}} Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)

    2.2 增益率

    把”编号“也作为一个候选划分属性。”增益率“定义为: G a i n − r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) Gain_{-}ratio(D,a)=\frac{Gain(D,a)}{IV(a)} Gainratio(D,a)=IV(a)Gain(D,a)

    其中 I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ log ⁡ 2 ∣ D v ∣ ∣ D ∣ IV(a)=-\sum_{v=1}^{V}{\frac{|D^v|}{|D|}\log_2\frac{|D^v|}{|D|}} IV(a)=v=1VDDvlog2DDv 称为属性 a a a的”固有值”(intrinsic value)

    2.3 基尼系数

    CART(Classification and Regression Tree)决策树使用“基尼系数”(Gini index)来选择划分属性。

    数据 D D D的纯度可用基尼值来度量: G i n i ( D ) = ∑ k = 1 ∣ y ∣ ∑ k ‘ ! = k p k p k ‘ = 1 − ∑ k = 1 ∣ y ∣ p k 2 Gini(D)=\sum_{k=1}^{|y|} \sum_{k^`{!=k}}p_kp_{k^`}=1-\sum_{k=1}^{|y|}p_k^2 Gini(D)=k=1yk!=kpkpk=1k=1ypk2

    最新回复(0)