决策树(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为根结点的一棵决策树由上可知为一个递归过程,有三种情形会导致递归返回:
当前结点包含的样本全属于同一类别,无需划分;当前属性集为空,或是所有样本再所有属性上取值相同,无法划分;当前结点包含的样本集合为空,不能划分。信息熵(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=1∣y∣pklog2pk E n t ( D ) Ent(D) Ent(D)的值越小,则D的纯度越高。
E n t ( D ) Ent(D) Ent(D)的最小值为0,最大值为 log 2 ∣ y ∣ \log_2{|y|} log2∣y∣
假定离散属性 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=1V∣D∣∣Dv∣Ent(Dv)
把”编号“也作为一个候选划分属性。”增益率“定义为: 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)} Gain−ratio(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=1V∣D∣∣Dv∣log2∣D∣∣Dv∣ 称为属性 a a a的”固有值”(intrinsic value)
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=1∣y∣∑k‘!=kpkpk‘=1−∑k=1∣y∣pk2