决策树系列之随机森林

1、基本概念:Bagging、Booststraping、OOB数据

Booststraping: 有放回样本;
Bagging: 全称Boostrapping aggregation
步骤:
1、从样本集中重采样,选出n个样本;在所有属性上,对这n个样本建立分类器;(分类器可以是决策树(ID3,C4.5,CART)、SVM或Logistic回归等)
2、重复步骤1,m次,得到m个分类器;
3、将数据放在这m个分类器上,最后根据这m个分类器的投票结果,决定将数据属于哪一类;
OOB数据:每次Boostraping,约有一定比率的样本不会出现在模型训练部分,可以用于取代测试集,用于误差估计。


2、什么是随机森林?

步骤如下:
1、从样本集合中用Boostraping采样选出n个样本;
2、从所有属性中随机选择k个属性,选择最佳分割属性作为节点,建立CART决策树;(可以是其他分类器)
3、重复步骤1和2,建立m个基分类器;
4、由m个CART模型形成随机森林,通过投票表决结果,决定数据属于哪一类;
备注:使用其他类型的分类器组成的叫随机森林


3、投票机制

3.1、简单的投票机制
3.1.1 一票否决;(一票通过)
3.1.2 多数通过;
3.1.3 阈值表决;
3.2、贝叶斯投票机制;


举例子:
问题 :如何依据用户投票,对电影进行排序?
方案 :通过该电影的用户数据进行综合评分,加上这系列电影的综合评分数据,进行加权求平均。


4、样本不均衡的方法:

假设样本A类比B类多,且严重不平衡;
方法:
4.1、A类欠采样 UnderSampling:
4.1.1 随机欠采样;
4.1.2 A类分成若干子类,分别与B类进入ML模型;
4.1.3 基于聚类的A类分割;
4.2、B类过采样 Oversampling
避免欠采样早晨的信息丢失
4.3、B类数据合成 Synthetic Data Generation
随机插值得到新样本
SMOTE(SYnthetic Minority Over-Sampling Technique)
4.4、代价敏感学习 Cost Sensitive Learning
降低A类的权值,提高B类的权值 --修改评价函数


5、应用:

5.1、使用随机森林计算样本间相似度

原理 :若两个样本同时出现在相同叶结点的次数越多,则两者越相似;
算法
记样本个数为N,初始化N*N的零矩阵S,S[i,j]表示样本i和样本j的相似度。
对于m颗决策树行程的随机森林,遍历所有决策树的所有叶子节点;
记该叶节点包含的样本为sample[1,2,...,k],则S[i,j]累加1,样本i,j属于sample[1,2,...,k]
遍历结束,则S为样本间相似度矩阵


5.2、使用随机森林计算样本重要度

方案1: 计算正例经过的节点,使用经过结点的数目、经过结点的Gini结点系数和等指标。
方案2 :随机替换一列数据,重新建立决策树,计算新模型的正确率变化,从而考虑这一列特征的重要性。


6、Isolation Forest

随机选择特征、随机选择分割点,生成一定深度的决策树iTree,若干颗iTree组成iForest
方案1: 计算iTree中样本x从根到叶子的长度f(x)
方案2: 计算iForest中f(x)的总和F(x)
异常检测: 若样本x为异常值,它应在大多数iTree中很快从根到达叶子,即F(x)比较小。


7、思考问题

总结
决策树(随机森林)的代码清晰、逻辑简单,在胜任分类问题的同时,往往可以作为对数据分布探索的首要尝试算法。
随机森林的集成思想可用在其他分类器的设计中。
如果通过随机森林做样本的异常值检测?—通过统计样本间位于相同决策树的叶节点的个数,形成 样本相似度矩阵
如果正负样本数量差别很大(正样本数量大于负样本数量),将如何处理?—在得到新的决策树后,对样本的权值进行合理的调整—分类正确的降低权值,分类错误的增加权值,比如说是Adaboost.

相关问题:
问题一:思考碎金森林为何可以提高正确率,而且降低拟合程度?
问题二:决策树后剪枝可以怎么样操作?
问题三:决策树是几叉树与这颗决策树的分类数目有什么关系?
问题四:如果特征是连续的,如何得到分割点?
问题五:请解释Gini系数为何可以用于分类标准?


欢迎大家对本博文进行讨论,邮箱[email protected]

你可能感兴趣的:(决策树系列之随机森林)