03.有监督算法——决策树

1.决策树算法

决策树算法可以做分类,也可以做回归

决策树的训练与测试:

训练阶段:从给定的训练集构造出一棵树(从根节点开始选择特征,如何进行特征切分)

测试阶段:根据构造出来的树模型从上到下走一遍

一旦决策树构建好了,那么分类或预测任务就变得简单。难点在于如何构造出一颗树。或者说难点在于如何对数据特征进行重要程度的排序。

建立决策树的关键在于在当前状态下选择哪个属性作为分类依据。根据不同的目标函数,建立决策树主要有以下三种算法:

1.1. ID3(Iterative Dichotomiser)

熵:表示随机变量不确定性的度量,可以理解成物体内部的混乱程度。

信息熵:
H ( D ) = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ log ⁡ 2 ∣ C k ∣ ∣ D ∣ {\rm{H(D) = - }}\sum\limits_{{\rm{k}} = 1}^K {{{|{C_{_k}}|} \over {|D|}}{{\log }_2}} {{|{C_{_k}}|} \over {|D|}} H(D)=k=1KDCklog2DCk

其中,K是类别,D是数数据集,Ck是类别K下的数据集。

信息增益:表示特征X使得类Y的不确定性减小的程度(表示分类后的专一性,希望分类后的结果是同类在一起)

条件熵
H ( D ∣ A ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ H ( D i ) {\rm{H(D|A) = }}\sum\limits_{{\rm{i}} = 1}^n {{{|{D_i}|} \over {|D|}}H({D_i})} H(D∣A)=i=1nDDiH(Di)
其中,A是特征,i是特征取值。

信息增益构造决策树的步骤

1.根据不同分类特征,求出信息增益,并找出信息增益最大的特征作为当前的决策结点
2.更新子集,在自己中选取新的特征,求信息增益的最大的特征
3.若划分的子集只包含单一特征,则为分支的叶子结点

缺点

  • ID3没有剪枝策略,容易过拟合;
  • 信息增益准则对可取值数目较多的特征有所偏好,类似“编号”的特征其信息增益接近于1;
  • 只能用于处理离散分布的特征;
  • 没有考虑缺失值。

这么多缺点,那么有没有改进呢——C4.5

1.2. C4.5

C4.5是ID3算法的改进。相比ID3 选择属性用的是子树的信息增益,C4.5用的是信息增益率

此外,C4.5还有以下用途

  • 在决策树构造过程中,进行剪枝
  • 对非离散数据也能进行处理
  • 还能处理不完整数据

信息增益 g ( D , A ) = H ( D ) − H ( D ∣ A ) g({\rm{D,A}}){\rm{ = H(D) - H(D|A)}} g(D,A)=H(D)H(D∣A)

信息增益率 g R ( D , A ) = g ( D , A ) H A ( D ) {g_R}({\rm{D,A}}){\rm{ = }}{{g(D,A)} \over {{H_A}(D)}} gR(D,A)=HA(D)g(D,A)

其中,公式 H ( D ) = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ log ⁡ 2 ∣ C k ∣ ∣ D ∣ {\rm{H(D) = - }}\sum\limits_{{\rm{k}} = 1}^K {{{|{C_{_k}}|} \over {|D|}}{{\log }_2}} {{|{C_{_k}}|} \over {|D|}} H(D)=k=1KDCklog2DCk,n是特征A的取值个数

注意:决策树 过拟合风险很大,理论上可以将数据完全分开。所以为了防止过拟合,就要进行剪枝操作:

  • 预剪枝:边建立决策树边进行剪枝的操作
  • 后剪枝:当建立完决策树 后进行剪枝操作

后剪枝:通过一定的衡量标准,具体来说:C4.5采用的悲观剪枝方法,用递归的方式从低往上针对每一个非叶子节点,评估用一个最佳叶子节点去代替这课子树是否有益。如果剪枝后与剪枝前相比其错误率是保持或者下降,则这棵子树就可以被替换掉。

后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树

1.3. CART(Classification And Regression Tree)

Classification And Regression Tree(CART)是决策树中的一种。

这种决策树用基尼指数来选择属性(分类),或者用均方差来选择属性(回归)。

基尼指数:

G i n i ( p ) = ∑ k = 1 K p k ( 1 − p k ) {\rm{G}}ini(p) = \sum\limits_{k = 1}^K {{p_k}} (1 - {p_k}) Gini(p)=k=1Kpk(1pk)

如果目标变量是离散的,称为分类树。最后取叶子结点的众数做分类结果。

如果目标变量是连续的,称为回归树。连续性目标没有类别概念,因此不能用熵进行计算,但是我们可以考虑另一种衡量物体内部混乱程度的指标:方差

对于任意划分特征A,对应的任意划分点s两边划分成数据集D1和D2,求出使D1和D2各自集合的均方差最小,同时D1和D2的均方差之和最小所对应的特征和特征值划分点。表达式为:

min ⁡ a , s [ min ⁡ c 1 ∑ x i ∈ D 1 n ( y i − c 1 ) 2 + min ⁡ c 2 ∑ x i ∈ D 2 n ( y i − c 2 ) 2 ] {\min _{a,s}}[{\min _{{c_1}}}\sum\limits_{{x_i} \in {D_1}}^n {{{({y_i} - {c_1})}^2} + {{\min }_{c2}}\sum\limits_{{x_i} \in {D_2}}^n {{{({y_i} - {c_2})}^2}} } ] a,smin[c1minxiD1n(yic1)2+minc2xiD2n(yic2)2]
其中, c 1 {{c_1}} c1 D 1 {{D_1}} D1数据集的样本输出均值, c 2 {{c_2}} c2 D 2 {{D_2}} D2数据集的样本输出均值

你可能感兴趣的:(机器学习,算法,决策树,机器学习)