[Python嗯~机器学习]---对决策树和随机森林的补充说明

决策树和随机森林补充

首先,我们从熵开始讲起~~~

第一个公式说明:给定 X 的条件下 Y 的信息熵等于 X,Y 的联合熵减去 X 自己的熵。

建立决策树的三种算法:


信息增益就是先算出数据本身 D 的熵,然后减去某一个特征 A 下面的条件熵,得到的就算是信息增益,把所有的特征的条件熵都算出来,选最大的就是 ID3 的做法。信息增益其实就是数据本身和某个特征之间的互信息。选择跟当前的数据互信息量最大的特征就是我们的目标。
信息增益越大,树越矮,分类能力越强,如果在这个 gain 的基础上再除以 A本身的信息熵 H(A),就得到的了信息增益率,就是我们的第二种方法 C4.5。





评价决策树:

两种方法:

1、剪枝
2、随机森林

剪枝:

如果一个叶节点只有一个特征,就叫做纯节点,如果所有特征都有就叫做均节点。均节点相当于没有分类。普通的情况都是介于纯节点和均节点之间的情况。

评价函数:某一个叶节点的熵 H(t) 乘以这个节点上的样本数目 N(t),把所有叶节点的计算方式加起来得到评价函数
评价函数越小在训练集上预测越准确。也可以看做损失函数。越小越容易过拟合。按照这个公式,通过选择最大互信息的节点,最终的分类的节点都是纯节点。这是一个贪心算法。
在这个基础上我们需要做剪枝

对损失函数的改进

考虑一个问题:叶子节点越多是不是越复杂,损失越大?
根据公式就能算出剪枝前和剪枝后哪一个更优。

具体步骤:
1、先把所有内部节点的剪枝系数都算出来。
2、选择剪枝系数最小的点剪掉(这是最稳妥的方法)。
3、重复上述过程直到剪完所有的树。
提示:从T0到T1的过程中,剪枝系数要再计算一次,因为树的形状改变了。
剪枝的过程中,一次可能剪一个也可能一枝上的很多个节点,至于一共有多少树,我们不关心,直到最后剪的只剩下一个根节点。

随机森林:

根据下列算法而建造每棵树:
1、用N来表示训练用例(样本)的个数,M表示特征数目。
2、输入特征数目m,用于确定决策树上一个节点的决策结果;其中m应远小于M
3、从N个训练用例(样本)中以有放回抽样的方式,取样N次,形成一个训练集(即bootstrap取样),并用未抽到的用例(样本)作预测,评估其误差。
4、对于每一个节点,随机选择m个特征,决策树上每个节点的决定都是基于这些特征确定的。根据这m个特征,计算其最佳的分裂方式。
5、每棵树都会完整成长而不会剪枝,这有可能在建完一棵正常树状分类器后会被采用)。

有两个方面:数据的随机性选取,以及待选特征的随机选取。

1、数据的随机选取:

首先,从原始的数据集中采取有放回的抽样,构造子数据集,子数据集的数据量是和原始数据集相同的。不同子数据集的元素可以重复,同一个子数据集中的元素也可以重复。
第二,利用子数据集来构建子决策树,将这个数据放到每个子决策树中,每个子决策树输出一个结果。
最后,如果有了新的数据需要通过随机森林得到分类结果,就可以通过对子决策树的判断结果的投票,得到随机森林的输出结果了。
如下图,假设随机森林中有3棵子决策树,2棵子树的分类结果是A类,1棵子树的分类结果是B类,那么随机森林的分类结果就是A类。

 

2、待选特征的随机选取

与数据集的随机选取类似,随机森林中的子树的每一个分裂过程并未用到所有的待选特征,而是从所有的待选特征中随机选取一定的特征,之后再在随机选取的特征中选取最优的特征。这样能够使得随机森林中的决策树都能够彼此不同,提升系统的多样性,从而提升分类性能。

下图中,蓝色的方块代表所有可以被选择的特征,也就是目前的待选特征。黄色的方块是分裂特征。左边是一棵决策树的特征选取过程,通过在待选特征中选取最优的分裂特征(别忘了前文提到的ID3算法,C4.5算法,CART算法等等),完成分裂。右边是一个随机森林中的子树的特征选取过程。

优缺点:

1、 在当前的很多数据集上,相对其他算法有着很大的优势,表现良好
2、它能够处理很高维度的数据,并且不用做特征选择,因为特征子集是随机选择的
3、在训练完后,它能够得出特征重要性
4、在创建随机森林的时候,对generlization error使用的是无偏估计,模型泛化能力强
5、随机森林有oob,不需要单独换分交叉验证集
6、训练时树与树之间是相互独立的,训练速度快,容易做成并行化方法
7、对缺失值不敏感,如果有很大一部分的特征遗失,仍可以维持准确度。

缺点:
1、随机森林在某些噪音较大的分类或回归问题上会过拟合
2、对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值