机器学习中out of bag error怎么理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习中out of bag error怎么理解相关的知识,希望对你有一定的参考价值。

参考技术A 训练数据集为 T ,具有M个特征
T = (X1,y1), (X2,y2), ... (Xn, yn)
Xi xi1, xi2, ... xiM,是输入向量 yi 是标签.

随机森林总结:
随机森林算法是一个分类器算法,主要基于两种方法
Bagging
Random subspace method.
假设在森林中我们设定s棵树,首先我们生成 S 个和原始数据集大小一致的数据集,采用放回的随机抽样方法 (也即,每生成一个数据集抽样n次).最终产生 数据集T1,
T2, ... TS. 每个数据集称作一个 bootstrap 数据集. 由于放回抽样,每个数据集 Ti 中有重复数据,Ti 相比原始数据集,可能会缺少若干记录.这称为Bootstrapping. (en.wikipedia.org/wiki/Bootstrapping_(statistics))
Bagging 是进行 bootstraps & 然后将每个从 bootstrap中学到的模型进行集成的过程
现在, RF 生成 S 棵树,m
(=sqrt(M) or =floor(lnM+1)) 随机从M个特征中抽取子特征,来创建树. 这叫做随机子空间方法(random subspace method).
所以对每个Ti bootstrap 数据集,我们创建了一棵树 Ki. 如果你相对某些输入数据进行分类 D
= x1, x2, ..., xM ,你让这些数据在每棵树上都跑一遍,从而生成 S 个预测结果 (一棵树有一个预测结果) ,表示为 Y
= y1, y2, ..., ys. 最终预测结果通过大多数投票策略决定.
Out-of-bag error:
在生成s个分类器后 (S棵树), 对于原始训练集T中每个记录 (Xi,yi) ,选择所有不包括(Xi,yi) 的bootstrap数据集Tk.注意,这个子集,是一个boostrap 数据集所组成的集合,它们都不包含原始数据集中的某个特定记录. 这个集合被称作 out-of-bag 样例. 共有n 个这样的子集 (原始数据集 T中每行记录对应一个). OOB 分类器 使用的是Tk 上投票的累积,所以它们不包含 (xi,yi).
从另外一个角度来解释oob方法如下:
每一棵树都通过使用不同的 bootstrap 样本.相比原始数据集,每个 bootstrap数据集中大概有1/3的记录没有包括进来,也就没有在构建第k棵树时候使用.
对于构建第k棵树时候没有用到的每条记录,让它们过一遍第k棵树,进而获得一个分类.通过这种方法, 对任何一条记录来说,大概有1/3 的树没有用这条记录来构建,因而对这些树可以进行测试集上的数据分类。最终, 假设 类别j 是当记录n是oob时候,获得投票最多的类别,j被错误分类除以总记录数n,就是 oob error estimate. 这在很多测试中被证明是无偏的[2].
Out-of-bag 估计的泛化错误率是 out-of-bag classifier 在训练集上的错误率。
那么它为什么重要? Breiman [1996b]在对 bagged 分类器的错误率估计研究中, 给出实证证据显示,out-of-bag 估计 和使用与训练集大小一致的测试集所得到的错误率一样精确. 所以, 使用out-of-bag error 估计可以不在另外建立一个测试集.
参考网址:http://blog.sina.com.cn/s/blog_4c9dc2a10102vl24.html

RandomForest的out of bag estimate 及Feature selection 具体作法

一、Out of bag estimate(OOB)

1、OOB sample number

RF是bagging的一种发方法,在做有放回的bootstrap时,由抽样随机性可得到(其中1/e可由高数中的洛必达法则得到):

技术分享图片

RF中每次抽样N个样本训练每一棵decision tree(gt),对于此棵树gt,原始的数据集中将有近1/e(33.3%)的样本未参与其训练;因此可以使用这部分数据对此棵树gt进行validation。(下图中红色星号表示此样本未参与某棵决策树gt训练)

技术分享图片

 

2、OOB如何做validation

RF是通过多个基学习器进行组合得到整体的性能,即基学习器性能不高但经过组合却仍可能得到高性能(三个臭皮匠,赛过诸葛亮);因此,对于RF,应当是对整体的性能进行validation,而不是依次对单个基学习器进行validation。那么,如何对一个训练好的RF进行validation呢? 

具体作法:

(1)对于数据集中每一个样本(xi, yi),将所有未使用该样本(xi, yi)进行训练得到的决策树筛选出来得到几个包含部分决策树的子模型集合M;

(2)然后在样本(xi, yi)上,使用模型集合M进行误差计算,即得到使用样本(xi, yi)进行validation的结果;(此步骤与使用留一法进行validation相似)

(3)重复步骤(2),依次计算在剩余的样本中使用每个样本进行validation的结果;

(4)对所有样本进行validation的结果进行求和取平均,作为RF模型最终的validation的结果。

具体表达式如下图:

技术分享图片

 

特点:不需要额外划分一部分的validation set,RF可以做self-validation

技术分享图片

 

 3、RF如何做Feature Selection

以上是关于机器学习中out of bag error怎么理解的主要内容,如果未能解决你的问题,请参考以下文章

机器学习(十三) 集成学习和随机森林(上)

机器学习---文本特征提取之词袋模型(Machine Learning Text Feature Extraction Bag of Words)

史诗级干货长文集成学习算法

机器学习技法(10)--Random Forest

RandomForest的out of bag estimate 及Feature selection 具体作法

Scikit-learn 随机森林 out of bag 样本