机器学习——决策树

决策树是属于推导公式较少的一类分类器,但有些概念比较多。决策树优点:计算速度快、可读性强。缺点嘛,大概准确率会差点,容易过拟合。决策树你可以理解为它是一个归纳的过程,从特殊到一般。

决策树概念还是需要了解一下的:

决策树(boosting)是一种基本的分类和回归方法。呈属性结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以被认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。

决策树的学习是根据损失函数最小准则,包含三个步骤: 特征选择, 决策树的生成和 决策树的剪枝

特征选择在于选取对训练数据具有分类能力的特征。特征选择的准则有:信息增益(ID3树),信息增益比(C4.5树),基尼指数(CART树)

以下通过介绍这三个步骤。

1 特征选择

信息增益    了解信息增益之前,要明白什么是熵和什么是条件熵。熵,表示信息的不确定性,熵越大,不确定性越大。熵如何表示?熵只跟概率分布有关。设X是离散随机变量,其概率分布为:

P(X=xi) = pi,  i=1,...,N

随机变量X的熵定义是:

H(X)=-\sum_{i=1}^{N}p_{i}logp_{i}

若X的概率分布为均匀分布,这个时候熵最大,为1,不确定性最大。(就不贴的H(X)图像了,建议看图记忆,更深刻)

那X的条件熵是什么呢?H(Y|X),当给定X条件下Y的概率分布的熵,因为X是集合,所以H(Y|X)为H(Y|X=x)的在X上的和.(理解概念就能推到出来)

\fn_cm H(Y|X)=-\sum_{X}p(x)H(Y|x)=-\sum_{X}p(x)\sum_{Y}H(y|x)

H(Y|X)=-\sum_{X}p(x)\sum_{Y}p(y|x)log p(y|x)=-\sum_{Y,X}p(x)p(y|x)log p(y|x)

现在定义互信息g(Y,X) = H(Y)-H(Y|X),决策树中信息增益等价于互信息.意义是,给定条件X对Y分类的不确定降低的程度.给定数据D和特征A,根据频数代替概率求得的熵成为经验熵,条件熵为经验条件熵.

数据D,|D|表示D的数量,假设有K个类Ck,|Ck|表示属于Ck的样本数量,特征A有n个取值{a1,...,an},根据A的取值将D划分为n个自己D1,D2,...,Dn,|Di|表示个数.记子集Di中属于类Ck的集合为Cik,|Cik|表示个数.面对复杂的描述还是对应图吧~~

则经验熵等于

H(D)=-\sum_{k=1}^{K} \frac{|C_{k}|}{|D|}log_{2} \frac{|C_{k}|}{|D|}

经验条件熵等于

H(D|A)=-\sum_{i=1}^{n}(\frac{|D_{i}|}{|D|}\sum_{k=1}^{K}\frac{|D_{ik}|}{|D_{i}|}log\frac{|D_{ik}|}{|D_{i}| })

信息增益g(D,A)=H(D)-H(D|A)

信息增益比

信息增益的大小是相对于训练数据集而言,并没有绝对的意义。在分类问题困难时,也就是说在训练集的经验熵大的时候,信息增益值会偏大(我觉得这个是不影响特征选择的,因为每个特征在同一个节点的H(D)是相同的,但就是不同的数据比较不太好看,比如某个数据分了2类,某个数据分了3类,两个数据概率分布一样,则后者偏大)。所以为了解决这个问题,使用信息增益比作为参考标准。

g_{R}(D,A)=\frac{g(D,A)}{H(D)}

基尼指数

定义:分类问题中,假设有K个样本,样本点属于第k类的概率为pk,则概率分布的基尼指数为:

Gini(p)=\sum_{k=1}^{K}p_{k}(1-p_{k})=1-\sum_{k=1}^{K}p_{k}^{2}

在条件A的情况下基尼指数计算。假设样本D根据特征A是否取某个值a被分割成D1和D2两部分(如果特征A有4个子集,这有4个这有的D1,D2),

Gini(D,A=a)=\frac{|D1|}{|D|}Gini(D)+\frac{|D2|}{|D|}Gini(D2)

2 决策树的生成

决策树的生成经典算法由ID3,C4.5和CART。ID3,C4.5就是指 决策数的生成,C4.5能处理连续值,ID3只能处理离散值;CART包括树的生成和剪枝,而且CART还可以处理回归问题。生成部分介绍一下树的生成:

ID3(C4.5)在决策树各个节点上应用信息增益(信息增益比)准则来选择特征,递归地构建决策树。具体的:从根节点开始,计算每个特征的信息增益,选择信息增益最大的特征作为节点的特征,由该节点的不同取值建立子节点;在子节点上递归调用以上方法,直到信息增益(信息增益比)均很小或没有特征可以选择为止。

3 决策树的剪枝

ID3和C4.5在训练集上准确率很高,因为考虑了所以的特征,但这样构建的决策树很复杂,所以容易出现过拟合现象。解决的办法就是考虑决策树的模型复杂度,对生成的决策树进行简化。

简化决策树模型的过程称为剪枝。有“预剪枝”和“后剪枝”,预剪枝在树的生成过程中进行剪枝,后剪枝在生成树之后进行剪枝。一般后剪枝准确率高于预剪枝。

决策树的剪枝可以由动态规划的算法实现。

4 CART分类回归树

CART包括树的生成和树的剪枝,回归树和分类树的生成过程不太一样。CART是简洁的二叉树,跟前面2种树有点区别。

4.1回归树的生成

回归树在训练集上,递归地将每个区域划分为2个子区域并决定每个子区域的输出值。这就是暴力枚举法。

具体的:

(1)选择最优切分变量j和切分点i(切分变量对应特征,比如连续的身高(切分变量)和体重(切分变量)预测成绩,切分点变量的取值),求解:

min_{j,s}[min_{c1}\sum_{R1(j,s)}(y1-c1)^{2} +min_{c2}\sum_{R2(j,s)}(y1-c1)^{2} ]

可以看出这个是方差,根据最小二乘法,当c1为子区域R1的均值时最小,所以c1和c2取子区域的均值。

怎么求解?遍历!先遍历每一个变量,对每个变量又变量所有取值,选择上述值最小的j和s

(2)用选定的(j,s)划分区域并决定相应的输出值

R1(j,s)=\{x|x^{j}\leq s\} ,R2(j,s)=\{x|x^{j} \geq s\}

\widehat{c}_{m}=\frac{1}{Nm}\sum_{Rm(j,s)}yi

(3)继续调用(1)(2),直到满足条件为止

(4)将输入空间划分为M个区域,R1,...,RM,生成决策树:

f(x)= \sum_{m=1}^{M}\widehat{c}_{m} I(x \in Rm)

4.2 分类树的生成

(1)设节点的训练数据集D,计算所有特征的对该数据集的基尼指数。对于每个特征A,对其可能取的每个值a,根据样本点对A=a的测试为“是”或“否”将D分割为D1和D2两个部分,计算A=a的基尼指数。

(2)在所有特征的A以及他们所有可能的取值(切分点a)中,比较所有特征的最优切分点的基尼指数,选择基尼指数最小的特征作为最优特征,它对应的最小基尼指数的切分点作为最切分点。根据最优特征和最优切分点,从现节点生成2个子节点,将数据以特征和切分点划分到2个子节点中去

(3)对子节点递归调用(1)和(2),直到满足条件为止

(4)生成CART决策树

CART剪枝,选择的损失函数是预测误差。

ID3和C4.5剪枝,选择的损失函数是:

C_{\alpha }(T)=\sum_{t=1}^{T}NtH(t)+\alpha |T|

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值