sklearn.ensemble.IsolationForest

class sklearn.ensemble.IsolationForest(*, n_estimators=100, max_samples='auto', contamination='auto', max_features=1.0, bootstrap=False, n_jobs=None, behaviour='deprecated', random_state=None, verbose=0, warm_start=False)

[源码]

独立森林算法。

使用IsolationForest算法返回每个样本的异常分数

IsolationForest通过随机选择一个特征,然后在所选特征的最大值和最小值之间随机选择一个分割值来“隔离”观察结果。

由于递归分区可以用树结构来表示,因此分离一个样本所需的分裂次数等于从根节点到终止节点的路径长度。

这条路径的长度,在这些随机树的森林上的平均值,是一种正态性的度量,也是我们的决策函数。

随机分区为异常生成明显更短的路径。因此,当一个随机树的森林集合为特定样本产生更短的路径长度时,它们很可能是异常的。

用户指南中阅读更多内容。

0.18版本新功能

参数 说明
n_estimators int, default=100
在集合中基估计器的数目。
max_samples “auto”, int or float, default=”auto”
从X中抽取样本来训练每个基估计量的数目。
- 如果是int,则绘制max_samples样本。
- 如果是float,则绘制max_samples * X.shape[0]样本。
- 如果是auto, 则绘制max_samples=min(256, n_samples)
如果max_samples大于所提供的样本数量,则将对所有树使用所有样本(不采样)。
contamination ‘auto’ or float, default=’auto’
数据集的污染量,即数据集中离群值的比例。在拟合时用于确定样本得分的阈值。
- 如果是 auto,阈值的确定与原始集合中一样。
- 如果是float,污染应在[0,0.5]范围内。
在版本0.22中更改:污染的默认值从0.1更改为auto
max_features int or float, default=1.0
为了训练每个基本估计器,从X中提取的特征的数量。
如果是int,则绘制max_features特征。
如果是float,则绘制max_features * X.shape[1] 特征。
bootstrap bool, default=False
如果为True,那么每棵树都会对来自有放回采样的训练数据中获得的随机子集进行拟合。如果为False,则不进行有放回抽样。
n_jobs int, default=None
fit和 并行运行的作业数predict。除非用于joblib.parallel_backend上下文中,否则None表示1 。-1表示使用所有处理器。有关更多详细信息,请参见Glossary
behaviour str, default=’deprecated’
此参数无效,不建议使用,并将被删除。
- 0.20版本中的新特性:0.20添加behaviour是为了向后兼容。
自版本0.22以来已弃用:behaviour参数在0.22中已弃用,在0.24中已删除。
random_state int or RandomState, default=None
控制每个分支步骤和森林中每棵树的特征和分割值选择的伪随机性。
在多个函数调用中传递可重复的结果,见Glossary
verbose int, default=0
控制树构建过程的冗长程度。
warm_start bool, default=False
当设置为True时,重用前面调用的解决方案来适应并向集成添加更多的评估器,否则,只拟合整个森林。见Glossary
0.21版本新功能。
属性 说明
estimators_ list of DecisionTreeClassifier
拟合的子估计器的集合。
estimators_samples_ list of arrays
为每个基本估计量绘制的样本的子集。
max_samples_ int
实际样本数。
offset_ float
用于从原始分数定义决策函数的偏移量。我们有这样的关系:decision_function = score_samples - offset_offset_的定义如下。当污染参数设置为“auto”时,当非离群值的分数接近0,而离群值的分数接近-1时,偏移量等于-0.5。当提供了一个不同于“auto”的污染参数时,偏移量以这样的方式定义,我们在训练中获得了期望的离群值(决策函数< 0的样本)。
0.20版本新功能。
estimators_features_ list of arrays
每个基本估计器的绘制特征的子集。

另见

sklearn.covariance.EllipticEnvelope

用于检测高斯分布数据集中异常值的对象。

sklearn.svm.OneClassSVM

无监督异常值检测。估计高维分布的支持度。该实现基于libsvm

sklearn.neighbors.LocalOutlierFactor

使用局部离群因子(LOF)的无监督离群值检测。

注意

这个实现是基于一个ExtraTreeRegressor的集合。每棵树的最大深度设置为ceil(log_2(n)),其中是用于构建树的样本数量(详见(Liu et al., 2008))。

