标签: isolation-forest

SKLearn中isolation_forest中的决策函数和score_samples有什么区别

我已阅读决策函数和 Score_samples 的文档,但无法弄清楚这两种方法之间有什么区别,以及我应该使用哪一种方法来进行异常值检测算法。

任何帮助,将不胜感激。

scikit-learn isolation-forest

5
推荐指数
2
解决办法
2903
查看次数

使用自定义评分器功能在 GridSearchCV 期间评估多个隔离森林估计器

我有一个没有目标值的值样本。实际上,X 特征(预测变量)全部用于拟合隔离森林估计器。目标是确定哪些 X 特征以及未来出现的特征实际上是异常值。举例来说,假设我拟合一个数组 (340,3) => (n_samples, n_features)并且我预测这些特征来识别 340 个观察值中哪些是异常值

到目前为止我的方法是:

首先我创建一个管道对象

from sklearn.pipeline import Pipeline
from sklearn.ensemble import IsolationForest
from sklearn.model_selection import GridSearchCV

steps=[('IsolationForest', IsolationForest(n_jobs=-1, random_state=123))]
pipeline=Pipeline(steps)
Run Code Online (Sandbox Code Playgroud)

然后我创建一个用于超参数调整的参数网格

parameteres_grid={'IsolationForest__n_estimators':[25,50,75],
                  'IsolationForest__max_samples':[0.25,0.5,0.75,1.0],
                  'IsolationForest__contamination':[0.01,0.05],
                  'IsolationForest__bootstrap':[True, False]
                 }
Run Code Online (Sandbox Code Playgroud)

最后,我应用GridSearchCV算法

isolation_forest_grid=GridSearchCV(pipeline, parameteres_grid, scoring=scorer_f, cv=3, verbose=2)
isolation_forest_grid.fit(scaled_x_features.values)
Run Code Online (Sandbox Code Playgroud)

我的目标是确定最适合的评分函数(记为Scorer_f ),它将有效地选择最合适的隔离森林估计器来进行异常值检测。

到目前为止,基于这个出色的答案,我的评分如下:

记分功能

isolation_forest_grid=GridSearchCV(pipeline, parameteres_grid, scoring=scorer_f, cv=3, verbose=2)
isolation_forest_grid.fit(scaled_x_features.values)
Run Code Online (Sandbox Code Playgroud)

简单解释一下,我不断地将批次中 5%(0.05 分位数)的观察值识别为异常值。因此,每个低于阈值的分数都被表示为异常值。因此,我指示 GridSearch 函数选择异常值最多的模型作为最坏情况。

让您尝尝结果:

isolation_forest_grid.cv_results_['mean_test_score']

array([4. , 4. , 4. , …
Run Code Online (Sandbox Code Playgroud)

python machine-learning outliers scikit-learn isolation-forest

5
推荐指数
0
解决办法
254
查看次数