mars.learn.ensemble.IsolationForest#
- class mars.learn.ensemble.IsolationForest(*, n_estimators=100, max_samples='auto', contamination='auto', max_features=1.0, bootstrap=False, random_state=None, warm_start=False)[来源]#
孤立森林算法。
返回每个样本的异常分数,使用IsolationForest算法
孤立森林通过随机选择一个特征,然后在所选特征的最大值和最小值之间随机选择一个分裂值来“隔离”观测值。
由于递归划分可以通过树结构表示,隔离样本所需的分裂次数等同于从根节点到终止节点的路径长度。
这种随机树的森林中,路径长度的平均值是正常性和我们的决策函数的量度。
随机分区显著产生异常的更短路径。因此,当一组随机树共同为特定样本产生更短的路径长度时,它们很可能是异常值。
在用户指南中阅读更多内容。
- Parameters
n_estimators (int, default=100) – 集成中的基本估计器数量。
max_samples ("自动", int 或 float, 默认="自动") –
- 用于从 X 中提取样本以训练每个基础估计器的样本数量。
如果是 int,则提取 max_samples 个样本。
如果是 float,则提取 max_samples * X.shape[0] 个样本。
如果是 “自动”,则 max_samples=min(256, n_samples)。
如果 max_samples 大于提供的样本数量,所有样本将用于所有树(不进行抽样)。
污染 ('auto' 或 float, 默认='auto') –
数据集的污染量,即数据集中异常值的比例。在拟合时使用,以定义样本分数的阈值。
如果是‘auto’,阈值按照原始论文中的方法确定。
如果是float,污染量应在 (0, 0.5] 范围内。
max_features (int 或 float, 默认=1.0) –
从X中抽取以训练每个基础估计器的特征数量。
如果是int,则抽取 max_features 个特征。
如果是float,则抽取 max_features * X.shape[1] 个特征。
bootstrap (bool, default=False) – 如果为True,则在随机抽取的训练数据的子集上拟合单个树,抽样时允许重复。如果为False,则进行不重复抽样。
random_state (int, RandomState 实例 或 None, 默认=None) –
控制特征选择和每个分支步骤以及森林中每棵树的分裂值的伪随机性。
传入一个整数以在多个函数调用中获得可重复的结果。 参见 术语表。
warm_start (bool, default=False) – 当设置为
True时,重用上一次调用拟合的解决方案,并向集成中添加更多估计器;否则,重新拟合一个全新的森林。请参见 术语表。
- base_estimator_#
用于创建拟合子估计器集合的子估计器模板。
- Type
ExtraTreeRegressor 实例
- offset_#
偏移量用于从原始分数定义决策函数。我们有如下关系:
decision_function = score_samples - offset_。offset_定义如下。当污染参数设置为“auto”时,偏移量等于 -0.5,因为内点的分数接近 0,而外点的分数接近 -1。当提供不同于“auto”的污染参数时,偏移量被定义为以使我们在训练中获得预期的外点数量(决策函数 < 0 的样本)。- Type
备注
该实现基于一组 ExtraTreeRegressor。每棵树的最大深度设置为
ceil(log_2(n)),其中 \(n\) 是用于构建树的样本数量(详见 (Liu et al., 2008))。参考文献
- 1
刘飞、Tony、丁凯鸣和周志华。“孤立森林。” 数据挖掘,2008年。第八届IEEE国际会议ICDM’08。
- 2
刘,飞 托尼,丁,凯 明和周,志华。“基于隔离的异常检测。”ACM知识发现数据交易(TKDD)6.1(2012):3。
另请参阅
sklearn.covariance.EllipticEnvelope用于检测高斯分布数据集中离群值的对象。
sklearn.svm.OneClassSVM无监督异常检测。估计高维分布的支持。实现基于libsvm。
sklearn.neighbors.LocalOutlierFactor使用局部异常因子 (LOF) 的无监督异常检测。
示例
>>> from mars.learn.ensemble import IsolationForest >>> X = [[-1.1], [0.3], [0.5], [100]] >>> clf = IsolationForest(random_state=0).fit(X) >>> clf.predict([[0.1], [0], [90]]) array([ 1, 1, -1])
- __init__(*, n_estimators=100, max_samples='auto', contamination='auto', max_features=1.0, bootstrap=False, random_state=None, warm_start=False)[来源]#
方法
__init__(*[, n_estimators, max_samples, ...])decision_function(X[, session, run_kwargs])基分类器的X的平均异常分数。
fit(X[, y, sample_weight, session, run_kwargs])拟合估计器。
fit_predict(X[, y])对X进行拟合,并返回X的标签。
predict(X[, session, run_kwargs])预测特定样本是否为异常值。
score_samples(X[, session, run_kwargs])与原始论文中定义的异常分数相反。
属性
contamination