参考文献

  1. Liu, Fei Tony, Ting, Kai Ming and Zhou, Zhi-Hua. “Isolation forest.” Data Mining, 2008. ICDM’08. Eighth IEEE International Conference on.

  2. Liu, Fei Tony, Ting, Kai Ming and Zhou, Zhi-Hua. “Isolation-based anomaly detection.” ACM Transactions on Knowledge Discovery from Data (TKDD) 6.1 (2012): 3.

实例

>>> from sklearn.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])

方法

方法 说明
decision_function(X) 基本分类器的X的平均异常分数。
fit(X[, y, sample_weight]) 拟合估计器。
fit_predict(X[, y]) 对X执行fit并返回X的标签。
get_params([deep]) 获取这个估计器的参数。
predict(X) 预测一个特定样本是否是一个离群值。
score_samples(X) 与原集合中定义的异常分数相反。
set_params(**params) 设置这个估计器的参数。
__init__(*, n_estimators=100, max_samples='auto', contamination='auto', max_features=1.0, bootstrap=False, n_jobs=None, behaviour='deprecated', random_state=None, verbose=0, warm_start=False)

[源码]

初始化的self。请参阅帮助(type(self))以获得准确的签名。

decision_function(X)

[源码]

基本分类器的X的平均异常分数。

将一个输入样本的异常值计算为该森林中树的平均异常值。

给定一棵树的观测值的正态性度量,包含该观测值的叶的深度,它等价于分离这个点所需的分裂数。如果叶节点中有几个n_left观察值,则添加n_left样本隔离树的平均路径长度。

参数 说明
X {array-like, sparse matrix} of shape (n_samples, n_features)
输入样本。在内部,它将被转换为dtype=np.float32。以及是否将稀疏矩阵提供给稀疏csr_matrix
返回值 说明
scores ndarray of shape (n_samples,)
输入样本的异常分数。越低,越不正常。负分数代表离群值,正分数代表非离群值。
fit(X, y=None, sample_weight=None)

[源码]

拟合估计器。

参数 说明
X {array-like, sparse matrix} of shape (n_samples, n_features)
输入样本。在内部,它将被转换为dtype=np.float32。以及是否将稀疏矩阵提供给稀疏csr_matrix
y Ignored
未使用,按照约定呈现API一致性。
sample_weight array-like of shape (n_samples,), default=None
样本权重。如果没有,那么样本的权重相等。
返回值 说明
self object
拟合后的估计器。
fit_predict(X, y=None)

[源码]

X执行fit并返回X的标签。

离群值返回-1,非离群值值返回1

参数 说明
X {array-like, sparse matrix, dataframe} of shape (n_samples, n_features)
输入样本。在内部,它将被转换为dtype=np.float32。以及是否将稀疏矩阵提供给稀疏csr_matrix
y Ignored
未使用,按照约定呈现API一致性。
get_params(deep=True)

[源码]

获取这个估计器的参数。

参数 说明
deep bool, default=True
如果为True,则将返回此估算器和作为估算器的所包含子对象的参数。
返回值 说明
params mapping of string to any
参数名称与其值相对应。
predict(X)

[源码]

预测一个特定样本是否是一个离群值。

参数 返回值
X {array-like, sparse matrix} of shape (n_samples, n_features)
输入样本。在内部,它将被转换为dtype=np.float32。以及是否将稀疏矩阵提供给稀疏csr_matrix
返回值 说明
is_inlier ndarray of shape (n_samples,)
对于每一次观察,根据拟合模型,告诉它是否(+1或-1)应该被视为一个非离群值。
score_samples(X)

[源码]

与原集合中定义的异常分数相反。

将一个输入样本的异常值计算为该森林中树的平均异常值。

给定一棵树的观测值的正态性度量是包含该观测值的叶的深度,它等价于分离这个点所需的分裂数。如果叶节点中有几个n_left观察值,则添加n_left样本隔离树的平均路径长度。

参数 说明
X {array-like, sparse matrix} of shape (n_samples, n_features)
输入样本。
返回值 说明
scores ndarray of shape (n_samples,)
输入样本的异常分数。越低,越不正常。
score float
self.predict(X) 关于y的平均准确率。
set_params(self, params)

[源码]

设置该估计器的参数。

该方法适用于简单估计器和嵌套对象(如pipline)。后者具有形式为<component>_<parameter>的参数,这样就可以更新嵌套对象的每个组件。

参数 说明
**params dict 估计器参数
返回值 说明
self object 估计实例。