随机森林之特征选择
2016-01-14 13:52
218 查看
原文地址:http://www.360doc.com/content/13/1206/09/13528701_334877080.shtml
摘要:在随机森林介绍中提到了随机森林一个重要特征:能够计算单个特征变量的重要性。并且这一特征在很多方面能够得到应用,例如在银行贷款业务中能否正确的评估一个企业的信用度,关系到是否能够有效地回收贷款。但是信用评估模型的数据特征有很多,其中不乏有很多噪音,所以需要计算出每一个特征的重要性并对这些特征进行一个排序,进而可以从所有特征中选择出重要性靠前的特征。
1:对于随机森林中的每一颗决策树,使用相应的OOB(袋外数据)数据来计算它的袋外数据误差,记为errOOB1.
2: 随机地对袋外数据OOB所有样本的特征X加入噪声干扰(就可以随机的改变样本在特征X处的值),再次计算它的袋外数据误差,记为errOOB2.
3:假设随机森林中有Ntree棵树,那么对于特征X的重要性=∑(errOOB2-errOOB1)/Ntree,之所以可以用这个表达式来作为相应特征的重要性的度量值是因为:若给某个特征随机加入噪声之后,袋外的准确率大幅度降低,则说明这个特征对于样本的分类结果影响很大,也就是说它的重要程度比较高。
首先特征选择的目标有两个:
1:找到与应变量高度相关的特征变量。
2:选择出数目较少的特征变量并且能够充分的预测应变量的结果。
其次一般特征选择的步骤为:
1:初步估计和排序
a)对随机森林中的特征变量按照VI(Variable Importance)降序排序。
b)确定删除比例,从当前的特征变量中剔除相应比例不重要的指标,从而得到一个新的特征集。
c)用新的特征集建立新的随机森林,并计算特征集中每个特征的VI,并排序。
d)重复以上步骤,直到剩下m个特征。
2:根据1中得到的每个特征集和它们建立起来的随机森林,计算对应的袋外误差率(OOB err),将袋外误差率最低的特征集作为最后选定的特征集。
摘要:在随机森林介绍中提到了随机森林一个重要特征:能够计算单个特征变量的重要性。并且这一特征在很多方面能够得到应用,例如在银行贷款业务中能否正确的评估一个企业的信用度,关系到是否能够有效地回收贷款。但是信用评估模型的数据特征有很多,其中不乏有很多噪音,所以需要计算出每一个特征的重要性并对这些特征进行一个排序,进而可以从所有特征中选择出重要性靠前的特征。
一:特征重要性
在随机森林中某个特征X的重要性的计算方法如下:1:对于随机森林中的每一颗决策树,使用相应的OOB(袋外数据)数据来计算它的袋外数据误差,记为errOOB1.
2: 随机地对袋外数据OOB所有样本的特征X加入噪声干扰(就可以随机的改变样本在特征X处的值),再次计算它的袋外数据误差,记为errOOB2.
3:假设随机森林中有Ntree棵树,那么对于特征X的重要性=∑(errOOB2-errOOB1)/Ntree,之所以可以用这个表达式来作为相应特征的重要性的度量值是因为:若给某个特征随机加入噪声之后,袋外的准确率大幅度降低,则说明这个特征对于样本的分类结果影响很大,也就是说它的重要程度比较高。
二:特征选择
在论文 Variable Selection using Random Forests中详细的论述了基于随机森林的特征选择方法,这里我们进行一些回顾。首先特征选择的目标有两个:
1:找到与应变量高度相关的特征变量。
2:选择出数目较少的特征变量并且能够充分的预测应变量的结果。
其次一般特征选择的步骤为:
1:初步估计和排序
a)对随机森林中的特征变量按照VI(Variable Importance)降序排序。
b)确定删除比例,从当前的特征变量中剔除相应比例不重要的指标,从而得到一个新的特征集。
c)用新的特征集建立新的随机森林,并计算特征集中每个特征的VI,并排序。
d)重复以上步骤,直到剩下m个特征。
2:根据1中得到的每个特征集和它们建立起来的随机森林,计算对应的袋外误差率(OOB err),将袋外误差率最低的特征集作为最后选定的特征集。
相关文章推荐
- vmstat 命令的用法说明(总)
- 值得学习的C语言开源项目
- DTP
- WDCP升级PHP版本,并且配置环境变量
- jsp中的basePath和path (绝对路径 相对路径)
- js引入img标签和图片
- lamp+nginx代理+discuz+wordpress+phpmyadmin
- 区别js中name与id的简单方法
- 给vmstat加上时间戳
- Android Xutils3 框架
- redis服务端的安装
- javascript类型系统之Array
- kafka-简单事例
- [问答系列一]Java基础知识
- 使用mybatis-generator生成代码
- ajax代码及简单封装
- onkeyup限制输入框只能输入数字
- OnTimer()函数
- 网站要如何甄选关键词?
- 简单东西-Java不变类编写