machine-learning - 隔离森林背景下的基估计量意义
问题描述
在隔离森林的背景下,我正在努力理解“基础估计器”的含义。
scikit-learn 中隔离森林方法的参数之一是n_estimators
;它在sklearn docs中的描述如下:
集成中基本估计器的数量。
我尝试解释有关 Sklearn 的文档以及 Google 和 Youtube 上的东西来理解这个术语,但没有运气。有人可以解释一下它在 IF 的上下文中的含义吗?
解决方案
tl;dr :它是原始论文中称为隔离树(iTree)的一种特殊决策树:
我们在本文中展示了可以有效地构建树结构来隔离每个实例。[...] 树的这种隔离特性构成了我们检测异常的方法的基础,我们将这种树称为隔离树或 iTree。
所提出的方法称为 Isolation Forest 或 iForest,它为给定的数据集构建 iTree [...]
所有集成方法(Isolation Forest所属)都由基本估计器组成(即它们完全是基本估计器的集成);来自sklearn 指南:
集成方法的目标是结合使用给定学习算法构建的几个基本估计器的预测,以提高单个估计器的泛化性/鲁棒性。
例如,在随机森林(可以说是隔离森林名称的灵感来源)中,这个基本估计器是一个简单的决策树:
n_estimators:整数,默认=100
森林中的树木数量。
对于像梯度提升树这样的算法(尽管 scikit-learn 文档将它们称为“提升阶段”,但它们仍然是决策树)、额外树等算法也是如此。
在所有这些算法中,基本估计器是固定的(尽管它的特定参数可以根据集合参数中的设置而变化)。还有另一类集成方法,其中用作基本估计器的确切模型也可以由相应的参数设置base_estimator
;例如,这里是Bagging 分类器:
base_estimator:对象,默认=无
适合数据集随机子集的基本估计器。如果没有,则基本估计器是决策树。
和AdaBoost:
base_estimator:对象,默认=无
构建增强集成的基本估计器。[...] 如果没有,那么基本估计量是
DecisionTreeClassifier(max_depth=1)
.
从历史上讲,第一个集成是使用各种版本的决策树构建的,并且可以说今天仍然是决策树(或变体,如 iTrees)几乎专门用于此类集成。引用我在Execution time of AdaBoost with SVM base classifier中的另一个答案:
Adaboost(和类似的集成方法)是使用决策树作为基分类器(更具体地说,决策树桩,即深度仅为 1 的 DT)构思的;如果您没有明确指定参数,那么今天仍然有充分的理由
base_classifier
,它假定值为DecisionTreeClassifier(max_depth=1)
. DT 适合这种集成,因为它们本质上是不稳定的分类器,而 SVM 则不是这种情况,因此后者在用作基分类器时不会提供太多功能。
推荐阅读
- c# - 如何将 FluentValidation 错误代码返回给控制器?
- amazon-ec2 - AWS Linux 2 - 根卷使用 (EBS) 的细分?
- swift - 在 Swift 中使用 Future 时链接调用类似于 PromiseKit
- javascript - 我如何将父母的 Api id 传递给我的孩子?
- python - 如何测试 __name__=="__main__" 是否增加覆盖率
- python - 在多索引数据框熊猫中添加两列
- python - 将来自用户输入的分类数据映射到其实际编码值以进行预测
- flutter - 生成天数列表并通过 Push.named 传递
- javascript - 导出一个 javascript 对象然后修改该导出文件中的该对象是否也会对导出的实例进行修改?
- javascript - Javascript,IndexedDB,存储 Uint8Array,给出错误