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=1∑K∣D∣∣Ck∣log2∣D∣∣Ck∣
其中,K是类别,D是数数据集,C~k~是类别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=1∑n∣D∣∣Di∣H(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=1∑K∣D∣∣Ck∣log2∣D∣∣Ck∣,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=1∑Kpk(1−pk)
如果目标变量是离散的,称为分类树。最后取叶子结点的众数做分类结果。
如果目标变量是连续的,称为回归树。连续性目标没有类别概念,因此不能用熵进行计算,但是我们可以考虑另一种衡量物体内部混乱程度的指标:方差
对于任意划分特征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[c1minxi∈D1∑n(yi−c1)2+minc2xi∈D2∑n(yi−c2)2]
其中, c 1 {{c_1}} c1为 D 1 {{D_1}} D1数据集的样本输出均值, c 2 {{c_2}} c2为 D 2 {{D_2}} D2数据集的样本输出均值