决策树

随声附和 提交于 2019-12-23 00:14:15


决策树是一种树状结构,可以进行基本的分类与回归,同时也是集成方法经常采用的基模型。
总体来说,各种决策树主要涉及三要素,分别是特征选择决策树的生成决策树的剪枝

特征选择

在建立决策树的过程中,每次特征选择时,是有一套标准的,下面就来介绍一下信息增益、信息增益比、基尼系数等。

日常生活中,当我们要搞清楚某件事时,这件事情的不确定性越大,我们需要了解的信息就越多。
在信息量或概率统计中,用熵度量随机变量的不确定性。熵值越大,随机的不确定性就越大。
如果一个随机变量 YY 的可能取值为 Y={c1,c2,...ck}Y=\{c_1,c_2,...c_k\},其概率分布为 P(Y=ci)=pi,i=1,2,...KP(Y=c_i)=p_i, i=1,2,...K。则随机变量 YY 的熵的定义为 H(Y)H(Y),即
H(Y)=i=1Kpilogpi H(Y)=-\sum_{i=1}^Kp_ilogp_i
loglog为以 22 或者 ee 为底的对数。

信息增益

随机变量 YY 的熵 H(Y)H(Y) 与 条件 YY 条件熵 H(YX)H(Y|X) 之差就是信息增益。记为 g(Y,X)g(Y,X),即
g(Y,X)=H(Y)H(YX) g(Y,X)=H(Y)-H(Y|X)
实际上,熵与条件熵的差也称为互信息。信息增益依赖于特征,不同特征往往具有不同的信息增益,信息增益大的特征具有较强的分类能力。

信息增益比

用信息增益作为划分训练集特征的标准时,有一个潜在的问题,那就是相比之下其会强相遇选择类别取值较多的特征。因此人们提出使用信息增益比来对这一问题进行校正。
特征 XX 对训练集的信息增益比定义为特征 XX 的信息增益 g(Y,X)g(Y,X) 与特征 XX 的取值的熵 H(X)H(X) 的比值,记为 gR(Y,X)g_R(Y,X),即
gR(Y,X)=g(Y,X)H(X) g_R(Y,X)=\frac{g(Y,X)}{H(X)}

基尼系数

基尼系数可以用来度量任何不均匀分布,且介于 0-1 之间的数(0指完全相等,1指完全不相等)。分类度量时,总体包含的类别越杂乱,基尼系数越大(与熵的概念类似)。
基尼系数主要用来独立数据集的不纯度。基尼指数越小,表明样本只属于同一类的概率越高,即样本的纯净度越高。在计算出数据集某个特征有取值的基尼指数后,就可以得到利用该特征进行样本划分产生的基尼指数的增加值;决策树模型在生成的过程中就是递归选择 GiniGainGiniGain 最小的结点作为分叉点,直至子数据集都属于同一类或者所有特征用光。
在分类问题中,假设有 KK 个类别 c1,c2,...,ckc_1, c_2,...,c_k,样本点属于第 kk 类的概率为 pkp_k,则该概率分布的基尼系数定义为
Gini(p)=k=1Kpk(1pk)=1i=1Kpk2 Gini(p)=\sum_{k=1}^Kp_k\cdot(1-p_k)=1-\sum_{i=1}^Kp_k^2
对于给定的样本的集合 DD,其基尼系数为
Gini(D)=1k=1K(ckD)2 Gini(D)=1-\sum_{k=1}^K(\frac{|c_k|}{|D|})^2
式中,ckc_kDD 属于第 kk 类的样本的子集,KK是类别的个数。
如果样本 DD 根据特征 AA 的某个值 aa,把 DD 分为 D1D_1D2D_2 两部分,则在特特征 AA 的条件下,DD 的基尼系数表达式为
Gini(D,A)=D1DGini(D1)+D2DGini(D2) Gini(D,A)=\frac{|D_1|}{|D|}Gini(D_1)+\frac{|D_2|}{|D|}Gini(D_2)

决策树的生成

CART决策树

CART分类树

CART分类树的生成过程以基尼系数最小准则来选择特征。
输入:假设训练集数据集 DD 包含 MM 个样本;样本一共含 KK 个类别,类别集合为 CC;每个样本含有 NN 个特征,特征集合为 FF
输出:CART分类树 TT

步骤如下:

第1步:如果训练集 DD 中的 MM 个样本已经属于同一类别,则直接返回单节点树 TT,并将该唯一类 CkC_k 作为该节点的类别。

第2步:否则,分别计算特征集合 FFNN 个特征下面各个切分点的基尼系数,选择基尼系数最小的划分点将训练集 DD 划分为 D1D_1D2D_2 两个子集,分别对应二叉树的两个子节点上。

第3步:令左、右节点的数据集 D1=DD_1=DD2=DD_2=D,分别递归调用第1步和第2步,直到得到满足条件的CART树。

CART回归树

输入:训练集 T=(x2,y2),(x2,y2),...(xM,yM)T={(x_2,y_2),(x_2,y_2),...(x_M,y_M)}
输出:回归树 f(x)f(\boldsymbol{x})

步骤如下:

第1步:选择最优切分特征变量 FnF_n 与切分点 SkS_k,求解
minFn,Sk{minc1[xiDi(yic1)2]+minc2[xjD2(yic2)2]} \min_{F_n,S_k}\{\min_{c_1}[\sum_{x_i\in{D_i}}(y_i-c_1)^2]+\min_{c_2}[\sum_{x_j\in{D_2}}(y_i-c_2)^2]\}
即遍历 FnF_n ,对每个选定的 FnF_n,扫描切分点 SkS_k,最后从得到的结果中选择使上式达到最小的 (Fn,Sk)(F_n,S_k) 对。

第2步:用选定的 (Fn,Sk)(F_n,S_k) 对二划分区域,生成二叉树的左右分支,并用下式决定两分支的输出值。
c1ˉ=1N1xiD1yi,c2ˉ=1N2xiD2yi \bar{c_1}=\frac{1}{N_1}\sum_{x_i\in{D_1}}y_i,\qquad \bar{c_2}=\frac{1}{N_2}\sum_{x_i\in{D_2}}y_i

第3步:重复第1步和第2步,直至满足迭代停止条件,将样本空间划分成 D1,D2,...DKD_1,D_2,...D_K,共 KK 个小单元,生成最终的决策树 f(x)f(\boldsymbol{x}),即
f(x)=l=1LckˉI(xiDk) f(x) = \sum_{l=1}^L\bar{c_k}\cdot I(x_i\in{D_k})

决策树的剪枝

决策树算法很容易对训练集过拟合,从而导致泛化能力比较差。为了解决这个问题,一般需要对CART决策树进行剪枝。
剪枝有先剪枝和后剪枝两种,先剪枝是在生成决策树的过程中就采取一定措施来限制某些不必要的子树的生成。后剪枝就是先使用训练集中的大部分数据去尽可能生成一棵最大的树,然后从决策树低端开始不断剪枝,直到形成一棵只有一个根节点的子树 T0T_0,得到一个剪枝后的子树序列 {T1,T2,...TK}\{T_1,T_2,...T_K\},最后利用余下的数据进行交叉验证,选出其中的最优子树。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!