西瓜书对应章节:4.1、4.2
算法原理
- 从逻辑角度:决策树就是一堆if else语句组合
- 从几何角度,根据某种准则划分特征空间
- 最终目的:将样本越分越纯
ID3决策树
信息熵
-
自信息的期望;度量随机变量X的不确定性,信息熵越大越不确定
-
计算信息熵时约定:若 p ( x ) = 0 p(x)=0 p(x)=0 ,则 p ( x ) log b p ( x ) = 0 p(x)\log_bp(x)=0 p(x)logbp(x)=0
-
公式:
H ( X ) = E [ I ( X ) ] = − ∑ x p ( x ) log b p ( x ) H(X)=E[I(X)]=-\sum_xp(x)\log_bp(x) H(X)=E[I(X)]=−x∑p(x)logbp(x) -
将各样本类别标记为y视作随机变量,各个类别在样本集合D中的占比 p ( k ) ( k = 1 , 2 , . . . , ∣ y ∣ ) p(k)(k=1,2,...,|y|) p(k)(k=1,2,...,∣y∣)视作各个类别取值的概率,则样本集合D(随机变量y)的信息熵(底数b取2)为
E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k log 2 p k Ent(D)=-\sum_{k=1}^{|y|}p_k\log_2p_k Ent(D)=−k=1∑∣y∣pklog2pk
此时的信息熵所代表的“不确定性”可以转换理解为集合内样本的“纯度” -
条件熵(Y的信息熵关于概率分布X的期望):在已知X后Y的不确定性 H ( Y ∣ X ) = ∑ x p ( x ) H ( Y ∣ X = x ) H(Y|X)=\sum_xp(x)H(Y|X=x) H(Y∣X)=∑xp(x)H(Y∣X=x)从单个属性(特征)a来看,假设其可能的取值为 a 1 , a 2 , . . . , a v {a^1,a^2,...,a^v} a1,a2,...,av, D v D^v Dv表示属性a取值为 a v ∈ ( a 1 , a 2 , . . . , a v ) a^v\in(a^1,a^2,...,a^v) av∈(a1,a2,...,av)的样本集合 ∣ D v ∣ D E n t ( D v ) \frac{|D^v|}{D}Ent(D^v) D∣Dv∣Ent(Dv)
-
信息增益:在已知属性(特征)a的取值后y的不确定性减少的两,也即纯度的提升
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=1∑vD∣Dv∣Ent(Dv) -
ID3决策树:以信息增益为准则来选择划分属性的决策树
a ∗ = arg a ∈ A m a x G a i n ( D , a ) a_*=\arg_{a\in A} max Gain(D,a) a∗=arga∈AmaxGain(D,a)
C4.5决策树
-
信息增益准则可能对于取值数目较多的属性有所偏好(例如编号这个较为极端的例子),为减少这种偏好可能带来的不利影响,C4.5决策树使用“增益率”代替“信息增益”
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=1vD∣Dv∣log2D∣Dv∣称为属性a的固有值,a的取值个数V越大,通常其固有值IV(a)也越大 -
并没有完全使用增益率来代替信息增益,而是采用一种启发式的方法,先选出信息增益高于平均水平的属性,然后再从中选择增益率最高的
CART决策树
-
基尼值:从样本集合D中随机抽取两个样本,其类别标记不一致的概率。因此,基尼值越小,碰到异类的概率越小,纯度越高
G i n i ( D ) = ∑ k = 1 ∣ y ∣ ∑ k ′ ≠ k p ( k ) 0 ( k ′ ) = ∑ k = 1 ∣ y ∣ p ( k ) ( 1 − p ( k ) ) = 1 − ∑ k = 1 ∣ y ∣ p ( k ) 2 Gini(D)=\sum_{k=1}^{|y|} \sum_{k'\neq k}p(k)0(k') =\sum_{k=1}^{|y|}p(k)(1-p(k)) =1-\sum_{k=1}^{|y|}p(k)^2 Gini(D)=k=1∑∣y∣k′=k∑p(k)0(k′)=k=1∑∣y∣p(k)(1−p(k))=1−k=1∑∣y∣p(k)2 -
基尼指数(类比信息熵和条件熵)
G i n i _ i n d e x ( D , a ) = ∑ v = 1 V D v ∣ D ∣ G i n i ( D v ) Gini\_index(D,a)=\sum_{v=1}^V \frac{D^v}{|D|}Gini(D^v) Gini_index(D,a)=v=1∑V∣D∣DvGini(Dv) -
CART决策树:选择基尼指数最小的属性作为最优划分属性
a ∗ = arg a ∈ A m i n G i n i i n d e x ( D , a ) a_*=\arg_{a\in A} min Gini_index(D,a) a∗=arga∈AminGiniindex(D,a) -
实际构造算法时:对属性a的每一个可能取值v,将数据集D划分为a=v和 a ≠ v a\neq v a=v两部分来计算,即
G i n i _ i n d e x ( D , a ) = D a = v ∣ D ∣ G i n i ( D a = v ) + D a ≠ v ∣ D ∣ G i n i ( D a ≠ v ) Gini\_index(D,a)=\frac{D^{a=v}}{|D|}Gini(D^{a=v})+\frac{D^{a\neq v}}{|D|}Gini(D^{a\neq v}) Gini_index(D,a)=∣D∣Da=vGini(Da=v)+∣D∣Da=vGini(Da=v)
然后选取基尼值属最小的属性及其对应取值作为最优划分属性和最优划分点