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=Nonefit 和 并行运行的作业数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
用于检测高斯分布数据集中异常值的对象。
无监督异常值检测。估计高维分布的支持度。该实现基于
libsvm
。
sklearn.neighbors.LocalOutlierFactor
使用局部离群因子(LOF)的无监督离群值检测。
注意
这个实现是基于一个ExtraTreeRegressor
的集合。每棵树的最大深度设置为ceil(log_2(n))
,其中是用于构建树的样本数量(详见(Liu et al., 2008))。
参考文献
Liu, Fei Tony, Ting, Kai Ming and Zhou, Zhi-Hua. “Isolation forest.” Data Mining, 2008. ICDM’08. Eighth IEEE International Conference on.
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 估计实例。 |